问题描述
我正在开发下面的代码来检查函数 y'= y 的 Euler 方法和 Enhanced Euler 方法之间的区别。
在这种情况下,我看到迭代推进得越多,值之间的差异就越大。有谁知道为什么?
def euler_explicit(y_0,h,n):
steps = [None]*(n+1)
steps[0] = y_0
for k in range(1,n+1):
steps[k] = steps[k-1] + h*steps[k-1]
return steps
def euler_aprim(y_0,n+1):
steps[k] = steps[k-1] + h*0.5*(steps[k-1] + steps[k-1] + h*steps[k-1])
return steps
def main():
t_f = 5
n = 5
y_0 = 1
t_i = 0
h = (t_f - t_i)/n
euler_explicit_results = euler_explicit(y_0,n)
euler_aprim_results = euler_aprim(y_0,n)
for i in range(0,n+1):
print("Diff in position "+str(i)+" is:"+str(euler_explicit_results[i]-euler_aprim_results[i]))
if __name__ == "__main__":
main()
我的输出是:
Diff in position 0 is:0
Diff in position 1 is:-0.5
Diff in position 2 is:-2.25
Diff in position 3 is:-7.625
Diff in position 4 is:-23.0625
Diff in position 5 is:-65.65625
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)