+1 Daumen
475 Aufrufe

Guten Morgen allerseits,

Ich beschäftige mich heute mit der nichtlinearen Programmierung, genauer gesagt zwei Aufgaben dazu. Die eine glaube ich gelöst zu haben:

Man hat die Funktion

max(500 - 8x2 - 7y2)

und die Nebenbedingung

8x + 9y ≥ 400

Man soll dann die einzige mögliche Lösung bestimmen und die lokale Bedingung zweiter Ordnung.

Dazu nutze ich die Lagrange-Funktion (L):

(1)     L(x,y) = f(x,y) - λ(g(x)-c)

(2)     L(x,y) = (500 - 8x2 - 7y2) - λ(8x + 9y - 400)

ich leite dann nach x, y und λ ab:

(3)     L'x(x,y) = -16x - 8λ

(4)     L'y(x,y) = -14y - 9λ

(5)     L'λ(x,y) = 8x + 9y - 400

Ich setze dann (3) und (4) gleich (setze voraus, dass (3-5) jeweils = 0 sind) mittels nach 1*λ auflösen und erhalte dann

(6)     x = (14/18)*y

eingesetzt in L'λ (wobei ich 400 bereits auf die andere Seite addiert habe)

(7)     8 * ((14/18)y) + 9 y = 400

(8)     y ≈ 40.909

daraus ergibt sich dann

(9)     x ≈ 3.977

zur Kontrolle

(10)     8x + 9y = 400     =>     31.816 + 368.181 = 399.997 ≈ 400

Stimmt das soweit?

Für die lokale Bedingung zweiter Ordnung ist folgende Formel gegeben:

D(x,y,λ) = (f''11 - λ*g''11) * (g'2)2 - 2*(f''12 - λ*g''12) * g'1 * g'2 + (f''22 - λ*g''22) * (g'1)2

zur Erklärung der Notationen: f'' ist die zweite Ableitung, f''11 ist die zweite Ableitung vom ersten Term, also x, f''12 ist die zweite Ableitung, wobei zuerst (1. Ableitung) nach x und dann (2. Ableitung) nach y abgeleitet wird. Ist für euch wahrscheinlich so klar wie Quellwasser aber ich hatte eine Weile um das zu kapieren, vor allem weil so eine Kreuzableitung hier grds. 0 ergibt. Egal, ich rechne dann:

g'1 = 8     g'2 = 9     f''11 = -16     g''11 = 0     f''12 = 0     g''12 = 0     f''22 = -14     g''22 = 0

D(x,y,λ) = (-16 - λ * 0) * 92 - 2 * (0 - λ * 0) * 8 * 9 + (-14 - λ * 0) * 82

daraus erhalte ich

D(x,y,λ) = -2192

Stimmt das so?

Tausend Dank2 !

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

Ich habe das mal numerisch nachgerechnet, da WolframAlpha hier oft falsche Ergebnisse liefert:

Iterationsrechner Beispiel 50 angepasst ergibt:

http://www.gerdlamprecht.de/Roemisch_JAVA.htm#500-8*x*x-7*y*y@Na=0;b=41;@NaB=SuchMax('Fxy(x,y)',3,b,3,b,'(8*x+9*y)%3E=400',1e-9);@Ni%3E0@N0@N1@Na=@B1];b=@B2];c=Fxy(3.977,40.909);i=2;d=Fxy(4.494382022471910112,40.449438202247191011235);

Bild Mathematik

In Variable c habe ich noch Dein Punkt  gelegt um zu zeigen, dass f(x,y) dort sehr viel kleiner sind als f(21.87151656617 , 25.00309638563)

und es ist ja das Maximum gesucht!

Da man sich ja verrechnen kann hier noch die 3D-Fläche als Beweis:

Bild Mathematik

Die weißen (schneebedeckten) Bergspitzen liegen zw. 21 und 26 -> je weiter man sich entfernt, je tiefer kommt man...

Deine Randbedingung sorgt dafür, dass der Berg wie ein Kuchen hinten abgeschnitten wird.

Für den langen Weg der Lagrange-Funktion habe ich gerade nicht genug Zeit...

Optimierung der Parameter ergibt höhere Genauigkeit:

Bild Mathematik

Avatar von 5,7 k

2. exakterer Lösungsweg:

Da Randbedingung genau entlang der Maximum-Kurve verläuft, gilt:

y=(400-8x)/9 eingesetzt in Ausgangsgleichung

500-8x²-7((400-8x)/9)²

d/dx 500-8x²-7((400-8x)/9)² abgeleitet für Maximum ergibt Nullstelle

=-16/81 (137 x-2800)

=(2800-137x)*16/81

x = 2800/137=20.4379562043795620437956204379562...

analog für y:

x=(400-9y)/8

500-8((400-9y)/8)²-7y²

d/dy 500-8((400-9y)/8)²-7y²

=900-(137 y)/4

y = 3600/137 =26.277372262773722627737226


mit f(2800/137,3600/137)=-1051500/137=-7675.182481751824817518248175...

Danke hyperG, ich glaube nun versteh ich es!

Vielen Dank für deine Hilfe

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community