用高斯消去法修改Javascript算法求解n次m矩阵

用高斯消去法修改Javascript算法求解n次m矩阵,javascript,Javascript,我需要帮助修改javascript中的一个算法,该算法使用高斯消去法求解NxN矩阵,使其求解NxM矩阵。有人能帮忙吗?或者给我指出一个已经用javascript实现的代码的方向 以下是我使用的算法: 有帮助,但没有。不幸的是,这就是我正在使用的算法,但它不起作用。我用来检查系统是否一致。我的矩阵是[[0,10,0],[0,0,-10],[0,-10,10],-1,-1,-1],[1,1,1]],我的解向量是[-9,9,0,0,0]。帮助?使用你建议的方法,我使用的矩阵是[[-20,20,0,-

我需要帮助修改javascript中的一个算法,该算法使用高斯消去法求解NxN矩阵,使其求解NxM矩阵。有人能帮忙吗?或者给我指出一个已经用javascript实现的代码的方向

以下是我使用的算法:


有帮助,但没有。不幸的是,这就是我正在使用的算法,但它不起作用。我用来检查系统是否一致。我的矩阵是[[0,10,0],[0,0,-10],[0,-10,10],-1,-1,-1],[1,1,1]],我的解向量是[-9,9,0,0,0]。帮助?使用你建议的方法,我使用的矩阵是[[-20,20,0,-9],[20,0,-5,9],[0,-20,5,0],-1,-1,0],[1,1,1,0],[1,1,0],我仍然可以得到所有空值的结果向量
function gauss($A, $x) {
    // Just make a single matrix
    for ($i=0; $i < count($A); $i++) { 
        $A[$i].push($x[$i]);
    }
    $n = count($A);

    for ($i=0; $i < $n; $i++) { 
        // Search for maximum in this column
        $maxEl = abs($A[$i][$i]);
        $maxRow = $i;
        for ($k=$i+1; $k < $n; $k++) { 
            if (abs($A[$k][$i]) > $maxEl) {
                $maxEl = abs($A[$k][$i]);
                $maxRow = $k;
            }
        }


        // Swap maximum row with current row (column by column)
        for ($k=$i; $k < $n+1; $k++) { 
            $tmp = $A[$maxRow][$k];
            $A[$maxRow][$k] = $A[$i][$k];
            $A[$i][$k] = $tmp;
        }

        // Make all rows below this one 0 in current column
        for ($k=$i+1; $k < $n; $k++) { 
            $c = -$A[$k][$i]/$A[$i][$i];
            for ($j=$i; $j < $n+1; $j++) { 
                if ($i==$j) {
                    $A[$k][$j] = 0;
                } else {
                    $A[$k][$j] += $c * $A[$i][$j];
                }
            }
        }
    }

    // Solve equation Ax=b for an upper triangular matrix $A
    $x = array_fill(0, $n, 0);
    for ($i=$n-1; $i > -1; $i--) { 
        $x[$i] = $A[$i][$n]/$A[$i][$i];
        for ($k=$i-1; $k > -1; $k--) { 
            $A[$k][$n] -= $A[$k][$i] * $x[$i];
        }
    }

    return $x;
}