Strona 1 z 1

[Matlab] [Symbolic] Problem z solve - układ równań

: 13 kwie 2011, o 12:19
autor: Calasilyar
Witam, mam problem z rozwiązywaniem równania za pomocą solve. Sprawa wygląda następująco:

1. Deklaruję wektor zmiennych x i xC:

Kod: Zaznacz cały

syms x xA xB xC real
x = [xA xB];
syms lambda1 lambda2
2. Wyliczam sobie funkcję L

Kod: Zaznacz cały

L=10*xA+20*xB+lambda1*(60*xA^2+60*xB^2-120*xA*xB+xC-10)+lambda2*(xA+xB-1);
3. Potrzebuję uzyskać rozwiązanie takiego układu równań:
diff(L,lambda1)=0
diff(L,lambda2)=0
diff(L,xA)=0
diff(L,xB)=0
diff(L,xC)=0

Układam zatem polecenie:

Kod: Zaznacz cały

S = solve('diff(L,lambda1)=0','diff(L,lambda2)=0','diff(L,xA)=0','diff(L,xB)=0','diff(L,xC)=0',lambda1,lambda2,xA,xB,xC);
(tak wskazują wszystkie manuale)

Jako wynik otrzymuję jednak:

Kod: Zaznacz cały

>> S.xA
ans = xA
Równania dążą do rozwiązania układu, bo ręcznie mogę to policzyć. Gdzie może tkwić problem? W deklaracji czy w dalszych operacjach?

Dzięki za pomoc i wszelkie sugestie!

[Matlab] [Symbolic] Problem z solve - układ równań

: 13 kwie 2011, o 13:23
autor: pyzol
Zrobiłem kilka modyfikacji:

Kod: Zaznacz cały

S=solve(diff(L,lambda1),diff(L,lambda2),diff(L,xA),...
    diff(L,xB),diff(L,xC),lambda1,lambda2,xA,xB,xC);
Wyskakuje ostrzeżenie, ale to przez lambdy. A wynik to nie wiem, musisz zobaczyć czy się zgadza.
... przenosisz wiersz w Matlabie.

[Matlab] [Symbolic] Problem z solve - układ równań

: 13 kwie 2011, o 15:35
autor: Calasilyar
Liczy, ale właśnie, daje jedną zmienną jako parametr :-/ Jak tu jednak zrobić, żeby nie było parametrów? W końcu jest 5 równań i 5 niewiadomych.

[Matlab] [Symbolic] Problem z solve - układ równań

: 13 kwie 2011, o 16:05
autor: pyzol
Chyba, że jedno równanie jest zależne od pozostałych. Wpisywałem jedną z lambd jako stałą np. 1. Wysypywał się błąd także, bardzo możliwe, że z samym układem jest coś nie tak.-- 13 kwi 2011, o 16:29 --Nom wydaje mi się, że równanie \(\displaystyle{ \frac{ \partial f}{ \partial xC}=0}\) jest sprzeczne z pierwszym i drugim. Bardzo możliwe, że matlab sam je usunął. Nie mam pojęcia na jakiej zasadzie to działa.
Wpisując \(\displaystyle{ xC^2}\) wszystko liczy.