matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

3.6.3 用P范数讨论AX=b解和A的性态的MATLAB程序

3.6.3  用P范数讨论解和*的性态的MATLAB程序

用P范数讨论解和的性态的MATLAB程序

function Acp=zpjwc(A,jA,b,jb,P)

Acp = cond (A,P);dA=det(A); X=A\b;

dertaA=A-jA;

PndA=norm(dertaA, P);dertab=b-jb;Pndb=norm(dertab, P);

if Pndb>0

jX=A\jb; Pnb= norm(b, P);PnjX = norm(jX,P); dertaX=X-jX;

PnjdX= norm(dertaX, P);jxX= PnjdX/PnjX; PnjX = norm(jX,P);

PnX = norm(X,P); jxX= PnjdX/PnjX; xX= PnjdX/PnX; Pndb=norm(dertab,P);

xAb=Pndb/Pnb;Pnbj=norm(jb,P); xAbj=Pndb/Pnbj;

Xgxx= Acp*xAb;

end

if PndA>0

jX=jA\b; dertaX=X-jX;PnX = norm(X,P);

PnjdX= norm(dertaX, P);

PnjX = norm(jX,P); jxX= PnjdX/PnjX;xX= PnjdX/PnX;

PnjA=norm(jA,P); PnA=norm(A,P);

PndA=norm(dertaA,P);xAbj= PndA/PnjA;xAb= PndA/PnA;

Xgxx= Acp*xAb;

end

if (Acp >50)&(dA<0.1)

disp('请注意:AX=b是病态的,A的P条件数Acp,A的行列式值dA,解X,近似解jX,解的相对误差jxX,解的相对误差估计值Xgxx,b或A的相对误差xAb依次如下:')

Acp,dA,X',jX',xX',jxX',Xgxx',xAb',xAbj'

else

disp('请注意: AX=b是良态的,A的P条件数Acp,A的行列式值dA,解X,近似解jX,解的相对误差jxX,解的相对误差估计值Xgxx,b或A的相对误差xAb依次如下:')

Acp,dA,X',jX',xX',jxX',Xgxx',xAb',xAbj'

end

 

例3.6.4  根据定理3.10,讨论线性方程组解的性态,并利用(3.32)式讨论当的每个元都取4位有效数字时,其解的相对误差.其中*为7阶希尔伯特矩阵,.

解 (1)取范数和条件数,线性方程组不变时,取范数和条件数,系数矩阵为7阶希尔伯特矩阵,中的每个元素取4位有效数字.

用P范数讨论解和的性态的MATLAB程序保存名为zpjwc.m的文件,然后在工作窗口输入MATLAB程序

>> jA =[1.0000  0.5000  0.3333  0.2500  0.2000  0.1667  0.1429

 0.5000  0.3333  0.2500  0.2000  0.1667  0.1429  0.1250

  0.3333  0.2500  0.2000  0.1667  0.1429  0.1250  0.1111

  0.2500  0.2000  0.1667  0.1429  0.1250  0.1111  0.1000

  0.2000  0.1667  0.1429  0.1250  0.1111  0.1000  0.0909

  0.1667  0.1429  0.1250  0.1111  0.1000  0.0909  0.0833

  0.1429  0.1250  0.1111  0.1000  0.0909  0.0833  0.0769];

A=hilb(7);b=[1;1/3;4;2;2;2;2];

jb=[1;0.3333;4;2;2;2;2]; Acp=zpjwc(A,jA,b,jb,inf)

运行后输出结果

请注意:AX=b是病态的,A的P 条件数Acp,A的行列式值dA,解X,近似解jX,解的相对误差jxX,解的相对误差估计值Xgxx,b或A的相对误差xAb依次如下:

Acp =                 dA =

  9.8519e+008             4.8358e-025

ans =

  1.0e+007 *

 0.0020   -0.0697    0.6243   -2.3054    4.0677   -3.4123    1.0943

ans =

  1.0e+004 *

 0.0349   -0.4807    2.1126   -5.1087    7.6557   -6.3239    2.1112

xX =                 jxX =                   Xgxx =

    0.9981                530.3248                 4.9291e+004

xAb =                xAbj =                

  5.0032e-005              5.0031e-005         

由此可见,因为条件数985 194 889.719 848 3,所以此方程组为病态的的解

的解为

    解的相对误差

, , 

即相对误差放大了约985 194 889.72倍.

 (2) 如果取2范数和2条件数计算,在MATLAB工作窗口输入程序

>> Acp =zpjwc(A,jA,b,jb,2)

运行后输出结果

请注意:AX=b是病态的,A的P 条件数Acp,A的行列式值dA,解X,近似解jX,解的相对误差jxX,解的相对误差估计值Xgxx,b或A的相对误差xAb依次如下:

Acp =                dA =

  4.7537e+008            4.8358e-025

ans =

  1.0e+007 *

 0.0020   -0.0697    0.6243   -2.3054    4.0677   -3.4123    1.0943

ans =

  1.0e+004 *

 0.0349   -0.4807    2.1126   -5.1087    7.6557   -6.3239    2.1112

xX =                  jxX =                 Xgxx=

    0.9981                 511.0640             2.9951e+004

xAb =                 xAbj =               

  6.3006e-005              6.3005e-005      

因为2条件数 475 367 356.59,所以此方程组为病态的.解的相对误差

,

即相对误差放大了约475 367 356.59倍.

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3030603.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1