Elżbieta Tchorowska, 171067 23-03-2009
Sprawozdanie z ćwiczenia nr 1
- podstawowe operacje w programie MATLAB
Celem ćwiczenia było zapoznanie się z programem MATLAB oraz wykorzystanie go do obliczania podstawowych zagadnień. Nazwa programu pochodzi od angielskich słów MATrix LABoratory, gdyż środowisko to służy do operacji numerycznych macierzowych. MATLAB najczęściej wykorzystuje normę euklidesową.
Polecenie 1: wprowadzenie do pamięci dwóch macierzy - wektorów.
Wprowadzenie macierzy (wektorów) odbywa się poprzez deklarację zmiennej i wprowadzenie wartości w nawiasach kwadratowych, np:
>>a=[1, 2, 3]
>>b=[0, 1, 0]
Polecenie 2: obliczenie iloczynu skalarnego podanych dwóch wektorów
Obliczenie iloczynu skalarnego wektorów odbywa się poprzez komendę dot(x,y), gdzie wartości wektorów x i y zostały zdefiniowane już wcześniej, np:
>>dot(x,y)
>>dot(a,b)
Polecenie 3: wprowadzenie do pamięci dwóch macierzy wielowierszowych
wprowadzenie macierzy odbywa się podobnie do wektorów, tyle, że między zakończeniem jednego wiersza a rozpoczęciem drugiego należy wstawić średnik, np:
>>A=[1, 2, 3 ; 4, 5, 6]
>>B=[1, 5 ; 2, 6 ; 3, 7]
Polecenie 4: mnożenie wprowadzonych do pamięci macierzy
aby pomnożyć dwie macierze przez siebie należy pamiętać, żeby ilość wierszy pierwszej macierzy zgadzała się z ilością kolumn w drugiej. Jeśli by ten warunek nie został uwzględniony program MATLAB wyświetli nam błąd i poleci sprawdzić wymiary tych macierzy. Standartowe mnożenie wykonuje się używając gwiazdki, np:
>>A*B
>>X*Y
Polecenie 5: wykonać transpozycję i znaleźć macierz odwrotną do podanej
zwracanie macierzy odwrotnej do macierzy podanej wywołuje się przez funkcję inv(), natomiast transpozycję poprzez dodanie symbolu `. W przypadku błędnego działania MATLAB poinformuje nas o tym komunikatem „Matrix is close to singular or badly scaled”., np:
>>inv(A)
>> A'
Polecenie 6: wyznaczenie wyznacznika podanej macierzy
zwracanie wyznacznika odbywa się poprzez funkcję det(), np.:
>>det (A)
>>det (B)
Polecenie 7: rozwiązywanie równań metodą MATLABA
istnieją 3 podstawowe metody rozwiązywania układów równań: wzorami Cramera (ok. 1012 wykonanych działań), metodą Gaussa (około 1300 działań) oraz metodą Gaussa-Jordana (ok. 2000 działań). MATLAB domyślnie posługuje się metodą Gaussa. Mając podane równanie, np:
x+2y-z=3
3x-4y+2x=-5
5x-2y+3z=2
możemy zapisać równoznacznie w postaci macierzowej A*x=B, gdzie:
A=[1,2,-1 ; 3,-4,2 ; 5,-2,3]
x=[x;y;z]
B=[3;-5;2]
rozwiązaniem tego równania będzie odnalezienie macierzy x. Rozwiązanie
przyjmuje postać: x=inv(A)*B, np:
>>x=inv(A)*B
>>x=inv(Y)*Z
Polecenie 8: wprowadzić do pamięci dwie liczby zespolone
wprowadzać liczby zespolone można w dwojaki sposób, dodając do zamierzonej części urojonej literę i lub j, np:
>>x=3+4i
>>y=2+3j
Polecenie 9: obliczyć moduł podanej liczby zespolonej
moduł liczby zespolonej oblicza funkcja abs(), np.:
>>abs(x)
>>abs(y)
Polecenie 10: obliczyć kąt jaki tworzy na płaszczyźnie wektor rzeczywisty z wektorem urojonym
kąt oblicza się poprzez funkcję angle(). Zwracana wartość jest wartością w radianach, więc trzeba wykonać odpowiednie zamienienie na stopnie, np.:
>>angle(x)
>>angle (y)
Polecenie 11: obliczanie pierwiastków wielomianów rzeczywistych i zespolonych
podany wielomian należy przedstawić w postaci macierzowej. Na przykładzie wielomian: W(x)=x4+3x3-3x3-x=0 przedstawiamy w postaci x=[1,3,-3,-1,0]. Aby otrzymać pierwiastki wielomianu wystarczy użyć funkcji roots(x). Podobnie sprawa się ma z pierwiastkami wielomianów urojonych. W wielomianie z5=1+i, wystarczy „przerzucić” wszystko na jedną stronę równania, otrzymując: z5-1-i=0, następnie zamienić na postać macierzową: x=[1,0,0,0,0,-1-i], np.:
>>roots(x)
>>roots(w)
Polecenie 12: rysowanie 2D
do wywołania rysunku (wykresu) służy funkcja plot(x,y), gdzie y=f(x). W parametrze x natomiast podajemy miejsce rozpoczęcia na układzie współrzędnych, częstość punktowania oraz miejsce zakończenia. Możemy również podać kolor w jakim dana funkcja ma być narysowana, choć MATLAB automatycznie dobiera kolory. m - fioletowy c - turkusowy r - czerwony g - zielony b - niebieski w - biały k - czarny. Parametr kolorystyczny dodajemy w `' po zmiennej y. Narysowanie funkcji sinus w kolorze czerwonym:
>>x=[0:pi/20:2*pi];
>>y=sin(x);
>>plot(x,y,'r')
Polecenie 13: rysowanie 3D
do rysowania 3D można się posłużyć funkcją mesh. W tym wypadku musimy zadeklarować 3 zmienne. Podobnie jak w poleceniu wyżej musimy oznaczyć w jakim rejonie układu chcemy się poruszać oraz jaka funkcja ma się wyświetlić. Operujemy na siatce. Dodatkowo, żeby komenda działała poprawnie, należy w działaniach w odpowiednich miejscach powstawiać kropki, zmieniając obliczenia z macierzowych na tablicowe. Wstawienie kropki np. między mnożeniem dwóch macierzy zamienia obliczenia na tablicowe. Wyrysowanie funkcji sinus3x, np:
>> x = linspace(-1,1,20); y = x;
>>[X Y] = meshgrid(x,y);
>>Z = sin(3.*x);
>>mesh(X,Y,Z);
Wnioski:
MATLAB jest bardzo rozbudowanym środowiskiem, który dobrze radzi sobie z
większością wymaganych od niego operacji. Jest przydatny zarówno jako środowisko programistyczne jak i program do wykonywania skomplikowanych operacji. Przy działaniach na dużych macierzach wkradają się jednak drobne błędy, które jednak można bardzo prosto „wyłapać”. Dodatkowo porozumiewanie się z użytkownikiem wychodzi wyjątkowo dobrze. Zwraca uwagę na konkretne błędy i informuje o nich, przez co praca jest zadziwiająco łatwa. Sam zapis komend nie różni się wiele od znanych do tej pory języków programowania jak C++ czy Java, jednak sama struktura wydaje się odrobinę czytelniejsza. Należy pamiętać o „drobnostkach” typu wstawienie w odpowiednie miejsce kropki, by działanie wykonane zostało poprawnie, lub o wstawienie średnika pod koniec wiersza, gdy nie chcemy wyświetlania wartości. Z podstawową znajomością operacji macierzowych i algebry liniowej nie ma większego trudu z opanowaniem programu.