我试图在Julia中解决大量的非线性联立方程组。目前,我只想用2个等式来处理语法问题,等等。但是,我尝试了各种包/工具——NLsolve、SymPy中的nsolve和JuMP中的NLOpt(在这里我忽略了目标函数,只输入了等式约束),但运气不太好。我想我应该集中精力让它合二为一。如果可能的话,如果可以的话,我会非常感谢你对软件包的选择和代码的建议。在
下面是我如何在NLsolve中实现这一点(在mcpsolve模式下使用它,这样我就可以对我正在求解的变量-x[1]和x[2]施加约束,这两个变量是失业率,在0和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[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])
我收到以下错误消息:
欢迎提出任何建议!我很感激这些公式很难看,所以如果有进一步的简化,请告诉我(我已经试过了!)。在
我以为你给出的初始条件超出了范围,因为我尝试了
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])
没有你在测试中检查过这些数值吗?在
相关问题 更多 >
编程相关推荐