Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Teoria sterowania Obliczenia symboliczne w środowisku MATLAB Materiały pomocnicze do ćwiczeń laboratoryjnych 1 Część 8 Opracowanie: Michał Grochowski, dr inż. Robert Piotrowski, dr inż. Tomasz Karol Nowak, mgr inż. Gdańsk 1
1. Czym jest Symbolic MATLAB Toolbox? Symbolic MATLAB Toolbox jest jednym z przyborników do wykorzystania w środowisku MATLAB, który zapewnia narzędzia do rozwiązywania symbolicznych wyrażeń matematycznych i dokonywania arytmetyki zmiennopozycyjnej. Zawiera on setki funkcji symbolicznych, które można wykorzystać do wielu typów obliczeń, łącznie z przetwarzaniem i rozwiązywaniem równań. 2. Definiowanie zmiennej i stałej symbolicznej W celu zdefiniowania zmiennej x można napisać: Jeśli chcemy zdefiniować większą liczbę zmiennych, należy je wpisać oddzielając spacjami, tzn.: y z Do zdefiniowania stałej należy posłużyć się wyrażeniem: a = sym('4') Stała a przyjmie wówczas wartość równą 4. 3. Wartości liczbowe w wyrażeniach symbolicznych Wynik liczbowy zapisany w postaci symbolicznej może zostać obliczony dzięki poleceniu subs(). Przykładowo: syms a b y = a+b; a = 1; b = 2; w = subs(y) Otrzyma się wówczas wynik 3 w zmiennej w. 4. Rozwiązywanie układów równań liniowych W celu rozwiązania układu równań należy po zadeklarowaniu zmiennej symbolicznej - użyć funcji solve(), jak na poniższym przykładzie: y S = solve('x + y = 5', '2*x y = 0') Spowoduje to rozwiązanie układu równań: x+ y= 5 2x y= 0 2
5. Rozwiązywanie układów równań różniczkowych Ażeby rozwiązać układ równań różniczkowych należy wpisać: 1') y = dsolve('dx = x + 2*y', 'Dy = y', 'x(0) = 0', 'y(0) = Spowoduje to rozwiązanie układu równań: dx = x+ 2y dt dy dt = y Z warunkami początkowymi: x(0)= 0 y(0)= 1 6. Znajdowanie miejsc zerowych Można znaleźć miejsce zerowe podanej funkcji, wpisując np.: S = solve('2*x^2 + 5*x 7 = 0') Spowoduje to rozwiąznanie funkcji kwadratowej danej funkcją: 2x 2 + 5x 7= 0 7. Zmiana postaci wyrażenia symbolicznego Do zmiany postaci wyrażenia symboliczego można stosować funkcję simplify(), która spowoduje uproszczenie wyniku. Przykładowo: f = x^2 1; g = x 1; simplify(f/g) Jak da się zauważyć, zadeklarowaliśmy tu dwie funkcje f i g. Wpisanie powyższych wyrażeń spowoduje wyświetlenie wyniku: nie zaś x-1 (x^2 1)/(x 1) które miałoby miejsce przy: 3
f = x^2 1; g = x 1; f/g Do grupowania zmiennych potrzebna jest funkcja collect(). Przykładowo: wyświetli: zamiast f = x + 1; g = x + 3; collect(f*g) x^2 + 4*x + 3 (x+3)(x-1) w przypadku napisania: f = x + 1; g = x + 3; f*g 8. Różniczkowanie i całkowanie symboliczne Do różniczkowania symbolicznego służy funkcja diff(). W celu zróżniczkowania funkcji po zmiennej x: y= x 2 + 3x 1 należy wpisać: y = x^2 + 3*x 1; diff(y, x) Jeśli zaś chcemy obliczyć całkę nieoznaczoną po zmiennej x powyższej funkcji, należy posłużyć się funkcją int() jak poniżej: y = x^2 + 3*x 1; int(y, x) W celu obliczenia całki oznaczonej od 0 do 5 należy wpisać: 4
y = x^2 + 3*x 1; int(y, 0, 5) 9. Wyświetlanie funkcji Wyświetlanie funkcji następuje po użyciu polecenia ezplot(), jak w poniższym przykładzie: f = x^3 * cos(x) log(x+1); ezplot(f) Spowoduje to wyświetlenie funkcji: f (x)= x 3 cos( x) log(x+ 1) 9. Obliczenie sumy szeregu Symbolic MATLAB Toolbox umożliwia wiele funkcji. Jedną z nich jest obliczenie sumy podanego szeregu. Służy do tego funkcja symsum(). Jeśli chcemy obliczyć sumę szeregu po k od 1 do 10, tzn: 10 k i= 1 należy wpisać: syms k symsum(k, 1, 10) 10. Obliczenie granicy W celu obliczenia granicy należy skorzystać z polecenia limit(). Przykładowo: limit(tan(x), x, 0, 'left') % obliczenie granicy przy x % dążącym do 0 z lewej strony limit(tan(x), x, 0, 'right') % obliczenie granicy przy x % dążącym do 0 z prawej % strony limit(tan(x), x, inf) limit(tan(x), x, -inf) % obliczenie granicy przy x % dążącym do nieskończoności % obliczenie granicy przy x % dążącym do -nieskończoności Bibliografia Brian Hahn, Daniel T. Valentine, Essential MATLAB for engineers and scientists, Third edition, 2007, ISBN 13: 9-78-0-75-068417-0, 5
Steven T. Karris, Signals and systems with MATLAB applications, Second Edition, ISBN 0-9709511-8-3, 6