*实验四求微分方程的解数学实验*自牛顿发明微积分以来,微分方程在描述事物运动规律上已发挥了重要的作用。实际应用问题通过数学建模所得到的方程,绝大多数是微分方程。由于实际应用的需要,人们必须求解微分方程。然而能够求得解析解的微分方程十分有限,绝大多数微分方程需要利用数值方法来近似求解。本实验主要研究如何用Matlab来计算微分方程(组)的数值解,并重点介绍一个求解微分方程的基本数值解法--Euler折线法。问题背景和实验目的*考虑一维经典初值问题基本思想:用差商代替微商根据Talyor公式,y(x)在点xk处有Euler折线法*初值问题的Euler折线法具体步骤:等距剖分:步长:分割求解区间差商代替微商得方程组:分割求解区间,差商代替微商,解代数方程为分割点k=0,1,2,...,n-1yk是y(xk)的近似*Euler折线法举例例:用Euler法解初值问题取步长h=(2-0)/n=2/n,得差分方程当h=,即n=5时,:*Euler折线法源程序clearf=sym('y+2*x/y^2');a=0;b=2;h=;n=(b-a)/h+1;%n=(b-a)/h;x=0;y=1;szj=[x,y];fori=1:n-1%i=1:ny=y+h*subs(f,{'x','y'},{x,y});x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2),'or-')*Euler折线法举例(续)解析解:解析解近似解y=1/3*(-18-54*x+45*exp(3*x))^(1/3)*Runge-Kutta方法为了减小误差,可采用以下方法:让步长h取得更小一些;改用具有较高精度的数值方法:龙格-库塔方法Runge-Kutta(龙格-库塔)方法是一类求解常微分方程的数值方法有多种不同的迭代格式*Runge-Kutta方法用得较多的是四阶R-K方法(教材第98页)其中*四阶R-K方法源程序clear;f=sym('y+2*x/y^2');a=0;b=2;h=;n=(b-a)/h+1;%n=(b-a)/h;x=0;y=1;szj=[x,y];fori=1:n-1%i=1:nl1=subs(f,{'x','y'},{x,y});l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});l4=subs(f,{'x','y'},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=[szj;x,y];endplot(szj(:,1),szj(:,2),'dg-')
实验Euler法求微分方程的解 来自淘豆网m.daumloan.com转载请标明出处.