Optimization 朱莉娅:NLsolve每次运行时提供不同的解决方案,有时返回NaN?

Optimization 朱莉娅:NLsolve每次运行时提供不同的解决方案,有时返回NaN?,optimization,julia,solver,Optimization,Julia,Solver,我正试图复制一些matlab代码,作为我的硕士论文的一部分,这篇论文来自于Zhu,H.(2014)。暗池损害价格发现吗 我有一个由两个方程组成的系统,我用Julia中的“NLsolve”软件包求解。 问题在于,每当我运行代码时,NLsolve都会为f[1]返回不同的解决方案,有时它会返回一个“NaN” 我不确定这是什么原因造成的 以下是代码摘录: using NLsolve; function G(x) min(1,x/C) end; function Ginv(x) min

我正试图复制一些matlab代码,作为我的硕士论文的一部分,这篇论文来自于Zhu,H.(2014)。暗池损害价格发现吗

我有一个由两个方程组成的系统,我用Julia中的“NLsolve”软件包求解。 问题在于,每当我运行代码时,NLsolve都会为f[1]返回不同的解决方案,有时它会返回一个“NaN”

我不确定这是什么原因造成的

以下是代码摘录:

using NLsolve;

function G(x)
    min(1,x/C)
end;

function Ginv(x)
    min(C,x*C) 
end;

function F(x)
    1-exp(-x/2)
end;

μᵤ = 60;
σᵤ = sqrt(μᵤ);
a = [0 0];
b = [3*μᵤ 3*μᵤ];
r_bar = 0.91;
μ_bar  = 20;
C = 2;
x₀ = [μ_bar, 1.0];

function f_temp!(x,f)
   f[1] = μ_bar*F((1-G(1))*μᵤ*x[2]/(x[1]+(1-G(1))μᵤ))-x[1]
   f[2] = 1-x[1]/(x[1]+(1-G(1))μᵤ)-r_bar
end;

x = nlsolve(f_temp!, x₀)

致以最良好的祝愿,
Rasmus

您在
f_temp!中的参数顺序错误。使用:

function f_temp!(f, x)
   f[1] = μ_bar*F((1-0.5)*μᵤ*x[2]/(x[1]+(1-0.5)μᵤ))-x[1]
   f[2] = 1-x[1]/(x[1]+(1-0.5)μᵤ)-r_bar
end;

一切都会好起来。

您在
f\u temp!中的参数顺序错误。使用:

function f_temp!(f, x)
   f[1] = μ_bar*F((1-0.5)*μᵤ*x[2]/(x[1]+(1-0.5)μᵤ))-x[1]
   f[2] = 1-x[1]/(x[1]+(1-0.5)μᵤ)-r_bar
end;

一切都会好起来。

谢谢你的帮助。谢谢你的帮助。