使用欧拉方法,我编写了代码来查找逻辑增长方程的近似值
def Euler(h,N):
import numpy as np
K = 12; r = 0.43; Po = 1;
#defining dP/dt as a function f(P)
for n in range(N+1): #n=0 as index for P[0], then 1<=n<=N
P = np.append(P,Pn)
return P[N] #return the last computed value in P
Euler(0.1,5)
import numpy as np
from math import sin
def Euler2(h,N):
r = 0.43;
Po = 1;
#defining dP/dt as a function f(P)
#initializing P with Po
for n in range(N+1):
return P[N] #return the last computed value in P
Euler2(0.1,100)
答案 0 :(得分:2)
您需要对代码进行一些修改:
P
k
的lambda函数命名为kfunc
(或您选择的其他名称)import numpy as np
from math import sin
def Euler2(h,N):
r = 0.43
Po = 1
P = np.array([Po])
for n in range(N+1):
kfunc = lambda k:12 + 2.5 *sin(n/12)
f = lambda P: r*P*(1-P/kfunc(n))
Pn = P[n] + h*f(P[n]) #euler
P = np.append(P,Pn)
return P[N] #return the last computed value in P
Euler2(0.1,100)
# 10.932593954891473