Как сделать так , чтобы abs (), sqrt() (от sympy) сравнивались со значением?

#python #math

Вопрос:

Я пытаюсь проверить интервалы, в течение которых функция увеличивается, и интервалы, в которых она уменьшается (интервалы проверяются только (-oo;0) или (0; oo) или действительное число). Конечно, мой код используется только в простых функциях, таких как:
(x^(-5)) ; (x^3 x) ; (x^4 3(x^2) — 1)

Проблема здесь в том, что я должен ввести всю эту функцию: (sqrt(abs(x))) ; (1/(abs(x)))
Когда я ввожу все это, я понимаю, что когда код запускается для сравнения вычислений —gt; Он не может сравнивать, и это ошибка
Пример:
— Ввод: (sympy.sqrt(sympy.abs(x)))
(я комментирую в своем коде, откуда взялась ошибка)
— Выход: Ошибка

 import sympy import math import inspect import matplotlib.pyplot as plt import numpy as np  def check_inc_des(f, x_min=-100, x_max=100, n_sample=100):  x = sympy.symbols('x')  expr = f(x)  limit_expr = sympy.limit(expr, x, 0)  if limit_expr == -math.inf or limit_expr == math.inf:  for k in np.linspace(x_min, -0.5, n_sample):  a = sympy.diff(f(x))  a = a.subs(sympy.Symbol("x"), k)  if a lt; 0:  b = "The function is decreasing in the interval (-oo;0)"  break   if a gt; 0:  b = "The function is increasing in the interval (-oo;0)"  break  for k in np.linspace(0.5, x_max, n_sample):  a = sympy.diff(f(x))  a = a.subs(sympy.Symbol("x"), k)  if a gt; 0:  d = "The function is increasing in the interval (0; oo)"  break  if a lt; 0:  d = "The function is decreasing in the interval (0; oo)"  break  return b   "n"  " "  d  else:  for k in np.linspace(x_min, -0.5, n_sample):  a = sympy.diff(f(x))  a = a.subs(sympy.Symbol("x"), k)  if a lt; 0: #lt;--------------------------------------------------The error take from here  b = "The function is decreasing in the interval (-oo;0)"  break   if a gt; 0:  b = "The function is increasing in the interval (-oo;0)"  break  for k in np.linspace(0.5, x_max, n_sample):  h = sympy.diff(f(x))  h = h.subs(sympy.Symbol("x"), k)  if h gt; 0:  d = "The function is increasing in the interval (0; oo)"  break  if h lt; 0:  d = "The function is decreasing in the interval (0; oo)"  break  if a lt; 0 and h lt; 0:  return "The function is decreasing in the Real number"  if a gt; 0 and h gt; 0:  return "The function is increasing in the Real number"  return b   "n" " "  d  def do_ex_3(fa):  func_lst = [fa]  for func in func_lst:  print(check_inc_des(func))  return  def f_3x_a(x):  return x**(-5) #lt;------------------------------------------------------Where I input  do_ex_3(f_3x_a)  

Мой верхний код, например, для x^(-5):
— Ввод: (x^(-5))
— Выход: Функция уменьшается в интервале (-oo;0)
Функция уменьшается в интервале (0; oo)

Спасибо за поддержку!

Комментарии:

1. Вы никогда не должны пытаться сравнивать числа с плавающей запятой для равенства. Вам нужно иметь значение epsilon, которое обозначает «достаточно близко», затем проверьте if abs(a) lt; epsilon: # values are equal .

2. Пожалуйста, не забудьте включить вопросительный знак в сам ваш вопрос, а не только в название.