我有一个函数 [ -4*xsqrt(1 - (1 - 2*x^2)^2) + 2sqrt(1 - x^2) ] ,我需要在 x=0 时对其进行评估。然而,每当你绘制这个函数的图形时,对于 y 的某个区间,在 x=0 时有许多 y 值。有什么帮助或阐述吗?谢谢你!这是我的代码。
这是我的代码,如果它可能会有帮助。
x = symbols('x')
f = 2*asin(x) # f(x) function
g = acos(1-2*x**2) # g(x) function
eq = diff(f-g) # evaluating the derivative of f(x) - g(x)
eq.subs(x, 0) # substituting 0 for x in the derivative of f(x) - g(x)
当我运行这段代码后,它返回NaN,我想这是因为用0代替x返回的值不是一个 单一 数,而是一个数字范围。
你应该总是给SymPy尽可能多的假设。例如,它不能拉出一个 x**2
出于 sqrt
因为它认为 x
是复杂的。
先进行因式化,再进行简化,就能解决问题。SymPy不能在L'Hopital上做的。eq = A + B
因为它不知道A和B都收敛。 所以你要引导它一下,把分数合起来,然后再简化。
from sympy import *
x = symbols('x', real=True)
f = 2*asin(x) # f(x) function
g = acos(1-2*x**2) # g(x) function
eq = diff(f-g) # evaluating the derivative of f(x) - g(x)
eq = simplify(factor(eq))
print(eq)
print(limit(eq, x, 0, "+"))
print(limit(eq, x, 0, "-"))
输出:
(-2*x + 2*Abs(x))/(sqrt(1 - x**2)*Abs(x))
0
4
simplify
, factor
和 expand
创造奇迹。