经典Runge-Kutta方法和显式四阶Adams方法的比较和上机实现。
y[i]=RungeKutta(y[i-1]); Y[i]=Y[i-1]+(h/24)*(55*m*Y[i-1]-59*m*Y[i-2]+37*m*Y[i-3]-9*m*Y[i-4]); } //上公式是显性四阶 Adams 方法的核心公式。
printf("请输出 Runge-Kutta 算法结果 y0:%f 和使用显式四阶 Adams 算法结果 y1:%f\n",y[i],Y[i]); } y0=exp(m*1.0); e0=fabs(y0-y[n]); e1=fabs(y0-Y[n]); //求出在区间右端点的精确解 //求 Runge-Kutta 算法在右端点处的截断误差 //求显式四阶 Adams 算法在右端点处截断误差
printf("请输出在右端点处的 Runge-Kutta 算法误差 e0=%f 和显式四阶 Adams 算法误差 e1=%f",e0,e1); }
注意: Runge算法可修改为 注意:若想仅使用 经典 Runge-Kutta 算法可修改为for(i=1;i<=n;i++) y[i]=RungeKutta(y[i-1]); //仅用这些就可以了 四、调试和运行程序过程中产生的问题及采取的措施: 调试和运行程序过程中产生的问题及采取的措施: 1、编译时出错,若想在主函数和被调用函数都使用一些变量,必须把这些变量设为全局变 量。 2、编译时,没有注意数据类型转换,如 float h;h=1/n;是错误的,因为 n 是整形的,当 n 值大于 1 时,h 老为零。应进行模式转换,h=1/float(n) ;这样才是正确的。 3、对浮点数求绝对值时,应使用 fabs()函数,而不是 abs() 。 行输出结果及分析: 五、运行输出结果及分析: 上述程序在 Visual C++ 6.0 环境下加以实现。经过多次测试,程序运行正确。例如: 分别输入 n 值和 m 值:16 ,-2,运行结果如图所示,图中显示了每一步的值及端点误差。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库经典Runge-Kutta方法和显式四阶Adams方法(3)在线全文阅读。
相关推荐: