我需要为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))
答案 0 :(得分:1)
您不需要显式标记x
和y
的阶段;您只需在每个步骤中覆盖它们的旧值:
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 = ...
可确保在使用新值覆盖名称之前,使用x
和y
的当前值执行这两种计算。如果没有该功能,则需要一个临时变量来保留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))