用于矩阵的直接对角化的程序

时间:2014-11-26 13:09:45

标签: c matrix

我需要一个程序来直接对齐矩阵。 我尝试了很多方法解决它,但没有得到所需的输出。所以请帮帮我。

我的代码

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>

int main()
{
int n,i,j,k;
float a[10][10],x[10],u,m;
printf("Enter the number of equations :");
scanf("%d",&n);
printf("\nEnter the co-efficients of equations\n");
  for(i=1;i<=n;i++)
     for(j=1;j<=(n+1);j++)
     scanf("%f",&a[i][j]);
     printf("\nEntered co-efficient matrix is\n");
     for(i=1;i<=n;i++)
     {
        for(j=1;j<=(n+1);j++)
           printf("%.2f\t",a[i][j]);
        printf("\n");
     }
  for(k=1;k<=n;k++)
       for(i=1;i<=n;i++)
        {
            if(i != k)
             {
               u=a[i][k]/a[k][k];
               for(j=1;j<=(n+1);j++)
                 {
                  a[i][j]=a[i][j]-(u*a[k][j]);
                }
            }
       }
 for(i=1;i<=n;i++)
  {
    m=a[i][i];
  for(j=1;j<=(n+1);j++)
  {
  a[i][j]=a[i][j]/m;
  }
  }
      printf("\nDiagonalised matrix is\n");
  for(i=1;i<=n;i++)
  {
    for(j=1;j<=(n+1);j++)
      printf("%.2f\t",a[i][j]);
    printf("\n");
  }
  printf("\nsolution vector is\n");
  for(i=1;i<=n;i++)
  {j=(n+1);
    printf("x[%d]=%.2f\n",i,a[i][j]);
  }
}

输出应该是这样的,如果我输入任何系数....下三角元素和上三角元素应该为零,我还应该检查决定因素值是否保持相同。

0 个答案:

没有答案