I'm trying to solve a large number (50) of non-linear simultaneous equations in Julia. For the moment I'm just trying to make this work with 2 equations to get the syntax right etc. However, I've tried a variety of packages/tools - NLsolve, nsolve in SymPy and NLOpt in JuMP (where I ignore the objective function and just enter equality constraints)- without much luck. I guess I should probably focus on making it work in one. I'd appreciate any advice on choice of packages and if possible code.
Here's how I tried to do it in NLsolve (using it in mcpsolve mode so I can impose constraints on the variables I am solving for - x and x - which are unemployment rates and so bounded between zero and 1) :
using Distributions using Devectorize using Distances using StatsBase using NumericExtensions using NLsolve beta = 0.95 xmin= 0.73 xmax = xmin+1 sigma = 0.023 eta = 0.3 delta = 0.01 gamma=0.5 kappa = 1 psi=0.5 ns=50 prod=linspace(xmin,xmax,ns) l1=0.7 l2=0.3 wbar=1 r=((1/beta)-1-1e-6 +delta) ## Test code function f!(x, fvec) ps1= wbar + (kappa*(1-beta*(1-sigma*((1-x)/x)))) ps2= wbar + (kappa*(1-beta*(1-sigma*((1-x)/x)))) prod1=prod prod2=prod y1=(1-x)*l1 y2=(1-x)*l2 M=(((prod1*y1)^((psi-1)/psi))+((prod2*y2)^((psi-1)/psi))) K=((r/eta)^(1/(eta-1)))*M pd1=(1-eta)*(K^eta)*(M^(-eta))*prod1 pd2=(1-eta)*(K^eta)*(M^(-eta))*prod2 fvec=pd1-ps1 fvec=pd2-ps2 end mcpsolve(f!,[0.0,0.0],[1.0,1.0], [ 0.3, 0.3])
Any suggestions very welcome! I appreciate the formulas are pretty ugly so let me know if any further simplifications helpful (I have tried!)