#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. Пожалуйста, не забудьте включить вопросительный знак в сам ваш вопрос, а не только в название.