我是python的新手,并且不断收到错误消息,指出对函数p“无法分配给函数调用”,我对如何摆脱此错误感到困惑?
我试图定义p,但是它仍然不起作用。
tmax=10
N=100
dt=tmax/N
t=linspace(0,tmax,N+1)
h=.2
r=.1
p(0) =3
p=zeros(1,N+1)
for n in range(1,N):
p(n+1)=(1+r*dt)*p(n)-h*dt;
plot(t,p)
答案 0 :(得分:2)
首先,我认为您使用numpy。并且您想将数据打印为图形。
我在jupyter笔记本中将其测试为matplotlib。因此,请更改您要使用的内容。
请参考以下固定代码:
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
tmax=10
N=100
dt=tmax/N
t=np.linspace(0,tmax,N+1)
h=.2
r=.1
p=np.zeros((1,N+1))[0]
for n in range(1,N):
p[n+1]=(1+r*dt)*p[n]-h*dt;
plt.plot(t,p)
plt.show()
答案 1 :(得分:1)
错误来自p(0) = 3
。您正在尝试通过编写p(0)
来调用参数为0的函数。这可能会返回某些结果,也可能不会返回,但是您绝对不能将其赋值为3。也许这与您要查找的内容很接近:
# Python Code to find approximation
# of a ordinary differential equation
# using euler method.
# Consider a differential equation
# dy / dx =(x + y + xy)
def func( x, y ):
return (x + y + x * y)
# Function for euler formula
def euler( x0, y, h, x ):
temp = -0
# Iterating till the point at which we
# need approximation
while x0 < x:
temp = y
y = y + h * func(x0, y)
x0 = x0 + h
# Printing approximation
print("Approximate solution at x = ", x, " is ", "%.6f"% y)
# Driver Code
# Initial Values
x0 = 0
y0 = 1
h = 0.025
# Value of x at which we need approximation
x = 0.1
euler(x0, y0, h, x)