(3)
2、四阶龙格-库塔公式解微分方程组初值问题 (1)程序设计 #include
void Runge_Kutta(float(*f)(float x,float y,float z),float (*g)(float x,float y,float z),float a,float b,float y0,float g0,int N) { float x=a,y=y0,z=g0,K1,K2,K3,K4,l1,l2,l3,l4; float h=(b-a)/N; int i; printf(\ for(i=1;i<=N;i++) { K1=(*f)(x,y,z);l1=(*g)(x,y,z); K2=(*f)(x+h/2,y+h*K1/2,z+h*l1/2);l2=(*g)(x+h/2,y+h*K1/2,z+h*l1/2); K3=(*f)(x+h/2,y+h*K2/2,z+h*l2/2);l3=(*g)(x+h/2,y+h*K2/2,z+h*l2/2); K4=(*f)(x+h,y+h*K3,z+h*l3);l4=(*g)(x+h,y+h*K3,z+h*l3); y=y+h*(K1+2*K2+2*K3+K4)/6; z=z+h*(l1+2*l2+2*l3+l4)/6; x=a+i*h; printf(\ } }
float f(float x,float y,float z)
{ return 120-2*y+2*z; }
float g(float x,float y,float z) { return 2*y-5*z; }
void main() { float a=0,b=1.0,y0=0,g0=0; Runge_Kutta(f,g,a,b,y0,g0,10); }
(2)实验结果
四、总结
通过这次学习,我掌握了根据不同场合选择不同方法计算求解问题的方法,主要学习了改进欧拉法和四阶龙格-库塔法求解微分方程的求解问题方法。
计算方法上机总结:
通过对这门课的学习,我们学习了很多计算方程、曲线拟合、求解微分方程的方法。而实习课让我们将所学的原理应用到实践中去,上机编写程序的过程中我们不断的运用已学知识,掌握了求解各种实际问题的方法,并且体会了不同的方法的不同结果,从而在不同的场合,要用合适的计算方法来求解问题。我们求解的问题包括误差分析,线性方程组的求解,微分方程的求解等问题。在选择合适的计算方法的时候要考虑方法的收敛性,稳定性,以及哪种方法计算速度快,最终结果误差小。这门课与计算机密切结合并且实用性极强,能够将所学的知识在实践中得到应用,加强了我对专业学习的信心。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库西电计算方法上机实习题(6)在线全文阅读。
相关推荐: