使用 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|]
虽然我不知道答案是否正确。有关类似示例,请参阅 。
我正在尝试在我编写的一个简单测试用例中使用 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|]
虽然我不知道答案是否正确。有关类似示例,请参阅