我正在使用欧拉微分方程方法建立一个for循环。但是,for循环不会递增,仅显示i = 0的值,而不显示i = 1或i = 2的值。
我尝试手动分配所有参数,并重建了for循环。
import math
def Euler(a,b,N,alpha):
h=(b-a)/N
t=a
w=alpha
for i in range (0,N):
w=w+h*(math.exp(t-w))
t=a+(i*h)
return t,w
Euler(0,1,2,1)
我希望函数返回i = 1和i = 2的结果
答案 0 :(得分:3)
正如评论中提到的保险柜一样,您的返回位于循环内部,这意味着该函数在第一次迭代时退出。
您可能想要的是yield
,它将把函数变成生成器:
import math
def Euler(a,b,N,alpha):
h=(b-a)/N
t=a
w=alpha
for i in range (0,N):
w=w+h*(math.exp(t-w))
t=a+(i*h)
yield t,w
for x, y in Euler(0,1,2,1):
print(x, y)
>>> 0.0 1.1839397205857212
>>> 0.5 1.3369749844848988
答案 1 :(得分:0)
您的退货在for
循环中。取消缩进return
一次。