中点公式法和五点公式法求数值微分.doc

上传人:hw****26 文档编号:2990424 上传时间:2019-05-16 格式:DOC 页数:14 大小:985KB
下载 相关 举报
中点公式法和五点公式法求数值微分.doc_第1页
第1页 / 共14页
中点公式法和五点公式法求数值微分.doc_第2页
第2页 / 共14页
中点公式法和五点公式法求数值微分.doc_第3页
第3页 / 共14页
中点公式法和五点公式法求数值微分.doc_第4页
第4页 / 共14页
中点公式法和五点公式法求数值微分.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、MATLAB 程序设计实践1、编程实现以下科学计算算法,并举一例应用之。“中点公式法和五点公式法求数值微分”解:中点公式法和五点公式法求数值微分如下:例 5-4 :中点公式法求导数应用实例。采用中点公式法求函数 f= 在 x=4 处的导数。x解:在 MATLAB 命令窗口中输入:df=MidPoint(sqrt(x),4)输出结果为:df=0.2500采用中点公式法求函数 f= 在 x=4 处的导数为 0.25,而导数的精确值也是 0.25x.详见以下:中点公式法流程图:开始If nargin=2,h=0.1 if nargin=3,h=0源代码:function df=MidPoint(fu

2、nc,x0,h)if nargin = 2 判断输入参数个数用中点公式求数值微分结束 输出:h 不能为 0h = 0.1;else if (nargin = 3 return;endendy1 = subs(sym(func), findsym(sym(func),x0+h);y2 = subs(sym(func), findsym(sym(func),x0-h);df = (y1-y2)/(2*h);运行结果如下:例 5-5 :五点公式法求导数应用实例。采用五点公式法求函数 f=sin(x)在 x=2 处的导数。解:在 MATLAB 命令窗口中输入:df1=FivePoint(sin(x),

3、2,1);df2=FivePoint(sin(x),2,2);df3=FivePoint(sin(x),2,3);df4=FivePoint(sin(x),2,4);df5=FivePoint(sin(x),2,5);用五种方法得到的结果为:df1=-0.4161df2=-0.4161df3=-0.4161df4=-0.4161df5=-0.4161而函数在 f=sin(x)在 x=2 的导数为 cos(2)=-0.4161,从上面的结果来看,五点公式的精度是很高的。详见以下:五点公式法流程图:If nargin=3,h=0.1 if nargin =4,h=0开始判断输入参数个数用公式一求导

4、用公式二求导用公式三求导用公式四求导用公式五求导结束输出: h 不能为 0 源代码:function df=FivePoint(func,x0,type,h)%,funcx0 %func%x0%type1,2,3,4,5,%h%dfif nargin =3h=0.1; else if (nargin =4return;endendy0 = subs(sym(func),findsym(sym(func),x0);y1 = subs(sym(func),findsym(sym(func),x0+h);y2 = subs(sym(func),findsym(sym(func),x0+2*h);y3

5、 = subs(sym(func),findsym(sym(func),x0+3*h);y4 = subs(sym(func),findsym(sym(func),x0+4*h);y_1 = subs(sym(func),findsym(sym(func),x0-h);y_2 = subs(sym(func),findsym(sym(func),x0-2*h);y_3 = subs(sym(func),findsym(sym(func),x0-3*h);y_4 = subs(sym(func),findsym(sym(func),x0-4*h);switch typecase 1,df=(-2

6、5*y0+48*y1-36*y2+16*y3-3*y4)/(12*h);%case 2,df=(-3*y_1-10*y0+18*y1-6*y2+y3)/(12*h);%case 3,df=(y_2-8*y_1+8*y1-y2)/(12*h);%case 4,df=(3*y1+10*y0-18*y_1+6*y_2-y_3)/(12*h);%case 5,df=(25*y0-48*y_1+36*y_2-16*y_3+3*y_4)/(12*h);%end运行结果如下:2、编程解决以下科学计算和工程实际问题。已知阿波罗(Apollo)卫星的运动轨迹 (x,y)满足下列微分方程rxxy32*31*. )

7、(2y321*.其中 = , =1- , 试在初45.821*2)(xr2*)(yxr值 x(0)=1.2, , 下进行数值求解,并绘制出阿波罗卫星位置0)(x,049357.)(.y(x,y)的轨迹。解:根据题目选用 MATLAB 代码如下:function dy=weifen(t,y)% 编程解决阿波罗(Apollo)卫星的运动轨迹 求解器属于变步长的一种,采用Runge-Kutta算法 万事如意u=1/82.45;b=1-u;dy=zeros(4,1);r=zeros(2,1);r(1)=sqrt(y(1)+u)2+(y(3)2);r(2)=sqrt(y(1)+b)2+(y(3)2);d

8、y(1)=y(2);dy(2)=2*dy(3)+y(1)-b*(y(1)+u)/(r(1)3)-u*(y(1)-b)/(r(2)3);dy(3)=y(4);dy(4)=-2*dy(1)+y(3)-b*y(3)/(r(1)3)-u*y(3)/(r(2)3);解:在 MATLAB 命令窗口中输入ode45(weifen,0 2.00,1.2 0 0 -1.04935751)T,Y=ode45(weifen,0 1.26,1.2 0 0 -1.04935751)运行结果:阿波罗卫星位置(x,y)的轨迹图如下:实验图所示是一个跷跷板,两板价较为,左边板长为 1.5m,上面的小孩重 150N,右边板长为 2m,小孩重为 400N.求当跷跷板平衡时,左边木板与水平方向的夹角 的大小。要求先求解析解,然后给出两种解决方案。解:根据力矩平衡求解析解 由图示可有下列关系式:500 1.5 =2 400cos)31cos(解该式得: 738arctni4035即: d46.0两种方法的求解:方案一:采用两步迭代法求解方程:500 1.5 =2 400cos)31cos(两步迭代法的 MATLAB 的代码如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。