agjdn.c

来自「用于计算特征值和特征向量」· C语言 代码 · 共 39 行

C
39
字号
#define   N   3   
  #include<stdio.h>   
  #include<stdlib.h>   
  #include<math.h>   
  void   agjdn(double   a[][N])   
  {int   i,j,k,is;   
    int   js[N];   
    double   d,temp;   
    for(k=0;k<N;k++)   
    {d=0.0;   
      for(i=k;i<N;i++)/*取绝对值最大的主元*/   
      for(j=k;j<N;j++)   
      if(fabs(a[i][j]>d))   {d=fabs(a[i][j]);   js[k]=j;   is=i;}   
    if(d==0.0)   break;   
    if(js[k]!=k)/*列交换*/   
    for(i=0;i<N;i++)   
    {   temp=a[i][k];   a[i][k]=a[i][js[k]];   a[i][js[k]]=temp;   }   
    if(is!=k)/*行交换*/   
    for(j=0;j<N;j++)   
    {   temp=a[k][j];   a[k][j]=a[is][j];   a[is][j]=temp;   }   
    
    for(i=k+1;i<N;i++)   
    for(j=0;j<N;j++)   
    a[i][j]=a[i][j]-a[k][j]*(a[i][k]/a[k][k]);   
    
    }   /*for*/   
  }   
  void   main()   
  {int   i,j;   
  double   a[N][N]={{-5,3,-2},{-7,4,-3},{1,-1,0}}; 
    agjdn(a);   
    printf("最终结果:\n");   
    for(i=0;i<N;i++)   
    {for(j=0;j<N;j++)   
    printf("%13.2e",a[i][j]);   
    printf("\n");   
    }   
  }   

⌨️ 快捷键说明

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