let v = [| 5.0; 2.0; 3.0; 11.0 |]
let m2 = new DenseMatrix(2, 2, v)
let invm = m2.Inverse()
let invt = m2.Transpose()
Здесь m2
- это Matrix
. Однако invm
и invt
равны Generic.Matrix<float>
. Почему это преобразование?
let v = [| 5.0; 2.0; 3.0; 11.0 |]
let m2 = new DenseMatrix(2, 2, v)
let invm = m2.Inverse()
let invt = m2.Transpose()
Здесь m2
- это Matrix
. Однако invm
и invt
равны Generic.Matrix<float>
. Почему это преобразование?
Вкратце, поскольку подписи DenseMatrix.Inverse()
и DenseMatrix.Transpose()
DenseMatrix.Inverse: unit -> Matrix<float>
DenseMatrix.Transpose: unit -> Matrix<float>
Matrix
- абстрактный класс, который обеспечивает общую реализацию методов Inverse
и Transpose
для любой матрицы. Конкретные производные подклассы DenseMatrix
, SparseMatrix
и DiagonalMatrix
просто оптимизируют способ хранения матричных данных в зависимости от каждого варианта использования.
Вы можете поднять
let m2 = new DenseMatrix(2, 2, v) :> Matrix<float>
и манипулировать универсальными типами после создания матрицы. Вы можете проверить связанную тему Матрица против DenseMatrix для получения дополнительных сведений.
matrix [[ 5.0; 3.0]; [2.0; 11.0]]
), либо одну из фабричных функций в модуле DenseMatrix
расширений F #, матрица автоматически будет универсального типа.
- person Christoph Rüegg; 14.12.2013