数值分析课程设计报告

2020-08-23 20:20

本科课程设计(报告)

数值分析课程设计

[设计题一]

设计实验验证Hilbert矩阵的病态性。

??1??1Hn??2 ????1??n1213?1n?1?????n?1?n?1?? ??1??2n?1?1(提示:先取x(比如x=(1,1…..1))计算出b=Hx,然后通过列主元GAUSS消去法求解Hx=b,得到近似解x,比较之,并研究随着n增大,解的误差变化情况,得出结论 )

?

设计思路:

(1)取定初值X=(1,1,1,…),计算出b=Hx,然后通过列主元GAUSS消去法求解Hx=b,得

到近似解B=(b1,b2,b3…); (2)再把近似解B,代入方程b=Hx,,解出X1,比较X与X1,判断H矩阵的病态性;

(3)比较各个H矩阵的病态性,研究它们的误差变化情况。

算法步骤:

(1)取一个三阶H矩阵,按照设计思路的方法,判断出三阶H矩阵的病态性; (2)取一个四、五阶H矩阵,同理,判断出四阶H矩阵的病态性。

程序清单:

Xa=[1;1;1];Ha=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5]; Ba=Ha*Xa Ba=[1.83;1.08;0.78]; Xa=Ha\\Ba

Xb=[1;1;1;1];Hb=[1,1/2,1/3,1/4;1/2,1/3,1/4,1/5;1/3,1/4,1/5,1/6;1/4,1/5,1/6,1/7;]; Bb=Hb*Xb

Bb=[2.08;1.28;0.95;0.76]; Xb=Hb\\Bb

Xc=[1;1;1;1;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

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

2

结果分析:

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

0.99000000000000 1.08000000000001 0.89999999999999

Xb =

1.27999999999997 -1.79999999999961 7.19999999999903 -2.79999999999936

Xc =

1.0e+002 * -0.06999999999975 1.48199999999542 -6.25799999998035 9.37999999997045 -4.53599999998560

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

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

[设计题二]

1225

根x*32年,达。芬奇研究了方程x?2x?10x?20?0并得到它的一个近似

?1.368808107。没有人知道他用什么方法得到它。设计两种方法去计算,并比较这

两种方法。

设计思路与算法步骤:

不动点迭代法:

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

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

始值X0=1

牛顿迭代法:

(1) 用牛顿迭代法,得到迭代方程 x1=x0-f(x0)/fˊ(x0),编译函数M文件 (2)取适当的ε,δ,和迭代次数n,进行迭代,直到符合条件时,停止运算。

3

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

程序清单:

1、 函数文件:

原函数;

function y = fun(x) y=x.^3+2*x.^2+10*x-20; 迭代函数: function y=fun1(x) y=20/(x.^2+2*x+10); 导函数: function y =dfun(x)

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

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

function [k,pcha,xpcha,xk]=diedai(x0,k) % 输入的量--x0是初始值,k是迭代次数 x(1)=x0; for i=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) pcha xpcha xk] end

if (pcha >1)&(xpcha>0.5)&(k>3) %迭代收敛性判断 disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式') return; end

if (pcha < 0.001)&(xpcha< 0.0000005)&(k>3) disp('祝贺您!此迭代序列收敛,且收敛速度较快') return; end

p=[(i-1) pcha xpcha xk]';

牛顿迭代的M文件:

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

%k为迭代初始值,xpcha,pcha是误差范围,迭代终止条件,n控制迭代次数 x(1)=x0; for i=1: 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); i=i+1;

xk=x(i);yk=fun(x(i)); [(i-1) xk yk pcha xpcha]

if (abs(yk)

4

end

if i>n

k=i-1; xk=x(i);[(i-1) xk yk pcha xpcha] return; end

[(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)

不动点迭代

牛顿迭代

5


数值分析课程设计报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:致走读生家长的一封信

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: