2016-03-21 3 views
1

Dies ist eine sehr einfache Frage zu maximieren, fand aber überraschenderweise sehr wenig über sie online ...Maple: Geben Sie Variable, über die

Ich möchte die minimizer einer Funktion in Ahorn zu finden, bin ich nicht sicher, wie um anzuzeigen, welche Variable von Interesse ist? Nehmen wir einen sehr einfachen Fall, ich möchte den symbolischen Minimierer eines quadratischen Ausdrucks in x mit den Parametern a, b und c.

Ohne etwas zu spezifizieren, minimiert es über alle Variablen, a, b, c und x.

f4 := a+b*x+c*x^2 
minimize(f4, location) 

Ich habe versucht, die Variable in der Funktion zu spezifizieren, hat nicht funktioniert entweder:

f5 :=(x) ->a+b*x+c*x^2 
minimize(f5, location) 

Wie soll ich das tun? Und wie würde ich tun, wenn ich über zwei Variablen, x und y, wollte?

fxy := a+b*x+c*x^2 + d*y^2 +e*y 

Antwort

2
f4 := a+b*x+c*x^2: 

extrema(f4, {}, x); 

          /  2\ 
           |4 a c - b | 
          < ---------- > 
           | 4 c | 
           \  /

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

extrema(fxy, {}, {x,y}); 

        /   2  2\ 
         |4 a c d - b d - c e | 
         < --------------------- > 
         |  4 c d  | 
         \     /

Die Art der Extrema hängt von den Werten der Parameter abhängen. Für Ihr erstes Beispiel (quadratisch in x) hängt es vom Signum von c ab.

Der Befehl extrema akzeptiert ein optionales viertes Argument, z. B. einen nicht zugewiesenen Namen (oder einen unbenannten Namen), dem die Kandidatenlösungspunkte zugewiesen sind (als Nebeneffekt seiner Berechnung). ZB

restart; 

f4 := a+b*x+c*x^2: 

extrema(f4, {}, x, 'cand'); 

               2 
             4 a c - b 
            {----------} 
             4 c 

cand; 

              b 
            {{x = - ---}} 
              2 c 

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

extrema(fxy, {}, {x,y}, 'cand'); 

              2  2 
           4 a c d - b d - c e 
           {---------------------} 
             4 c d 

cand; 

             b   e 
           {{x = - ---, y = - ---}} 
             2 c  2 d 

Alternativ können Sie die partiellen Derivate einrichten und manuell lösen. Beachten Sie, dass für diese beiden Beispiele jeweils nur ein Ergebnis (solve) zurückgegeben wird.

restart: 

f4 := a+b*x+c*x^2: 

solve({diff(f4,x)},{x}); 

              b 
            {x = - ---} 
              2 c 

normal(eval(f4,%)); 

               2 
             4 a c - b 
             ---------- 
             4 c 

fxy := a+b*x+c*x^2 + d*y^2 +e*y: 

solve({diff(fxy,x),diff(fxy,y)},{x,y}); 

             b   e 
           {x = - ---, y = - ---} 
             2 c  2 d 

normal(eval(fxy,%)); 

              2  2 
           4 a c d - b d - c e 
           --------------------- 
             4 c d 

Der Code für den Befehl extrema kann, betrachtet werden, indem der Befehl showstat(extrema) ausgibt. Sie können sehen, wie es für den Fall von solve mehrere Ergebnisse zurückgibt.

+0

Oh danke! Eigentlich war ich daran interessiert, den arg max/maximizer selbst zu bekommen, weshalb ich den location Parameter benutzt habe. Wie würde ich mit Extrema() umgehen? Vielen Dank! – Matifou

+0

Dies geschieht mit dem optionalen vierten Argument des Befehls 'extrema'. Ich habe Beispiele dafür hinzugefügt. – acer

+0

ausgezeichnet! Vielen Dank!! – Matifou