⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mifa.c

📁 用幂法求矩阵的按模最大的特征值
💻 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 + -