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

📄 2 qr.c

📁 1. Using power method to find the eigenvalue with maximum modulus and its eigenvector for the follow
💻 C
字号:
#include "stdio.h"
#include "math.h"
main()
{   double a[6][6]={0},a1[6][6],a2[6][6]={0},q[6][6]={0},r[6][6]={0},p[6][6]={0},u[6]={0};
    double p1[6][6]={0};
    double t=0,f2=0,f=1,q1;
    int    i=0,j=0,k=0,h=0,m,n;
    for(i=0;i<6;i++)
    {for(j=0;j<6;j++)
     {if(i==j+1) {a[i][j]=1;a2[i][j]=1;}
      else if(i==j-1) {a[i][j]=5-i;a2[i][j]=5-i;}
     }
    }
    for(i=0;i<6;i++)
    {for(j=0;j<6;j++)
     {if(i==j) p1[i][j]=1;}
    }

    for(k=0;k<5;k++)
    {for(i=k;i<6;i++)
     {
      f2+=a[i][k]*a[i][k];
     }
      f2=pow(f2,0.5);
      if(a[k][k]<0) t=-f2;
      else  t=f2;
      f=2*f2*(f2+fabs(a[k][k]));
      u[k]=a[k][k]+t;
      for(i=k+1;i<6;i++)
      u[i]=a[i][k];
      for(i=0;i<6;i++)
      {for(j=0;j<6;j++)
       {if(i==j) p[i][j]=1-2*u[i]*u[j]/f;
        else p[i][j]=-2*u[i]*u[j]/f;
       }
      }
       for(i=0;i<6;i++)
        {for(j=0;j<6;j++)
         {for(h=0;h<6;h++)
          {q[i][j]+=p[i][h]*p1[h][j];}
         }
        }
       for(i=0;i<6;i++)
        {for(j=0;j<6;j++)
         p1[i][j]=q[i][j];
        }
       for(i=0;i<6;i++)
       {for(j=0;j<6;j++)
        {for(h=0;h<6;h++)
         {a1[i][j]+=p[i][h]*a[h][j];}
        }
       }
       for(i=0;i<6;i++)
       {for(j=0;j<6;j++)
        a[i][j]=a1[i][j];
       }
       f2=0;f=0;
       for(i=0;i<6;i++)
       {u[i]=0;
        for(j=0;j<6;j++)
        {q[i][j]=0;
         a1[i][j]=0;
        }
       }
     }
     for(i=0;i<6;i++)
     {for(j=0;j<6;j++)
      q[i][j]=p1[i][j];
     }
     for(i=0;i<6;i++)
     {for(j=0;j<6;j++)
      {for(h=0;h<6;h++)
       {r[i][j]+=p1[i][h]*a2[h][j];}
      }
     }
     for(i=0;i<6;i++)
     {for(j=0;j<6;j++)
      {q1=q[i][j];
       q[i][j]=q[j][i];
       q[j][i]=q1;
      }
     }
     printf("Q\n");
     for(i=0;i<6;i++)
     {for(j=0;j<6;j++)
      printf("%f ",q[i][j]);
      printf("\n");
     }getchar();
     printf("R\n");
     for(i=0;i<6;i++)
     {for(j=0;j<6;j++)
      printf("%f ",r[i][j]);
      printf("\n");
     }getchar();
     printf("eigenvalues\n");
     for(i=0;i<6;i++)
     {printf("%f ",r[i][i]);
      printf("\n");
     }getchar();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -