【发布时间】:2020-09-30 20:32:55
【问题描述】:
现在,我想我理解了这个概念。但是当我把它全部放入代码中时它不起作用......
首先我尝试将矩阵转换为上三角矩阵,但由于某种原因在第 2 列之后它停止工作..
我输入的数组是:
[1.00] [5.00] [4.00] [4.00] [1.00]
[5.00] [7.00] [7.00] [4.00] [8.00]
[7.00] [4.00] [8.00] [4.00] [7.00]
[10.00] [12.00] [8.00] [4.00] [3.00]
[10.00] [12.00] [13.00] [4.00] [3.00]
double** inverseMatrix(double **matA, int dimension)
{
double** matInverse=malloc(dimension*sizeof(double*));
double **holder = matA;
for(int i = 0; i < dimension; i++){
matInverse[i] = malloc(dimension*sizeof(matInverse[0]));
}
for(int i = 0; i < dimension; i++){
for(int j = 0; j < dimension; j++){
matInverse[i][j] = 0.0;
}
matInverse[i][i] = 1.0;
}
for(int i = 0; i < dimension; i++){
double pivot = holder[i][i];
for(int j = 0; j < dimension; j++){
holder[i][j] = (holder[i][j]/pivot);
matInverse[i][j] = (matInverse[i][j]/pivot);
}
for(int row = i+1; row < dimension; row++){
int number = holder[row][i];
for(int col = 0; col < dimension; col++){
holder[row][col] = holder[row][col] - (holder[i][col] * number);
matInverse[row][col] = matInverse[row][col] - (matInverse[i][col] * number);
}
}
}
【问题讨论】:
-
您好,欢迎您。你试图在什么输入上运行它?结果如何?
-
看起来不错,代码中一定有一些琐碎的错字或错位。使用一个小矩阵(2*2 或 3*3)来测试并在循环中添加一些 printfs
-
@g_bor 我用输入和输出对帖子进行了编辑
-
您好,强烈建议发布输出而不是发布图片。
标签: c function matrix matrix-inverse