带双数的范围

时间:2019-02-10 09:47:22

标签: julia automatic-differentiation

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

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

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

1 个答案:

答案 0 :(得分:3)

您可以这样解决它:

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),因此无法在任何地方使用。