c - 伪代码中的高斯消去法

标签 c

我尝试转换高斯消元的伪代码 - http://en.wikipedia.org/wiki/Gaussian_elimination#Pseudocode到 C 中的实际实现中。我已经完成了,我没有收到任何错误,但我得到的输出与输入相同。有谁知道,我哪里会出错?作为输入,我有 3x4 矩阵 A,其中 num 指行数(在本例中为 3),num+1 指列数。

void GE(){
    int i=1;
    int j=1;
    int k,u;

    while(i<=num && j<=num+1){
      int maxi=i;
      for(k=i+1;k<num;k++){
        if(abs(A[k][j])>abs(A[maxi][j])){
            maxi=k;
        }
      }
      if(A[maxi][j]!=0){
        float p;
        p=A[maxi][j];
        A[maxi][j]=A[i][j];
        A[i][j]=p;
        for(u=i+1;u<num;u++){
            A[u][j]=A[u][j]-A[i][j]*A[u][j];
        }
      }//endif
      j++;
      i++;

    }//endwhile

编辑:

FILE *inputMatrix=fopen("file.in","r");
 fscanf(inputMatrix,"%d",&num);
 for(i=0;i<num;++i){
    for(j=0;j<num+1;++j){
        fscanf(inputMatrix,"%f",&A[i][j]);
    }
 }
 fclose(inputMatrix);

文件.in:

3
2 1 -1 8
-3 -1 2 -11
-2 1 2 -3

最佳答案

也许您忘记了将 tn C 转换为以下行: “将第 i 行中的每个条目除以 A[i,j]” 像这样的东西:

 for (k = j; k <= num+1; ++k) {
        A[i][k] /= A[i][j];
    }

关于c - 伪代码中的高斯消去法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450908/

相关文章:

c++ - 什么是好的 C/C++ CSS 解析器?

c++ - 如何在 C++ 中启动具有管理员权限的应用程序?

python - 使用 C API 创建 Python 包

c - 如何以及为什么使用 c 中的 sizeof(a)/sizeof(a[0]) 来计算数组中的元素数

c - GDB重置配置

c - 如何检查方阵主对角线的元素是否相同?

c - 在sqlite的回调函数中动态重新分配2个dim数组

c - 在嵌入式 C 中显示 "expected expression before while"

我可以将 sprintf () 与多个 #define 标记字符串一起使用吗

C/C++ 如何运行相同的 switch case 直到它的条件为真并继续而不会崩溃?