使用Python以简单的方式构造Euler方法

时间:2019-01-06 14:45:51

标签: python

我需要为Python中的Euler方法编写一个非常简单的函数。

我想通过输入以下内容来做到这一点:

x,y的函数f使得y'= f(x,y)

(x0,y0):起点

Dx:步长

n:迭代次数

我的问题是我不确定如何使计算机理解类似f(i)=的东西。我的迭代中有2 * i。我已经写了一个行不通的代码(显然)。 f函数应作为lambda函数给出。我也希望结果有4位小数。

from math import *
def euler(f,x(0),y(0),Dx,n):
    for i in range(1,n+1):
        x(i)=x(i-1)+Dx
        y(i)=y(i-1)+Dx*f(x(i-1),y(i-1))
        print(i,' ',x(i),' ',y(i))

1 个答案:

答案 0 :(得分:1)

您不需要显式标记xy的阶段;您只需在每个步骤中覆盖它们的旧值:

def euler(f, x, y, Dx, n):
    for i in range(1,n+1):
        x, y = x + Dx, y + dx*f(x,y)
        print("{}: {:.4f} {:.4f}".format(i, x, y))

使用x, y = ...可确保在使用新值覆盖名称之前,使用xy的当前值执行这两种计算。如果没有该功能,则需要一个临时变量来保留x的旧值。

def euler(f, x, y, Dx, n):
    for i in range(1,n+1):
        new_x = x + Dx
        y = y + Dx * f(x, y)
        x = new_x
        print("{}: {:.4f} {:.4f}".format(i, x, y))