【问题标题】:Why is a float type object not callable here?为什么浮点类型的对象在这里不可调用?
【发布时间】: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?您可能想要标记该库。
  • 请从问题代码中删除未使用的声明,例如 xy 的第一个定义。在那之后应该清楚y=y.diff(x) 试图对浮点数做一些不可能的事情。
  • Sympy 正在提供符号。我现在收到另一个错误消息,即函数对象没有属性“diff”。我需要区分 f(x) 中描述的函数,然后将值放入其中。这怎么可能?

标签: python error-handling numerical-methods taylor-series


【解决方案1】:

您已经调用了y = f(x),它存储了函数f 返回的float。 你不能做y() 因为y 是不可调用的。 将y = f(x) 更改为y = f,它应该可以解决您的用例。

【讨论】:

  • 我现在得到函数对象没有属性“diff”的错误。我该如何解决这个问题?
【解决方案2】:

我看到您正在尝试将 yargliige 作为函数调用 yargliige(x),这是不适用的,因为它是一个变量而不是函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多