Python 非线性方程组

Python 非线性方程组,python,julia,sympy,equation-solving,julia-jump,Python,Julia,Sympy,Equation Solving,Julia Jump,我试图在Julia中解决大量(50个)非线性联立方程组。目前,我只是尝试使用2个方程来实现这一点,以获得正确的语法等等。然而,我尝试了各种软件包/工具-NLsolve、SymPy中的nsolve和JuMP中的NLOpt(我忽略了目标函数,只输入等式约束)-运气不好。我想我应该把注意力集中在一个方面。如果您能就软件包的选择和可能的代码提供建议,我将不胜感激 以下是我在NLsolve中尝试的方法(在mcpsolve模式下使用它,以便我可以对我正在为-x[1]和x[2]求解的变量施加约束,这两个变量是

我试图在Julia中解决大量(50个)非线性联立方程组。目前,我只是尝试使用2个方程来实现这一点,以获得正确的语法等等。然而,我尝试了各种软件包/工具-NLsolve、SymPy中的nsolve和JuMP中的NLOpt(我忽略了目标函数,只输入等式约束)-运气不好。我想我应该把注意力集中在一个方面。如果您能就软件包的选择和可能的代码提供建议,我将不胜感激

以下是我在NLsolve中尝试的方法(在mcpsolve模式下使用它,以便我可以对我正在为-x[1]和x[2]求解的变量施加约束,这两个变量是失业率,因此在0和1之间有界):

我收到以下错误消息:


欢迎提出任何建议!我知道这些公式非常难看,所以如果有任何进一步的简化(我已经尝试过!),请告诉我是否有用。

我以为您给出的初始条件超出了边界范围,因为我尝试了
mcpsolve(f!,[0.0,0.0],[0.0,0.0],[0.3,0.3])

不过,我也尝试过其他组合:

mcpsolve(f!,[0.4,0.4],[0.0,0.0],[0.3,0.3])

mcpsolve(f!,[0.4,0.4],[0.3,0.3],[1.0,1.0])

mcpsolve(f!,[0.6,0.6],[1.0,1.0],[0.3,0.3])

您在测试中检查过这些值吗?

此处打开的问题:
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[1])/x[1]))))
    ps2= wbar + (kappa*(1-beta*(1-sigma*((1-x[2])/x[2]))))

    prod1=prod[1]
    prod2=prod[50]
    y1=(1-x[1])*l1
    y2=(1-x[2])*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[1]=pd1-ps1
    fvec[2]=pd2-ps2
end

mcpsolve(f!,[0.0,0.0],[1.0,1.0], [ 0.3, 0.3])