北航数值分析大作业第二题Word格式.docx

上传人:b****2 文档编号:15006651 上传时间:2022-10-26 格式:DOCX 页数:26 大小:215.85KB
下载 相关 举报
北航数值分析大作业第二题Word格式.docx_第1页
第1页 / 共26页
北航数值分析大作业第二题Word格式.docx_第2页
第2页 / 共26页
北航数值分析大作业第二题Word格式.docx_第3页
第3页 / 共26页
北航数值分析大作业第二题Word格式.docx_第4页
第4页 / 共26页
北航数值分析大作业第二题Word格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

北航数值分析大作业第二题Word格式.docx

《北航数值分析大作业第二题Word格式.docx》由会员分享,可在线阅读,更多相关《北航数值分析大作业第二题Word格式.docx(26页珍藏版)》请在冰豆网上搜索。

北航数值分析大作业第二题Word格式.docx

2.记,令。

3.如果,则得到的一个特征值,置(降阶),转4;

否则转5。

4.如果,则得到的一个特征值,转11;

如果,则转3。

5.求2阶子阵

的两个特征值和,即计算二次方程

的两个根和。

6.如果,则得到的两个特征值和,转11;

否则转7。

7.如果,则得到的两个特征值和,置(降阶),转4;

否则转8

8.如果,则计算终止,未得到的全部特征值;

否则转9。

9.记,计算

10.置,转3。

11.的全部特征值已计算完毕,停止计算。

其中,的分解与的计算用下列算法实现:

记。

1.若全为零,则令,转5;

此算法执行完后,就得到。

(4)计算Q,R,一边求R*Q矩阵。

1.若全为零,则令转5;

否则转2.

2.计算

3.令。

4.计算

5.继续

当此算法执行完毕后,就得到正交矩阵和上三角矩阵

6.然后计算出矩阵

(5)用列主元素Gauss消去法计算矩阵对应于实特征值的特征向量,具体算法如下:

1.消元过程

(1)选行号,使。

(2)交换与所含的数值。

(3)对于计算

2.回代过程

最终得到的向量的即为对应于实特征值的特征向量。

二、源程序

#include<

iostream.h>

math.h>

iomanip.h>

#definen10

#defineE1.0e-12

voidHouseholder(doublea[n][n]);

//拟上三角化函数

doublesgn(doublea);

//符号函数

voidQRfenjie(doublea[n][n],doubleQ[n][n],doubleR[n][n]);

voidQR(doublea[n][n],doubleL[n][2]);

//带双步位移的QR分解

voidMxM(doubleM[n][n],doubleA[n][n],doubleB[n][n],intm);

//矩阵相乘

voidsolve(doublea[n][n],doubles1[2],doubles2[2],intm);

//解方程函数

voidGauss(doublea[n][n],doublex[n]);

//定义列主元高斯消去法函数

voidmain()

{

inti,j,k;

doublea[n][n],qr[n][n],q[n][n],r[n][n],L[n][2],x[n];

for(i=0;

i<

n;

i++)//录入要进行变换的矩a,并对q初始赋值。

{

for(j=0;

j<

j++)

{

if(i==j)

a[i][j]=1.5*cos(i+1+1.2*(j+1));

else

a[i][j]=sin(0.5*(i+1)+0.2*(j+1));

}

}

//cout<

<

endl;

Householder(a);

//调用拟上三角化函数

cout<

endl<

"

对矩阵A拟上三角化前七列的结果:

i++)

//k=0;

//为了显示方便,每行显示三个元素,使用k来实现

//cout<

矩阵A的第"

i+1<

行元素为:

7;

if(fabs(a[i][j])<

E)

a[i][j]=0;

cout<

setprecision(12)<

setiosflags(ios:

:

scientific)<

a[i][j]<

"

;

//k++;

//cout<

//if(k%3==0)//判断每行是否到达三个元素

cout<

对矩阵A拟上三角化后三列的结果:

for(j=7;

QRfenjie(a,q,r);

QR(a,L);

对矩阵A进行QR分解后所得矩阵前七列的结果:

对矩阵A进行QR分解后所得矩阵三列的结果:

/*cout<

对矩阵A进行QR分解后所得矩阵:

k=0;

k++;

if(k%3==0)

cout<

}*/

j++)

for(k=0,qr[i][j]=0;

k<

k++)

qr[i][j]=qr[i][j]+r[i][k]*q[k][j];

R*Q相乘的前七列:

R*Q的第"

if(fabs(qr[i][j])<

qr[i][j]<

//k++;

//if(k%3==0)

//cout<

R*Q相乘的后三列:

矩阵A的全部特征值为"

if(L[i][1]==0)

λ"

="

L[i][0]<

else

+"

L[i][1]<

i"

实特征值对应的特征向量分别是:

for(k=0;

k++)

if(L[k][1]==0)//判断特征值是否为实特征值

for(i=0;

i++)//重新录入矩阵A

{

for(j=0;

{

if(i==j)

a[i][j]=1.5*cos(i+1+1.2*(j+1))-L[k][0];

else

a[i][j]=sin(0.5*(i+1)+0.2*(j+1));

}

}

Gauss(a,x);

k+1<

L[k][0]<

对应的特征向量是:

for(j=0;

x[j]<

elsecontinue;

}

}

voidHouseholder(doublea[n][n])//拟上三角化函数

intm=0;

doubled,c,h,t;

doubleu[n],p[n],q[n],w[n];

n-2;

for(j=i+2;

if(a[j][i]<

=E)

m=m+1;

if(m==(n-2-i))

continue;

for(j=i+1,d=0;

d=d+a[j][i]*a[j][i];

d=sqrt(d);

c=-1*sgn(a[i+1][i])*d;

h=c*c-c*a[i+1][i];

for(j=i+2;

u[j]=a[j][i];

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

当前位置:首页 > 法律文书 > 起诉状

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

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