LoadError: MethodError: no method matching zeros(::Array{Float64,1})


#1

我是初学者,最近想利用Julia实现一个微分方程求解的程序,尝试复现https://www.juliabloggers.com/runge-kutta-methods/中的源代码
但粘贴初始代码后,运行提示ERROR: LoadError: MethodError: no method matching zeros(::Array{Float64,1}),请问这种情况应该如何处理?


#2

zeros(xxx) => zeros(size(xxx))


#3

多谢了!可能是Julia版本升级的问题
再次感谢!


#4

直接 zero 即可,例如

julia> A = rand(2, 2)
2×2 Array{Float64,2}:
 0.865974  0.342402
 0.776708  0.335041

julia> zero(A)
2×2 Array{Float64,2}:
 0.0  0.0
 0.0  0.0

原来的 zeros 有歧义,所以后来改成了更加统一的 zero,任何Julia的数值对象都有这个方法,例如普通的数字

julia> a = 1
1

julia> zero(a)
0

AbstractArray的子类型,这等价于

fill!(similar(A), zero(eltype(A)))