数值分析课程设计报告Word格式文档下载.docx

上传人:b****4 文档编号:6568476 上传时间:2023-05-06 格式:DOCX 页数:24 大小:1.42MB
下载 相关 举报
数值分析课程设计报告Word格式文档下载.docx_第1页
第1页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第2页
第2页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第3页
第3页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第4页
第4页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第5页
第5页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第6页
第6页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第7页
第7页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第8页
第8页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第9页
第9页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第10页
第10页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第11页
第11页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第12页
第12页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第13页
第13页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第14页
第14页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第15页
第15页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第16页
第16页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第17页
第17页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第18页
第18页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第19页
第19页 / 共24页
数值分析课程设计报告Word格式文档下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数值分析课程设计报告Word格式文档下载.docx

《数值分析课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计报告Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。

数值分析课程设计报告Word格式文档下载.docx

Xc=[1;

Hc=[1,1/2,1/3,1/4,1/5;

1/2,1/3,1/4,1/5,1/6;

1/3,1/4,1/5,1/6,1/7;

1/4,1/5,1/6,1/7,1/8;

1/5,1/6,1/7,1/8,1/9;

Bc=Hc*Xc

Bc=[2.28;

1.45;

1.09;

0.89;

0.75];

Xc=Hc\Bc

运行过程与输出结果截图:

结果分析:

代入近似解Ba,Bb,Bc而得到的X如下:

Xa=

0.99000000000000

1.08000000000001

0.89999999999999

Xb=

1.27999999999997

-1.79999999999961

7.199********903

-2.79999999999936

Xc=

1.0e+002*

-0.06999999999975

1.48199999999542

-6.25799999998035

9.37999999997045

-4.53599999998560

由此分析比较初始的Xa,Xb,Xc可以看出,Hilbert矩阵是一个病态矩阵,且随着n的增大,其误差变化加大。

即,Hilbert矩阵是一个随n增大而误差偏离更大的病态矩阵。

[设计题二]

1225年,达。

芬奇研究了方程

并得到它的一个近似根

没有人知道他用什么方法得到它。

设计两种方法去计算,并比较这两种方法。

设计思路与算法步骤:

不动点迭代法:

(1)先把方程变换为x=20/(x.^2+2*x+10),并编译函数M文件

(2)利用不动点迭代法,确定迭代次数,进行运算,不妨设迭代次数为20,由题目可设迭代初始值X0=1

牛顿迭代法:

(1)用牛顿迭代法,得到迭代方程x1=x0-f(x0)/fˊ(x0),编译函数M文件

(2)取适当的ε,δ,和迭代次数n,进行迭代,直到符合条件时,停止运算。

(3)确定迭代初始值x0=1,设精确为0.000000001.

1、函数文件:

原函数;

functiony=fun(x)

y=x.^3+2*x.^2+10*x-20;

迭代函数:

functiony=fun1(x)

y=20/(x.^2+2*x+10);

导函数:

functiony=dfun(x)

y=3*x.^2+4*x+10;

2、不动点迭代的M文件:

function[k,pcha,xpcha,xk]=diedai(x0,k)

%输入的量--x0是初始值,k是迭代次数

x

(1)=x0;

fori=1:

k

x(i+1)=fun1(x(i));

%程序中调用的fun1.m为函数y=φ(x)

pcha=abs(x(i+1)-x(i));

xpcha=pcha/(abs(x(i+1))+eps);

%偏差计算

i=i+1;

xk=x(i);

[(i-1)pchaxpchaxk]

end

if(pcha>

1)&

(xpcha>

0.5)&

(k>

3)%迭代收敛性判断

disp('

请用户注意:

此迭代序列发散,请重新输入新的迭代公式'

return;

end

if(pcha<

0.001)&

(xpcha<

0.0000005)&

3)

祝贺您!

此迭代序列收敛,且收敛速度较快'

p=[(i-1)pchaxpchaxk]'

;

牛顿迭代的M文件:

function[k,xk,yk,pcha,xpcha]=newton(x0,tx,fx,n)

%k为迭代初始值,xpcha,pcha是误差范围,迭代终止条件,n控制迭代次数

n

x(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps);

%牛顿迭代公式与偏差计算表达式

pcha=abs(x(i+1)-x(i));

xpcha=pcha/(abs(x(i+1))+eps);

yk=fun(x(i));

[(i-1)xkykpchaxpcha]

if(abs(yk)<

fx)&

((pcha<

tx)|(xpcha<

tx))%当偏差且自变量x的偏差小于初始精度时,算法继续。

k=i-1;

xk=x(i);

[(i-1)xkykpchaxpcha]%循环次数减一次

end

ifi>

n

[(i-1)xkykpchaxpcha]

[(i-1),xk,yk,pcha,xpcha]'

%在命令窗口中输入以下语句,可得以下结果:

[k,pcha,xpcha,xk]=diedai(1,20)

[k,xk,yk,pcha,xpcha]=newton(1,0.000000001,0.000000001,1000)

不动点迭代

牛顿迭代

迭代法:

运行结果

k=

20

pcha=

1.077823423845103e-007

xpcha=

7.874174939314717e-008

xk=

1.36880807468942

容易看出,进行20次迭代之后,得到的结果x=1.36880807468942,而且与题目所给的

,十分接近。

5

1.36880810782137

yk=

0

1.7863568394251e-015

1.2987398576591e-015

可知,利用牛顿迭代法进行五次迭代后,即可得到满足精度的结果,与题目给的答案接近。

总而言之,不动点迭代法与牛顿迭代法这两种方法,可见,牛顿迭代法,运算次数少,且误差小于不动点迭代的运算误差,故牛顿迭代法比较优越。

[设计题四]

地球卫星飞行的轨道是一个椭圆,椭圆的周长计算公式为

其中a为椭圆长半轴,c是椭圆中心与地球中心的距离。

令H,h分别为远地点,和近地点距离。

R=6371(km)为地球半径。

则a=(2R+H+h)/2,c=(H-h)/2.我国第一颗人造卫星H=3484km,h=439km.

(a=(2*6371+3484+439)/2=8332.5,c=(3484-439)/2)=1522.5

试通过复化梯形公式,复化辛普森公式计算卫星轨道的周长,且研究并比较这两种的方法的收敛性。

(1)、编译被积函数M文件,被积函数表达式为:

y=8332.5*sqrt(1-(1522.5/8332.5)^2*sin(x));

(2)、根据复化梯形公式,编译算法。

不妨设递归次数为15次。

(由于复化梯形公式,的两个端点值,所使用的公式不同,故要分开编写循环体)

(3)、根据复化辛普森公式,

,编译算法,不妨设递归次数为15次。

被积函数:

functiony=fun4(x)

复化梯形公式;

functionT=rctrap(fun4,a,b,m)%fun4表示被积函数,a,b是被积函数上下限,m是递归次数

n=1;

h=b-a;

T=zeros(1,m+1);

x=a;

%赋值计算

T

(1)=h*(feval(fun4,a)+feval(fun4,b))/2;

%初次调用梯形公式

m%复化梯形公式主体

h=h/2;

n=2*n;

s=0;

fork=1:

n/2

x=a+h*(2*k-1);

s=s+feval(fun4,x);

T(i+1)=T(i)/2+h*s;

%最后一次调用复化梯形公式

T=T(1:

m);

复化辛普森公式:

function[y,n,yiter]=SimpsonInt(fun,a,b,epsilon)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%Function:

Simpson积分

%%Argument:

fun是被积函数;

a,b是积分上下限;

epsilon是误差容限

%%Return:

y为积分结果;

将[a,b]平均n等分;

yiter迭代的积分值

if(nargin<

4)

epsilon=1e-6;

warning(['

usage:

'

mfilename,'

(fun,a,b[,epsilon])'

]);

n=2;

h=(b-a)/4;

y1=feval(fun,a)+feval(fun,b);

y2=feval(fun,(a+b)/2);

y0=(b-a)/6*(y1+4*y2);

yiter=y0;

while1

y3=sum(feval(fun,a+(1:

2:

2*n-1)*h));

y=h/3*(y1+2*y2+4*y3);

ifabs(y-y0)<

15*epsilon

break;

n=n+n;

h=h/2;

y2=y2+y3;

y0=y;

yiter=[yiter,y0];

在命令窗口中输入:

Q1=rctrap(@fun4,0,pi/2,15)

vpa(Q1,7)

[y,n,yiter]=SimpsonInt(@fun4,0,pi/2,0.01)

vpa(y,7)

可得以下截图

复化梯形公式

ans=

[12978.49,12955.87,12950.43,12949.09,12948.75,12948.67,12948.65,12948.64,12948.64,12948.64,12948.64,12948.64,12948.64,12948.64,12948.64]

复化辛普森公式

ans=12948.64

可见,利用复化梯形公式计算得到的周长为12948.64,而利用复化辛普森公式计算得到的周长为12948.64时,仅递归了4次。

由此可见,复化辛普森公式的收敛速度比复化梯形公式快。

[设计题五]

给定单摆方程初值问题

其中g=9.8,l=25.

取初始偏离角度

其精确解为

分别对上述两种情况按照下列方法求出其数值解,比较各方法的优缺点,并将计算结果与精确解做比较(列表、画图)。

(方案I)欧拉法,步长h=0.025,h=0.1;

(方案II)改进的欧拉法,步长h=0.05,h=0.1;

(方案III)四阶经典龙格—库塔法,步长h=0.1。

对于高阶常微分方程的解法:

1、把二阶微分方程化成标准型dt/dx=-g/l*sinxt(0)=0x(0)=θx=θ;

t=x’

2、把函数编译成矩阵表达式

3、解出精确解

4、利用欧拉法,改进的欧拉法,四阶龙格库塔法,求解

5、在相同的步长内,比较三种方法和精确解的误差大小

函数M文件:

functionf=dy(x,y)

f=[y

(2);

-9.8*sin(y

(1))/25];

(1)精确解:

y=0.1745*cos(9.8*x/25)

plot(x,y,'

-'

);

xlabel('

x'

),ylabel('

y'

),

(2)欧拉法:

function[x,y]=Euler(fun,x0,xt,y0,n,h);

%xt是右端点值

y=y0;

%赋初值

x(i+1)=x(i)+h;

y(:

i+1)=y(:

i)+h*feval(fun,x(i),y(:

i));

%欧拉公式

)%作图

),

(3)改进的欧拉公式:

function[x,y]=Impeuler(fun,x0,xt,y0,n,h);

%定义改进的欧拉函数

%赋值

n

%改进欧拉公式

y1=y(:

y2=y(:

i)+h*feval(fun,x(i+1),y1);

i+1)=(y1+y2)/2;

(4)四阶经典龙格—库塔法:

function[x,y]=RK4(fun,y0,h,a,n);

x

(1)=a;

%赋值

1)=y0;

n%四阶经典龙格—库塔法公式

x(i+1)=x(i)+h;

k1=feval(fun,x(i),y(:

k2=feval(fun,x(i)+h/2,y(:

i)+h*k1/2);

k3=feval(fun,x(i)+h/2,y(:

i)+h*k2/2);

k4=feval(fun,x(i)+h,y(:

i)+h*k2);

y(:

i)+h*(k1+2*k2+2*k3+k4)/6;

%在命令窗口中输入,可得以下结果

[x,y]=euler(@dy,0,1,[0.1745;

0],10,0.1)

[x,y]=euler(@dy,0,1,[0.1745;

0],40,0.025)

[x,y]=euler(@dy,0,1,[0.5236;

[x,y]=Impeuler(@dy,0,1,[0.1745;

0],20,0.05)

[x,y]=Impeuler(@dy,0,1,[0.1745;

[x,y]=Impeuler(@dy,0,1,[0.5236;

[x,y]=RK4(@dy,[0.5236;

0],0.1,0,10)

[x,y]=RK4(@dy,[0.1745;

0],0.1,0,10)

y=0.1745*cos(sqrt(9.8/25)*x)

y=0.5236*cos(sqrt(9.8/25)*x)

截图:

1、精确解:

(方案I)欧拉法:

(1)步长h=0.025,

(2)h=0.1

(3)h=0.025

(4)h=0.1

(方案II)改进的欧拉法:

(1)步长h=0.05,

(2)h=0.1,

(1)h=0.1,

(2)h=0.05,

(方案III)四阶经典龙格—库塔法:

(1)

(2)

1、当

,h=0.1时,

从上诉的程序运行过程和结果可以看出,利用改进的欧拉法和经典四阶龙格库塔公式解出的值,比较接近精确解,而欧拉法比较远离精确解。

且经典四阶龙格库塔公式收敛相对快一点。

2、当

,h=0.1时,

得出的结论,与

时,相同。

总而言之,利用四阶龙格库塔方法所得的结果比较具有优越性,且收敛快。

而欧拉算法,比较简单,运算比较快,改进的欧拉法处于两者之间

心得体会

这次课程设计的时间不算长,可是我从中学习到了很多东西。

由于有选择数学软件这个课程,所以对于matlab这个软件的认识还是有一定的基础。

不过,由于实际操作比较小,所以处理起这个课程设计还是比较吃力。

从一开始,我对于matlab的一无所知,到现在可以利用这个软件对一些常用的算法,加于研究和设计,途中经历了很多困难。

比如,如何使用for语句,矩阵的运算操作等等,都不太清楚。

具体的,例如设计题二。

虽然利用数值分析上所学到的知识,可以从理论上解决这个问题。

但是要利用matlab来处理的话,我顿时觉得无从下手,因为,要设计一个算法,毕竟涉及很多细小的问题,比如对于不动点迭代,需要如何设计变量,需要什么变量,for循环中的fun改怎么使用,怎么改变下标。

迭代过程的终止条件改如何设计等等。

在遇到这些困难的时候,我要做的最多的就是,不断的搜索和阅读材料。

从实例中总结和学习他人的方法,然后挪用到自己的程序算法中,不断的调试,修改,最后才把自己的算法设计出来。

在完成那一刻,心中便产生起一种莫名的成就感,也许这些就是我们在成功解决问题后,所得到的心里上最大的回报吧。

虽然,当你对一个无知的事物加以学习的过程是比较繁琐的。

但是,当你弄懂,和能够分析它的时候,你会发现,你能感受到一种发自内心无的成就感冲击着你的大脑。

只有尝试过,你才知道这个过程的乐趣。

通过这个程序设计,我对于matlab软件的使用,无疑更加熟练了。

而且对于数值分析这个课程,我也有了更深刻的体会。

通过这个课程设计,我认识到,为什么说,计算方法是为各种数学问题的数值解答研究提供最有效的算法。

因为利用计算方法中的知识,我们可以再误差允许的范围内,用最快,最准确的方法去解决我们生活中遇到的问题。

例如,卫星运行轨迹的周长运算,虽然可以得到精确的运算表达式,但是按部就班的去积分运算的话,无疑是一件复杂的工程。

而利用数值分析中的辛普森和梯形公式去计算,虽然有误差,但是误差范围可以控制,而且计算过程快捷。

这就是数值分析在实际生活中存在的意义吧。

总而言子,通过这次课程设计,我深刻认识到,我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

在这次课程设计中,我的处理问题能力,和信息检索能力,对matlab的操作程度和对数值分析中的知识都有了极大的提高,这些或许就是我在这次课程设计中的最大收获吧。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2