《Matlab 程序设计实践》课程考核.docx

上传人:b****0 文档编号:303587 上传时间:2022-10-08 格式:DOCX 页数:22 大小:235.35KB
下载 相关 举报
《Matlab 程序设计实践》课程考核.docx_第1页
第1页 / 共22页
《Matlab 程序设计实践》课程考核.docx_第2页
第2页 / 共22页
《Matlab 程序设计实践》课程考核.docx_第3页
第3页 / 共22页
《Matlab 程序设计实践》课程考核.docx_第4页
第4页 / 共22页
《Matlab 程序设计实践》课程考核.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

《Matlab 程序设计实践》课程考核.docx

《《Matlab 程序设计实践》课程考核.docx》由会员分享,可在线阅读,更多相关《《Matlab 程序设计实践》课程考核.docx(22页珍藏版)》请在冰豆网上搜索。

《Matlab 程序设计实践》课程考核.docx

《Matlab程序设计实践》课程考核

《Matlab程序设计实践》课程考核

班级:

材料5562

学号:

054633898

姓名:

原迅

一.编程实现以下科学计算算法,并举一例应用之。

“帕德逼近”

在matlab中编程实现的帕德逼近法函数为:

Pade。

功能:

用帕德形式的有理分式逼近已知函数。

调用格式:

f=Pade(y,n)或f=Pade(y,n,x0)

其中,y为已知函数;

n为帕德有理分式的分母多项式的最高次数;

x0为逼近点的x坐标;

f为求得的帕德有理分式或在x0处的逼近值。

在matlab中实现函数的帕德逼近的代码如下:

M文件名:

Pade.m

functionf=pade(y,n,x0)

%用帕德形式的有理分式逼近已知函数

%已知函数:

y

%帕德有理分式的分母多项式的最高次数:

n

%逼近点的x坐标:

x0

%求得的帕德有理分式或在x0处的逼近值:

f

symst;

A=zeros(n,n);

q=zeros(n,1);

p=zeros(n+1,1);

b=zeros(n,1);

yy=0;

a(1:

2*n)=0.0;

for(i=1:

2*n)

yy=diff(sym(y),findsym(sym(y)),n);

a(i)=subs(sym(yy),findsym(sym(yy)),0.0)/factorial(i);

end;

for(i=1:

n)

for(j=1:

n)

A(i,j)=a(i+j-1);

end;

b(i,1)=-a(n+i);

end;

q=A\b;

p

(1)=subs(sym(y),findsym(sym(y)),0.0);

for(i=1:

n)

p(i+1)=a(n)+q(i)*subs(sym(y),findsym(sym(y)),0.0);

for(j=2:

i-1)

p(i+1)=p(i+1)+q(j)*a(i-j);

end

end

f_1=0;

f_2=0;

for(i=1:

n+1)

f_1=f_1+p(i)*(t^(i-1));

end

for(i=1:

n)

f_2=f_2+q(i)*(t^i);

end

if(nargin==3)

f=f_1/f_2;

f=subs(f,'t',x0);

else

f=f_1/f_2;

f=vpa(f,6);

end

 

方法一算法实现流程图如下:

 

No

Yes

 

No

Yes

No

Yes

 

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

 

 

例子:

帕德逼近应用实例,用勒让德公式(取四项)逼近函数1/(1-x),并求当x=0.5时的函数值

解:

在matlab命令窗口中输入以下命令:

M文件名:

aa.m

>>f=Pade('1/(1-x)',4)

f=

(2.92857*t^4+0.821429*t^3+0.988095*t^2+1.0006*t+1.0)/(-0.5*t^4+0.107143*t^3-0.0119048*t^2+0.000595238*t+1.0)

M文件名:

bb.m

>>f=Pade('1/(1-x)',4,0.5)

f=

2.0757

 

从逼近结果看,函数的准确值为1/(1-0.5)=2,而用4次有理分式的帕德逼近已经达到了很高的精度了。

实现流程图为:

 

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

拉弯合成部件的截面设计。

这一设计计算将归结为解一个三次代数方程,过去要用试凑法反复运算,本例显示了用matlab求解的简洁。

钻床立柱如图所示。

设P=15kN,许用拉应力[σ]=35Mpa,钻头轴与立柱轴距离为0.4m,试求立柱直径。

钻床受力图

这个三次代数方程可用matlab多项式求根的roots函数求解

M文件名:

dd.m

源程序:

P=input('p='),l=input('l=')%输入力和偏心距

asigma=input('[Ò]=')%输入许用拉应力

a=[asigma*pi/32,0,-P/8,-P*1];%求三次代数方程的导数向量

r=roots(a);%求代数方程的根

d=r(find(imag(r)==0))%只取实根

结果:

>>dd

p=15000

P=

15000

l=0.4

l=

0.4000

[σ]=35e6

asigma=

35000000

 

d=

0.1219

 

流程图如下:

 

三.求解下列边值问题:

(1)x”=(-2/t)x’+(2/t.^2)x+(10cos(ln(t)))/t.^2,其中x

(1)=1,x(3)=3,输出t=1.5,2,2.5时x的值,并作x的图。

解:

调用dsolve函数,求解微分方程的符号解法

M文件名:

ff.m

>>x=dsolve('D2x=(-2/t)*D1x+(2/(t^2))*x-(10*cos(log(t)))/(t^2)','x

(1)=1','x(3)=3','t')

x=

1/13*t*(28*tan(1/2*log(3))^2+9*tan(1/2*log(3))+1)/(1+tan(1/2*log(3))^2)-9/13/t^2*(6*tan(1/2*log(3))^2+tan(1/2*log(3))+3)/(1+tan(1/2*log(3))^2)-(2*tan(1/2*log(t))-3+3*tan(1/2*log(t))^2)/(1+tan(1/2*log(t))^2)

>>ezplot(x)

>>legend('x-t的函数')

 

>>t=[1.5,2,2.5]

t=

1.50002.00002.5000

>>x=subs(sym(x),findsym(x),t)

x=

2.47762.83362.9391

 

实现流程图如下:

 

 

 

 

 

 

(2)y”+(1/t)y’+(1-1/(4t.^2))y=sprt(t)cost,其中y

(1)=1,y(6)=-0.5,输出t=2,3,4,5时y的值,并作y的图。

 

源程序为:

M文件名:

gg.m

y=dsolve('D2y+(1/t)*Dy+(1-1/(4*t^2))*y=sqrt(t)*cos(t)','y

(1)=1','y(6)=-0.5')

t=[0:

0.1:

10]

y=subs(sym(y),findsym(y),t)

plot(t,y,'-r')

legend('y-t的函数')

y=dsolve('D2y+(1/t)*Dy+(1-1/(4*t^2))*y=sqrt(t)*cos(t)','y

(1)=1','y(6)=-0.5')

t=[2,3,4,5]

y=subs(sym(y),findsym(y),t)

结果为:

>>gg

y=

(2^(1/2)*sin(t)*((2^(1/2)*pi^(1/2)*t^2)/8-(2^(1/2)*pi^(1/2))/16+(2^(1/2)*pi^(1/2)*cos(2*t))/16+(2^(1/2)*pi^(1/2)*t*sin(2*t))/8))/(pi^(1/2)*t^(1/2))-(cos(t)*(sin(2*t)/4-(t*cos(2*t))/2))/(2*t^(1/2))-(6^(1/2)*sin(t)*(48*cos

(1)+16*6^(1/2)*cos(6)+142*6^(1/2)*cos

(1)*sin(6)-2*6^(1/2)*cos(6)*sin

(1)-4*6^(1/2)*cos(6)*sin

(1)*sin

(2)+24*6^(1/2)*cos

(1)*sin(6)*sin(12)-4*6^(1/2)*cos

(1)*cos

(2)*cos(6)+24*6^(1/2)*cos

(1)*cos(6)*cos(12)+2*6^(1/2)*cos

(1)*cos(6)*sin

(2)-2*6^(1/2)*cos

(2)*cos(6)*sin

(1)-2*6^(1/2)*cos

(1)*cos(6)*sin(12)+2*6^(1/2)*cos

(1)*cos(12)*sin(6)))/(96*t^(1/2)*(cos

(1)*sin(6)-cos(6)*sin

(1)))+(6^(1/2)*cos(t)*(48*sin

(1)+16*6^(1/2)*sin(6)+140*6^(1/2)*sin

(1)*sin(6)+2*6^(1/2)*cos

(1)*sin

(2)*sin(6)-2*6^(1/2)*cos

(2)*sin

(1)*sin(6)-2*6^(1/2)*cos(6)*sin

(1)*sin(12)+2*6^(1/2)*cos(12)*sin

(1)*sin(6)-4*6^(1/2)*sin

(1)*sin

(2)*sin(6)+24*6^(1/2)*sin

(1)*sin(6)*sin(12)-4*6^(1/2)*cos

(1)*cos

(2)*sin(6)+24*6^(1/2)*cos(6)*cos(12)*sin

(1)))/(96*t^(1/2)*(cos

(1)*sin(6)-cos(6)*sin

(1)))

t=

Columns1through9

00.10000.20000.30000.40000.50000.60000.70000.8000

Columns10through18

0.90001.00001.10001.20001.30001.40001.50001.60001.7000

Columns19through27

1.80001.90002.00002.10002.20002.30002.40002.50002.6000

Columns28through36

2.70002.80002.90003.00003.10003.20003.30003.40003.5000

Columns37through45

3.60003.70003.80003.90004.00004.10004.20004.30004.4000

Columns46through54

4.50004.60004.70004.80004.90005.00005.10005.20005.3000

Columns55through63

5.40005.50005.60005.70005.80005.90006.00006.10006.2000

Columns64through72

6.30006.40006.50006.60006.70006.80006.90007.00007.1000

Columns73throug

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

当前位置:首页 > 初中教育

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

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