Namespaces

Types in MathNet.Numerics.LinearAlgebra.Complex

Type DenseMatrix

Namespace MathNet.Numerics.LinearAlgebra.Complex

Parent Matrix

A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).

Constructors

Static Functions

Methods

Properties

Public Constructors

DenseMatrix(int rows, int columns, Complex[] storage)

Create a new dense matrix with the given number of rows and columns directly binding to a raw array. The array is assumed to be in column-major order (column by column) and is used directly without copying. Very efficient, but changes to the array and the matrix will affect each other.

DenseMatrix(int rows, int columns)

Create a new dense matrix with the given number of rows and columns. All cells of the matrix will be initialized to zero.

DenseMatrix(int order)

Create a new square dense matrix with the given number of rows and columns. All cells of the matrix will be initialized to zero.

DenseMatrix(DenseColumnMajorMatrixStorage<T> storage)

Create a new dense matrix straight from an initialized matrix storage instance. The storage is used directly without copying. Intended for advanced scenarios where you're working directly with storage for performance or interop reasons.

Public Static Functions

DenseMatrix Create(int rows, int columns, Func<int, int, Complex> init)

Create a new dense matrix and initialize each value using the provided init function.

DenseMatrix Create(int rows, int columns, Complex value)

Create a new dense matrix and initialize each value to the same provided value.

DenseMatrix CreateDiagonal(int rows, int columns, Func<int, Complex> init)

Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.

DenseMatrix CreateDiagonal(int rows, int columns, Complex value)

Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.

DenseMatrix CreateIdentity(int order)

Create a new square sparse identity matrix where each diagonal value is set to One.

DenseMatrix CreateRandom(int rows, int columns, IContinuousDistribution distribution)

Create a new dense matrix with values sampled from the provided random distribution.

DenseMatrix OfArray(Complex[,] array)

DenseMatrix OfColumnArrays(IEnumerable<Complex[]> columns)

Create a new dense matrix as a copy of the given column arrays. This new matrix will be independent from the arrays. A new memory block will be allocated for storing the matrix.

DenseMatrix OfColumnArrays(Complex[][] columns)

DenseMatrix OfColumnMajor(int rows, int columns, IEnumerable<Complex> columnMajor)

Create a new dense matrix as a copy of the given enumerable. The enumerable is assumed to be in column-major order (column by column). This new matrix will be independent from the enumerable. A new memory block will be allocated for storing the matrix.

DenseMatrix OfColumns(IEnumerable<IEnumerable<Complex>> data)

Create a new dense matrix as a copy of the given enumerable of enumerable columns. Each enumerable in the master enumerable specifies a column. This new matrix will be independent from the enumerables. A new memory block will be allocated for storing the matrix.

DenseMatrix OfColumns(int rows, int columns, IEnumerable<IEnumerable<Complex>> data)

Create a new dense matrix as a copy of the given enumerable of enumerable columns. Each enumerable in the master enumerable specifies a column. This new matrix will be independent from the enumerables. A new memory block will be allocated for storing the matrix.

DenseMatrix OfColumnVectors(Vector`1[] columns)

DenseMatrix OfColumnVectors(IEnumerable<Vector<Complex>> columns)

Create a new dense matrix as a copy of the given column vectors. This new matrix will be independent from the vectors. A new memory block will be allocated for storing the matrix.

DenseMatrix OfDiagonalArray(Complex[] diagonal)

Create a new dense matrix with the diagonal as a copy of the given array. This new matrix will be independent from the array. A new memory block will be allocated for storing the matrix.

DenseMatrix OfDiagonalArray(int rows, int columns, Complex[] diagonal)

Create a new dense matrix with the diagonal as a copy of the given array. This new matrix will be independent from the array. A new memory block will be allocated for storing the matrix.

DenseMatrix OfDiagonalVector(Vector<T> diagonal)

Create a new dense matrix with the diagonal as a copy of the given vector. This new matrix will be independent from the vector. A new memory block will be allocated for storing the matrix.

DenseMatrix OfDiagonalVector(int rows, int columns, Vector<T> diagonal)

Create a new dense matrix with the diagonal as a copy of the given vector. This new matrix will be independent from the vector. A new memory block will be allocated for storing the matrix.

DenseMatrix OfIndexed(int rows, int columns, IEnumerable<Tuple<int, int, Complex>> enumerable)

Create a new dense matrix as a copy of the given indexed enumerable. Keys must be provided at most once, zero is assumed if a key is omitted. This new matrix will be independent from the enumerable. A new memory block will be allocated for storing the matrix.

DenseMatrix OfMatrix(Matrix<T> matrix)

Create a new dense matrix as a copy of the given other matrix. This new matrix will be independent from the other matrix. A new memory block will be allocated for storing the matrix.

DenseMatrix OfRowArrays(Complex[][] rows)

DenseMatrix OfRowArrays(IEnumerable<Complex[]> rows)

Create a new dense matrix as a copy of the given row arrays. This new matrix will be independent from the arrays. A new memory block will be allocated for storing the matrix.

DenseMatrix OfRows(IEnumerable<IEnumerable<Complex>> data)

Create a new dense matrix as a copy of the given enumerable of enumerable rows. Each enumerable in the master enumerable specifies a row. This new matrix will be independent from the enumerables. A new memory block will be allocated for storing the matrix.

DenseMatrix OfRows(int rows, int columns, IEnumerable<IEnumerable<Complex>> data)

Create a new dense matrix as a copy of the given enumerable of enumerable rows. Each enumerable in the master enumerable specifies a row. This new matrix will be independent from the enumerables. A new memory block will be allocated for storing the matrix.

DenseMatrix OfRowVectors(Vector`1[] rows)

DenseMatrix OfRowVectors(IEnumerable<Vector<Complex>> rows)

Create a new dense matrix as a copy of the given row vectors. This new matrix will be independent from the vectors. A new memory block will be allocated for storing the matrix.

Public Methods

void Add(Complex scalar, Matrix<T> result)

void Add(Matrix<T> other, Matrix<T> result)

Adds another matrix to this matrix.
Parameters
Matrix<T> other

The matrix to add to this matrix.

Matrix<T> result

The matrix to store the result of the addition.

Matrix<T> Add(Matrix<T> other)

Adds another matrix to this matrix.
Parameters
Matrix<T> other

The matrix to add to this matrix.

Return
Matrix<T>

The result of the addition.

Matrix<T> Add(Complex scalar)

void Append(Matrix<T> right, Matrix<T> result)

Concatenates this matrix with the given matrix and places the result into the result matrix.
Parameters
Matrix<T> right

The matrix to concatenate.

Matrix<T> result

The combined matrix.

Matrix<T> Append(Matrix<T> right)

Concatenates this matrix with the given matrix.
Parameters
Matrix<T> right

The matrix to concatenate.

Return
Matrix<T>

The combined matrix.

Complex[,] AsArray()

Returns the internal multidimensional array of this matrix if, and only if, this matrix is stored by such an array internally. Otherwise returns null. Changes to the returned array and the matrix will affect each other. Use ToArray instead if you always need an independent array.

Complex[][] AsColumnArrays()

Returns the internal column arrays of this matrix if, and only if, this matrix is stored by such arrays internally. Otherwise returns null. Changes to the returned arrays and the matrix will affect each other. Use ToColumnArrays instead if you always need an independent array.

Complex[] AsColumnMajorArray()

Returns the internal column by column (column major) array of this matrix if, and only if, this matrix is stored by such arrays internally. Otherwise returns null. Changes to the returned arrays and the matrix will affect each other. Use ToColumnMajorArray instead if you always need an independent array.
Return
Complex[]

An array containing the matrix's elements.

Complex[][] AsRowArrays()

Returns the internal row arrays of this matrix if, and only if, this matrix is stored by such arrays internally. Otherwise returns null. Changes to the returned arrays and the matrix will affect each other. Use ToRowArrays instead if you always need an independent array.

Complex[] AsRowMajorArray()

Returns the internal row by row (row major) array of this matrix if, and only if, this matrix is stored by such arrays internally. Otherwise returns null. Changes to the returned arrays and the matrix will affect each other. Use ToRowMajorArray instead if you always need an independent array.
Return
Complex[]

An array containing the matrix's elements.

Complex At(int row, int column)

Retrieves the requested element without range checking.
Parameters
int row

The row of the element.

int column

The column of the element.

Return
Complex

The requested element.

void At(int row, int column, Complex value)

Cholesky<T> Cholesky()

void Clear()

Sets all values to zero.

void ClearColumn(int columnIndex)

Sets all values of a column to zero.

void ClearColumns(Int32[] columnIndices)

Sets all values for all of the chosen columns to zero.

void ClearRow(int rowIndex)

Sets all values of a row to zero.

void ClearRows(Int32[] rowIndices)

Sets all values for all of the chosen rows to zero.

void ClearSubMatrix(int rowIndex, int rowCount, int columnIndex, int columnCount)

Sets all values of a sub-matrix to zero.

Matrix<T> Clone()

Creates a clone of this instance.
Return
Matrix<T>

A clone of the instance.

void CoerceZero(double threshold)

Set all values whose absolute value is smaller than the threshold to zero.

void CoerceZero(Func<Complex, bool> zeroPredicate)

Set all values that meet the predicate to zero, in-place.

void Column(int index, Vector<T> result)

Copies a column into to the given Vector.
Parameters
int index

The column to copy.

Vector<T> result

The Vector to copy the column into.

Vector<T> Column(int columnIndex, int rowIndex, int length)

Copies the requested column elements into a new Vector.
Parameters
int columnIndex

The column to copy elements from.

int rowIndex

The row to start copying from.

int length

The number of elements to copy.

Return
Vector<T>

A Vector containing the requested elements.

void Column(int columnIndex, int rowIndex, int length, Vector<T> result)

Copies the requested column elements into the given vector.
Parameters
int columnIndex

The column to copy elements from.

int rowIndex

The row to start copying from.

int length

The number of elements to copy.

Vector<T> result

The Vector to copy the column into.

Vector<T> Column(int index)

Copies a column into a new Vector>.
Parameters
int index

The column to copy.

Return
Vector<T>

A Vector containing the copied elements.

Vector<T> ColumnAbsoluteSums()

Calculates the absolute value sum of each column vector.

Vector<T> ColumnNorms(double norm)

Calculates the p-norms of all column vectors. Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)

Vector<T> ColumnSums()

Calculates the value sum of each column vector.

Complex ConditionNumber()

Calculates the condition number of this matrix.
The condition number is calculated using singular value decomposition.
Return
Complex

The condition number of the matrix.

void Conjugate(Matrix<T> result)

Complex conjugate each element of this matrix and place the results into the result matrix.
Parameters
Matrix<T> result

The result of the conjugation.

Matrix<T> Conjugate()

Complex conjugate each element of this matrix.
Return
Matrix<T>

A matrix containing the conjugated values.

void ConjugateTranspose(Matrix<T> result)

Puts the conjugate transpose of this matrix into the result matrix.

Matrix<T> ConjugateTranspose()

Returns the conjugate transpose of this matrix.
Return
Matrix<T>

The conjugate transpose of this matrix.

Matrix<T> ConjugateTransposeAndMultiply(Matrix<T> other)

Multiplies this matrix with the conjugate transpose of another matrix and returns the result.
Parameters
Matrix<T> other

The matrix to multiply with.

Return
Matrix<T>

The result of the multiplication.

void ConjugateTransposeAndMultiply(Matrix<T> other, Matrix<T> result)

Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
Parameters
Matrix<T> other

The matrix to multiply with.

Matrix<T> result

The result of the multiplication.

Matrix<T> ConjugateTransposeThisAndMultiply(Matrix<T> other)

Multiplies the conjugate transpose of this matrix with another matrix and returns the result.
Parameters
Matrix<T> other

The matrix to multiply with.

Return
Matrix<T>

The result of the multiplication.

void ConjugateTransposeThisAndMultiply(Vector<T> rightSide, Vector<T> result)

Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
Parameters
Vector<T> rightSide

The vector to multiply with.

Vector<T> result

The result of the multiplication.

Vector<T> ConjugateTransposeThisAndMultiply(Vector<T> rightSide)

Multiplies the conjugate transpose of this matrix by a vector and returns the result.
Parameters
Vector<T> rightSide

The vector to multiply with.

Return
Vector<T>

The result of the multiplication.

void ConjugateTransposeThisAndMultiply(Matrix<T> other, Matrix<T> result)

Multiplies the conjugate transpose of this matrix with another matrix and places the results into the result matrix.
Parameters
Matrix<T> other

The matrix to multiply with.

Matrix<T> result

The result of the multiplication.

void CopyTo(Matrix<T> target)

Copies the elements of this matrix to the given matrix.
Parameters
Matrix<T> target

The matrix to copy values into.

Complex Determinant()

Computes the determinant of this matrix.
Return
Complex

The determinant of this matrix.

Vector<T> Diagonal()

Returns the elements of the diagonal in a Vector.
For non-square matrices, the method returns Min(Rows, Columns) elements where i == j (i is the row index, and j is the column index).
Return
Vector<T>

The elements of the diagonal.

void DiagonalStack(Matrix<T> lower, Matrix<T> result)

Diagonally stacks his matrix on top of the given matrix and places the combined matrix into the result matrix.
Parameters
Matrix<T> lower

The lower, right matrix.

Matrix<T> result

The combined matrix

Matrix<T> DiagonalStack(Matrix<T> lower)

Diagonally stacks his matrix on top of the given matrix. The new matrix is a M-by-N matrix, where M = this.Rows + lower.Rows and N = this.Columns + lower.Columns. The values of off the off diagonal matrices/blocks are set to zero.
Parameters
Matrix<T> lower

The lower, right matrix.

Return
Matrix<T>

the combined matrix

void Divide(Complex scalar, Matrix<T> result)

Matrix<T> Divide(Complex scalar)

void DivideByThis(Complex scalar, Matrix<T> result)

Matrix<T> DivideByThis(Complex scalar)

IEnumerable<Complex> Enumerate(Zeros zeros)

Returns an IEnumerable that can be used to iterate through all values of the matrix.
The enumerator will include all values, even if they are zero. The ordering of the values is unspecified (not necessarily column-wise or row-wise).

IEnumerable<Complex> Enumerate()

Returns an IEnumerable that can be used to iterate through all values of the matrix.
The enumerator will include all values, even if they are zero. The ordering of the values is unspecified (not necessarily column-wise or row-wise).

IEnumerable<Vector<Complex>> EnumerateColumns(int index, int length)

Returns an IEnumerable that can be used to iterate through a subset of all columns of the matrix.
Parameters
int index

The column to start enumerating over.

int length

The number of columns to enumerating over.

IEnumerable<Vector<Complex>> EnumerateColumns()

Returns an IEnumerable that can be used to iterate through all columns of the matrix.

IEnumerable<ValueTuple<int, Vector<Complex>>> EnumerateColumnsIndexed()

Returns an IEnumerable that can be used to iterate through all columns of the matrix and their index.
The enumerator returns a Tuple with the first value being the column index and the second value being the value of the column at that index.

IEnumerable<ValueTuple<int, Vector<Complex>>> EnumerateColumnsIndexed(int index, int length)

Returns an IEnumerable that can be used to iterate through a subset of all columns of the matrix and their index.
The enumerator returns a Tuple with the first value being the column index and the second value being the value of the column at that index.
Parameters
int index

The column to start enumerating over.

int length

The number of columns to enumerating over.

IEnumerable<ValueTuple<int, int, Complex>> EnumerateIndexed(Zeros zeros)

Returns an IEnumerable that can be used to iterate through all values of the matrix and their index.
The enumerator returns a Tuple with the first two values being the row and column index and the third value being the value of the element at that index. The enumerator will include all values, even if they are zero.

IEnumerable<ValueTuple<int, int, Complex>> EnumerateIndexed()

Returns an IEnumerable that can be used to iterate through all values of the matrix and their index.
The enumerator returns a Tuple with the first two values being the row and column index and the third value being the value of the element at that index. The enumerator will include all values, even if they are zero.

IEnumerable<Vector<Complex>> EnumerateRows()

Returns an IEnumerable that can be used to iterate through all rows of the matrix.

IEnumerable<Vector<Complex>> EnumerateRows(int index, int length)

Returns an IEnumerable that can be used to iterate through a subset of all rows of the matrix.
Parameters
int index

The row to start enumerating over.

int length

The number of rows to enumerating over.

IEnumerable<ValueTuple<int, Vector<Complex>>> EnumerateRowsIndexed()

Returns an IEnumerable that can be used to iterate through all rows of the matrix and their index.
The enumerator returns a Tuple with the first value being the row index and the second value being the value of the row at that index.

IEnumerable<ValueTuple<int, Vector<Complex>>> EnumerateRowsIndexed(int index, int length)

Returns an IEnumerable that can be used to iterate through a subset of all rows of the matrix and their index.
The enumerator returns a Tuple with the first value being the row index and the second value being the value of the row at that index.
Parameters
int index

The row to start enumerating over.

int length

The number of rows to enumerating over.

bool Equals(object obj)

Determines whether the specified Object is equal to this instance.
Parameters
object obj

The Object to compare with this instance.

Return
bool

true if the specified Object is equal to this instance; otherwise, false.

bool Equals(Matrix<T> other)

Indicates whether the current object is equal to another object of the same type.
Parameters
Matrix<T> other

An object to compare with this object.

Return
bool

true if the current object is equal to the other parameter; otherwise, false.

Evd<T> Evd(Symmetricity symmetricity)

bool Exists(Func<Complex, bool> predicate, Zeros zeros)

Returns true if at least one element satisfies a predicate. Zero elements may be skipped on sparse data structures if allowed (default).

bool Exists2<TOther>(Func<Complex, TOther, bool> predicate, Matrix<T> other, Zeros zeros)

Returns true if at least one element pairs of two matrices of the same size satisfies a predicate. Zero elements may be skipped on sparse data structures if allowed (default).

Tuple<int, int, Complex> Find(Func<Complex, bool> predicate, Zeros zeros)

Returns a tuple with the index and value of the first element satisfying a predicate, or null if none is found. Zero elements may be skipped on sparse data structures if allowed (default).

Tuple<int, int, Complex, TOther> Find2<TOther>(Func<Complex, TOther, bool> predicate, Matrix<T> other, Zeros zeros)

Returns a tuple with the index and values of the first element pair of two matrices of the same size satisfying a predicate, or null if none is found. Zero elements may be skipped on sparse data structures if allowed (default).

TState Fold2<TOther, TState>(Func<TState, Complex, TOther, TState> f, TState state, Matrix<T> other, Zeros zeros)

Applies a function to update the status with each value pair of two matrices and returns the resulting status.

TU[] FoldByColumn<TU>(Func<TU, Complex, TU> f, TU state, Zeros zeros)

For each column, applies a function f to each element of the column, threading an accumulator argument through the computation. Returns an array with the resulting accumulator states for each column.

TU[] FoldByRow<TU>(Func<TU, Complex, TU> f, TU state, Zeros zeros)

For each row, applies a function f to each element of the row, threading an accumulator argument through the computation. Returns an array with the resulting accumulator states for each row.

Vector<T> FoldColumns<TU>(Func<Vector<TU>, Vector<Complex>, Vector<TU>> f, Vector<T> state)

Applies a function f to each column vector, threading an accumulator vector argument through the computation. Returns the resulting accumulator vector.

Vector<T> FoldRows<TU>(Func<Vector<TU>, Vector<Complex>, Vector<TU>> f, Vector<T> state)

Applies a function f to each row vector, threading an accumulator vector argument through the computation. Returns the resulting accumulator vector.

bool ForAll(Func<Complex, bool> predicate, Zeros zeros)

Returns true if all elements satisfy a predicate. Zero elements may be skipped on sparse data structures if allowed (default).

bool ForAll2<TOther>(Func<Complex, TOther, bool> predicate, Matrix<T> other, Zeros zeros)

Returns true if all element pairs of two matrices of the same size satisfy a predicate. Zero elements may be skipped on sparse data structures if allowed (default).

double FrobeniusNorm()

Calculates the entry-wise Frobenius norm of this matrix.
Return
double

The square root of the sum of the squared values.

int GetHashCode()

Returns a hash code for this instance.
Return
int

A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.

Type GetType()

GramSchmidt<T> GramSchmidt()

double InfinityNorm()

Calculates the induced infinity norm of this matrix.
Return
double

The maximum absolute row sum of the matrix.

Matrix<T> InsertColumn(int columnIndex, Vector<T> column)

Creates a new matrix and inserts the given column at the given index.
Parameters
int columnIndex

The index of where to insert the column.

Vector<T> column

The column to insert.

Return
Matrix<T>

A new matrix with the inserted column.

Matrix<T> InsertRow(int rowIndex, Vector<T> row)

Creates a new matrix and inserts the given row at the given index.
Parameters
int rowIndex

The index of where to insert the row.

Vector<T> row

The row to insert.

Return
Matrix<T>

A new matrix with the inserted column.

Matrix<T> Inverse()

Computes the inverse of this matrix.
Return
Matrix<T>

The inverse of this matrix.

bool IsHermitian()

Evaluates whether this matrix is Hermitian (conjugate symmetric).

bool IsSymmetric()

Evaluates whether this matrix is symmetric.

Vector`1[] Kernel()

Computes an orthonormal basis for the null space of this matrix, also known as the kernel of the corresponding matrix transformation.

void KroneckerProduct(Matrix<T> other, Matrix<T> result)

Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns.
Parameters
Matrix<T> other

The other matrix.

Matrix<T> result

The Kronecker product of the two matrices.

Matrix<T> KroneckerProduct(Matrix<T> other)

Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns.
Parameters
Matrix<T> other

The other matrix.

Return
Matrix<T>

The Kronecker product of the two matrices.

double L1Norm()

Calculates the induced L1 norm of this matrix.
Return
double

The maximum absolute column sum of the matrix.

double L2Norm()

Calculates the induced L2 norm of the matrix.
For sparse matrices, the L2 norm is computed using a dense implementation of singular value decomposition. In a later release, it will be replaced with a sparse implementation.
Return
double

The largest singular value of the matrix.

Vector<T> LeftMultiply(Vector<T> leftSide)

Left multiply a matrix with a vector ( = vector * matrix ).
Parameters
Vector<T> leftSide

The vector to multiply with.

Return
Vector<T>

The result of the multiplication.

void LeftMultiply(Vector<T> leftSide, Vector<T> result)

Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
Parameters
Vector<T> leftSide

The vector to multiply with.

Vector<T> result

The result of the multiplication.

void LowerTriangle(Matrix<T> result)

Puts the lower triangle of this matrix into the result matrix.
Parameters
Matrix<T> result

Where to store the lower triangle.

Matrix<T> LowerTriangle()

Returns a new matrix containing the lower triangle of this matrix.
Return
Matrix<T>

The lower triangle of this matrix.

LU<T> LU()

void Map(Func<Complex, Complex> f, Matrix<T> result, Zeros zeros)

Applies a function to each value of this matrix and replaces the value in the result matrix. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

Matrix<T> Map<TU>(Func<Complex, TU> f, Zeros zeros)

Applies a function to each value of this matrix and returns the results as a new matrix. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

Matrix<T> Map2(Func<Complex, Complex, Complex> f, Matrix<T> other, Zeros zeros)

Applies a function to each value pair of two matrices and returns the results as a new vector.

void Map2(Func<Complex, Complex, Complex> f, Matrix<T> other, Matrix<T> result, Zeros zeros)

Applies a function to each value pair of two matrices and replaces the value in the result vector.

void MapConvert<TU>(Func<Complex, TU> f, Matrix<T> result, Zeros zeros)

Applies a function to each value of this matrix and replaces the value in the result matrix. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

void MapIndexed(Func<int, int, Complex, Complex> f, Matrix<T> result, Zeros zeros)

Applies a function to each value of this matrix and replaces the value in the result matrix. The index of each value (zero-based) is passed as first argument to the function. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

Matrix<T> MapIndexed<TU>(Func<int, int, Complex, TU> f, Zeros zeros)

Applies a function to each value of this matrix and returns the results as a new matrix. The index of each value (zero-based) is passed as first argument to the function. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

void MapIndexedConvert<TU>(Func<int, int, Complex, TU> f, Matrix<T> result, Zeros zeros)

Applies a function to each value of this matrix and replaces the value in the result matrix. The index of each value (zero-based) is passed as first argument to the function. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

void MapIndexedInplace(Func<int, int, Complex, Complex> f, Zeros zeros)

Applies a function to each value of this matrix and replaces the value with its result. The row and column indices of each value (zero-based) are passed as first arguments to the function. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

void MapInplace(Func<Complex, Complex> f, Zeros zeros)

Applies a function to each value of this matrix and replaces the value with its result. If forceMapZero is not set to true, zero values may or may not be skipped depending on the actual data storage implementation (relevant mostly for sparse matrices).

Matrix<T> Modulus(Complex divisor)

void Modulus(Complex divisor, Matrix<T> result)

Matrix<T> ModulusByThis(Complex dividend)

void ModulusByThis(Complex dividend, Matrix<T> result)

Vector<T> Multiply(Vector<T> rightSide)

Multiplies this matrix by a vector and returns the result.
Parameters
Vector<T> rightSide

The vector to multiply with.

Return
Vector<T>

The result of the multiplication.

Matrix<T> Multiply(Matrix<T> other)

Multiplies this matrix with another matrix and returns the result.
Parameters
Matrix<T> other

The matrix to multiply with.

Return
Matrix<T>

The result of the multiplication.

void Multiply(Vector<T> rightSide, Vector<T> result)

Multiplies this matrix with a vector and places the results into the result vector.
Parameters
Vector<T> rightSide

The vector to multiply with.

Vector<T> result

The result of the multiplication.

void Multiply(Matrix<T> other, Matrix<T> result)

Multiplies this matrix with another matrix and places the results into the result matrix.
Parameters
Matrix<T> other

The matrix to multiply with.

Matrix<T> result

The result of the multiplication.

void Multiply(Complex scalar, Matrix<T> result)

Matrix<T> Multiply(Complex scalar)

void Negate(Matrix<T> result)

Negate each element of this matrix and place the results into the result matrix.
Parameters
Matrix<T> result

The result of the negation.

Matrix<T> Negate()

Negate each element of this matrix.
Return
Matrix<T>

A matrix containing the negated values.

Matrix<T> NormalizeColumns(double norm)

Normalizes all column vectors to a unit p-norm. Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)

Matrix<T> NormalizeRows(double norm)

Normalizes all row vectors to a unit p-norm. Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)

int Nullity()

Calculates the nullity of the matrix.
Return
int

effective numerical nullity, obtained from SVD

void PermuteColumns(Permutation p)

Permute the columns of a matrix according to a permutation.
Parameters
Permutation p

The column permutation to apply to this matrix.

void PermuteRows(Permutation p)

Permute the rows of a matrix according to a permutation.
Parameters
Permutation p

The row permutation to apply to this matrix.

Matrix<T> PointwiseAbs()

Pointwise applies the abs function to each value

void PointwiseAbs(Matrix<T> result)

Pointwise applies the abs function to each value
Parameters
Matrix<T> result

The vector to store the result

void PointwiseAbsoluteMaximum(Matrix<T> other, Matrix<T> result)

Pointwise applies the absolute maximum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> result

The matrix to store the result.

Matrix<T> PointwiseAbsoluteMaximum(Matrix<T> other)

Pointwise applies the absolute maximum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> PointwiseAbsoluteMaximum(Complex scalar)

void PointwiseAbsoluteMaximum(Complex scalar, Matrix<T> result)

Matrix<T> PointwiseAbsoluteMinimum(Complex scalar)

void PointwiseAbsoluteMinimum(Complex scalar, Matrix<T> result)

Matrix<T> PointwiseAbsoluteMinimum(Matrix<T> other)

Pointwise applies the absolute minimum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

void PointwiseAbsoluteMinimum(Matrix<T> other, Matrix<T> result)

Pointwise applies the absolute minimum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> result

The matrix to store the result.

Matrix<T> PointwiseAcos()

Pointwise applies the acos function to each value

void PointwiseAcos(Matrix<T> result)

Pointwise applies the acos function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseAsin()

Pointwise applies the asin function to each value

void PointwiseAsin(Matrix<T> result)

Pointwise applies the asin function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseAtan()

Pointwise applies the atan function to each value

void PointwiseAtan(Matrix<T> result)

Pointwise applies the atan function to each value
Parameters
Matrix<T> result

The vector to store the result

void PointwiseAtan2(Matrix<T> other, Matrix<T> result)

Pointwise applies the atan2 function to each value of the current matrix and a given other matrix being the 'x' of atan2 and the 'this' matrix being the 'y'
Parameters
Matrix<T> other

The other matrix 'y'

Matrix<T> result

The matrix with the result and 'x'

Matrix<T> PointwiseAtan2(Matrix<T> other)

Pointwise applies the atan2 function to each value of the current matrix and a given other matrix being the 'x' of atan2 and the 'this' matrix being the 'y'

void PointwiseCeiling(Matrix<T> result)

Pointwise applies the ceiling function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseCeiling()

Pointwise applies the ceiling function to each value

void PointwiseCos(Matrix<T> result)

Pointwise applies the cos function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseCos()

Pointwise applies the cos function to each value

void PointwiseCosh(Matrix<T> result)

Pointwise applies the cosh function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseCosh()

Pointwise applies the cosh function to each value

void PointwiseDivide(Matrix<T> divisor, Matrix<T> result)

Pointwise divide this matrix by another matrix and stores the result into the result matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

Matrix<T> result

The matrix to store the result of the pointwise division.

Matrix<T> PointwiseDivide(Matrix<T> divisor)

Pointwise divide this matrix by another matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

Return
Matrix<T>

A new matrix that is the pointwise division of this matrix and divisor.

void PointwiseExp(Matrix<T> result)

Pointwise applies the exponent function to each value.
Parameters
Matrix<T> result

The matrix to store the result.

Matrix<T> PointwiseExp()

Pointwise applies the exponent function to each value.

Matrix<T> PointwiseFloor()

Pointwise applies the floor function to each value

void PointwiseFloor(Matrix<T> result)

Pointwise applies the floor function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseLog()

Pointwise applies the natural logarithm function to each value.

void PointwiseLog(Matrix<T> result)

Pointwise applies the natural logarithm function to each value.
Parameters
Matrix<T> result

The matrix to store the result.

void PointwiseLog10(Matrix<T> result)

Pointwise applies the log10 function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseLog10()

Pointwise applies the log10 function to each value

void PointwiseMaximum(Matrix<T> other, Matrix<T> result)

Pointwise applies the maximum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> result

The matrix to store the result.

Matrix<T> PointwiseMaximum(Matrix<T> other)

Pointwise applies the maximum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> PointwiseMaximum(Complex scalar)

void PointwiseMaximum(Complex scalar, Matrix<T> result)

Matrix<T> PointwiseMinimum(Complex scalar)

void PointwiseMinimum(Complex scalar, Matrix<T> result)

Matrix<T> PointwiseMinimum(Matrix<T> other)

Pointwise applies the minimum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

void PointwiseMinimum(Matrix<T> other, Matrix<T> result)

Pointwise applies the minimum with the values of another matrix to each value.
Parameters
Matrix<T> other

The matrix with the values to compare to.

Matrix<T> result

The matrix to store the result.

Matrix<T> PointwiseModulus(Matrix<T> divisor)

Pointwise canonical modulus, where the result has the sign of the divisor, of this matrix by another matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

void PointwiseModulus(Matrix<T> divisor, Matrix<T> result)

Pointwise canonical modulus, where the result has the sign of the divisor, of this matrix by another matrix and stores the result into the result matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

Matrix<T> result

The matrix to store the result of the pointwise modulus.

Matrix<T> PointwiseMultiply(Matrix<T> other)

Pointwise multiplies this matrix with another matrix.
Parameters
Matrix<T> other

The matrix to pointwise multiply with this one.

Return
Matrix<T>

A new matrix that is the pointwise multiplication of this matrix and other.

void PointwiseMultiply(Matrix<T> other, Matrix<T> result)

Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
Parameters
Matrix<T> other

The matrix to pointwise multiply with this one.

Matrix<T> result

The matrix to store the result of the pointwise multiplication.

Matrix<T> PointwisePower(Complex exponent)

void PointwisePower(Complex exponent, Matrix<T> result)

void PointwisePower(Matrix<T> exponent, Matrix<T> result)

Pointwise raise this matrix to an exponent.
Parameters
Matrix<T> exponent

The exponent to raise this matrix values to.

Matrix<T> result

The matrix to store the result into.

Matrix<T> PointwisePower(Matrix<T> exponent)

Pointwise raise this matrix to an exponent and store the result into the result matrix.
Parameters
Matrix<T> exponent

The exponent to raise this matrix values to.

void PointwiseRemainder(Matrix<T> divisor, Matrix<T> result)

Pointwise remainder (% operator), where the result has the sign of the dividend, of this matrix by another matrix and stores the result into the result matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

Matrix<T> result

The matrix to store the result of the pointwise remainder.

Matrix<T> PointwiseRemainder(Matrix<T> divisor)

Pointwise remainder (% operator), where the result has the sign of the dividend, of this matrix by another matrix.
Parameters
Matrix<T> divisor

The pointwise denominator matrix to use.

Matrix<T> PointwiseRound()

Pointwise applies the round function to each value

void PointwiseRound(Matrix<T> result)

Pointwise applies the round function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseSign()

Pointwise applies the sign function to each value

void PointwiseSign(Matrix<T> result)

Pointwise applies the sign function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseSin()

Pointwise applies the sin function to each value

void PointwiseSin(Matrix<T> result)

Pointwise applies the sin function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseSinh()

Pointwise applies the sinh function to each value

void PointwiseSinh(Matrix<T> result)

Pointwise applies the sinh function to each value
Parameters
Matrix<T> result

The vector to store the result

void PointwiseSqrt(Matrix<T> result)

Pointwise applies the sqrt function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseSqrt()

Pointwise applies the sqrt function to each value

Matrix<T> PointwiseTan()

Pointwise applies the tan function to each value

void PointwiseTan(Matrix<T> result)

Pointwise applies the tan function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> PointwiseTanh()

Pointwise applies the tanh function to each value

void PointwiseTanh(Matrix<T> result)

Pointwise applies the tanh function to each value
Parameters
Matrix<T> result

The vector to store the result

Matrix<T> Power(int exponent)

Multiplies this square matrix with another matrix and returns the result.
Parameters
int exponent

The positive integer exponent to raise the matrix to.

void Power(int exponent, Matrix<T> result)

Raises this square matrix to a positive integer exponent and places the results into the result matrix.
Parameters
int exponent

The positive integer exponent to raise the matrix to.

Matrix<T> result

The result of the power.

Matrix<T> PseudoInverse()

Computes the Moore-Penrose Pseudo-Inverse of this matrix.

QR<T> QR(QRMethod method)

Vector`1[] Range()

Computes an orthonormal basis for the column space of this matrix, also known as the range or image of the corresponding matrix transformation.

int Rank()

Calculates the rank of the matrix.
Return
int

effective numerical rank, obtained from SVD

Vector<T> ReduceColumns(Func<Vector<Complex>, Vector<Complex>, Vector<Complex>> f)

Reduces all column vectors by applying a function between two of them, until only a single vector is left.

Vector<T> ReduceRows(Func<Vector<Complex>, Vector<Complex>, Vector<Complex>> f)

Reduces all row vectors by applying a function between two of them, until only a single vector is left.

void Remainder(Complex divisor, Matrix<T> result)

Matrix<T> Remainder(Complex divisor)

Matrix<T> RemainderByThis(Complex dividend)

void RemainderByThis(Complex dividend, Matrix<T> result)

Matrix<T> RemoveColumn(int columnIndex)

Creates a new matrix with the given column removed.
Parameters
int columnIndex

The index of the column to remove.

Return
Matrix<T>

A new matrix without the chosen column.

Matrix<T> RemoveRow(int rowIndex)

Creates a new matrix with the given row removed.
Parameters
int rowIndex

The index of the row to remove.

Return
Matrix<T>

A new matrix without the chosen row.

Matrix<T> Resize(int rowCount, int columnCount)

Creates a new matrix with the desired size and copies this matrix to it. Values which no longer exist in the new matrix are ignored, new values are set to zero.
Parameters
int rowCount

The number of rows of the new matrix.

int columnCount

The number of columns of the new matrix.

Return
Matrix<T>

A new matrix with the desired rows and columns.

void Row(int index, Vector<T> result)

Copies a row into to the given Vector.
Parameters
int index

The row to copy.

Vector<T> result

The Vector to copy the row into.

Vector<T> Row(int rowIndex, int columnIndex, int length)

Copies the requested row elements into a new Vector.
Parameters
int rowIndex

The row to copy elements from.

int columnIndex

The column to start copying from.

int length

The number of elements to copy.

Return
Vector<T>

A Vector containing the requested elements.

void Row(int rowIndex, int columnIndex, int length, Vector<T> result)

Copies the requested row elements into a new Vector.
Parameters
int rowIndex

The row to copy elements from.

int columnIndex

The column to start copying from.

int length

The number of elements to copy.

Vector<T> result

The Vector to copy the column into.

Vector<T> Row(int index)

Copies a row into an Vector.
Parameters
int index

The row to copy.

Return
Vector<T>

A Vector containing the copied elements.

Vector<T> RowAbsoluteSums()

Calculates the absolute value sum of each row vector.

Vector<T> RowNorms(double norm)

Calculates the p-norms of all row vectors. Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)

Vector<T> RowSums()

Calculates the value sum of each row vector.

void SetColumn(int columnIndex, Vector<T> column)

Copies the values of the given Vector to the specified column.
Parameters
int columnIndex

The column to copy the values to.

Vector<T> column

The vector to copy the values from.

void SetColumn(int columnIndex, int rowIndex, int length, Vector<T> column)

Copies the values of the given Vector to the specified sub-column.
Parameters
int columnIndex

The column to copy the values to.

int rowIndex

The row to start copying to.

int length

The number of elements to copy.

Vector<T> column

The vector to copy the values from.

void SetColumn(int columnIndex, Complex[] column)

void SetDiagonal(Complex[] source)

void SetDiagonal(Vector<T> source)

Copies the values of the given Vector to the diagonal.
For non-square matrices, the elements of source are copied to this[i,i].
Parameters
Vector<T> source

The vector to copy the values from. The length of the vector should be Min(Rows, Columns).

void SetRow(int rowIndex, Vector<T> row)

Copies the values of the given Vector to the specified row.
Parameters
int rowIndex

The row to copy the values to.

Vector<T> row

The vector to copy the values from.

void SetRow(int rowIndex, int columnIndex, int length, Vector<T> row)

Copies the values of the given Vector to the specified sub-row.
Parameters
int rowIndex

The row to copy the values to.

int columnIndex

The column to start copying to.

int length

The number of elements to copy.

Vector<T> row

The vector to copy the values from.

void SetRow(int rowIndex, Complex[] row)

void SetSubMatrix(int rowIndex, int sorceRowIndex, int rowCount, int columnIndex, int sourceColumnIndex, int columnCount, Matrix<T> subMatrix)

Copies the values of a given matrix into a region in this matrix.
Parameters
int rowIndex

The row to start copying to.

int sorceRowIndex

The row of the sub-matrix to start copying from.

int rowCount

The number of rows to copy. Must be positive.

int columnIndex

The column to start copying to.

int sourceColumnIndex

The column of the sub-matrix to start copying from.

int columnCount

The number of columns to copy. Must be positive.

Matrix<T> subMatrix

The sub-matrix to copy from.

void SetSubMatrix(int rowIndex, int rowCount, int columnIndex, int columnCount, Matrix<T> subMatrix)

Copies the values of a given matrix into a region in this matrix.
Parameters
int rowIndex

The row to start copying to.

int rowCount

The number of rows to copy. Must be positive.

int columnIndex

The column to start copying to.

int columnCount

The number of columns to copy. Must be positive.

Matrix<T> subMatrix

The sub-matrix to copy from.

void SetSubMatrix(int rowIndex, int columnIndex, Matrix<T> subMatrix)

Copies the values of a given matrix into a region in this matrix.
Parameters
int rowIndex

The row to start copying to.

int columnIndex

The column to start copying to.

Matrix<T> subMatrix

The sub-matrix to copy from.

void Solve(Vector<T> input, Vector<T> result)

Solves a system of linear equations, , with A QR factorized.
Parameters
Vector<T> input

The right hand side vector, .

Vector<T> result

The left hand side Matrix`1 , .

void Solve(Matrix<T> input, Matrix<T> result)

Solves a system of linear equations, , with A QR factorized.
Parameters
Matrix<T> input

The right hand side Matrix`1 , .

Matrix<T> result

The left hand side Matrix`1 , .

Matrix<T> Solve(Matrix<T> input)

Solves a system of linear equations, , with A QR factorized.
Parameters
Matrix<T> input

The right hand side Matrix`1 , .

Return
Matrix<T>

The left hand side Matrix`1 , .

Vector<T> Solve(Vector<T> input)

Solves a system of linear equations, , with A QR factorized.
Parameters
Vector<T> input

The right hand side vector, .

Return
Vector<T>

The left hand side Vector`1 , .

Vector<T> SolveIterative(Vector<T> input, IIterativeSolver<T> solver, Iterator<T> iterator, IPreconditioner<T> preconditioner)

Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
Parameters
Vector<T> input

The solution vector b.

IIterativeSolver<T> solver

The iterative solver to use.

Iterator<T> iterator

The iterator to use to control when to stop iterating.

IPreconditioner<T> preconditioner

The preconditioner to use for approximations.

Return
Vector<T>

The result vector x.

Matrix<T> SolveIterative(Matrix<T> input, IIterativeSolver<T> solver, Iterator<T> iterator, IPreconditioner<T> preconditioner)

Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
Parameters
Matrix<T> input

The solution matrix B.

IIterativeSolver<T> solver

The iterative solver to use.

Iterator<T> iterator

The iterator to use to control when to stop iterating.

IPreconditioner<T> preconditioner

The preconditioner to use for approximations.

Return
Matrix<T>

The result matrix X.

Vector<T> SolveIterative(Vector<T> input, IIterativeSolver<T> solver, IPreconditioner<T> preconditioner, IIterationStopCriterion`1[] stopCriteria)

Matrix<T> SolveIterative(Matrix<T> input, IIterativeSolver<T> solver, IPreconditioner<T> preconditioner, IIterationStopCriterion`1[] stopCriteria)

Vector<T> SolveIterative(Vector<T> input, IIterativeSolver<T> solver, IIterationStopCriterion`1[] stopCriteria)

Matrix<T> SolveIterative(Matrix<T> input, IIterativeSolver<T> solver, IIterationStopCriterion`1[] stopCriteria)

void Stack(Matrix<T> lower, Matrix<T> result)

Stacks this matrix on top of the given matrix and places the result into the result matrix.
Parameters
Matrix<T> lower

The matrix to stack this matrix upon.

Matrix<T> result

The combined matrix.

Matrix<T> Stack(Matrix<T> lower)

Stacks this matrix on top of the given matrix and places the result into the result matrix.
Parameters
Matrix<T> lower

The matrix to stack this matrix upon.

Return
Matrix<T>

The combined matrix.

void StrictlyLowerTriangle(Matrix<T> result)

Puts the strictly lower triangle of this matrix into the result matrix.
Parameters
Matrix<T> result

Where to store the lower triangle.

Matrix<T> StrictlyLowerTriangle()

Returns a new matrix containing the lower triangle of this matrix. The new matrix does not contain the diagonal elements of this matrix.
Return
Matrix<T>

The lower triangle of this matrix.

Matrix<T> StrictlyUpperTriangle()

Returns a new matrix containing the upper triangle of this matrix. The new matrix does not contain the diagonal elements of this matrix.
Return
Matrix<T>

The upper triangle of this matrix.

void StrictlyUpperTriangle(Matrix<T> result)

Puts the strictly upper triangle of this matrix into the result matrix.
Parameters
Matrix<T> result

Where to store the lower triangle.

Matrix<T> SubMatrix(int rowIndex, int rowCount, int columnIndex, int columnCount)

Creates a matrix that contains the values from the requested sub-matrix.
Parameters
int rowIndex

The row to start copying from.

int rowCount

The number of rows to copy. Must be positive.

int columnIndex

The column to start copying from.

int columnCount

The number of columns to copy. Must be positive.

Return
Matrix<T>

The requested sub-matrix.

void Subtract(Matrix<T> other, Matrix<T> result)

Subtracts another matrix from this matrix.
Parameters
Matrix<T> other

The matrix to subtract.

Matrix<T> result

The matrix to store the result of the subtraction.

void Subtract(Complex scalar, Matrix<T> result)

Matrix<T> Subtract(Complex scalar)

Matrix<T> Subtract(Matrix<T> other)

Subtracts another matrix from this matrix.
Parameters
Matrix<T> other

The matrix to subtract.

Return
Matrix<T>

The result of the subtraction.

Matrix<T> SubtractFrom(Complex scalar)

void SubtractFrom(Complex scalar, Matrix<T> result)

Svd<T> Svd(bool computeVectors)

Complex[,] ToArray()

Returns this matrix as a multidimensional array. The returned array will be independent from this matrix. A new memory block will be allocated for the array.
Return
Complex[,]

A multidimensional containing the values of this matrix.

Complex[][] ToColumnArrays()

Returns this matrix as array of column arrays. The returned arrays will be independent from this matrix. A new memory block will be allocated for the arrays.

Complex[] ToColumnMajorArray()

Returns the matrix's elements as an array with the data laid out column by column (column major). The returned array will be independent from this matrix. A new memory block will be allocated for the array.
Return
Complex[]

An array containing the matrix's elements.

string ToMatrixString(string format, IFormatProvider provider)

Returns a string that summarizes the content of this matrix.

string ToMatrixString(int upperRows, int lowerRows, int leftColumns, int rightColumns, string horizontalEllipsis, string verticalEllipsis, string diagonalEllipsis, string columnSeparator, string rowSeparator, Func<Complex, string> formatValue)

string ToMatrixString(int upperRows, int lowerRows, int minLeftColumns, int rightColumns, int maxWidth, string horizontalEllipsis, string verticalEllipsis, string diagonalEllipsis, string columnSeparator, string rowSeparator, Func<Complex, string> formatValue)

string ToMatrixString(int maxRows, int maxColumns, string format, IFormatProvider provider)

Returns a string that summarizes the content of this matrix.

String[,] ToMatrixStringArray(int upperRows, int lowerRows, int minLeftColumns, int rightColumns, int maxWidth, int padding, string horizontalEllipsis, string verticalEllipsis, string diagonalEllipsis, Func<Complex, string> formatValue)

Returns a string 2D array that summarizes the content of this matrix.

String[,] ToMatrixStringArray(int upperRows, int lowerRows, int leftColumns, int rightColumns, string horizontalEllipsis, string verticalEllipsis, string diagonalEllipsis, Func<Complex, string> formatValue)

Returns a string 2D array that summarizes the content of this matrix.

Complex[][] ToRowArrays()

Returns this matrix as array of row arrays. The returned arrays will be independent from this matrix. A new memory block will be allocated for the arrays.

Complex[] ToRowMajorArray()

Returns the matrix's elements as an array with the data laid row by row (row major). The returned array will be independent from this matrix. A new memory block will be allocated for the array.
Return
Complex[]

An array containing the matrix's elements.

string ToString(string format, IFormatProvider formatProvider)

Returns a string that summarizes this matrix. The maximum number of cells can be configured in the Control class. The format string is ignored.

string ToString()

Returns a string that summarizes this matrix. The maximum number of cells can be configured in the Control class.

string ToString(int maxRows, int maxColumns, string format, IFormatProvider formatProvider)

Returns a string that summarizes this matrix.

string ToTypeString()

Returns a string that describes the type, dimensions and shape of this matrix.

Complex Trace()

Computes the trace of this matrix.
Return
Complex

The trace of this matrix

Matrix<T> Transpose()

Returns the transpose of this matrix.
Return
Matrix<T>

The transpose of this matrix.

void Transpose(Matrix<T> result)

Puts the transpose of this matrix into the result matrix.

void TransposeAndMultiply(Matrix<T> other, Matrix<T> result)

Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
Parameters
Matrix<T> other

The matrix to multiply with.

Matrix<T> result

The result of the multiplication.

Matrix<T> TransposeAndMultiply(Matrix<T> other)

Multiplies this matrix with transpose of another matrix and returns the result.
Parameters
Matrix<T> other

The matrix to multiply with.

Return
Matrix<T>

The result of the multiplication.

void TransposeThisAndMultiply(Matrix<T> other, Matrix<T> result)

Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
Parameters
Matrix<T> other

The matrix to multiply with.

Matrix<T> result

The result of the multiplication.

void TransposeThisAndMultiply(Vector<T> rightSide, Vector<T> result)

Multiplies the transpose of this matrix with a vector and places the results into the result vector.
Parameters
Vector<T> rightSide

The vector to multiply with.

Vector<T> result

The result of the multiplication.

Vector<T> TransposeThisAndMultiply(Vector<T> rightSide)

Multiplies the transpose of this matrix by a vector and returns the result.
Parameters
Vector<T> rightSide

The vector to multiply with.

Return
Vector<T>

The result of the multiplication.

Matrix<T> TransposeThisAndMultiply(Matrix<T> other)

Multiplies the transpose of this matrix with another matrix and returns the result.
Parameters
Matrix<T> other

The matrix to multiply with.

Return
Matrix<T>

The result of the multiplication.

IterationStatus TrySolveIterative(Vector<T> input, Vector<T> result, IIterativeSolver<T> solver, Iterator<T> iterator, IPreconditioner<T> preconditioner)

Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
Parameters
Vector<T> input

The solution vector b.

Vector<T> result

The result vector x.

IIterativeSolver<T> solver

The iterative solver to use.

Iterator<T> iterator

The iterator to use to control when to stop iterating.

IPreconditioner<T> preconditioner

The preconditioner to use for approximations.

IterationStatus TrySolveIterative(Matrix<T> input, Matrix<T> result, IIterativeSolver<T> solver, Iterator<T> iterator, IPreconditioner<T> preconditioner)

Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
Parameters
Matrix<T> input

The solution matrix B.

Matrix<T> result

The result matrix X

IIterativeSolver<T> solver

The iterative solver to use.

Iterator<T> iterator

The iterator to use to control when to stop iterating.

IPreconditioner<T> preconditioner

The preconditioner to use for approximations.

IterationStatus TrySolveIterative(Vector<T> input, Vector<T> result, IIterativeSolver<T> solver, IPreconditioner<T> preconditioner, IIterationStopCriterion`1[] stopCriteria)

IterationStatus TrySolveIterative(Matrix<T> input, Matrix<T> result, IIterativeSolver<T> solver, IPreconditioner<T> preconditioner, IIterationStopCriterion`1[] stopCriteria)

IterationStatus TrySolveIterative(Vector<T> input, Vector<T> result, IIterativeSolver<T> solver, IIterationStopCriterion`1[] stopCriteria)

IterationStatus TrySolveIterative(Matrix<T> input, Matrix<T> result, IIterativeSolver<T> solver, IIterationStopCriterion`1[] stopCriteria)

Matrix<T> UpperTriangle()

Returns a new matrix containing the upper triangle of this matrix.
Return
Matrix<T>

The upper triangle of this matrix.

void UpperTriangle(Matrix<T> result)

Puts the upper triangle of this matrix into the result matrix.
Parameters
Matrix<T> result

Where to store the lower triangle.

Public Properties

int ColumnCount get;

Complex Item get; set;

int RowCount get;

MatrixStorage<T> Storage get;

Complex[] Values get;

Gets the matrix's data.
Value: