So, I have a code in matlab and I am trying to translate it to Julia.
Im not being able to run this NLSolve in Julia. It returns me a domain error… probably because there is x^eta, where eta = 0.5.
But what makes no sense for me is that it runs in matlab. I have even tried to use ’ fzero ’ in Julia, and it still does not work: returns domain problem (but with different error outcome).
I would not say there is an error in my function (PrivateF) itself because when I run only this function with arbitrary values, both Julia and Matlab returns the same value. For example, if x=10, both matlab and julia results are equal.
Therefore, I think the problem is in the optimization part of NLsolve / fzero (roots package).
The code is just below, both for matlab and Julia. If anyoen could help me, I would be extremaly grateful.
#Parameters
beta=0.5
r=0.0040;
tauu=0.0019;
kappa=14.1425;
zeta=1;
eta=0.5;
b=0.7395;
y=1.741;
s_p=0.007382165;
#%% Matlab
function F = PrivateF(x, kappa , zeta , eta , beta , y , b , s_p, rr, tauu)
F = [kappa *x(1)^(1-eta ) /zeta - (1-beta )*(y -b )/(rr+tauu+s_p+beta *zeta *x(1)^eta )];
#
#% Solving system in Matlab
[theta ,fval,exitflag] = fsolve(@(x) PrivateF(x,kappa , zeta , eta , beta , y , b , s_p, r, tauu), x0 ,optimset('Display','off', 'TolFun',1.0e-009));
# end matlab code
### Julia
function PrivateF(x, kappa , zeta , eta , beta , y , b , s_p, rr, tauu)
F = [kappa *(x[1])^(1-eta ) / zeta - (1-beta ) * (y -b )/(rr+tauu+s_p+beta *zeta *x[1]^eta )];
return F
end
#Solving system
x0 = [10.0]; #starting guess
f_aux = (x -> PrivateF(x, kappa , zeta , eta , beta , y , b , s_p, r, tauu))
theta = nlsolve(f_aux, x0).zero
#even tried with fzero
theta = fzero(f_aux, x0[1])
Thank you very much!