2
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. 然而,invminvtGeneric.Matrix<float>。为什么要进行这种转换?

4

1 回答 1

4

很快,因为 和 的DenseMatrix.Inverse()签名DenseMatrix.Transpose()

DenseMatrix.Inverse: unit -> Matrix<float>
DenseMatrix.Transpose: unit -> Matrix<float>

Matrix是一个抽象类,为任何矩阵提供通用实现InverseTranspose方法。具体派生的子类DenseMatrix,SparseMatrixDiagonalMatrix只是根据每个用例优化存储矩阵数据的方式。

你可能会上当

let m2 = new DenseMatrix(2, 2, v) :> Matrix<float>

并在矩阵创建后使用泛型类型进行操作。您可能需要查看相关主题Matrix vs DenseMatrix以获取更多详细信息。

于 2013-11-12T19:33:37.383 回答