我在处理范围内的对偶数字时遇到问题。具体来说:
using ForwardDiff: Dual
t = Dual.((0.0,10.0),0)
(t[1]:1/60:t[2])[end]
问题似乎是[end]
使用last
来计算步数,因此有些东西试图转换为Integer
并失败了。有人知道解决这个问题的方法吗?
答案 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)
,因此无法在任何地方使用。