Julia:NLsolve 提供不同的解决方案,每个 运行 有时 returns NaN?

Julia: NLsolve providing different solution each run and sometimes returns NaN?

我正在尝试从论文 Zhu, H. (2014) 中复制一些 matlab 代码作为我硕士论文的一部分。暗池会损害价格发现吗?

我有两个方程组,我使用 Julia 中的“NLsolve”包求解。 问题是 NLsolve returns f[1] 的不同解决方案每次我 运行 代码有时它 returns 一个“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₀)

此致, 拉斯穆斯

您在 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;

一切都会好起来的。