Zastosowanie obliczeń w Matlabie.doc

(892 KB) Pobierz
Politechnika Rzeszowska

Politechnika Rzeszowska

 

 

Katedra Automatyki i Informatyki

 

M. Wysocki

 

 

 

Zastosowanie obliczeń komputerowych w systemie MATLAB w teorii sterowania

 

1.      System MATLAB

 

1.1         Wprowadzenie

1.2         Podstawowe elementy języka systemu MATLAB

1.3         Działania na macierzach

1.4         Instrukcja i wyrażenia

1.5         Operacje na elementach

1.6         Instrukcje i wyrażenia

1.7         Operacje na elementach macierzy

1.8         Relacje

1.9         Operacje logiczne

1.10     Inne operatory

1.11     Formaty wydruków

1.12     Tworzenie wykresów

1.13       Instrukcje sterujące przebiegiem programu

1.14     Zachowanie wyników obliczeń na dysku

1.15     Uzupełnienia podstawowych informacji

2. Przykłady zastosowań w teorii sterowania

    2.1 Wielomiany

    2.2 Transmitancja operatorowa

    2.3 Wyznaczanie odpowiedzi skokowej

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1        SYSTEM MATLAB

 

1.1  Wprowadzenie

 

1.1.1Informacje ogólne

 

System MATLAB umożliwia wygodne prowadzenie obliczeń matematycznych w zakresie różnych dyscyplin. Przydatność systemu uwidacznia się szczególnie w odniesieniu do problemów dotyczących teorii sterowania i teorii systemów. Obecnie system jest stale wzbogacany o nowe biblioteki procedur (TOOLBOX) obejmujące różne dziedziny jak sterowanie, przetwarzanie sygnałów, sieci neuronowe itd.

Uruchomienie systemu wymaga następującego zestawu komputera typu PC :

Ø      Minimum320kB pamięci operacyjnej

Ø      Przynajmniej jedna stacja dysków elastycznych

Ø      Koprocesor 8087, 80287 lub 80387

Zalecane jest też, aby zestaw posiadał dodatkowo:

Ø      Twardy dysk (MATLAB potrzebuje ok. 1,2 MB)

Ø      Większą pamięć operacyjną

Ø      Kartę graficzną SVGA

Rozpoczęcie pracy wymaga:

Ø      Odszukania katalogu zawierającego MATLAB (często odbywa się to automatycznie i jest realizowane przez system operacyjny )

Ø      Wprowadzenia z klawiatury polecenia uruchomienia systemu w postaci: MATLAB+Enter i poczekania na zgłoszenie się systemu przez wyświetlenie znaku „zaproszenia”: >>

Wyjście z systemu realizują instrukcje:

Ø      quit

Ø      exit

 

1.1.2        Podstawowe zasady pracy w systemie MATLAB

 

Duże i małe litery:

 

MATLAB rozróżnia duże i małe litery. Oznacza to, że np. A i a nie są tymi samymi zmiennymi. Wszystkie nazwy poleceń wprowadzanych po wyświetleniu na ekranie znaku „zaproszenia” >> muszą być pisane małymi literami. Instrukcją casesen można spowodować niewrażliwość na wielkość liter. Ponowne jej wywołanie przywraca stan początkowy.

 

Uzyskiwanie informacji pomocniczej systemu:

 

Instrukcja  help <temat> powoduje wyświetlenie komentarza dotyczącego danego tematu. Pod nazwą <temat>

Wpisuje się na ogół nazwę procedury. Gdy napiszemy tylko help , nastąpi wyświetlenie tematów objętych tą instrukcją.

 

Uruchomienie przykładów demonstracyjnych:

 

Polecenie demo umożliwia prześledzenie istniejących już w systemie przykładów zastosowania wybranych funkcji MATLAB-a.

 

 

 

 

Wywołanie komend DOSu z poziomu MATLABa:

 

Rozpoczęcie polecenia od wykrzyknika ! oznacza, że dalsze napisy w linii oznaczają treść instrukcji dla systemu operacyjnego (DOS). Typowym przykładem jest wywołanie edytora ne poleceniem !ne.

 

Inne:

 

Ø      Średnik ; użyty po wyrażeniu lub instrukcji blokuje wyświetlanie wyniku na ekranie,

Ø      Dwie (lub więcej) kropki .. na końcu linii oznaczają kontynuację,

Ø      Przy edycji poleceń istnieją następujące możliwości:

Ø      %    - oznacza, że dalsza część linii jest komentarzem,

Ø      h - przywołanie poprzedniej linii

Ø      i - przywołanie następnej linii

Ø      f - przesunięcie kursora w lewo o jeden znak

Ø      g - przesunięcie kursora w prawo o jeden znak

Ø      Ctrlf  - przesunięcie kursora o jedno słowo w lewo

Ø      Ctlrg  - przesunięcie kursora o jedno słowo w prawo

Ø      Home  - przesunięcie kursora do początku linii

Ø      End  - przesunięcie kursora na koniec linii

Ø      Esc  - kasowanie całej linii

Ø      Ins   - przełączanie między wstawianiem, a wpisywaniem w miejsce starego

Ø      Del  - kasowanie znaku przed kursorem

Ø      Backspace  -kasowanie znaku na lewo od kursora

 

1.1.3.                   Zbiory „.m” i „.mex”

 

Pocedury wykorzystywane przez MATLAB są zapisane w zbiorach z rozszerzeniami .m lub .mex. Rozszerzenie .mex mają procedury powstałe ze skomplikowanych programów w języku FORTRAN lub C, skonsolidowanych (zlinkowanych) do postaci wykonywalnej (.exe). Isnieje więc możliwość użycia własnych procedur napisanych w tych językach.

Obok możliwości wykorzystania FORTRANu i C, MATLAB, posiada własny język programowania, nazywany językiem systemu MATLAB, w którym także można pisać własne procedury(programy)rozszerzające biblioteki MATLABa. Procedury te przygotowuje się w postaci zbiorów źródłowych z rozszerzeniem  .m, wykorzystując do tego celu edytor tekstowy(np. nc, ne, Sidekick itp.).Nie będziemy tutaj omawiać bliżej otrzymywania zbiorów typu .m, zawierających instrukcje języka systemu MATLAB.

Warto zaznaczyć, że podczas realizacji procedury źródłowe umieszczone w zbiorach typu .m nie są komplikowane lecz interpretowane, tzn. przed wykonaniem nie jest otrzymywany kod maszynowy taki, jaki zapewniają kompilatory i konsolidatory (linkery).W wyniku takiego podejścia MATLAB jest bardziej efektywnym systemem, którego  zaletą jest eliminacja czasochłonnego cyklu kompilacja - konsolidacja-wykonanie. Z drugiej strony należy jednak zaznaczyć , że niektóre instrukcje ,zwłaszcza pętle, są wykonywane znacznie wolniej  niż w językach kompilowanych jak C i PASCAL. Wydruk zbioru <nazwa . m> na ekranie uzyskuje się za pomocą polecenia type nazwa

Wydruk  zbioru o dowolnym rozszerzeniu nazwa . roz otrzymuje się za pomocą polecenia type nazwa . roz.

 

1.2       Podstawowe elementy języka systemu MATLAB

 

Dla uproszczenia zamiast sformułowania ”język systemu MATLAB” będziemy używać skróconych postaci tej nazwy: ”język MATLAB” lub „MATLAB”

 

1.2.1Liczby w języku MATLAB

 

Zapis liczb rzeczywistych

Liczby są przedstawione w konwencjonalnym zapisie dziesiętnym  z opcjonalną kropką dziesiętną i znakiem minus. Przykładami  dozwolonego zapisu liczb rzeczywistych są:

3                   -99                    0.0001

9.6397238   1.60210E-20      6.02252e23                                                                                                                                                                              

 

Każda liczba jest zapisywana w 8-miu bajtach, co umożliwia zapis z dokładnością około 16 cyfr znaczących. Zakres liczb wynosi w granicach od 10-308 do 10308.

 

Liczby zespolone

 

Aby wprowadzić liczby zespolone, trzeba wprowadzić jednostkę urojoną

i=sqrt(-1)  lub j=sqrt(-1)    .

Zapisu dokonuje się następnie w zwykły sposób, np.

3+4*j          lub 5*exp(j*2.5)

 

Zmienne systemowe o stałych wartościach

 

eps=2-52=2.22*10-16 – wartość używana jako tolerancja, np. przy ocenie osobliwości macierzy; użytkownik może                                   ją zmieniać na dowolną inną,

pi=p,

inf=¥,

NAN – „nie liczba” – uzyskiwana w operacjach Inf/Inf lub 0/0.

 

1.2.2        Macierze i działania na nich

 

MATLAB wykorzystuje w zasadzie tylko jeden typ obiektów, tj. prostokątne macierze liczbowe z dopuszczalnymi elementami zespolonymi. Szczególnym przypadkiem jest skalar, tzn. macierz 1x1 lub wektor, tj.macierz o jednej kolumnie lub jednym wierszu.

Wszystkie operacje w MATLABie rozumie się jako macierzowe. NA uwagę zasługuje fakt, że nie ma deklaracji zmiennych i rezerwowania wymiarów.

 

Wprowadzanie macierzy

 

Wprowadzanie macierzy może odbywać się następującymi sposobami:

Ø      Bezpośrednie podanie listy elementów z klawiatury,

Ø      Utworzenie zbioru .m,

Ø      Wywołanie instrukcji lub funkcji.

Przy wprowadzaniu małych macierzy najprościej jest podać listę elementów oddzielonych spacją lub przecinkiem zamkniętą w nawiasach prostokątnych, wewnątrz których wiersze są oddzielone średnikami.

 

Przykład 1.1

                                                    [ 1 2 3

A=[1 2 3 ; 4 5 6 ; 7 8 9 ] lub A=   4 5 6

                                                      7 8 9 ]

oznacza wprowadzenie macierzy A=

Zapis macierzy z przykładu 1.1 może być dokonany bezpośrednio z klawiatury, lub umieszczony wcześniej na dysku, np. w zbiorze macA.m . W drugim przypadku dla wprowadzenia macierzy do pamięci wystarczy instrukcja:    >>macA (Enter)

Istnieje możliwość wykorzystywania już istniejących macierzy jeśli są one „podmacierzami” wprowadzanych macierzy; np. zapis :

A=[A;[ 10 11 12 ]]

                                                   

Spowoduje, że macierz A będzie miała teraz postać: A=

Sposób wprowadzania macierzy z elementami zespolonymi ilustruje następujący przykład:

 

Przykład 1.2

Wprowadzanie jednego z poniższych zapisów:

A=[1 2 ; 3 4 ]+j*[ 5 6 ; 7 8 ]  lub A=[1+5*j 2+6*j ; 3+7*j 4+8*j ]

Spowoduje to, że macierz A będzie miała postać:  A=  1+5*j      2+6* j 

                                                                                        3+7*j      4+8*j 

Funkcje zapełniania prostych macierzy

 

Często spotykane można wprowadzić nieco prościej wykorzystując do tego celu specjalne funkcje(polecenia języka MATLAB). Należą do nich :

ones(n), ones(m,n), ones(A) – tworzą jedynek kolejno o wymiarach n, xn, mxn, takich jak                                         znana macierz A.

eye(n), eye(m,n), eye(A) – tworzą macierze z jedynkami na przekątnej i zerowymi pozostałymi elementami o wymiarach jw.

zeros(n), zeros(n,m), zeros(A) – tworzą macierze z zer o wymiarach jw.

UWAGA: Jeśli A jest skalarem, to ones(A) ma taki wymiar jak wartość zapisana pod A. To samo dotyczy pozostałych funkcji.

 

Macierze puste

 

Macierz pusta (o wymiarach 0x0)może być zdefiniowana za pomocą operacji:

A=[].

 

1.2.3        Definiowanie wektorów

 

Ponieważ wektory także w MATLABie są traktowane jako szczególny przypadek macierzy może być dla nich stosowany dowolny spośród wyżej wymienionych sposobów wprowadzania. Dodatkowo wektory można tworzyć stosując specjalne zapisy języka MATLAB jak np.

Ø      x=1:5     jest równoważne utworzeniu wektora x=[ 1 2 3 4 5 ].

Ø      x=0:0.5:2         x=[ 0   0.5   1   1.5   2 ]

Ø      x=6:-1:1          x=[ 6  5  4  3  2  1 ] 

1.2.4        Odwołania 

 

MATLAB zapewnia wygodne odwoływanie się w programie do pojedynczych elementów lub fragmentów macierzy (wektorów). Ilustrują to następujące przykłady:

Ø      A(i,j)        element wiersza i oraz kolumny j macierzy A

Ø      A(1:5,3)    wektor kolumnowy utworzone z pierwszych 5 elementów 3-ciej kolumny macierzy A

Ø      A(1:5,7:10)   podmacierz macierzy A utworzona z pierwszych 5 wierszy i kolumn 7,8,9,10.

Ø      A(:,3)           wektor utworzony z całej trzeciej kolumny

Ø      A(1:5,:)       macierz utworzona z pierwszych pięciu wierszy.

Ø      Niech A i B oznaczają wcześniej wprowadzone macierze o wymiarach 10x10. Operacja podstawiania:

A(:,[ 3 5 10 ])=B(:,1:3)    zastępuje 3,5 i 10 kolumny macierzy A trzema pierwszymi kolumnami macierzy B.

Ø      Niech A=  . Operacja podstawiania

B=A(:) spowoduje utworzenie wektora b=  . Odwołanie A(:)może być także użyte z lewej strony wyrażenia np.

A(:)=11:16 , co spowoduje, że nowa postać macierzy A będzie A= .

Ø      Odwołanie może nastąpić przez wektory zero – jedynkowe. Niech A będzie macierzą mxn a L wektorem m - wyrazowym utworzonym z zer i jedynek. Wówczas odwołanie A(L,:) wyodrębni te wiersze macierzy, które odpowiadają niez...

Zgłoś jeśli naruszono regulamin