欧拉和改进欧拉Heun在精度上的区别

问题描述

我正在开发下面的代码来检查函数 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 (将#修改为@)