无法使用部分旋转找到行列式

时间:2017-08-14 20:04:32

标签: c matrix determinants

问题是什么。它执行但没有显示正确的答案。 它也被编译。 我在许多地方使用过呼叫功能。 假设矩阵是正方形,我给输入端子。 因为ex = 3 然后是一个随机的3x3矩阵但值似乎不正确

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

void row(int r1,int r2,int n,float A[n][n]){
int c;
float temp[n][n];
for(c=0;c<n;c++){
temp[r1][c]=A[r1][c];
A[r1][c]=A[r2][c];
A[r2][c]=temp[r1][c];
}
}

void maximum(int i, int n,float A[n][n]){
int j;
float max=fabs(A[i][i]);
for(j=i+1;j<n;j++){
    if(fabs(A[j][i])>max){
        max=fabs(A[j][i]);
        row(i,j,n,A);
    }
}
}

void op(int k, int n,float A[n][n]){
int i,j;
float f;f
for(i=1;i<n-1-k;i++){ 
    f=-(A[k+i][k]/A[k][k]);
    for(j=0;j<n-1-k;j++){   
        A[k+i][k+j]=A[k+i][k+j]+f*(A[k][k+j]);
    }
}
}   

int main(){
int i,j,n;
printf("Enter the order of the matrix:");
scanf("%d",&n);
float A[n][n];
for(i=0;i<n;i++){
    for(j=0;j<n;j++)
    scanf("%f",&A[i][j]);
    }

float det=1;
for(i=0;i<n-1;i++){
    maximum(i,n,A);
    op(i,n,A);
        det*=A[i][i];
    }
det*=A[n-1][n-1];
printf("%f\n",det);
return 0;
}

0 个答案:

没有答案