📄 mifa.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Max_N 10
float vmax(float v[],int n)
/* 求向量v中最大的元素 */
{ int i;
float temp;
for(i=0;i<n;i++) {
if(v[0]<v[i]){
temp=v[i];
v[i]=v[0];
v[0]=temp;
}
}
return v[0];
}
int main()
{
float m1,m2=0,eps;
int i,j,n,count=0;
float A[Max_N][Max_N],u[Max_N],sum[Max_N];
printf("矩阵A的维数dim=");
scanf("%d",&n);
printf("\n");
printf("计算的误差限eps=");
scanf("%f",&eps);
printf("\n");
printf("输入A(i,j):\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&A[i][j]);
for(i=0;i<n;i++)
u[i]=1.0;
do{
m1=m2;
for(i=0;i<n;i++)
sum[i]=0;
/*sum[3]<=[0,0,0]*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum[i]+=A[i][j]*u[j];
for(i=0;i<=2;i++)
u[i]=sum[i];
m2=vmax(u,n);
for(i=0;i<=2;i++)
u[i]=u[i]/m2;
++count;
}while(fabs(m1-m2)>eps);
printf("迭代次数为:%d\n",count);
printf("按模最大的特征值是%f\n",m2);
printf("特征向量是:");
printf("(");
for(i=0;i<n;i++)
printf("%f ",u[i]);
printf(")\n");
system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -