MathPHP\LinearAlgebra\Matrix::pivotize PHP Method

pivotize() protected method

The permutation matrix is an identity matrix with rows possibly interchanged. The product PA results in a new matrix whose rows consist of the rows of A but no rearranged in the order specified by the permutation matrix P. Example: [α₁₁ α₁₂ α₁₃] A = [α₂₁ α₂₂ α₂₃] [α₃₁ α₃₂ α₃₃] [0 1 0] P = [1 0 0] [0 0 1] [α₂₁ α₂₂ α₂₃] \ rows PA = [α₁₁ α₁₂ α₁₃] / interchanged [α₃₁ α₃₂ α₃₃]
protected pivotize ( ) : Matrix
return Matrix
    protected function pivotize() : Matrix
    {
        $n = $this->n;
        $P = MatrixFactory::identity($n);
        $A = $this->A;
        // Set initial column max to diagonal element Aᵢᵢ
        for ($i = 0; $i < $n; $i++) {
            $max = $A[$i][$i];
            $row = $i;
            // Check for column element below Aᵢᵢ that is bigger
            for ($j = $i; $j < $n; $j++) {
                if ($A[$j][$i] > $max) {
                    $max = $A[$j][$i];
                    $row = $j;
                }
            }
            // Swap rows if a larger column element below Aᵢᵢ was found
            if ($i != $row) {
                $P = $P->rowInterchange($i, $row);
            }
        }
        return $P;
    }