matrix_operation v0.5.0 MatrixOperation
MatrixOperation is a linear algebra library in Elixir language. Matrix indices of a row and column is an integer starting from 1 (not from 0).
Link to this section Summary
Functions
Matrix addition
A matrix is added by a constant.
A matrix is multiplied by a constant.
Cramer's rule
A column of a matrix is deleted.
A row of a matrix is deleted.
A determinant of a n×n square matrix is got.
Matrix diagonalization using the QR decomposition.
Calculate eigenvalues and eigenvectors by using QR decomposition.
Calculate eigenvalue using algebra method [R^2×R^2/R^3×R^3 matrix]
Calculate eigenvalues and eigenvectors by using QR decomposition for symmetric matrices.
A m×n matrix having even-elements is got.
A column of a matrix is exchanged.
A row of a matrix is exchanged.
Frobenius norm
A column of a matrix is got.
An element of a matrix is got.
A row of a matrix is got.
Hadamard division
Hadamard power
Hadamard product
Inverse Matrix
Calculate eigenvalues and eigenvectors by using Jacobi method
Jordan_normal_form [R^2×R^2/R^3×R^3 matrix]
Leading principal minor is generetaed.
LU decomposition
The max norm
Moore-Penrose general inverse matrix
The one norm
Power iteration method (maximum eigen value and eigen vector)
Matrix product
A m×n matrix having random elements is got.
Calculate the rank of a matrix by using QR decomposition
Calculate singular Value by using QR decomposition.
Numbers of rows and columns of a matrix are got.
Linear equations are solved by LU decomposition.
Matrix subtraction
Singular Value Decomposition (SVD) using Jacobi method.
Tensor product
Trace of a matrix
Transpose of a matrix
The two norm
A n-th unit matrix is got.
A variance-covariance matrix is generated.
Link to this section Functions
add(a, b)
Matrix addition
Argument
- a: Left side of the addition of matrices.
- b: Right side of the addition of matrices.
Output
Addition of two matrices
Example
iex> MatrixOperation.add([[3, 2, 3], [2, 1, 2]], [[2, 3, 1], [3, 2, 2]])
[[5, 5, 4], [5, 3, 4]]
const_addition(const, x)
A matrix is added by a constant.
Argument
- const: Constant to add the matrix.
- matrix: Target vector/matrix to be added by a constant.
Output
Vector/Matrix multiplied by the constant.
Example
iex> MatrixOperation.const_addition(1, [1.0, 2.0, 3.0])
[2.0, 3.0, 4.0]
iex> MatrixOperation.const_addition(1, [[1, 2, 3], [2, 2, 2], [3, 8, 9]])
[[2, 3, 4], [3, 3, 3], [4, 9, 10]]
const_multiple(const, x)
A matrix is multiplied by a constant.
Argument
- const: Constant to multiply the matrix.
- matrix: Target vector/matrix to be multiplied by a constant.
Output
Vector/Matrix multiplied by the constant.
Example
iex> MatrixOperation.const_multiple(-1, [1.0, 2.0, 3.0])
[-1.0, -2.0, -3.0]
iex> MatrixOperation.const_multiple(2, [[1, 2, 3], [2, 2, 2], [3, 8, 9]])
[[2, 4, 6], [4, 4, 4], [6, 16, 18]]
cramer(matrix, vertical_vec, select_idx)
Cramer's rule
Argument
- matrix: Target matrix to perform Cramer's rule.
- vertical_vec: Vertical vector to perform Cramer's rule.
- select_idx: Index of the target to perform Cramer's rule.
Output
Solution to the linear equation when Cramer's rule is applied.
Example
iex> MatrixOperation.cramer([[1, 0, 0], [0, 1, 0], [0, 0, 1]], [[1], [0], [0]], 1)
1.0
iex> MatrixOperation.cramer([[0, -2, 1], [-1, 1, -4], [3, 3, 1]], [[3], [-7], [4]], 1)
2.0
delete_one_column(matrix, del_idx)
A column of a matrix is deleted.
Argument
- matrix: Target matrix from which to delete the column.
- del_idx: Index of the column to be deleted.
Output
The matrix from which the specified column was deleted.
Example
iex> MatrixOperation.delete_one_column([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2)
[[1, 3], [4, 6], [7, 9]]
delete_one_row(matrix, del_idx)
A row of a matrix is deleted.
Argument
- matrix: Target matrix from which to delete the row.
- del_idx: Index of the row to be deleted.
Output
The matrix from which the specified row was deleted.
Example
iex> MatrixOperation.delete_one_row([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 3)
[[1, 2, 3], [4, 5, 6]]
determinant(matrix)
A determinant of a n×n square matrix is got.
Argument
- matrix: Target matrix to output determinant.
Output
Determinant of the matrix
Example
iex> MatrixOperation.determinant([[1, 2, 1], [2, 1, 0], [1, 1, 2]])
-5
iex> MatrixOperation.determinant([[1, 2, 1, 1], [2, 1, 0, 1], [1, 1, 2, 1], [1, 2, 3, 4]])
-13
iex> MatrixOperation.determinant([ [3,1,1,2,1], [5,1,3,4,1], [2,0,1,0,1], [1,3,2,1,1], [1,1,1,1,1] ])
-14
diagonalization(a)
Matrix diagonalization using the QR decomposition.
Argument
- a: Matrix to be diagonalized by using the QR decomposition.
Output
Diagonalized matrix
Example
iex> MatrixOperation.diagonalization([[1, 3], [4, 2]])
[[5.000000000000018, 0], [0, -1.999999999999997]]
iex> MatrixOperation.diagonalization([[2, 1, -1], [1, 1, 5], [-1, 2, 1]])
[[4.101784906061095, 0, 0], [0, -2.6170329440542233, 0], [0, 0, 2.515248037993127]]
iex> MatrixOperation.diagonalization([[2, 1, -1], [1, 1, 0], [-1, 0, 1]])
nil
iex> MatrixOperation.diagonalization([[2, 1, -1], [1, 1, 0], [-1, 0, 1]])
nil
iex> MatrixOperation.diagonalization([[16, -1, 1, 2, 3], [2, 12, 1, 5, 6], [1, 3, -24, 8, 9], [3, 4, 9, 1, 23], [5, 3, 1, 2, 1]])
[
[-26.608939298557207, 0, 0, 0, 0],
[0, 20.42436493500135, 0, 0, 0],
[0, 0, 14.665793374162678, 0, 0],
[0, 0, 0, -3.5477665464080044, 0],
[0, 0, 0, 0, 1.0665475358009446]
]
eigen(a)
Calculate eigenvalues and eigenvectors by using QR decomposition.
Argument
- a: Matrix to calculate eigenvalues and eigenvectors by using the QR decomposition.
Output
[Eigenvalues list, Eigenvectors list]: Eigenvalues and eigenvectors. Eigenvalue is a non-trivial value other than zero, and complex numbers are not supported.
Example
iex> MatrixOperation.eigen([[1, 4, 5], [4, 2, 6], [5, 6, 3]])
{
[12.175971065046914, -3.6686830979532736, -2.507287967093643],
[
[0.4965997845461912, 0.5773502691896258, 0.6481167492476514],
[-0.3129856771935595, -0.5773502691896258, 0.7541264035547063],
[-0.8095854617397507, 0.577350269189626, 0.10600965430705471]
]
}
eigenvalue_algebra(arg1)
Calculate eigenvalue using algebra method [R^2×R^2/R^3×R^3 matrix]
Argument
- [[a11, a12], [a21, a22]] or [[a11, a12, a13], [a21, a22, a23], [a31, a32, a33]]: R^2×R^2/R^3×R^3 matrix
Output
Eigenvalues which is a non-trivial value other than zero.
Example
iex> MatrixOperation.eigenvalue_algebra([[3, 1], [2, 2]])
{4.0, 1.0}
iex> MatrixOperation.eigenvalue_algebra([[6, -3], [4, -1]])
{3.0, 2.0}
iex> MatrixOperation.eigenvalue_algebra([[1, 1, 1], [1, 2, 1], [1, 2, 3]])
{4.561552806429505, 0.43844714673139706, 1.0000000468390973}
iex> MatrixOperation.eigenvalue_algebra([[2, 1, -1], [1, 1, 0], [-1, 0, 1]])
{3.0000000027003626, 0.9999999918989121}
eigh(a)
Calculate eigenvalues and eigenvectors by using QR decomposition for symmetric matrices.
Argument
- a: Symmetric matrix to calculate eigenvalues and eigenvectors by using the QR decomposition.
Output
[Eigenvalues list, Eigenvectors list]: Eigenvalues and eigenvectors. Eigenvalue is a non-trivial value other than zero, and complex numbers are not supported.
Example
iex> MatrixOperation.eigh([[3, 0], [0, 2]])
{[3.0, 2.0], [[1.0, 0.0], [0.0, 1.0]]}
iex> MatrixOperation.eigh([[1, 4, 5], [4, 2, 6], [5, 6, 3]])
{
[12.175971065046884, -2.50728796709364, -3.6686830979532647],
[
[0.496599784546191, 0.8095854617397509, -0.3129856771935597],
[0.577350269189626, -0.577350269189626, -0.5773502691896257],
[0.6481167492476515, -0.10600965430705458, 0.7541264035547063]
]
}
iex> row1 = [ 5, -1, 0, 1, 2]
iex> row2 = [-1, 5, 0, 5, 3]
iex> row3 = [ 0, 0, 4, 7, 2]
iex> row4 = [ 1, 5, 7, 0, 9]
iex> row5 = [ 2, 3, 2, 9, 2]
iex> MatrixOperation.eigh([row1, row2, row3, row4, row5])
{
[16.394097630317376, 5.901499037899706, 4.334013998770404, -0.891690865956603, -9.737919801031268],
[
[0.11199211262602528, -0.8283773397697639, -0.4403916223463706, 0.3275456024443265, -0.00422456530824197],
[0.39542664705563546, 0.5332887206459925, -0.5342108202525103, 0.4973517482650887, 0.16279110925630544],
[0.4267472595014673, -0.13695943658576812, 0.6991586689712901, 0.4519460705200494, 0.3256544091239611],
[0.6029452475982553, -0.007822597120772413, 0.07907415791820135, -0.1297224632045824, -0.7831444282267664],
[0.5342652322719152, -0.10283502852688214, -0.15999516131462643, -0.651361611317911, 0.5040984210950804]
]
}
even_matrix(elem, arg2)
A m×n matrix having even-elements is got.
Argument
- elem: Value of the common element of the matrix to output.
- {row_num, col_num}: Size of the matrix to output.
Output
A row_num×col_num matrix having even elements
Example
iex> MatrixOperation.even_matrix(0, {2, 3})
[[0, 0, 0], [0, 0, 0]]
iex> MatrixOperation.even_matrix(1, {3, 2})
[[1, 1], [1, 1], [1, 1]]
exchange_one_column(matrix, exchange_idx, exchange_list)
A column of a matrix is exchanged.
Argument
- matrix: Target matrix from which to exchange the column.
- exchange_idx: Index of the column to be exchanged.
- exchange_list: List of the column to be exchanged.
Output
The matrix from which the specified column was exchanged.
Example
iex> MatrixOperation.exchange_one_column([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 2, [1, 1, 1])
[[1, 1, 3], [4, 1, 6], [7, 1, 9]]
exchange_one_row(matrix, exchange_idx, exchange_list)
A row of a matrix is exchanged.
Argument
- matrix: Target matrix from which to exchange the row.
- exchange_idx: Index of the row to be exchanged.
- exchange_list: List of the row to be exchanged.
Output
The matrix from which the specified row was exchanged.
Example
iex> MatrixOperation.exchange_one_row([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 3, [1, 1, 1])
[[1, 2, 3], [4, 5, 6], [1, 1, 1]]
frobenius_norm(a)
Frobenius norm
Argument
- a: Matrix to calculate Frobenius norm.
Output
Frobenius norm
Example
iex> MatrixOperation.frobenius_norm([[2, 3], [1, 4], [2, 1]])
5.916079783099616
iex> MatrixOperation.frobenius_norm([[1, 3, 3], [2, 4, 1], [2, 3, 2]])
7.54983443527075
get_one_column(matrix, col_idx)
A column of a matrix is got.
Argument
- matrix: Target matrix from which to extract the column.
- col_idx: Index of the column to be extracted.
Output
A column of a matrix
Example
iex> MatrixOperation.get_one_column([[1, 2, 3], [4, 5, 6], [7, 8, 9] ], 1)
[1, 4, 7]
get_one_element(matrix, arg)
An element of a matrix is got.
Argument
- matrix: Target matrix from which to extract the element.
- {row_idx, col_idx}: Index of row and column of the element to be extracted.
Output
An element of a matrix
Example
iex> MatrixOperation.get_one_element([[1, 2, 3], [4, 5, 6], [7, 8, 9] ], {1, 1})
1
get_one_row(matrix, row_idx)
A row of a matrix is got.
Argument
- matrix: Target matrix from which to extract the row.
- row_idx: Index of the row to be extracted.
Output
A row of a matrix
Example
iex> MatrixOperation.get_one_row([[1, 2, 3], [4, 5, 6], [7, 8, 9] ], 1)
[1, 2, 3]
hadamard_division(a, b)
Hadamard division
Argument
- a: Left side of the Hadamard division of matrices.
- b: Right side of the Hadamard division of matrices.
Output
Hadamard division of two matrices
Example
iex> MatrixOperation.hadamard_division([[3, 2, 3], [2, 1, 2]], [[2, 3, 1], [3, 2, 2]])
[[1.5, 0.6666666666666666, 3.0], [0.6666666666666666, 0.5, 1.0]]
hadamard_power(matrix, n)
Hadamard power
Argument
- matrix: Target matrix that elements are to be n-th powered.
- n: Exponent of a power.
Output
Matrix that elements are to be n-th powered
Example
iex> MatrixOperation.hadamard_power([[3, 2, 3], [2, 1, 2]], 2)
[[9.0, 4.0, 9.0], [4.0, 1.0, 4.0]]
hadamard_product(a, b)
Hadamard product
Argument
- a: Left side of the Hadamard production of matrices.
- b: Right side of the Hadamard production of matrices.
Output
Hadamard production of two matrices
Example
iex> MatrixOperation.hadamard_product([[3, 2, 3], [2, 1, 2]], [[2, 3, 1], [3, 2, 2]])
[[6, 6, 3], [6, 2, 4]]
inverse_matrix(matrix)
Inverse Matrix
Argument
- matrix: Matrix to be inverse Matrix.
Output
Inverse Matrix
Example
iex> MatrixOperation.inverse_matrix([[1, 1, -1], [-2, -1, 1], [-1, -2, 1]])
[[-1.0, -1.0, 0.0], [-1.0, 0.0, -1.0], [-3.0, -1.0, -1.0]]
jacobi(matrix, iter_max \\ 1000)
Calculate eigenvalues and eigenvectors by using Jacobi method
Argument
- matrix: Matrix to adapt the power iteration method.
- iter_max: iteration number of the power iteration method. The default value is 1000.
Output
[Eigenvalues list, Eigenvectors list]: Eigenvalues and eigenvectors
Example
iex> MatrixOperation.jacobi([[10, 3, 2], [3, 5, 1], [2, 1, 0]])
{
[11.827601656660915, 3.5956497715829547, -0.42325142824210527],
[
[0.8892872578006493, -0.42761854121985043, -0.16220529066103917],
[0.4179466723082575, 0.9038581385546461, -0.09143874712126684],
[0.1857114757355714, 0.013522151221627882, 0.982511271796136]
]
}
jordan_normal_form(arg1)
Jordan_normal_form [R^2×R^2/R^3×R^3 matrix]
Argument
- matrix: R^2×R^2/R^3×R^3 matrix. Target matrix to be Jordan normal form.
Output
Jordan normal form matrix
Example
iex> MatrixOperation.jordan_normal_form([[1, 3], [4, 2]])
[[5.0, 0], [0, -2.0]]
iex> MatrixOperation.jordan_normal_form([[7, 2], [-2, 3]])
[[5.0, 1], [0, 5.0]]
iex> MatrixOperation.jordan_normal_form([[2, 1, -1], [1, 1, 0], [-1, 0, 1]])
nil
iex> MatrixOperation.jordan_normal_form([[1, -1, 1], [0, 2, -2], [1, 1, 3]])
[[2.0, 1, 0], [0, 2.0, 1], [0, 0, 2.0]]
iex> MatrixOperation.jordan_normal_form([[3, 0, 1], [-1, 2, -1], [-1, 0, 1]])
[[2.0, 1, 0], [0, 2.0, 0], [0, 0, 2.0]]
iex> MatrixOperation.jordan_normal_form([[1, 0, -1], [0, 2, 0], [0, 1, 1]])
[[2.0, 0, 0], [0, 0.9999999999999999, 1], [0, 0, 0.9999999999999999]]
iex> MatrixOperation.jordan_normal_form([[6, 2, 3], [-3, 0, -2], [-4, -2, -1]])
[[1.0, 0, 0], [0, 2.0, 1], [0, 0, 2.0]]
leading_principal_minor(matrix, idx)
Leading principal minor is generetaed.
Argument
- matrix: Target matrix to find leading principal minor.
- idx: Index of a row and column to find leading principal minor.
Output
Leading principal minor
Example
iex> MatrixOperation.leading_principal_minor([[1, 3, 2], [2, 5, 1], [3, 4, 5]], 2)
[[1, 3], [2, 5]]
lu_decomposition(matrix)
LU decomposition
Argument
- matrix: Target matrix to solve LU decomposition.
Output
{L, U}. L(U) is L(U)-matrix of LU decomposition.
Example
iex> MatrixOperation.lu_decomposition([[1, 1, 0, 3], [2, 1, -1, 1], [3, -1, -1, 2], [-1, 2, 3, -1]])
{
[[1, 0, 0, 0], [2.0, 1, 0, 0], [3.0, 4.0, 1, 0], [-1.0, -3.0, 0.0, 1]],
[[1, 1, 0, 3], [0, -1.0, -1.0, -5.0], [0, 0, 3.0, 13.0], [0, 0, 0, -13.0]]
}
max_norm(a)
The max norm
Argument
- a: Matrix to calculate the max norm.
Output
The max norm
Example
iex> MatrixOperation.max_norm([[2, 3], [1, 4], [2, 1]])
8
iex> MatrixOperation.max_norm([[1, 3, 3], [2, 4, 1], [2, 3, 2]])
10
mp_inverse_matrix(matrix)
Moore-Penrose general inverse matrix
Argument
- matrix: Matrix to be Moore-Penrose general inverse matrix.
Output
Moore-Penrose general inverse matrix
Example
iex> MatrixOperation.mp_inverse_matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
[
[-0.6388888888888877, -0.16666666666666777, 0.30555555555555647],
[-0.0555555555555557, -1.8041124150158794e-16, 0.05555555555555575],
[0.5277777777777768, 0.16666666666666755, -0.19444444444444522]
]
one_norm(a)
The one norm
Argument
- a: Matrix to calculate the one norm.
Output
one norm
Example
iex> MatrixOperation.one_norm([[2, 3], [1, 4], [2, 1]])
5
iex> MatrixOperation.one_norm([[1, 3, 3], [2, 4, 1], [2, 3, 2]])
7
power_iteration(matrix, iter_max \\ 1000)
Power iteration method (maximum eigen value and eigen vector)
Argument
- matrix: Matrix to adapt the power iteration method.
- iter_max: iteration number of the power iteration method. The default value is 1000.
Output
Maximum eigenvalue and normalized eigenvector corresponding to the maximum eigenvalue
Example
iex> MatrixOperation.power_iteration([[3, 1], [2, 2]])
{
4.0,
[0.7071067811865476, 0.7071067811865476]
}
iex> MatrixOperation.power_iteration([[1, 1, 2], [0, 2, -1], [0, 0, 3]])
{
3.0,
[0.3333333333333333, -0.6666666666666666, 0.6666666666666666]
}
product(a, b)
Matrix product
Argument
- a: Left side of the product of matrices.
- b: Right side of the product of matrices.
Output
Product of two matrices
Example
iex> MatrixOperation.product([[3, 2, 3], [2, 1, 2]], [[2, 3], [2, 1], [3, 5]])
[[19, 26], [12, 17]]
random_matrix(min_val, max_val, arg3, type \\ "int")
A m×n matrix having random elements is got.
Argument
- min_val: Minimum value of random number.
- max_val: Maximum value of random number.
- {row_num, col_num}: Size of the matrix to output.
- type: Data type of elements. "int" or "real".
Output
A row_num×col_num matrix having random elements
rank(matrix)
Calculate the rank of a matrix by using QR decomposition
Example
iex> MatrixOperation.rank([[2, 3, 4], [1, 4, 2], [2, 1, 4]])
2
iex> MatrixOperation.rank([[2, 3, 4, 2], [1, 4, 2, 3], [2, 1, 4, 4]])
3
iex> input = [[2, 3, 4, 3], [1, 42, 2, 11], [2, 1, 4, 4], [3, 7, 2, 2], [35, 6, 4, 6], [7, 23, 5, 2]]
iex> MatrixOperation.rank(input)
4
singular_value(a)
Calculate singular Value by using QR decomposition.
Argument
- a: Matrix to calculate singular values.
Output
Singular values list. Singular value is a non-trivial value other than zero.
Example
iex> MatrixOperation.singular_value([[1, 2, 3, 1], [2, 4, 1, 5], [3, 3, 10, 8]])
{14.9121726205599, 4.23646340778201, 1.6369134152873912}
size(matrix)
Numbers of rows and columns of a matrix are got.
Argument
- matrix: Target matrix for finding the numbers of rows and columns.
Output
{num_rows, num_cols}: Numbers of rows and columns of a matrix
Example
iex> MatrixOperation.size([[3, 2, 3], [2, 1, 2]])
{2, 3}
solve_sle(matrix, vertical_vec)
Linear equations are solved by LU decomposition.
Argument
- matrix: Target matrix to solve simultaneous linear equations.
- vertical_vec: Vertical vector to solve linear equations.
Output
Solutions of the linear equations
Example
iex> MatrixOperation.solve_sle([[1, 0, 0], [0, 1, 0], [0, 0, 1]], [[1], [0], [0]])
[1.0, 0.0, 0.0]
iex> MatrixOperation.solve_sle([[4, 1, 1], [1, 3, 1], [2, 1, 5]], [[9], [10], [19]])
[1.0, 2.0, 3.0]
subtract(a, b)
Matrix subtraction
Argument
- a: Left side of the subtraction of matrices.
- b: Right side of the subtraction of matrices.
Output
Subtraction of two matrices
Example
iex> MatrixOperation.subtract([[3, 2, 3], [2, 1, 2]], [[2, 3, 1], [3, 2, 2]])
[[1, -1, 2], [-1, -1, 0]]
svd(a)
Singular Value Decomposition (SVD) using Jacobi method.
Argument
- matrix: Matrix to adapt the SVD by using the QR decomposition method.
Output
[Singular values, U-matrix, V-matrix]:
Singular values, U-matrix and V-matrix.
Singular value is a non-trivial value other than zero.
Example
iex> MatrixOperation.svd([[1, 0, 0], [0, 1, 1]])
{
[1.0, 1.4142135623730951],
[
[1.0, 0.0],
[0.0, 1.0]
],
[
[1.0, 0.0, 0.0],
[0.0, 0.7071067811865475, 0.7071067811865475]
]
}
iex> MatrixOperation.svd([[1, 1], [1, -1], [1, 0]])
{
[1.7320508075688772, 1.4142135623730951],
[
[0.5773502691896258, 0.5773502691896258, 0.5773502691896258],
[0.7071067811865476, -0.7071067811865476, 0.0]
],
[
[1.0, 0.0],
[0.0, 1.0]
]
}
iex> MatrixOperation.svd([[1, 1], [1, 1]])
{
[1.9999999999999998],
[[0.7071067811865476, 0.7071067811865476]],
[[0.7071067811865476, 0.7071067811865476]]
}
svd_sub(a, a_t)
tensor_product(a, b)
Tensor product
Argument
- a: Left side of the tensor production of matrices.
- b: Right side of the tensor production of matrices.
Output
Tensor production of two matrices
Example
iex> MatrixOperation.tensor_product([[3, 2, 3], [2, 1, 2]], [[2, 3, 1], [2, 1, 2], [3, 5, 3]])
[
[
[[6, 9, 3], [6, 3, 6], [9, 15, 9]],
[[4, 6, 2], [4, 2, 4], [6, 10, 6]],
[[6, 9, 3], [6, 3, 6], [9, 15, 9]]
],
[
[[4, 6, 2], [4, 2, 4], [6, 10, 6]],
[[2, 3, 1], [2, 1, 2], [3, 5, 3]],
[[4, 6, 2], [4, 2, 4], [6, 10, 6]]
]
]
trace(matrix)
Trace of a matrix
Argument
- matrix: Target matrix to output trace.
Output
Trance of the matrix
Example
iex> MatrixOperation.trace([[1.0, 2.0], [3.0, 4.0]])
5.0
transpose(matrix)
Transpose of a matrix
Argument
- matrix: Target matrix to transpose.
Output
Transposed matrix
Example
iex> MatrixOperation.transpose([[1.0, 2.0], [3.0, 4.0]])
[[1.0, 3.0], [2.0, 4.0]]
two_norm(a)
The two norm
Argument
- a: Matrix to calculate the two norm.
Output
The two norm
Example
iex> MatrixOperation.two_norm([[2, 3], [1, 4], [2, 1]])
5.674983803488139
iex> MatrixOperation.two_norm([[1, 3, 3], [2, 4, 1], [2, 3, 2]])
7.329546646114923
unit_matrix(n)
A n-th unit matrix is got.
Argument
- n: Number of rows / columns in the unit matrix to output.
Output
A n-th unit matrix
Example
iex> MatrixOperation.unit_matrix(3)
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
variance_covariance_matrix(data)
A variance-covariance matrix is generated.
Argument
- data: x and y coordinate lists ([[x_1, y_1], [x_2, y_2], ...]) to calculate variance-covariance matrix.
Output
Variance-covariance matrix
Example
iex> MatrixOperation.variance_covariance_matrix([[40, 80], [80, 90], [90, 100]])
[
[466.66666666666663, 166.66666666666666],
[166.66666666666666, 66.66666666666666]
]