错误:方法错误:没有方法匹配零(::Type{Any})

rod*_*igo 5 nonlinear-functions julia

我对朱莉娅很陌生。我正在尝试求解非线性方程组以找到向量 ( p_new)。下面是我的问题的简化版本。问题是我收到此消息:"ERROR: MethodError: no method matching zero(::, Type{Any})"。我不确定是否是因为初始条件没有明确定义。提前致谢!

p_1 = [ 1, 2, 2.3]
p_1b = [ 1, 2.2, 2.5]
mgc = [1, 1, 0.5]
theta = 0.8
OW1 = [0 1 0; 1 1 1; 0 0 1]
g = ones(3,1)
function pupdate!(p_1,mgc,theta,OW1)
    delt = p_1.*theta
    delt = 2.718281828459.^delt
    Sp1 = sum(delt)
    sp1 = delt./Sp1
    markup = p_1 .- mgc 
    sp1 .= markup
end
g0 = [p_1b, mgc, theta, OW1]
p_new = nlsolve(pupdate!, g0)   
Run Code Online (Sandbox Code Playgroud)

Kei*_*hWM 0

我遇到了同样的错误,问题是我的状态向量表示不正确。在你的情况下,我遇到了类似的情况。

julia> g0 = [p_1b, mgc, theta, OW1]
4-element Vector{Any}:
  [1.0, 2.2, 2.5]
  [1.0, 1.0, 0.5]
 0.8
  [0 1 0; 1 1 1; 0 0 1]
Run Code Online (Sandbox Code Playgroud)

修复方法非常简单:

julia > g0 = p_1b; mgc; theta; OW1[:]]
Run Code Online (Sandbox Code Playgroud)

返回一个向量。

我也花了一些时间来习惯 Julia 对,;和的使用 ,但一旦习惯了,就会感觉非常好。

FWIW:我建议采用 Julia 的多重调度,而不是创建函数pupdate!gupdate!而只创建一个具有两种方法的函数update!