http://www.mathworks.com/help/optim/ug/quadprog.html
W podanym linku jest przykład w zakładce examples
Czy powie mi ktoś skąd się wzięły te macierze H f x.
http://www.mathworks.com/help/optim/ug/quadprog.html
W podanym linku jest przykład w zakładce examples
Czy powie mi ktoś skąd się wzięły te macierze H f x.
No błaga, od piątku szukam rozwiązania, i nie rozumiem tego co tam jest napisane.
Chce prostej odpowiedzi zawartość H się wzieła bo przemnożone zostało to z tym albo dodane to z tym, i tak samo z resztą.
Bo ja tam nic takiego nie znajduje
Spało się na zajęciach z algebry?
http://www.matematyka.pl/97575.htm
http://home.agh.edu.pl/~gora/algebra/Wyklad12.pdf
http://math.uwb.edu.pl/~randrusz/Informatyka%20i%20Ekonometria%20Algebra%20liniowa/wyklad14infieko.pdf
pierwsze lepsze linki jakie google podrzuciło.
Omg. Wejdź na stronę, którą podałeś, przewiń do końca. Tam jest sekcja Examples.
H = [1 -1; -1 2];
?
@Kosimazaki123 ale czego dokładnie nie rozumiesz?
Tak, nie rozumiem jak zdefiniować te macierze. Mam zadanie z badań operacyjnych i nie umiem sobie tych macierzy zdefiniować do matlaba
W tych linkach co podałeś jest jakiś i wzur a macierz jego formy kwadratowej wygląda tak ..., i dalej nie wiem jak stworzyli tą macierz.
To co jest na matematyka pl co dałeś wygląda dobrze, no ale patrząc na ten wzór co podali, i na to co jest w tym linku co dałem,
to jednak jest to inaczej zrobione.
Dlatego proszę o wytłumaczenie
Masz badania operacyjne a nie miałeś algebry na studiach? Jakoś trudno mi w to uwierzyć... Ale widocznie zasada "zakuć, zdać, zapomnieć" przeniosła się już z podstawówki/gimnazjum na studia...
Zapewniam cię że w tutorialu matlaba zrobili DOKŁADNIE to samo co na matematyka.pl z tą subtelną różnicą że wyciągnęli sobie 1/2 przed macierz bo taką przyjęli notację że
f(x) to nie jest po prostu xTHx tylko 1/2 xTHx (patrz: http://www.mathworks.nl/help/optim/ug/quadprog.html#inputarg_H )
zapewne dlatego żeby się to liczyło łatwiej bo nie musisz dzielić przez pół wyrazów dla x1x2 (co może dać brzydkie ułamki) tylko musisz pomnożyć wyrazy przy x2 przez 2
to jak mam tak:
zysk wyrażony jest fubkcją
f(x1,x2)=15x1+30x2 +4x1x2-2x12-4x22
x1- produkt pierwszy x2 produkt drugi
koszt produkcji to : f(x1,x2) = 10x1 + 20x2 i nie może przekraczać 300
więc
macierz H = [-2 4; 4 -4] f = [15 30] x = [x1; x2]
robie ograniczenie
10x1 + 20x2 <= 300
i mam ze A = [10 20] b = [300]
tak będzie??
Nie. Stary czy ty w ogóle potrafisz czytać?
Oni zakładają że wyciągasz sobie 1/2 przed macierz H więc wewnątrz macierzy elementy z kwadratem mają pomnożone współczynniki przez 2 (ergo mają współczynniki -4 oraz -8 w twoim przypadku) a xi*xj mają niezmienione (ergo w twoim przypadku 4 4).
Więc H = [-4 4; 4 -8]
f = [15 30]
x = [x1 x2]
Zresztą to jest komiczne co ty robisz. Przecież możesz sobie to sprawdzić po prostu mnożąc przez siebie macierz H oraz x i zobaczysz co ci wyjdzie...
Macierz którą podałeś, przy założeniu że mamy 1/2 przed macierzą to byłoby f(x) = -x12 - 2x22 + 2x1x2 + 15x1 + 30x2
" Zobaczymy jak się sprawy potoczą"
; Ale za jego odzywki w stylu "A jeśli dostane bana to co mi szkodzi zrobić jeszcze jedno konto, zwłaszcza że w domu mam 3 łącza"
powinien dostać kilka dni wolnego;
czyli to 1/2 wyciągamy tylko dla wartości które są przy x z kwadratem tak?? bo tak mi to wygląda, oraz po podstawieniu do tego wzorku tych macierzy ma mi wyjść moja funkcja tak??
i mam jeszcze taki przykład:
f(x1,x2) = 10x1+25x2-10x1^2 -4x1x2-x2^2
to macierze będą wyglądać
H = [-20 -4; -4 -2] f=[10; 25] x=[x1;x2]
tak to ma być??
dodanie znaczników <code> - fp
czyli to 1/2 wyciągamy tylko dla wartości które są przy x z kwadratem tak
Nie. Co ty miałes z algebry? o_O Umiesz ty mnożyć macierze? Przecież skoro masz taką macierz symetryczną to wyrazy na przekątnej (to są te z kwadratami) będą mnożone tylko raz a wyrazy pozostałe będą niejako policzone podwójnie bo występują w macierzy w dwóch miejscach. Stąd w normalnej sytuacji wszystkie wyrazy bez kwadratów miałbyś w macierzy podzielone przez 2. Ale oni uznali że wygodniej będzie wyciągnąć tą 1/2 przed macierz, ale to oznacza że trzeba wyrazy na przekątnej przemnożyć przez 2 żeby po pomnożeniu przez 1/2 się zgadzały.
Jeśli chodzi o twoje obliczenia to tak, teraz jest ok.
chyba już rozumiem. to wróćmy jeszcze do zadania które podałem wcześniej:
zysk wyrażony jest fubkcją
f(x1,x2)=15x1+30x2 +4x1x2-2x12-4x22
x1- produkt pierwszy x2 produkt drugi
koszt produkcji to : f(x1,x2) = 10x1 + 20x2 i nie może przekraczać 300
pisze taki kod
H = [-4 4; 4 -8]
f = [15; 30]
A = [10 20]
b = [300]
lb = [0; 0]
[x fval] = quadprog(H,f,A,b,[],[],lb,[])
ale wychodzi tylko zero, i nie wiem czy dobrze robię te ograniczenia kosztu produkcji.
Oraz z tego co jest na stronie, w opisie quadprog to nie ruzmiem czym jest aeq i beq
dodanie znacznika <code class="matlab"> - fp
Na oko wygląda ok, ale coś robisz źle bo wynik masz z d**y
http://www.wolframalpha.com/input/?i=15*x%2B30*y+%2B4*x*y-2*x%5E2-4*y%5E2+and+10*x+%2B+20*y+%3C+300%2C+maximum