具有双数的范围



>我在处理范围内的双数时遇到问题。具体说来:

using ForwardDiff: Dual
t = Dual.((0.0,10.0),0)
(t[1]:1/60:t[2])[end]

问题似乎是[end]使用last然后计算步骤数,因此某些东西试图转换为Integer并失败。有谁知道解决这个问题的方法?

你可以这样修复它:

using ForwardDiff: Dual, value
t = Dual.((0.0,10.0),0)
Base.Integer(x::Dual) = Integer(value(x))
(t[1]:1/60:t[2])[end]

但可能 DualNumbers.jl 维护者应该决定这是否是一般的预期行为。我会说是的,因为Dual不是Integer的子类型。此外,它不应该破坏任何东西,因为之前没有定义方法Integer(::Dual)因此不能在任何地方使用。

相关内容

  • 没有找到相关文章

最新更新