Remove["Global`*"]

(* Volumes des Quaders *)

V = a b c

(* die Nebenbedingung: Oberfläche soll 2F sein *)

NB =  2F == 2a b + 2a c + 2b c

(* diese Gleichung wird nach  c   aufgelöst *)

ls1=Solve[NB, c]

(* eingesetzt in V ergibt sich die Zielfunktion; das Einsetzen erfolgt hier durch die Anwendnung der vorstehenden REGEL *)

f[a_,b_]= V/.ls1[[1]]

(* Bemerkung: 
  aus geometrischen Gründen müssen a,b,c positiv sein. Damit c > 0, muss  a b < F sein, s. obige Regel ls1: b < F/a. Der Definitionsbereich von  f  muss also entsprechend eingeschränkt werden. Er wird im Folgenden geplottet für einen willkürlichen Wert von F: F = 27, s.a.u. *)

G=ImplicitRegion[a> 0 && b > 0 && b < 27/a,{a,b}]
RegionPlot[G,PlotRange->All]

(* die Zielfunktion  f  soll maximal sein: dann muss der Gradient Null sein *)

gl1=D[f[a,b],a]==0

gl2=D[f[a,b],b]==0

(* Lösen des Gleichungssystems *)

ls2=Solve[{gl1,gl2},{a,b}]

(* nur die positive Lösung kommt in Betracht; Abspeichern der Werte *)

aL = a/.ls2[[2]]

bL = b/.ls2[[2]]

(* bei  c   muss zuerst noch obige Regel ls1 angewendet werden *)

cL= c/.ls1[[1]]/.ls2[[2]]

(* das zugehörige Volumen: *)

V= aL bL cL

(* oder über: *)

f[aL,bL]

(* Es bleibt zu klären, von welchem Typ der soeben ermittelte kritische Punkt ist; also: ist es ein Maximum? *)

(* 1. Weg:

 Will man die Natur des kritischen Punktes ohne Rechnung klären, muss man sehr sorgfältig argumentieren. Wichtig sind hierbei die folgenden Fakten:
(a) Es gibt nur EINEN kritischen Punkt. 
(b) Am Rande des Definitionsbereichs G ist der Funktionswert 0.
(c) Im kritischen Punkt ist der Funktionswert f[aL,bL] positiv. 

Angenommen, es wäre ein Minimum. Ausgehend von diesem Minimum muss dann der Funktionswert in alle Richtungen größer werden als f[aL,bL] (oder mindestens gleich bleiben). Da f[aL,bL]> 0, müsste zwischen diesem Minimum und dem kleineren Randminimum 0 mindestens ein relatives Maximum liegen. Es müsste also mindestens zwei kritische Punkte geben. Wir haben aber nur einen gefunden. Es kann also kein Minimum sein.

Angenommen, es wäre ein Sattelpunkt. Dann gäbe es mindestens eine Richtung, in der der Funktionswert größer wird als f[aL,bL]. Da f[aL,bL]> 0 und am Rand des Definitionsbereichs der Funktionswert = 0 ist, müsste es mindestens noch ein relatives Maximum dazwischen geben.Es müsste also mindestens zwei kritische Punkte geben. Wir haben aber nur einen gefunden. Es kann also kein Sattelpunkt sein. *) 


(* 2.Weg: grafische Tests mit einem speziellen Wert für F*)

F = 27 (* dann liegt die Lösung bei a=b=c=3 *)

Plot3D[f[a,b],{a,0,5},{b,0,5}]

ParametricPlot3D[{a,b,f[a,b]},{a,b}∈ G]

Clear[F]

(* 3. Weg: der eingebaute Befehl Maximize*)

f[a,b]

Maximize[f[a,b],{a,b}]

(* man muss die Einschränkung des Definitionsbereichs berücksichtigen sowie F > 0: *)

NB2 = {a> 0,b>0,b<F/a,F>0}

Maximize[{f[a,b],NB2},{a,b}]

(* das allgemeine Ergebnis ist etwas unübersichtlich, also F = 27: *)

F = 27;

Maximize[{f[a,b],NB2},{a,b}]

(* andere Syntax für die Berücksichtigung der Einschränkung des Definitionsbereichs: *)

Maximize[{f[a,b]},{a,b} ∈ G]

(* man kann auch das Volumen und die urprüngliche Nebenbedingung NB nehmen: *)

V = a b c

NB3 = {NB,a>0,b>0,c>0}

Maximize[{V,NB3},{a,b,c}]

Clear[F]

(* 4. Weg: Hesse-Matrix *)

h11[a_,b_]=D[f[a,b],{a,2}]

h22[a_,b_]=D[f[a,b],{b,2}]

h12[a_,b_]=D[f[a,b],a,b]

h21[a_,b_]=D[f[a,b],b,a]

H[a_,b_] ={{h11[a,b],h12[a,b]},{h21[a,b],h22[a,b]}};

(* die Hesse-Matrix am kritischen Punkt: *)

H[aL,bL]

(* Eigenwerte am kritischen Punkt:  *)

Eigenvalues[H[aL,bL]]//N

(* alle Eigenwerte sind negativ: es ist ein Maximum; das ist bei dieser Funktion auch anschaulich nachvollziehbar, s. Graph *)

(* über die Determinante: *)

Det[H[aL,bL]]

(* die Determinante ist positiv  UND  
  die zweite partielle Ableitung nach a, also h11,    ist negativ: Maximum *)

(* Wichtig:
 
  Da am Rand der Funktionswert 0 ist, ist dieses einzige Max mit f(aL,bL) > 0 auch das absolute.

 *)