为什么这里不能调用 float 类型的对象?
Why is a float type object not callable here?
我正在尝试在 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 = f(x)
,它存储了函数 f
返回的 float
。
你不能做 y()
因为 y
是不可调用的。
将 y = f(x)
更改为 y = f
,它应该可以解决您的用例。
我看到您正试图将 yargliige
作为一个函数 yargliige(x)
来调用,这不适用,因为它是一个变量而不是函数。
我正在尝试在 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 = f(x)
,它存储了函数 f
返回的 float
。
你不能做 y()
因为 y
是不可调用的。
将 y = f(x)
更改为 y = f
,它应该可以解决您的用例。
我看到您正试图将 yargliige
作为一个函数 yargliige(x)
来调用,这不适用,因为它是一个变量而不是函数。