我正试图在我写的一个简单测试用例中使用MathNet.Numberics的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|]
不过,我不知道答案是否正确。请参阅此SO问题以获取类似的示例。