使用高斯消元法的矩阵的梯级形式 [C 编程]

Echelon form of a Matrix using Gauss-Elimination [C Programming]

提问人:Blu 提问时间:3/29/2022 更新时间:3/29/2022 访问量:327

问:

我正在尝试将矩阵简化为梯队形式。.这是我到目前为止的尝试。 当 2 行的元素成比例并且我在代码执行完成之前得到零行时,它不起作用。

此外,由于我使用对角线元素作为参考,如果它是 2 x 4 矩阵:(我的代码就会失败请帮我找到合适的解决方案。


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

int main() {
    int m,n;

    int i,j,k;
    float a[10][10];

    printf("Enter the order of Matrix: ");
    scanf("%d%d",&m,&n);

    printf("\n Enter the elements of Matrix : ");
    for(i=0;i<m;i++){
        for(j=0;j<n;j++) {
            scanf("%f",&a[i][j]);
        }
    }

    for(i=0;i<m;i++) {
        if((a[i][i])!=1) {
            float temp=a[i][i];
            if(temp==0) {
                break; // break or continue ??
            }
            for(j=0;j<n;j++) {
                a[i][j]=((a[i][j])/temp);
            }
        }

        for(k=i+1;k<m;k++) {
            float p=a[k][i];
            for(j=i;j<3;j++) {
                a[k][j]=a[k][j]-(a[i][j]*p);
                }
        }

    }

     for(i=0;i<m;i++) {
        for(j=0;j<n;j++) {
            printf("%.2f\t",a[i][j]);
        }
        printf("\n");
    }
    int flag,fl=0;
    for(i=0;i<m;i++) {
            flag=0;
        for(j=0;j<n;j++) {
            if(a[i][j]==0) {
                flag++;
            }
        if(flag==3)
            fl++;
        }
    }


    printf("\n\n\n Rank of your Matrix is: %d \n",(n-fl));

    return 0;
} ```
C 数学 矩阵 Turbo-C++

评论


答: 暂无答案