本科课程设计(报告)
数值分析课程设计
[设计题一]
设计实验验证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 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数值分析课程设计报告在线全文阅读。
相关推荐: