数值分析实验指导书

2026/1/17 3:23:16

end

if (djwcX

disp

else disp

X=X;jX=jX' end end

X=X;D,U,L,jX=jX (a)的MATLAB程序如下:

A=[10 -1 -2;-1 10 -2;-1 -1 0.5]; b=[7.2;8.3;4.2]; X0=[0;0;0];

X=gsdddy(A,b,X0,inf, 0.001,100) (b)的MATLAB程序如下:

A=[3 4 -5 7;2 -8 3 -2;4 51 -13 16;7 -2 21 3];b=[5;2;-1;21]; X0=[0;0;0;0];X=gsdddy(A,b,X0,inf,0.001,100) 2.用逐次超松弛迭代法解由一电路得到的方程组

11?111(??)x?x??2431423x3?10,?1111?1?x?(??)x?x3?0, ?124355?411115?1?x?x?(??)x?.3?31523353?解的精度为0.001。

逐次超松弛法的MATLAB程序如下: a(1,1)=1/2+1/4+1/3;a(1,2)=-1/4;a(1,3)=-1/3; a(2,1)=a(1,2);a(2,2)=1/4+1/3+1/5;a(2,3)=-1/5; a(3,1)=a(1,3);a(3,2)=a(2,3);a(3,3)=1/3+1/3+1/5; y(1)=20/2;y(2)=0;y(3)=5/3; x=zeros(1,3); w=1.2; for it=1:50 error=0;

15

for i=1:3 s=0;xb=x(i); for j=1:3

if i~=j,s=s+a(i,j)*x(j);end end

x(i)=w*(y(i)-s)/a(i,i)+(1-w)*x(i); error=error+abs(x(i)-xb); end

fprintf('it.no.=%3.0f,error=%7.2e\\n',it,error) if error/3<0.001,break;end end x

四、实验要求:

1.掌握常用的几种迭代方法; 2.掌握迭代法收敛性及误差估计;

3.学会用高斯-塞德尔迭代法、逐次超松弛迭代法求解线性方程组。

16

实验五 非线性方程的数值解法

一、实验目的:

1.掌握非线性方程的各种解法,包括迭代法、牛顿法,并通过编程练习与上机运算,体会迭代法、牛顿法的不同特点;

2.掌握解非线性方程的弦截法,并与牛顿法作比较; 3.了解各种方法的收敛性。 二、实验内容:

用二分法、牛顿法、弦截法求非线性方程的根。 三、实验过程:

1.用迭代法求方程f(x)?x2?2x?10的一个正根。 迭代法的MATLAB程序

function [k,piancha,xdpiancha,xk]=diedai1(x0,k) x(1)=x0; for i=1:k

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

piancha= abs(x(i+1)-x(i)); xdpiancha=piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk] end

if (piancha >1)&(xdpiancha>0.5)&(k>3) disp return; end

if (piancha < 0.001)&(xdpiancha< 0.0000005)&(k>3) disp return; end

p=[(i-1) piancha xdpiancha xk];

用不同迭代法求解的MATLAB程序如下: function m=fun1 (x) m=(10-x*x)/2;

[k,piancha,xdpiancha,xk]= diedai1(2,5)

2)/2的结果 运行后输出用迭代公式xk?1?(10?xk 17

[k,piancha,xdpiancha,xk]=1.00000000000000

1.00000000000000 0.33333333333333 3.00000000000000 2.00000000000000

2.50000000000000

5.00000000000000

0.50000000000000 3.00000000000000 4.37500000000000 0.89743589743590 4.87500000000000 4.00000000000000 11.75781250000000 1.70828603859251 -6.88281250000000 5.00000000000000 11.80374145507813 0.63167031671297 -18.68655395507813

请用户注意:此迭代序列发散

k=5,piancha = 11.80374145507813,xdpiancha = 0.63167031671297,xk = -18.68655395507813

由以上运行后输出的迭代序列与根x*=2.316 624 790 355 40相差越来越大,即迭代序列{xk}发散,此迭代法就失败.这时偏差piancha逐渐增大且偏差的相对误差xdpiancha的值大于0.5。

请重新输入新的迭代公式 function m=fun1 (x) m=10/(x+2);

[k,piancha,xdpiancha,xk]= diedai1(2,5) 用迭代公式xk?1?10/(xk?2)运行后输出的结果

[k,piancha,xdpiancha,xk]=1.00000000000000 0.50000000000000 0.20000000000000

2.50000000000000

2.00000000000000

0.27777777777778 0.12500000000000 2.22222222222222

3.00000000000000 0.14619883040936 0.06172839506173 2.36842105263158 4.00000000000000 0.07926442612555 0.03462603878116

2.28915662650602

5.00000000000000

0.04230404765128 0.01814486863115 2.33146067415730 k=5,piancha =0.04230404765128,xdpiancha = 0.01814486863115, xk = 2.33146067415730

可见,偏差piancha和偏差的相对误差xdpiancha的值逐渐变小,且第5次的迭代值xk =2.331 460 674 157 30与根x*=2.316 624 790 355 40接近,则迭代序列

{xk}收敛,但收敛速度较慢,此迭代法较为成功。

18


数值分析实验指导书.doc 将本文的Word文档下载到电脑
搜索更多关于: 数值分析实验指导书 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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