数学建模 用幂法 和法 根法求特征值特征向量

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学建模作业

计算机学院信计1102班姜圣涛

(1)幂法求矩阵最大特征值及特征向量:

程序为:

#include

#include

using namespace std;

#define n 3 //三阶矩阵

#define N 20

#define err 0.0001

//幂法求特征值特征向量

void main(){

cout<<"**********幂法求矩阵最大特征值及特征向量***********"<

double A[n][n],X[n],u,y[n],max;

cout<<"请输入矩阵:\n";

for(i=0;i

for(j=0;j

cin>>A[i][j]; //输入矩阵

cout<<"请输入初始向量:\n";

for(i=0;i

cin>>X[i]; //输入初始向量

k=1;

u=0;

while(1){

max=X[0];

for(i=0;i

{

if(max

for(i=0;i

y[i]=X[i]/max;

for(i=0;i

{

X[i]=0;

for(j=0;j

X[i]+=A[i][j]*y[j]; //矩阵相乘}

if(fabs(max-u)

{

cout<<"A的特征值是 :"<

cout<

cout<<"A的特征向量为:"<

for(i=0;i

cout<

cout<

break;

}

else

{

if(k

else {

cout<<"运行错误\n";

break;

}

}

}

}

程序结果为:

(2)和法求矩阵最大特征值及特征向量

程序为:

#include

#include

#include

using namespace std;

#define n 3 //三阶矩阵#define N 20

void main(){

int i,j,k;

double A[n][n],w[n],M[n],u[n],W[n][n],max;

cout<<"********和法求矩阵的特征根及特征向量*******"<

for(i=0;i

for(j=0;j

cin>>A[i][j]; //输入矩阵

//计算每一列的元素和

M[0]=0;M[1]=0;M[2]=0;

for(i=0;i

for(j=0;j

{

M[i]+=A[j][i];

}

//将每一列向量归一化

for(i=0;i

for(j=0;j

{

W[j][i]=A[j][i]/M[i];

}

//输出按列归一化之后的矩阵W

cout<<"按列归一化后的矩阵为:"<

for(i=0;i

for(j=0;j

{

cout<

if(j==2)

cout<

}

//求特征向量

w[0]=0;w[1]=0;w[2]=0;

for(i=0;i

for(j=0;j

{

w[i]+=W[i][j];

}

cout<<"特征向量为:"<

for(i=0;i

{

u[i]=w[i]/(w[0]+w[1]+w[2]); cout<

}

//求最大特征值

max=0;

for(i=0;i

{

w[i] = 0;

for(j=0;j

{

w[i] += A[i][j]*u[j];

}

}

for(i = 0;i < n;i++)

{

max += w[i]/u[i];

}

cout<<"最大特征根为:"<

cout<

}

运行结果为:

(3)根法求矩阵最大特征值及特征向量:

程序为:

#include

#include

#include

using namespace std;

#define n 3 //三阶矩阵

#define N 20

void main(){

int i,j;

double A[n][n],w[n],M[n],u[n],W[n][n],max;

cout<<"********根法求矩阵的特征根及特征向量*******"<

for(i=0;i

for(j=0;j

相关文档
最新文档