如何使用欧拉方法对周期函数进行编程

时间:2019-05-02 23:47:11

标签: python python-3.x

使用欧拉方法,我编写了代码来查找逻辑增长方程的近似值

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)
但是对于我的下一个任务(t)= 12 + 2.5sin(t / 12),其中K是周期函数。我需要一些有关如何进行尝试的指导,下面是

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)

1 个答案:

答案 0 :(得分:2)

您需要对代码进行一些修改:

  • 在for循环之前初始化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