《数值计算方法》第二次上机作业.docVIP

  • 27
  • 0
  • 约4.28千字
  • 约 15页
  • 2017-06-04 发布于浙江
  • 举报
自动化学院 电气2班 蒋志涛 3012203209 上机: 1.解: 程序框图: 程序: 1.f.m function fx=f(x) if x==0 fx=1; else fx=(1+3*x^2)/(1+x^2+2*x^3+5*x^4); end end 2.lbg.m function lbg(fx,a,b,k,e) T=zeros(k,k); T(1,1)=(b-a)*(1+fx(b))/2; for i=1:k m=0; for j=1:2^(i-1) m=m+fx(a+(2*j-1)*(b-a)/(2^i)); end T(i+1,1)=0.5*T(i,1)+(b-a)*m/2^i; for n=1:i T(i+1,n+1)=(4^n*T(i+1,n)-T(i,n))/(4^n-1); end if abs(T(i+1,i+1)-T(i,i))=e i=4 break; else end end for i=1:k if T(i,1)==0 j=1; break; else end end if j==k error(所求次数不够或不可积) else end disp(所求的积分值为:) disp(T(j+1,1)) 将f.m和lbg,m保存在工作路径中(set path) 在程序框中输入: clc clear all; format long a=input(请输入你要求的积分的下限:); b=input(请输入你要求的积分的上限:); e=input(请输入你要求的积分的结束精度:); k=input(请输入你要求的积分的最大次数:); fx=@(x)(1+3*x^2)/(1+x^2+2*x^3+5*x^4); lbg(@f,a,b,k,e) 按照指令依次输入参数后得到: 2.解: 龙格-库塔法(Runge-Kutta) 龙格-库塔法(Runge-Kutta)?数值分析中,龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔·龙格和马丁·威尔海姆·库塔于1900年左右发明。 经典四阶龙格库塔法 龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。 令初值问题表述如下。 则,对于该问题的RK4由如下方程给出: 其中 这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积决定。该斜率是以下斜率的加权平均: k1是时间段开始时的斜率; k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn?+?h/2的值; k3也是中点的斜率,但是这次采用斜率k2决定y值; k4是时间段终点的斜率,其y值用k3决定。 当四个斜率取平均时,中点的斜率有更大的权值: RK4法是四阶方法,也就是说每步的误差是h5阶,而总积累误差为h4阶。 注意上述公式对于标量或者向量函数(y可以是向量)都适用。 显式龙格库塔法 显示龙格-库塔法是上述RK4法的一个推广。它由下式给出 其中 (注意:上述方程在不同著述中由不同但却等价的定义)。 要给定一个特定的方法,必须提供整数s?(阶段数),以及系数?aij?(对于1 ≤?j??i?≤?s),?bi?(对于i?= 1, 2, ...,?s)和ci?(对于i?= 2, 3, ...,?s)。这些数据通常排列在一个助记工具中,称为龙格库塔表: 0?c2?a21?c3?a31?a32????cs?as1?as2??as,s?? 1?b1?b2??bs?? 1?bs 龙格库塔法是自洽的,如果 如果要求方法有精度p则还有相应的条件,也就是要求舍入误差为O(hp+1)时的条件。这些可以从舍入误差本身的定义中导出。例如,一个2阶精度的2段方法要求b1?+?b2?= 1,?b2c2?= 1/2, 以及b2a21?= 1/2。 调用程序自有的ode45函数求解: function theta=R(t,X) x=X(1); dx=X(2); ddx=-0.98*sin(x); theta=[dx;ddx]; end 将上述M文件保存在工作路径中(set path); 程序框中输入: [t,Y]=ode45(@R,[0 10],[pi/4 0]); plot(t,Y(:,1),ro-,t,Y(:,2),bv-); legend(\theta-t,d\theta-t) 自编龙格-库塔法程序: M文件: function [y,z]=Runge_kutta(a,b,y0,z0,h) x=

文档评论(0)

1亿VIP精品文档

相关文档