提问人:InatorInc 提问时间:5/3/2023 更新时间:5/3/2023 访问量:54
函数输入给出错误“第一个变量不能是数字:0”
Function input gives error "First variable cannot be a number: 0"
问:
以下函数不接受任何输入:
import sympy as sp
x=Symbol("x")
def f_approx(x, x_0 = 0, n = 10, f = sin(x)):
y = 0
for i in range(0, n):
v = diff(f, x, i)[text]
y = y + (v.evalf(subs={x: x_0})/factorial(i))*(x-x_0)**i
return y
print(f_approx(0))
ValueError: First variable cannot be a number: 0
如果有人能帮助我,那就太好了。我是蟒蛇菜鸟......
display(Eq(S('T(x)'), f_approx(x)))
给出正确的输出,但任何整数输入都会给出错误𝑇(𝑥)=2.75573192239859⋅10−6𝑥9−0.000198412698412698𝑥7+0.00833333333333333𝑥5−0.166666666666667𝑥3+1.0𝑥
ValueError: First variable cannot be a number: 0
答:
0赞
Sparkling Marcel
5/3/2023
#1
v = diff(f, x, i)[text]
Sympy diff 函数需要不同的参数,第一个是函数(你的 f),第二个是符号(在你的情况下是 x)。
如果你这样做print(f_approx(0))
您告诉这是一个值为 0 的 int,但 sympy diff 正在等待一个 sympy 符号x
因此,您正在调用不正确的v = diff(f, 0, i)[text]
如果你这样做,你就不会再得到错误了
我建议您查看sympy文档,以更好地了解diff的作用print(f_approx(x))
评论