#include//用原点平移法计算矩阵的主特征值及相应的特征向量
#include
#include
#define m 3
#define p -4//平移量
void main()
{
double A[m][m]={{-3,1,0},{1,-3,-3},{0,-3,4}};
double v[m];
double u[m];
double un[m];
double t;//最大值临时变量
double temp;
double sum;
double e=0.0005;
int i,j;
int tap=0;//迭代次数
cout<
cout<
for(i=0;i
{
for(j=0;j
{
cout<
if(i==j)
A[i][j]-=p;
}
cout<
}
for(i=0;i
{
u[i]=1;
}
do
{
t=0;
temp=0;
for(i=0;i
{
sum=0;
for(j=0;j
{
sum+=A[i][j]*u[j];
}
v[i]=sum;
if(fabs(v[i])>t)//这两行程序求向量的最大值
t=v[i];
}
for(i=0;i
{
un[i]=u[i];//保存u[]的值
u[i]=v[i]/t;
if(fabs(un[i]-u[i])>temp)
temp=fabs(un[i]-u[i]);//保存un[i]-u[i]的最大值
}
tap++;
}while(temp>e);
cout<
cout<
cout<
for(i=0;i
{
cout<
}
cout<
}