【发布时间】:2020-10-02 19:53:05
【问题描述】:
我正在尝试在 Python 中制作泰勒级数,但我不知道如何消除此错误:
x=Symbol("x")
def f(x):
return ((math.e)**x)*sin(x)
y=f(x)
print(y.diff(x))
def Taylor(f,x,m,a):
y=f(x)
y2=f
yargliige=0
viga = 10**(-m)
n=0
while True:
if n>10:
return yargliige,n
else:
yargliige+=(y(x)*(x-a)**n)/(factorial(n))
y=y.diff(x)
if abs(yargliige(x)-f(x))<viga:
return yargliige,n
n+=1
print(Taylor(f,-0.3,3,-1))
我收到的错误消息:
Traceback (most recent call last):
File "C:\Users\arman\Desktop\Numbrilised meetodid\praktikum10.py", line 31, in <module>
print(Taylor(f,-0.3,3,-1))
File "C:\Users\arman\Desktop\Numbrilised meetodid\praktikum10.py", line 25, in Taylor
yargliige+=(y(x)*(x-a)**n)/(factorial(n))
TypeError: 'Float' object is not callable
原来的函数好像不接受float,看起来很可笑。
【问题讨论】:
-
y(x)是什么意思?因为对于 Python,这意味着使用参数x调用函数y。另外,哪个库提供Symbol?您可能想要标记该库。 -
请从问题代码中删除未使用的声明,例如
x和y的第一个定义。在那之后应该清楚y=y.diff(x)试图对浮点数做一些不可能的事情。 -
Sympy 正在提供符号。我现在收到另一个错误消息,即函数对象没有属性“diff”。我需要区分 f(x) 中描述的函数,然后将值放入其中。这怎么可能?
标签: python error-handling numerical-methods taylor-series