Zaloguj się
Blog na Matlab.pl
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Obliczenia za pomocą punktu KKT/Mnożnik Lagrange'a
Forum MATLAB Strona Główna-> Matematyka, statystyka i prawdopodobieństwo
Post Wysłany: 19 Styczenia 2017, Czw 6:54 pm Temat postu: Obliczenia za pomocą punktu KKT/Mnożnik Lagrange'a Odpowiedz z cytatem
 
AUTOR:
EasyMan



Dołączył: 19 Sty 2017
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam, napisałem takie równanie w matlabie, nazywane punktem KKT, albo mnożnikami Lagrange'a. Czy ktoś wie czy dobrze to zapisałem?
Z góry dziękuję


Kod:

    
%minf(x)=(x(1)+3)^4+(4x(2)+4)^4
        
%minf(x)=(x(1)+3)^4+(4*(x(2)+1))^4
%nabla/gradient f(x)=[4*(x(1) + 3)^3 ; 64*(x(2)+1)^3]
    %
ograniczenie p.o. x(1)+x(2)^2=-3
        
%ograniczenie p.o. x(1)+x(2)^2+3=0
%lambda nabla/gradient g(x)=[1 ; 2x(2)]=-3
    
%WARUNKI KKT %Lagrange'a
clc
it=1;
x=[1; 1];
lamb=[3] %L(,)=((x(1)+3)^4+(4x(2)+4)^4)*lamb(x(1)+x(2)^2)
while it<=50
    GradL=[(4*(x(1)+3)^3)-lamb*1
           (64*(x(2)+1)^3)-lamb*2*x(2)
           -(x(1)+x(2)^2+3)];
   %Hes=[x1'
wiersz1    x1'wiersz2   x1'wiersz3
        
%x2'wiersz1    x2'wiersz2   x2'wiersz3
        %x1'
wiersz3    x2'wiersz3   zero ]
    Hes=[(4*(3*(x(1)+3)^2))-lamb*0      0                 -1
        0                       (192*(x(2)+1)^2)-lamb*2   -2*x(2)
        -1                           -2*x(2)              0];
    dx=-Hes\GradL;
    lamb=dx(3,1)
    x=x+[dx(1,1);dx(2,1)]
    it=it+1;
    if max (abs(GradL))<1e-6
        break
    end
end                   


https://www.mathworks.com/help/optim/examples/tutorial-for-the-optimization-toolbox.html?prodcode=ML


 

Post Wysłany: 21 Styczenia 2017, Sob 6:33 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
EasyMan



Dołączył: 19 Sty 2017
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
Dobrze zrobione
Kod:

clc
it
=1;
x=[1;1;1];
L(1)=[1];
L(2)=[1];
while
it<100
d_fx
=[-2*(L(1)-1)*x(1)
-
3*L(1)*(x(2)-2)^2-2*L(2)+4*x(2)
-
2*L(2)*x(3)+4*L(2)+8*x(3)-8
-x(1)^2-(x(2)-2)^3+4
-2*x(2)-(x(3)-2)^2+2];
d2_fx=[-2*(L(1)-1) 0 0 -2*x(1) 0
0 4
-6*L(1)*(x(2)-2) 0 -3*(x(2)-2)^2 -2
0 0 8
-2*L(2) 0 4-2*x(3)
-
2*x(1) -3*(x(2)-2)^2 0 0 0
0
-2 4-2*x(3) 0 0];
dx=-d2_fx\d_fx;
x=x+[dx(1,1);dx(2,1);dx(3,1)];
L(1)=L(1)+dx(4,1);
L(2)=L(2)+dx(5,1);
if
norm(dx)<1e-6;
break
end
it
=it+1;
end
x


 

Post Wysłany: 31 Styczenia 2017, Wto 7:42 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
mirek22



Dołączył: 31 Sty 2017
Posty: 3


Ogląda profil użytkownika Wyślij prywatną wiadomość
co to jest za kod zrobiony



_________________
continue reading
 

Forum MATLAB Strona Główna-> Matematyka, statystyka i prawdopodobieństwo
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 35017013
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Porównianie wykresów w środowisku matlab i simulink  (24 Marca 2017, Pią 2:14 am)
Komunikat Struct contents reference from a non-struct array  (23 Marca 2017, Czw 9:06 pm)
Problem z zadaniem  (23 Marca 2017, Czw 6:53 pm)
Styczna do odpowiedzi skokowej  (22 Marca 2017, Sro 11:43 am)
Zadanie z Scilab. (Wykonanie skryptu.)  (21 Marca 2017, Wto 5:06 pm)
metody rozwiazywania rownan liniowych  (20 Marca 2017, Pon 10:19 pm)
Metoda Latin Hypercube Sampling  (19 Marca 2017, Nie 7:31 pm)
Kombinacje na zbiorach  (19 Marca 2017, Nie 11:48 am)
Wypełnianie macierzy wektorami  (18 Marca 2017, Sob 8:11 pm)
Zamodelowanie bloku metalowego  (18 Marca 2017, Sob 11:50 am)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum