Kuhn-tucker conditions matlab
84 views (last 30 days)
Show older comments
I am solving a maximisation problem subject the the restriction that xi<=delta*TR(x1,x2) for i=1,2. There are two lagrangians associated with my problem:
L1=U1(x1,x2)+lambda1*(delta*TR(x1,x2)-x1)
L2=U2(x1,x2)+lambda2*(delta*TR(x1,x2)-x2)
I need to solve for the vector (x1,x2)
I am investigating two cases:
Case 1: The restriction is binding in both lagrangians i.e. xi=delta*TR(x1,x2) for i=1,2. The Kuhn-Tucker conditions for this require that lambda1>0 and lambda2>0. Thus, I have four FOCS's:
(i) dL1/dx1
(ii) dL1/dlambda1
(iii) dL2/dx2
(iv) dL2/dlambda2
I used FSOLVE with a system of 4 equations and got the result that I was looking for. So this case works fine.
Case (ii)
The restriction xi<=delta*TR(x1,x2) is only binding in the first lagrangian (L1). The Kuhn-Tucker conditions for this require that lambda1>0 and lambda2=0.
My question is: How do I incorporate lambda1>0 and lambda2=0 into my system of equations? Do i need to drop one of the first order conditions? Or do I need to drop the lambda2(delta*TR(x1,x2)-x2) term in the second lagrangian?
I realise that this is more of a maths question than Matlab question, but I would greatly appreciate any help!
Thanks, Kai
0 Comments
Accepted Answer
Matt J
on 20 Apr 2014
Edited: Matt J
on 20 Apr 2014
You can use LSQNONLIN, which is very similar to FSOLVE, but allows you to incorporate bounds like lambda1>=0.
On the other hand, even if this is homework, if you are allowed to use solvers like FSOLVE, I wonder why you wouldn't be allowed to just use FMINCON to solve the whole problem for you, instead of manually attacking the KKT conditions.
2 Comments
More Answers (0)
See Also
Categories
Find more on Systems of Nonlinear Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!