无法分配给eulers方法程序的函数调用

时间:2019-04-30 18:09:11

标签: python

我是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)

2 个答案:

答案 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()

enter image description here

答案 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)