Jak rozwiązywać równania bądź nierówności kwadratowe i jak szukać maksimum za pomocą minimum.

W wielu zadaniach będziemy poszukiwać pierwiastków równań, maksimów i minimów funkcji. W MATLABie funkcja fzero wyszukuje pierwiastek równania w pobliżu zadanej wartości zmiennej – czyli do odnalezienia wszystkich pierwiastków równania trzeba podać okolice, gdzie te pierwiastki mają występować. Minimum lokalne funkcji poszukuje się za pomocą polecenia fminbnd, przy czym należy także podać domniemane okolice tego minimum (przedział od... do...). Maksimum lokalnego funkcji szuka się również za pomocą fminbnd, przy czym należy szukać minimum funkcji -f(x).



Zadanie (4)

Wypróbuj następujące komendy:



>> x=fzero('sin',10)                                                % miejsce zerowe funkcji sinus w okolicach x0=10

>> x=fzero('sin',10)*180/pi                           % to samo w stopniach

>> minsin = fminbnd('sin',10,11)                         % minimum funkcji sinus między 10 i 11

>> minsin = fminbnd('sin',10,11)*180/pi         % to samo w stopniach

>> maxsin = fminbnd('-sin',0,2)*180/pi          % minimum -sin(x) da maksimum sin(x)

>> min = fminbnd(@(x) x^2+1,-1,2)              % minimum anonimowej funkcji

>> fzero(@(x) x^2+1,-0.5)                                  % powinno zwrócić NaN – not a number



Sprawdź, że funkcja fminbnd nie zadziała, jeżeli zamiast przedziału podasz tylko jedną liczbę.

 

Do rozwiązywania (układów) równań/nierówności (zwłaszcza nieliniowych) służy funkcja solve.



Zadanie (5)

Wypróbuj następujące komendy:



>> [x,y] = solve('x^2+y^2=1','x+2*y=2')

>> solve('x^2 + 4*x + 1')                                     % domyślnie: prawa strona równania to zero

>> solve('x^4 + 1 = 2*x^2 - 1')

>> solve('x^2 + 4*x + 1>2')                          % ta nierówność zwróci dwa przedziały

>> solve('a*x^2 + b*x + c', 'x')                          % rozwiązanie ze względu na x

>> solve('a*x^2 + b*x + c', 'b')                     % rozwiązanie ze względu na b



Rozwiąż nierówność x3+x2+x+1<0 (nie da się – za trudne dla MATLABa, przynajmniej w wersji R2012a).

 

Ostatnia modyfikacja: poniedziałek, 1.07.2013, 13:10 PM