Podstawy Automatyki ćwiczenia Cz.1 Środowisko Matlab Podstawową jednostką obliczeniową w programie Matlab jest macierz. Wektory i skalary mogą być tutaj rozpatrywane jako specjalne typy macierzy. Elementy macierzy zawarte jest w nawiasach prostokątnych []. Elementy w kolumnach odseparowane są od siebie spacjami lub przecinkami, wiersze natomiast średnikami lub wciśnięciem klawisza Enter. Matlab umożliwia wprowadzanie tekstu/komend na kilka sposobów. Najbardziej popularne to bezpośrednie wprowadzanie komend bezpośrednio w oknie edycyjnym oraz przygotowywanie tzw m-plików plików z rozszerzeniem *.m przygotowanych w dowolnym edytorze tekstowym. Wywołanie procedur w nich zawartych odbywa się poprzez wpisanie nazwy pliku w oknie edycyjnym. Dostęp do poprzednio wpisywanych komend można uzyskać za pomocą strzałek. W przypadku wątpliwości, co do działania poszczególnych funkcji Matlaba można posłużyć się komenda help: przykład help roots W środowisku Matlab szczególne znaczenie mają: % - oznacza początek komentarza, [] tworzenie tablic i macierzy, () argumenty wejściowe funkcji, nawiasy do określenia kolejności działań ; - koniec wiersza macierzy ; - decyduje, czy dana linia będzie wyświetlana na ekranie, Przykładowo: A=1; - powoduje przypisanie wartości 1 do zmiennej A, na ekranie nie pojawi się potwierdzenie wykonania operacji A=1 działanie, jak wyżej. System potwierdzi przypisanie wartości 1 do zmiennej A. Liczby zespolone: Wprowadzanie zmiennych i wyrażeń zespolonych odbywa się następująco: Z1=3+4j Lub Z1=3+4i Poprawne są obie formy zapisu. Operacje na liczbach zespolonych: Wartość bezwzględna : abs(z1) Liczba sprzężona : conj(z1) Kąt : angle(z1) Część rzeczywista : real(z1) Część urojona : imag(z1) Kąt może być liczony również za pomocą funkcji atan: 1
atan2(imag(z1),real(z1)) Zadania do wykonania: Dla liczb zespolonych Z1=12+j3 Z2=1-j5 Z3=44-j12,5 Wyznaczyć: Moduły Kąty Część rzeczywistą i urojoną Liczby sprzężone (kąty dla liczb sprzężonych) Wyrażenia: Z2 Z1 + Z3 Z1Z2 + Z3 ( Z1Z2) + Z3 Wyniki powyższych operacji przyporządkować do innych zmiennych Macierze i operacje na macierzach: Wprowadzanie macierzy i wektorów odbywa się następująco: A= abc tworzy wektor A= a b c, Komenda [ ] Komenda A [ a;b;c] = tworzy wektor Komenda A [ abc;def;ghi] a A= b, c = tworzy macierz a b c A= d e f, g h i Wybrane operacje na macierzach transpozycja macierzy * - iloczyn wektorowy Nazwa_miacierzy(x,y)= wartość zmiana wartości wybranego elementu macierzy o współrzędnych (x,y). Jeżeli (x,y)=(:,:) oznacza to zmianę wszystkich elementów macierzy. W podobny sposób można zmienić wymiar macierzy. Det(nazwa_macierzy) wyznacznik macierzy Inv(nazwa_macierzy) macierz odwrotna Przykłady Dane są wektory 2
X=[1 2 3] Y=[4 5 6] Wyznaczyć i zinterpretować wynik operacji A= X+ i Y Dokonać mnożenia wektorów X*Y Dokonać transpozycji wektora Y: B=Y % apostrof oznacza transpozycje macierzy Dokonać mnożenia wektorów X*B Dodać kolejne elementy macierzy X i Y celem uzyskania macierzy o wymiarach (3x3). Przyjąć dowolne wartości elementów macierzy. Analitycznie i za pomocą Matlaba : wyznaczyć wyznaczniki obu macierzy dokonać transpozycji macierzy. wyznaczyć wyznaczniki macierzy transponowanych. Wyznaczyć iloczyn macierzy Wyznaczyć sumę macierzy Wyznaczyć macierz odwrotną (tylko Matlab). Pliki wsadowe (m-files) Poniższe funkcje należy uruchomić w edytorze Matlaba a następnie jako pliki wsadowe do programu Matlab: Disp wyświetla komentarz (dla użytkownika) Input wczytuje wartości wejściowe #1 % Operacje na liczbach zespolonych disp(' dla liczby zespolonej postaci c1=a1+jb1'); disp(' podaj '); a1=input('a1='); b1=input('b1='); disp(' dla liczby zespolonej postaci c2=a2+jb2'); disp(' podaj '); a2=input('a2='); b2=input('b2='); disp(' podales liczby'); c1=a1+b1*j 3
c2=a2+b2*j disp(' dodawanie'); c=c1+c2 disp(' mnozenie'); c=c1*c2 disp(' dzielenie'); c=c1/c2 Zadanie Przygotować plik m, który wyznaczy moduł, liczbę sprzężoną oraz kąt dowolnej liczby zespolonej. Program powinien spytać o części rzeczywiste i urojone liczb. Przygotować plik m, który wyznaczy część rzeczywistą i urojoną liczby o zadanym module i kącie. Wykorzystane komendy Roots() liczy pierwiastki wielomianu n-tego stopnia Plot(x,y) wyświetla wynik na wykresie jako punkt o współrzędnych (x,y) Hold on zatrzymuje wykres kolejne wyniki wyświetlane SA na tym samym wykresie Grid on - włącza siatkę #1 % wyznaczenie pierwiastkow rownania %dane jest rownanie postaci % a(n)*x^x+a(n-1)*x^(n-1)+...a0*x^0=0 % podaj macierz wspolczynnikow wielomianu % a=[a(n) a(n-1) a(0)] % komenda ROOTS(C)liczy pierwastki % przyklad A=0; disp(' dla rownania postaci A2*x^2+A1*x-A0=0'); disp(' podaj wspolczynniki'); A(1)=input('A2='); A(2)=input('A1='); A(3)=input('A0='); disp(' macierz A wspolczynnikow rowania'); A Pierwiastki=Roots(A); disp(' pierwiastki rowania wynosza'); Pierwiastki(1) Pierwiastki(2) %Real1=real(Pierwiastki(1)); %Imag1=imag(Pierwiastki(1)); %plot(real1, Imag1) plot(pierwiastki(1),'d' ) hold on plot(pierwiastki(2),'d' ) 4
hold off grid on disp(' po podstawieniu do rownania uzyskuje sie'); wynik1=a(1)*(pierwiastki(1)^2)+a(2)*(pierwiastki(1))+a(3) wynik2=a(1)*(pierwiastki(2)^2)+a(2)*(pierwiastki(2))+a(3) Zadanie Przygotować plik m, macierz odwrotną i transponowaną dowolnej macierzy (program powinien spytać o poszczególne jej elementy) 5