Ask Your Question
1

Optimization under constraint

asked 2019-09-12 19:05:30 +0100

Cyrille gravatar image

updated 2019-09-12 21:41:24 +0100

tmonteil gravatar image

Here is an incredible powerfull solution of a constrained optimization that Mathematica cannot solve without help

var('A, x, y, l, alpha, beta, R, p_x, p_y');
U= A*x^(alpha)*y^(beta);
show(U)
D = p_x*x + p_y*y;
show(D)
show(U)
solve(D==R, y)
L = U-l*(D-R)
show(L)
L_x= L.diff(x)
show(L_x)
L_y= L.diff(y)
show(L_y)
L_lambda= L.diff(l)
show(L_l)
z=solve([L_x==0, L_y==0, L_l==0,], x, y, l)

Now I have two questions in one :

  1. I would use greek lambda in place of l ?

  2. I would retreive the values of x and y to put it in U ? I have tried some solutions as z[0 : 1 :...] but it doesnt work ? How can I do it ?

edit retag flag offensive close merge delete

Comments

I bet L_l (which is not defined) stands for L_lambda.

tmonteil gravatar imagetmonteil ( 2019-09-12 21:48:22 +0100 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2019-09-12 21:47:25 +0100

tmonteil gravatar image

updated 2019-09-12 21:51:23 +0100

Regarding 1., it is not possible to use unicode λ in variables names, since Sage relies on Python 2, which does not allow it, so you have to wait the migration of Sage to Python 3 for that.

Regarding 2, you can use the solution_dict=True of solve :

sage: z=solve([L_x==0, L_y==0, L_l==0,], x, y, l, solution_dict=True)
sage: z
[{l: (A*alpha + A*beta)*(R*alpha/((alpha + beta)*p_x))^alpha*(R*beta/((alpha + beta)*p_y))^beta/R,
  y: R*beta/((alpha + beta)*p_y),
  x: R*alpha/((alpha + beta)*p_x)}]

sage: z[0]
{l: (A*alpha + A*beta)*(R*alpha/((alpha + beta)*p_x))^alpha*(R*beta/((alpha + beta)*p_y))^beta/R,
 y: R*beta/((alpha + beta)*p_y),
 x: R*alpha/((alpha + beta)*p_x)}

sage: z[0][x]
R*alpha/((alpha + beta)*p_x)
sage: z[0][y]
R*beta/((alpha + beta)*p_y)

You can pass a dictionary for substituting:

sage: U.subs(z[0])
A*(R*alpha/((alpha + beta)*p_x))^alpha*(R*beta/((alpha + beta)*p_y))^beta
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2019-09-12 19:05:30 +0100

Seen: 502 times

Last updated: Sep 12 '19