Tôi đang cố giải quyết một số lớn (50) phương trình đồng thời phi tuyến tính trong Julia. Hiện tại tôi chỉ đang cố gắng thực hiện công việc này với 2 phương trình để có được cú pháp đúng. Tuy nhiên, tôi đã thử nhiều gói/công cụ khác nhau - NLsolve, nsolve trong SymPy và NLOpt trong JuMP (nơi tôi bỏ qua mục tiêu và chỉ cần nhập các ràng buộc bình đẳng) - không có nhiều may mắn. Tôi đoán tôi có lẽ nên tập trung vào làm cho nó hoạt động trong một. Tôi đánh giá cao bất kỳ lời khuyên nào về lựa chọn gói và nếu có thể mã. Đây là cách tôi đã cố gắng làm điều đó trong NLsolve (sử dụng nó trong chế độ mcpsolve vì vậy tôi có thể áp đặt các ràng buộc về các biến mà tôi đang giải - x [1] và x [2] - đó là tỷ lệ thất nghiệp và bị ràng buộc giữa zero và 1):Hệ phương trình phi tuyến tính của phương trình Julia
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])
tôi nhận được thông báo lỗi này:
Bất kỳ gợi ý là rất đáng hoan nghênh! Tôi đánh giá cao các công thức là khá xấu xí vì vậy hãy cho tôi biết nếu có bất kỳ đơn giản hơn nữa hữu ích (tôi đã cố gắng!).
Sự cố được mở tại đây: https://github.com/EconForge/NLsolve.jl/issues/19 –