数值代数上机实验报告Word格式文档下载.docx

上传人:b****6 文档编号:21671058 上传时间:2023-01-31 格式:DOCX 页数:13 大小:32.93KB
下载 相关 举报
数值代数上机实验报告Word格式文档下载.docx_第1页
第1页 / 共13页
数值代数上机实验报告Word格式文档下载.docx_第2页
第2页 / 共13页
数值代数上机实验报告Word格式文档下载.docx_第3页
第3页 / 共13页
数值代数上机实验报告Word格式文档下载.docx_第4页
第4页 / 共13页
数值代数上机实验报告Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数值代数上机实验报告Word格式文档下载.docx

《数值代数上机实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值代数上机实验报告Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

数值代数上机实验报告Word格式文档下载.docx

n-1

b(j)=b(j)/A(j,j);

b(j+1:

n)=b(j+1:

n)-b(j)*A(j+1:

n,j);

end

b(n)=b(n)/A(n,n);

%前代法

A=A'

;

forj=n:

-1:

2

b(1:

j-1)=b(1:

j-1)-b(j)*A(1:

j-1,j);

b

(1)=b

(1)/A(1,1);

%回代法

disp('

平方根法的解即为b'

改进平方根法函数程序如下:

functionb=gaijinpinfanggenfa(A,b)

v=zeros(n,1);

fori=1:

j-1

v(i)=A(j,i)*A(i,i);

A(j,j)=A(j,j)-A(j,1:

j-1)*v(1:

j-1);

A(j+1:

n,j)=(A(j+1:

n,j)-A(j+1:

n,1:

j-1))/A(j,j);

end%LDL'

分解

B=diag(A);

D=zeros(n);

D(i,i)=B(i);

A(i,i)=1;

End

A=tril(A);

%得到L和D

A=D*(A'

改进平方根法解得的解即为b'

调用函数解题:

clear;

clc;

n=input('

请输入矩阵维数:

'

b=zeros(n,1);

A=zeros(n);

fori=1:

forj=1:

A(i,j)=1/(i+j-1);

b(i)=b(i)+1/(i+j-1);

end%生成hilbert矩阵

[x,b]=pingfanggenfa(A,b)

b=gaijinpinfanggenfa(A,b)

运行结果:

40

Warning:

Matrixisclosetosingularorbadlyscaled.

Resultsmaybeinaccurate.RCOND=6.570692e-020.

>

Inpingfanggenfaat4

Inqiujieat10

Matlab自带解即为x

平方根法的解即为b

x=

1.6035

8.9685

0.8562

1.0195

0.9375

-50.2500

-3.0000

-16.0000

24.0000

-49.5000

-30.0000

39.0000

22.0000

-64.0000

-12.0000

2.0000

10.2500

-10.5000

-1.0000

-10.8750

83.0000

46.0000

-98.0000

12.0000

-69.0000

68.0000

21.0000

17.0000

-50.7188

-8.7500

-8.0000

112.0000

6.0000

-68.7500

44.0000

-28.0000

8.0000

-44.0000

 

b=

1.0e+007*

0.0000

-0.0000

0.0001

-0.0004

-0.0014

0.0424

-0.2980

1.1419

-2.7335

4.2539

-4.3018

2.7733

-1.1989

0.5406

-0.3688

0.3285

-0.4438

0.4621

-0.2513

0.0565

-0.0051

0.0071

-0.0027

-0.0031

0.0036

-0.0019

0.0009

0.0002

-0.0002

-0.0006

0.0004

改进平方根法解得的解即为b

1.0e+024*

-0.0012

0.0139

-0.0954

0.4208

-1.2101

2.0624

-1.0394

-3.3343

6.2567

-0.2463

-7.4594

2.8030

3.6990

0.7277

-1.7484

-0.4854

-3.6010

0.2532

5.1862

-2.1299

1.4410

0.8738

-4.5654

1.0422

4.0920

-2.7764

-2.2148

-0.8953

0.3665

4.8967

1.0416

0.1281

-4.3387

-1.1902

-2.8334

8.4610

-3.6008

实验二、利用QR分解解线性方程组:

利用QR分解解线性方程组Ax=b,其中

A=[16484;

41084;

881210;

441012];

b=[32263830];

求解程序如下:

定义house函数:

function[v,B]=house(x)

n=length(x);

y=norm(x,inf);

x=x/y;

Q=x(2:

n)'

*x(2:

n);

v

(1)=1;

v(2:

n)=x(2:

ifn==1

Q=0;

B=0;

else

a=sqrt(x

(1)^2+Q);

ifx

(1)<

=0

v

(1)=x

(1)-a;

else

v

(1)=-Q/(x

(1)+a);

B=2*v

(1)^2/(Q+v

(1)^2);

v=v/v

(1);

进行QR分解:

b=b'

x=size(A);

m=x

(1);

n=x

(2);

d=zeros(n,1);

[v,B]=house(A(j:

m,j));

m,j:

n)=(eye(m-j+1)-B*(v'

)*v)*A(j:

d(j)=B;

ifj<

m

m,j)=v(2:

m-j+1);

end%QR分解

R=triu(A);

%得到R

D=A;

I=eye(m,n);

Q=I;

D(i,i)=1;

H=tril(D);

M=H'

N=I-d(i)*H(1:

m,i)*M(i,1:

m);

Q=Q*N;

end%得到Q

b=(Q'

)*b;

%Q是正交阵

b(j)=b(j)/R(j,j);

j-1)-b(j)*R(1:

b

(1)=b

(1)/R(1,1);

%回带法

运行结果如下:

R=

18.76179.807215.776911.0864

09.99099.33587.5341

005.99459.8013

000-0.5126

Q=

0.8528-0.4368-0.2297-0.1709

0.21320.7916-0.4594-0.3417

0.42640.38220.28440.7689

0.21320.19110.8095-0.5126

b=

1.00000000000000

1.00000000000001

0.999999999999988

实验三、Newton下山法解非线性方程组:

3x-cos(yz)-

=0,

-81

+sinz+1.06=0,

exp(-xy)+20z+

=0;

要求满足数值解

满足

定义所求方程组的函数:

Newtonfun.m

functionF=Newtonfun(X)

F(1,1)=3*X

(1)-cos(X

(2)*X(3))-1/2;

F(2,1)=X

(1)^2-81*(X

(2)+0.1)^2+sin(X(3))+1.06;

F(3,1)=exp(-X

(1)*X

(2))+20*X(3)+(10*pi-3)/3;

End

向量求导:

Xiangliangqiudao.m

functionJ=xiangliangqiudao()

symsxyz

X=[x,y,z];

F=[3*X

(1)-cos(X

(2)*X(3))-1/2;

X

(1)^2-81*(X

(2)+0.1)^2+sin(X(3))+1.06;

exp(-X

(1)*X

(2))+20*X(3)+(10*pi-3)/3];

J=jacobian(F,[xyz]);

代值函数:

Jacobi.m

functionF=Jacobi(x)

F=[3,x(3)*sin(x

(2)*x(3)),x

(2)*sin(x

(2)*x(3));

2*x

(1),-162*x

(2)-81/5,cos(x(3));

-x

(2)/exp(x

(1)*x

(2)),-x

(1)/exp(x

(1)*x

(2)),20];

方程组求解:

formatlong;

%数据表示为双精度型

X1=[0,0,0]'

eps=10^(-8);

k=1;

i=1;

X2=X1-Jacobi(X1)^(-1)*Newtonfun(X1);

while(norm(subs(X2-X1,pi,3.1415926),2)>

=eps)&

&

(norm(Newtonfun(X1),2)>

=eps)

ifnorm(Newtonfun(X2),2)<

norm(Newtonfun(X1),2)%判断先后两次迭代的大小

X1=X2;

B=inv(Jacobi(X2));

C=Newtonfun(X2);

X2=X2-B*C;

i=i+1;

else

v=1/(2^k);

%引入下山因子

X2=X2-v*B*C;

k=k+1;

j=i+k-1%迭代次数

X=X2%输出结果

j=

5

X=

0.500000000000000

-0.000000000000000

-0.523598775598299

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

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1