本程序主要實現了一個方陣的求逆與實現了逆矩陣和原矩陣的乘積爲單位矩陣

#include<stdio.h>
#define M 10
int main()
{
    void chengji(int n);
    float a[M][M*2];
    float b[M][M*2];
    float c[M][M*2];
    float d[M][M];//存儲原矩陣
    float t,x;
    int k,T,i,j,n;
    printf("輸入方陣的維數(小於M):\n");     //請輸入方陣,即行和列相等的矩陣。
    scanf("%d",&T);
    n=T;
    printf("請輸入矩陣:\n");
    for(i=0; i<T; i++)
        for (j=0; j<T; j++)
        {
            scanf("%f",&b[i][j]);
            d[i][j]=b[i][j];
        }
    printf("原矩陣爲:\n");
    for (i=0; i<T; i++)
    {
        for (j=0; j<T; j++) printf("%10.3f",b[i][j]);
        printf("\n");
    }
    for(i=0; i<T; i++)         for(j=0; j<(2*T); j++)
        {
            if(j<T) a[i][j]=b[i][j];
            else if (j==T+i) a[i][j]=1.0;
            else a[i][j]=0.0;
        }
    for(i=0; i<T; i++)
    {
        for(k=0; k<T; k++)
        {
            if(k!=i)
            {
                t=a[k][i]/a[i][i];
                for(j=0; j<(2*T); j++)
                {
                    x=a[i][j]*t;
                    a[k][j]=a[k][j]-x;
                }
            }
        }
    }
    for(i=0; i<T; i++)
    {
        t=a[i][i];
        for(j=0; j<(2*T); j++) a[i][j]=a[i][j]/t;
    }
    int y=1;
    for(i=0; i<T; i++)        y=y*a[i][i];
    if(y==0)
        printf("對不起,您輸入的矩陣沒有逆矩陣,請重新輸入。\n");
    else
    {
        for(i=0; i<T; i++)
            for(j=0; j<T; j++) b[i][j]=a[i][j+T];
        printf("逆矩陣爲:\n");
        for (i=0; i<T; i++)
        {
            for (j=0; j<T; j++)
                printf("%10.3f",b[i][j]);
            printf("\n");
        }
    }
    printf("原方陣與逆方陣的積:\n");
    k=0;
    //int l=0;
    //int i,j;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            c[i][j]=0;
            for(k=0; k<n; k++)
            {
                c[i][j]+=d[i][k]*b[k][j];
//printf("%g   ",c[i][j]);
            }
        }
    }
    for (i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%g    ",c[i][j]);
        }
        puts("");
    }
    puts(" ");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章