# Matrix The `Matrix` class implements matrices of the form `m x n`. ```php $matrix = new Matrix(); $matrix->setMatrix([ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]); ``` The implementation implements `ArrayAccess` for direct access and an `Iterator` for iteration. ```php $matrix[0][2]; // = 3 ``` ```php foreach($matrix as $rowId => $row) { foreach($row as $columnId => $value) { ... } } ``` ## Addition The matrix addition supports matrix and scalar addition. The scalar addition adds a scalar to every element in the matrix. ```php $matrix->add(4); ``` The matrix addition requires both matrices to have the same dimensions and adds every index to the same index in the base matrix. ```php $matrix->add($matrixB); ``` ## Subtraction The matrix subtraction supports matrix and scalar subtraction. The scalar subtraction subtracts a scalar to every element in the matrix. ```php $matrix->sub(4); ``` The matrix subtraction requires both matrices to have the same dimensions and subtracts every index to the same index in the base matrix. ```php $matrix->sub($matrixB); ``` ## Multiplication The matrix multiplication supports matrix/vector and scalar multiplication. The scalar multiplication subtracts a scalar to every element in the matrix. ```php $matrix->mult(4); ``` The matrix multiplication performs a normal matrix multiplication. ```php $matrix->mult($matrixB); ``` ## Solve In order to solve `A x = b` the matrix implements `solve()` which automatically selects an appropriate algorithm (LU or QR decomposition) to solve the equation. ```php $matrix->solve($matrixB); ``` ## Inverse The inverse calculates the inverse if possible. ```php $matrix->inverse(); ``` ## Transpose The transpose function transposes the matrix. ```php $matrix->transpose(); ``` ## Determinant The determinant of a matrix is calculated via the `det()` function. ```php $matrix->det(); ``` ## Diagonalize The diagonalize function diagonalizes the matrix if possible. ```php $matrix->diagonalize(); ``` ## Triangulize ### Upper Triangular The upper triangular of a matrix can be created via the `upperTriangular()` function. ```php $matrix->upperTriangular(); ``` ### Lower Triangular The lower triangular of a matrix can be created via the `lowerTriangular()` function. ```php $matrix->lowerTriangular(); ``` ## Vector The `Vector` class is a extension of the `Matrix` class `m x 1` and implements vectors. ## Identity Matrix The `IdentityMatrix` class is a extension of the `Matrix` class and implements the identity matrix `m x n`.