当使用sympy subs命令解决x值为0的函数时,有问题。

问题描述 投票:0回答:1

我有一个函数 [ -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返回的值不是一个 单一 数,而是一个数字范围。

这是x=0时要评估的函数的图形。

python sympy substitution
1个回答
0
投票

你应该总是给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, factorexpand 创造奇迹。

© www.soinside.com 2019 - 2024. All rights reserved.