数值分析幂法求矩阵特征值

#include
#include
#define N 3
void matrixx(double A[N][N],double x[N],double v[N])
{
for(int i=0;i {
v[i]=0;
for(int j=0;j v[i]+=A[i][j]*x[j];
}
} double slove(double v[N])
{
double max;
for(int i=0;i max=v[i]> v[i+1]?v[i]:v[i+1];
return max; }
void main()
{ //data input double
double A[N][N]={-1.0,1.0,0,-4.0,3.0,0,1.0,0,2.0};
double x[N]={1,1,1};
double v[N]={0,0,0};
double u[N]={0,0,0};
double p[N]={0,0,0};
double e=1e-10,delta=1;
int k=0;
while(delta >= e)
{
for(int q=0;q p[q]=v[q];
matrixx(A,x,v);
for(int i=0;i u[i]=v[i]/(slove(v));
delta=fabs(slove(v)-slove(p));
k++;
for(int l=0;l }
cout << "迭代次数 " << k << endl;
cout << "矩阵的特征值 " << slove(v) << endl;
cout << "( " ;
for(int i=0;i cout << u[i] << " " ;
cout << ") " <<
endl;
}

相关文档
最新文档