MATLAB PODSTAWY PROGRAMOWANIA Ćwiczenia 2 DZIAAANIA NA WEKTORACH I MACIERZACH WydziaÅ‚ Inżynierii LÄ…dowej i Åšrodowiska Katedra Mechaniki Budowli i Mostów copyleft by Marcin Kujawa & Aukasz Smakosz Tworzenie skryptów ·ð Skrypt jest plikiem tekstowym zawierajÄ…cym zestaw poleceÅ„ Matlaba. ·ð Pliki skryptowe majÄ… rozszerzenie .m. ·ð W ich nazwach nie należy używać polskich znaków oraz spacji, nie mogÄ… rozpoczynać siÄ™ liczbÄ…, nie mogÄ… pokrywać siÄ™ z nazwami funkcji Matlaba ·ð DostÄ™p do edytora Matlaba jest możliwy przez File > New > Script, przez odpowiedniÄ… ikonÄ™ lub skrót CTRL+N. Opisywanie skryptów ·ð Każdy skrypt powinien mieć krótki opis zawartoÅ›ci i dziaÅ‚ania. Opis umieszcza siÄ™ za znakiem %. Taki opis pliku nazywamy komentarzem. ·ð Opis pliku można wywoÅ‚ać w Matlabie przy pomocy polecenia help nazwa_skryptu. Za opis pliku traktowane sÄ… pierwsze linie komentarza nieprzerwane liniami innego typu. PrzykÅ‚ad: % To jest opis skryptu test.m clear, clc % czyszczenie zmiennych i ekranu a=2; % opis wybranej komendy MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 2/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów DostÄ™p do elementów macierzy Polecenie: A(:,j) wybiera j-tÄ… kolumnÄ™ z macierzy A. j Polecenie: A(i,:) i wybiera i-ty wiersz z macierzy A. Polecenie: A(i,a:b) a b i wybiera elementy od a do b z macierzy A z wiersza i. Polecenie: A(:) wybiera całą macierz w postaci wektora kolumnowego. b Polecenie: A(a:b) a b a wybiera elementy macierzy A od elementu i do j. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 3/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów OdwoÅ‚ania do podmacierzy PrzykÅ‚ad: Stwórz macierz A i zapisz zaznaczone podmacierze jako B i C. Odczytaj wyróżnione elementy i zapisz je jako b i c. 3 7 11 9 5 1 1 23 4 5 6 clear, clc A=[-9:4:11; 1:6] % definicja macierzy A B=A(1:2,[2 3]) % podmacierz z wierszy od 1 do 2 oraz kolumn 2 i 3 C=A(1,4:6) % podmacierz z wiersza 1 oraz kolumn od 4 do 6 b=B(2,1) % element znajdujÄ…cy siÄ™ w 2 wierszu i 1 kolumnie c=C(1,2) % element znajdujÄ…cy siÄ™ w 1 wierszu i 2 kolumnie MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 4/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów Usuwanie wektora z macierzy i nadpisywanie elementów PrzykÅ‚ad: Stwórz macierz A, wyróżnione elementy zastÄ…p liczbÄ… a = sin(15°), nastÄ™pnie usuÅ„ z niej zaznaczone wektory. 1 0 0
0 1 0 0 0 1 clear, clc A=eye(3) % generacja macierzy jednostkowej A a=sin(pi/12) % definicja zmiennej a; kat w radianach A(3,1)=a % nadpisanie elementu w 3 wierszu i 1 kolumnie A(2,3)=a % nadpisanie elementu w 2 wierszu i 3 kolumnie A(1,:)=[] % usuniecie 1 wiersza A(:,2)=[] % usuniecie 2 kolumny MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 5/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów Generacja wektorów i alokacja pamiÄ™ci Ze wzglÄ™du na czas wykonywania operacji dobrze jest przed przystÄ…pieniem do obliczeÅ„ stworzyć odpowiednie macierze do przechowywania danych. Polecenie: x(5)=0 wygeneruje wektor poziomy 5 elementowy wypeÅ‚niony zerami. Polecenie: x(5,7)=0 lub x=zeros(5,7) wygeneruje macierz 5x7 wypeÅ‚niona zerami. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 6/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Wygeneruj zerowÄ… macierz A o wymiarach 3 × 5, nastÄ™pnie kolejne jej wiersze zastÄ…p wektorami x, y i z:
1 3 5 7 9
4 2 0 2 4
1 1 1 1 1 UsuÅ„ skrajne kolumny i zapisz wyraz znajdujÄ…cy siÄ™ na Å›rodku macierzy jako c. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 7/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH clear, clc % generacja macierzy zerowej i wektorow x, y, z A=zeros(3,5); x=[1:2:9]; y=[-4:2:4]; z=ones(1,5); A(1,:)=x % zastÄ…pienie wiersza 1 wektorem x A(2,:)=y % zastÄ…pienie wiersza 2 wektorem y A(3,:)=z % zastÄ…pienie wiersza 3 wektorem z A(:,[1 5])=[] % usuniecie 1 i 5 kolumny c=A(2,2) % odczytanie wyrazu z 2 wiersza i 2 kolumny MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 8/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów Operacje na elementach wektora Jeżeli x jest macierzÄ… to operacje odnoszÄ… siÄ™ do poszczególnych kolumn macierzy. Inne przydatne funkcje MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 9/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Stwórz macierz B takÄ…, że: ·ð skok we wszystkich wierszach wynosi 3, ·ð pierwszy wiersz zaczyna siÄ™ od 1 i koÅ„czy na 7, ·ð pierwsza kolumna zaczyna siÄ™ od 1 i koÅ„czy na 9 ze skokiem co 2. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 10/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Stwórz macierz B takÄ…, że: ·ð skok we wszystkich wierszach wynosi 3, ·ð pierwszy wiersz zaczyna siÄ™ od 1 i koÅ„czy na 7, ·ð pierwsza kolumna zaczyna siÄ™ od 1 i koÅ„czy na 9 ze skokiem co 2. B=[1:3:7; 3:3:9; 5:3:11; 7:3:13; 9:3:15] MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 11/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów PrzykÅ‚ad: ·ð Wyznacz Å›redniÄ… arytmetycznÄ… ze wszystkich elementów macierzy B. ·ð Odczytaj wymiary macierzy B za pomocÄ… funkcji size i przypisz je kolejno zmiennym m i n. ·ð Wyznacz maksymalnÄ… wartość m-tego wiersza i minimalnÄ… wartość n-tej kolumny macierzy B. b1=mean(B) % wektor srednich z kolumn mac. B b2=mean(b1) % srednia arytmetyczna z mac. B [m,n]=size(B); % odczytanie wymiarow B i przypisanie ich wartosci zmiennym m (l.wierszy) oraz n(l.kolumn) m1=B(m,:) % zapisanie ostatniego wiersza jako m1 m2=max (m1) % max m-tego wiersza n1=B(:,n) % zapisanie ostatniej kolumny jako n1 n2=min(n1) % min n-tej kolumny MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 12/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów DziaÅ‚ania macierzowe i tablicowe PrzykÅ‚ad: Zdefiniuj macierz A i wektor x nastÄ™pnie podnieÅ› je do drugiej potÄ™gi wykorzystujÄ…c operacje tablicowe i macierzowe. Porównaj wyniki. 2 1 3 A=[2 -1 3;exp(2) 5 0;6 0 2*pi]
50 x=[-2:2] 60 2 at=A.^2, xt=x.^2 % op. tablicowe
2 1 0 1 2 am=A^2, xm=x^2 % op. macierzowe MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 13/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów A = x = 2.0000 -1.0000 3.0000 -2 -1 0 1 2 7.3891 5.0000 0 6.0000 0 6.2832 PotÄ™gowanie tablicowe at = xt = 4.0000 1.0000 9.0000 4 1 0 1 4 54.5982 25.0000 0 36.0000 0 39.4784 Każdy z elementów analizowanych macierzy zostaÅ‚ podniesiony do drugiej potÄ™gi. ·ð Operacje tablicowe wykonywane sÄ… na odpowiadajÄ…cych sobie elementach danych macierzy (tj. na komórkach o tych samych współrzÄ™dnych). ·ð Operacje tablicowe można przeprowadzać wyłącznie na macierzach o jednakowych wymiarach. ·ð Symbolem operacji tablicowej jest kropka umieszczona przed znakiem potÄ™gowania lub mnożenia. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 14/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów A = x = 2.0000 -1.0000 3.0000 -2 -1 0 1 2 7.3891 5.0000 0 6.0000 0 6.2832 PotÄ™gowanie macierzowe am = xm = 14.6109 -7.0000 24.8496 niemożliwe 51.7234 17.6109 22.1672 49.6991 -6.0000 57.4784 PotÄ™gowanie macierzowe A^2 jest jednoznaczne z operacjÄ… mnożenia macierzowego A*A. Operacja x^2 byÅ‚a niemożliwa do realizacji, gdyż nie da siÄ™ wykonać mnożenia macierzowego x*x (wymiary mnożonych macierzy nie sÄ… zgodne). ·ð Operacje mnożenia i potÄ™gowania macierzowego przebiegajÄ… wg charakterystycznego schematu i wymagajÄ…, żeby liczba kolumn pierwszego skÅ‚adnika iloczynu byÅ‚a równa liczbie wierszy drugiego skÅ‚adnika. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 15/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH ·ð Zdefiniuj macierze A i B, nastÄ™pnie oblicz ich sumÄ™ i różnicÄ™. ·ð Dodaj do elementów 1. wiersza macierzy B liczbÄ™ 2. ·ð Wykonaj mnożenie macierzy A i B (wybierz typ mnożenia). 2 3 4 , 5 5 5 4 3 2 5 5 5 MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 16/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH ·ð Zdefiniuj macierze A i B, nastÄ™pnie oblicz ich sumÄ™ i różnicÄ™. ·ð Dodaj do elementów 1. wiersza macierzy B liczbÄ™ 2. ·ð Wykonaj mnożenie macierzy A i B (wybierz typ mnożenia). 2 3 4 , 5 5 5 4 3 2 5 5 5 clear, clc A=[2:4;4:-1:2] % generacja automatyczna B=ones(2,3)*5 % mnozenie mac. przez skalar sum=A+B, roz=A-B % suma i roznica mac. A i B B(1,:)=B(1,:)+2 % dodanie 2 do 1 wiersza mac. B mn=A.*B % mozliwe tylko mn. tabl. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 17/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH ·ð Zbuduj wektor x, którego elementy rozpoczynajÄ… siÄ™ od -5 i koÅ„czÄ… na 5 ze skokiem co 0.1. ·ð Stwórz wektor y, bÄ™dÄ…cy zbiorem wartoÅ›ci funkcji y=x2*sin(x), odpowiadajÄ…cych elementom wektora x. ·ð Stwórz macierz F, której wierszami sÄ… kolejno wektory x i y. MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 18/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH ·ð Zbuduj wektor x, którego elementy rozpoczynajÄ… siÄ™ od -5 i koÅ„czÄ… na 5 ze skokiem co 0.1. ·ð Stwórz wektor y, bÄ™dÄ…cy zbiorem wartoÅ›ci funkcji y=x2*sin(x), odpowiadajÄ…cych elementom wektora x. ·ð Stwórz macierz F, której wierszami sÄ… kolejno wektory x i y. clear, clc x=[-2:0.1:2] % generacja wektora x y=x.^2.*sin(x) % gen. wektora y, OPERACJE TABLICOWE F=[x;y] % zlozenie macierzy F, x i y maja identyczne wymiary MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 19/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów Odwracanie i transpozycja macierzy PrzykÅ‚ad: Zdefiniuj macierze A i B, a nastÄ™pnie wyznacz macierze do nich odwrotne oraz transponowane. 11 12 13 11 12 13 , 21 0 23 21 22 23 31 32 33 31 32 33 A=[11:13;21 0 23;31:33] trans_a=A % transpozycja macierzy odw_a=inv(A), odw_a= A^(-1) % odwracanie macierzy B=[11:13;21:23;31:33] trans_b=B % transpozycja macierzy odw_b=inv(B) % odwracanie macierzy MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 20/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Zdefiniuj wektory x i y, a nastÄ™pnie oblicz ich iloczyn tablicowy oraz wektorowy. Oblicz sumÄ™ kwadratów elementów wektora y.
1 3 5 7 9
4 2 0 2 4 MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 21/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Zdefiniuj wektory x i y, a nastÄ™pnie oblicz ich iloczyn tablicowy oraz wektorowy. Oblicz sumÄ™ kwadratów elementów wektora y.
1 3 5 7 9
4 2 0 2 4 clear, clc x=[1:2:9] y=[-6:3:6] xy_tab=x.*y % mnozenie tablicowe xy_mac=x*y % mnozenie mac 1x5 * 5x1 xy_mac2=x *y % mnozenie mac 5x1 * 1x5 y_kwd=y*y % suma kwadratow MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 22/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów Algebra liniowa det(A) obliczanie wyznacznika macierzy A eig(A) obliczanie wartoÅ›ci wÅ‚asnych macierzy A obliczanie współczynników wielomianu charakterystycznego poly(A) macierzy A rank(A) obliczanie rzÄ™du macierzy A wyznaczanie elementów leżących na głównej przekÄ…tnej diag(A) macierzy A PrzykÅ‚ad: Wykorzystaj powyższe funkcje na macierzy A postaci: 2 1 3
50 60 2 MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 23/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Rozwiąż ukÅ‚ad równaÅ„ liniowych: 3 1 1
1 3 3 2 2 2 Uwaga: ukÅ‚ad można zapisać w postaci macierzowej A*x = B, którego rozwiÄ…zaniem jest x = A-1*B MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 24/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów ZADANIE DO WYKONANIA NA ZAJCIACH Rozwiąż ukÅ‚ad równaÅ„ liniowych: 3 1 1
1 3 3 2 2 2 Uwaga: ukÅ‚ad można zapisać w postaci macierzowej A*x = B, którego rozwiÄ…zaniem jest x = A-1*B clear, clc A=[1 3 0; 1/2 1 -3; 0 2 1] % macierz wspolczynnikow 3x3 B=[1 3 2]' % wektor kolumnowy wyrazow wolnych 3x1 x=inv(A)*B % wektor kolumnowy niewiadomych 3x3 * 3x1 MATLAB ·ð 2. DziaÅ‚ania na wektorach i macierzach ·ð 2013/2014 25/25 Marcin Kujawa ·ð Aukasz Smakosz ·ð Politechnika GdaÅ„ska ·ð WILiÅš ·ð Katedra Mechaniki Budowli i Mostów