使用 BfgsSolver 时 F# 中的 Vector<double> 与 Double.Vector 错误

Vector<double> vs. Double.Vector error in F# when using BfgsSolver

我正在尝试在我编写的一个简单测试用例中使用 MathNet.Numerics 中用于 F# 的 BfgsSolve 方法,但我 运行 遇到了类型不匹配问题。

这是我的代码:

#r "nuget: MathNet.Numerics, 5.0.0-alpha08"
#r "nuget: MathNet.Numerics.FSharp, 5.0.0-alpha08"
open MathNet.Numerics.Optimization 
open MathNet.Numerics.LinearAlgebra


let vecGuess = vector [double 1.0]

let sineFuncTest (x : Vector<float>) = 
    let xval = x.[0]
    System.Math.Sin (xval ** 2.0  - 1.0 )

let sinegrad (x : Vector<float>) = 
    let xval = x.[0]
    vector [2.0 * xval * (System.Math.Cos (xval ** 2.0 - 1.0))]

let result = BfgsSolver.Solve (vecGuess, sineFuncTest ,sinegrad)

但是 BfgsSolve 函数不接受我的 vecGuess 变量。我得到的错误是:error FS0001: The type 'Vector<double>' is not compatible with the type 'Double.Vector'.

两者有什么区别?我尝试创建 Double.Vector 类型但失败了。

谢谢。

它将编译并且 运行 如果您这样猜测:

open MathNet.Numerics.LinearAlgebra.Double

let vecGuess = DenseVector [|1.0|]

虽然我不知道答案是否正确。有关类似示例,请参阅