为什么"日志"对象不可调用?


x = Symbol ("x")
f = log(x)
dif1 = diff(f,x)
dif2 = diff(dif1,x)
dif3 = diff(dif2,x)
dif4 = diff(dif3,x)
dif5 = diff(dif4,x)
def D11(a,h):
return (f.evalf(subs={x:a+h})-f.evalf(subs={x:a}))/h + (h/2)*dif2.evalf(subs={x:a+h/2})
def D12(a,h):
return ((f.evalf(subs={x:(a+h)}) - f(a-h)))/(2*h) - h**2/6*dif3.evalf(subs={x:(a)})
def D13(a,h):
return (f.evalf(subs={x:(a-2*h)})- 8*f.evalf(subs={x:(a-h)}) + 8*f.evalf(a+h) - f(a+2*h))/(12*h) - h**4/30*ftuletis5(a)
def D22(a,h):
return (f.evalf(subs={x:(a+h)}) - 2*f.evalf(subs={x:(a)}) + f.evalf(subs={x:(a-h)}))/h**2 - h**2/12*(dif4.evalf(subs={x:(a)}))
vigaD11 = []
vigaD12 = []
vigaD13 = []
vigaD22 = []
h=[]
for i in range(20):
h+=h+[(10**(-i))]
vigaD11+= vigaD11 +  [(D11(2,h[i])-(dif1.evalf(subs={x:2})))]
vigaD12+= vigaD12+[(D12(2,h[i])-(dif1.evalf(subs={x:2})))]
vigaD13+= vigaD13 + [(D13(2,h[i])-(dif1.evalf(subs={x:2})))]
vigaD22+= vigaD22 [(D22(2,h[i])-(dif2.evalf(subs={x:2})))]

我收到一条错误消息,指出日志对象不可调用。目前,我正在使用数学包和Sympy包来让程序做我想做的事情。

我收到的错误消息:

Traceback (most recent call last):
File "C:UsersarmanDesktopNumbrilised meetodidpraktikum12praktikum12.py", line 64, in <module>
vigaD12+= vigaD12+[(D12(2,h[i])-(dif1.evalf(subs={x:2})))]
File "C:UsersarmanDesktopNumbrilised meetodidpraktikum12praktikum12.py", line 37, in D12
return ((f.evalf(subs={x:(a+h)}) - f(a-h)))/(2*h) - h**2/6*dif3.evalf(subs={x:(a)})
TypeError: 'log' object is not callable

当我专门调用日志的sympy版本时,它仍然不起作用。请帮忙。

您可以尝试f = math.log(x)或任何要使用的日志函数。也许python只是找不到合适的函数来调用。

在与* import ofsympy 的isympy会话中andxsymbol,log ' a sympy 对象

In [1]: log                                                                     
Out[1]: log
In [2]: x                                                                       
Out[2]: x
In [3]: f = log(x)                                                              
In [4]: f(23)                                                                   
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-a73e6f7d2549> in <module>
----> 1 f(23)
TypeError: 'log' object is not callable

你不能再叫log;它已经被"叫"了。 您可以使用以下方法以特定数字对其进行评估:

In [13]: f.evalf(subs={x:1.23})                                                 
Out[13]: 0.207014169384326

您在问题表达式中执行此操作一次,但不会第二次。 为什么不呢?

f.evalf(subs={x:(a+h)}) - f(a-h)

最新更新