2010-11-24 3 views
1

ПустьКак получить минимум Sqrt [3x + 1] + Sqrt [3y + 1] + Sqrt [3z + 1]?

f[x_,y_,z_] := Sqrt[3x+1]+Sqrt[3y+1]+Sqrt[3z+1] 

Я хочу, чтобы получить минимум е при х> = 0 & & у> = 0 & & г> = 0 & & х + у + г == 1 с помощью Mathematica.

PS: Я знаю, как получить минимум методом математического:

Since 0<=x<=1,0<=y<=1,0<=z<=1, we have 
0<=x^2<=x,0<=y^2<=y,0<=z^2<=z. 
Hence, 
3a+1 >= a^2 + 2a + 1 = (a+1)^2, where a in {x,y,z}. 
Consequently, 
f[x,y,z] >= x+1+y+1+z+1 = 4, 
Where the equality holds if and only if (x==0&&y==0||z==1)||... 

PS2: Я ожидал, что следующий код будет работать, но это did't.

Minimize[{f[x,y,z],x>=0&&y>=0&&z>=0&&x+y+z==1},{x,y,z}] 

На самом деле, как и Саймон отмечает, это работает ... Время работы больше, чем я ожидал, и я закрыл его, прежде чем Mahtematica показать мне результат.

+1

да? только два жизнеспособных варианта: x = y = z = (1/3), f (x, y, z) = 3 * sqrt (2) .... или x = y = 0, z = 1 приводит к f (x, y, z) = 1 + 1 + sqrt (4) = 1 + 1 + 2 = 4 – 2010-11-25 00:06:26

+0

@jon_darkstar минимум, а не максимум – Eastsun 2010-11-25 00:08:46

+0

Да, я поймал, что сразу после этого = P. но средние варианты даже стоит изучить? – 2010-11-25 00:09:46

ответ

4

Это то, что вы хотите?

In[1]:= f[x_,y_,z_]:=Sqrt[3x+1]+Sqrt[3y+1]+Sqrt[3z+1] 
In[2]:= Minimize[{f[x,y,z],x>=0,y>=0,z>=0,x+y+z==1},{x,y,z}] 
Out[2]= {4,{x->1,y->0,z->0}} 

Обратите внимание, что документация говорит «Даже если тот же минимум достигается в нескольких точках, только один возвращается», так что вы должны ввести перестановку симметрию задачи самостоятельно.


PS Вы можете превратить это в задаче множитель Лагранжа

In[3]:= Thread[D[f[x,y,z] - \[Lambda](x+y+z-1), {{x,y,z,\[Lambda]}}]==0]; 
     Reduce[Join[%,{x>=0,y>=0,z>=0}],{x,y,z,\[Lambda]},Reals] 
     {f[x,y,z],D[f[x, y, z], {{x, y, z}, 2}]}/.ToRules[%] 
Out[4]= x==1/3&&y==1/3&&z==1/3&&\[Lambda]==3/(2 Sqrt[2]) 
Out[5]= {3 Sqrt[2],{{-(9/(8 Sqrt[2])),0,0},{0,-(9/(8 Sqrt[2])),0},{0,0,-(9/(8 Sqrt[2]))}}} 

и увидеть, что только стационарная точка максимума при х = у = г = 1/3. Таким образом, минимум должен лежать на границе. Затем вы можете использовать аналогичный код, но ограничиваться границей, чтобы в конечном итоге найти правильный результат.

1

Вы говорите, что вас не интересует «математический метод» (я не уверен, что вы имеете в виду, когда говорите об этом, но это заставляет меня думать о методах минимизации с множителями Лагранжа). Если это правильно, почему вы привносите Mathematica в дискуссию? Как вы думаете, что он будет использовать?

Должен предположить, что вы имеете в виду численные компьютерные решения. Я бы начал с линейного программирования и симплекс-метода.

2

Просто для удовольствия, это сюжет решения данного Саймона:

f[x_, y_, z_] := Sqrt[3 x + 1] + Sqrt[3 y + 1] + Sqrt[3 z + 1] 
g1 = ContourPlot3D[f[x, y, z] == 4, {x, 0, 1}, {y, 0, 1}, {z, 0, 1}, AxesLabel -> {x,y,z}, MeshFunctions -> {#3 &}, ContourStyle -> {Blue, Opacity[0.5]}]; 
g2 = ContourPlot3D[ x + y + z == 1, {x, 0, 1}, {y, 0, 1}, {z, 0, 1}, AxesLabel -> {x,y,z}, MeshFunctions -> {#2 &}, ContourStyle -> {Green, Opacity[0.5]}]; 
Show[g1, g2, Graphics3D[{PointSize[0.05], Red, Point[{1, 0, 0}]}], ViewPoint -> {1.1`, -2.4`, 1.7`}] 

alt text

Смежные вопросы