中点公式法和五点公式法求数值微分Word格式文档下载.docx

上传人:b****8 文档编号:22096869 上传时间:2023-02-02 格式:DOCX 页数:16 大小:840.07KB
下载 相关 举报
中点公式法和五点公式法求数值微分Word格式文档下载.docx_第1页
第1页 / 共16页
中点公式法和五点公式法求数值微分Word格式文档下载.docx_第2页
第2页 / 共16页
中点公式法和五点公式法求数值微分Word格式文档下载.docx_第3页
第3页 / 共16页
中点公式法和五点公式法求数值微分Word格式文档下载.docx_第4页
第4页 / 共16页
中点公式法和五点公式法求数值微分Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

中点公式法和五点公式法求数值微分Word格式文档下载.docx

《中点公式法和五点公式法求数值微分Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中点公式法和五点公式法求数值微分Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

中点公式法和五点公式法求数值微分Word格式文档下载.docx

源代码:

functiondf=MidPoint(func,x0,h)

ifnargin==2

h=0.1;

elseif(nargin==3&

&

h==0.0)

disp('

»

Ä

Ü

Î

ª

¡

'

);

return;

end

end

y1=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处的导数。

df1=FivePoint('

sin(x)'

2,1);

df2=FivePoint('

2,2);

df3=FivePoint('

2,3);

df4=FivePoint('

2,4);

df5=FivePoint('

2,5);

用五种方法得到的结果为:

df1=

-0.4161

df2=

df3=

df4=

df5=

而函数在f=sin(x)在x=2的导数为cos

(2)=-0.4161,从上面的结果来看,五点公式的精度是很高的。

五点公式法流程图:

Ifnargin=3,h=0.1ifnargin=4,h=0

functiondf=FivePoint(func,x0,type,h)

å

µ

ã

¹

«

Ê

½

·

¨

Ç

ó

È

º

¯

ý

funcÔ

Ú

x0´

¦

¼

×

£

Í

ò

Â

ç

Ò

â

Ã

û

func

x0

Ð

type£

1,2,3,4,5,£

©

ë

É

¢

²

³

¤

h

Ö

df

ifnargin==3

h=0.1;

elseif(nargin==4&

h==0.0)

0'

y0=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=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);

switchtype

case1,

df=(-25*y0+48*y1-36*y2+16*y3-3*y4)/(12*h);

¸

ö

Ç

case2,

df=(-3*y_1-10*y0+18*y1-6*y2+y3)/(12*h);

þ

case3,

df=(y_2-8*y_1+8*y1-y2)/(12*h);

case4,

df=(3*y1+10*y0-18*y_1+6*y_2-y_3)/(12*h);

Ë

case5,

df=(25*y0-48*y_1+36*y_2-16*y_3+3*y_4)/(12*h);

2、编程解决以下科学计算和工程实际问题。

①已知阿波罗(Apollo)卫星的运动轨迹(x,y)满足下列微分方程

其中

=

=1-

试在初值x(0)=1.2,

下进行数值求解,并绘制出阿波罗卫星位置(x,y)的轨迹。

根据题目选用MATLAB代码如下:

functiondy=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);

dy

(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'

[02.00],[1.200-1.04935751])

[T,Y]=ode45('

[01.26],[1.200-1.04935751])

运行结果:

阿波罗卫星位置(x,y)的轨迹图如下:

②实验图所示是一个跷跷板,两板价较为,左边板长为1.5m,上面的小孩重150N,右边板长为2m,小孩重为400N.求当跷跷板平衡时,左边木板与水平方向的夹角ɑ的大小。

要求先求解析解,然后给出两种解决方案。

②解:

根据力矩平衡求解析解

由图示可有下列关系式:

500

1.5

=2

400

解该式得:

即:

两种方法的求解:

方案一:

采用两步迭代法求解方程:

500

两步迭代法的MATLAB的代码如下:

functionroot=TwoStep(f,a,b,type,eps)

if(nargin==4)

eps=1.0e-4;

%eps±

í

¾

ü

´

ú

f1=subs(sym(f),findsym(sym(f)),a);

f2=subs(sym(f),findsym(sym(f)),b);

if(f1==0)

root=a;

if(f2==0)

root=b;

if(f1*f2>

0)

两端点函数值乘积大于0!

else

tol=1;

fun=diff(sym(f));

fa=subs(sym(f),findsym(sym(f)),a);

fb=subs(sym(f),findsym(sym(f)),b);

dfa=subs(sym(fun),findsym(sym(fun)),a);

dfb=subs(sym(fun),findsym(sym(fun)),b);

if(dfa>

dfb)

else

while(tol>

eps)

if(type==1)

r1=root;

fx1=subs(sym(f),findsym(sym(f)),r1);

dfx=subs(sym(fun),findsym(sym(fun)),r1);

r2=r1-fx1/dfx;

fx2=subs(sym(f),findsym(sym(f)),r2);

root=r2-fx2/dfx;

tol=abs(root-r1);

root=r2-fx2*(r2-r1)/(2*fx2-fx1);

r=TwoStep('

500*1.5*cos(x)-2*400*cos(1/3*pi-x)'

0,1/3*pi,1)

两个小孩所产生力矩随

变化的曲线如下图片:

运用Datacursor工具,得到交点处对应的X值为:

0.4678

也即:

x=0:

0.0001:

1/3*pi;

ML=500*1.5*cos(x);

MR=400*2*cos(1/3*pi-x);

plot(x,ML,'

-'

x,MR,'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1