Podstawy Automatyki_matlab

Transkrypt

Podstawy Automatyki_matlab
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 ø
Z1× Z2 + Z3
( Z1× Z2 ) + 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:
Komenda
A = [ a b c] tworzy wektor
A = a b c,
Komenda
Komenda
A = [ a; b; c] tworzy wektor
A = [ a b c; d e f ; g h i ]
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