Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Matlab Tablice i ich zastosowania Wykresy Iteracja Wykład 2 MOiPP 1.

Podobne prezentacje


Prezentacja na temat: "Matlab Tablice i ich zastosowania Wykresy Iteracja Wykład 2 MOiPP 1."— Zapis prezentacji:

1 Matlab Tablice i ich zastosowania Wykresy Iteracja Wykład 2 MOiPP 1

2 TABLICE Tworzenie tablicy wektor wierszowy M1=[1 2 3 4 5] lub M1=[1, 2, 3, 4, 5] wektor kolumnowy M2=[1; 2; 3; 4; 5] tablica dwuwymiarowa M3 = [1 2 3; 2 1 1; 1 0 0] 2

3 x=0:2:10 %generowanie wektora od 0 do 10 co 2 % wart_pocz:krok:wart_koncowa Metoda generowania tablicy o elementach ciągu arytmetycznego x=0:10 %generowanie wektora od 0 do 10 co 1 % wart_pocz:wart_koncowa 0246810 0123456789 x= 0:0.1:2%dozwolona wartość dziesiętna kroku 3 Można pominąć krok:

4 M = [0:5 ; 10:15]%wartość początkowa: wartość końcowa (krok=1) ale UWAGA! M = [0:5; 10:17] błąd arguments dimensions are not consistent NIE ZGADZAJĄ SIĘ WYMIARY! 012345 101112131415 4 Podobnie w tablicach wielowymiarowych

5 x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa M=[x; sind(x)] 00.10000.20000.30000.40000.50000.60000.70000.80000.90001.0000 00.00170.00350.00520.00700.00870.01050.01220.01400.01570.0175 5 x= [1 :10] M=[x; log(x)] 1.00002.00003.00004.00005.00006.00007.00008.00009.000010.0000 00.69311.09861.38631.60941.79181.94592.07942.19722.3026 Można wygenerować tablicę z wartościami funkcji:

6 M1=[ 1 3 5 -11 7] disp(M1(3)) wyświetlony zostanie trzeci element tablicy Dostęp do elementu tablicy Można elementy zdefiniowanej tablicy wykorzystać w wyrażeniach, np: M2 = [1 2 3; 2 1 1.5; 1 0 0] disp(M2(2,3)) y= M(2,2)^2 6 tablica dwuwymiarowa

7 m4=[1 2 34 6;6 8/2 4 -2; 2 -5 56 6; 6 72 0.2 12] m4t = m4' %macierz sprzężona – transponowana m4o = m4^-1 %macierz odwrotna ( macierz kwadratowa!) mo= inv(m) % także obliczenie macierzy odwrotnej! s=m4*m4o %sprawdzenie - macierz jednostkowa w= det (m4) %wyznacznik, uwaga:macierz kwadratowa! Operacje na tablicach (macierzach) 7

8 jeśli A i B są tablicami C=A*B to iloczyn macierzowy – kiedy dozwolony? - gdy macierz A ma tyle kolumn ile macierz B wierszy D=A.*B to iloczyn elementowy – każdy element macierzy D powstaje z iloczynu odpowiednich elementów macierzy A i B – dozwolony gdy A i B mają te same rozmiary podobnie./.^ (dzielenie i potęgowanie elementowe) A^2 % tożsame z A*A (uwaga:A musi być kwadratowa) A.^2 % każdy element do kwadratu – A dowolne Operatory "kropkowe" dla tablic 8

9 12 34 8 18 2 3 13 41 22 31 26 121 *= sumy iloczynów.* = 13 41 22 161 0.51.5 0.251./ = 23 46 22 31 49 646.^ = Proste przykłady operacji macierzowych: 9

10 2x + 3y – 4z = 5 x + y – z = 3,5 –2,5y – z = 2 Rozwiązanie w Matlabie (m-plik): A = [2 3 -4 ; 1 1 -1 ; 0 -2.5 -1] B = [ 5 ; 3.5 ; 2] X= A^(-1)*Bwektor rozwiązań A*X% wynikiem powinien być wektor wyrazów wolnych B Rozwiązywanie układu równań liniowych Wybrane metody wykorzystania tablic 10

11 …sprawdzenie rozwiązań: s1=A(1,1)*X(1)+ A(1,2)*X(2)+A(1,3)*X(3)-B(1) …. powinno dać wartość s1=0 podobnie: s2=A(2,1)*X(1)+ A(2,2)*X(2)+A(2,3)*X(3)-B(2) s3=A(3,1)*X(1)+ A(3,2)*X(2)+A(3,3)*X(3)-B(3) Uwaga: Rozwiązania istnieją jeśli równania układu nie są liniowo zależne 11

12 Wyznaczanie pierwiastków równania n-tego stopnia funkcja roots(M) - gdzie M jest wektorem współczynników przy kolejnych potęgach np. x 3 + 3x 2 –4 =0 instrukcja: R=roots ([1 3 0 -4]) wyznacza pierwiastki równania R – będzie wektorem rozwiązań - jeśli równanie rzędu N to mamy N rozwiązań - rozwiązaniami mogą być liczby zespolone! 12

13 Użyteczne funkcje tablicowe rand ( n) - losowo generowana tablica kwadratowa nxn rand(n,m)- losowo generowana tablica kwadratowa nxm sum (A)- wektor sum elementów w kolumnach macierzy A sum(sum(A)) - suma wszystkich elementów macierzy 2-wymiarowej max(A)- wektor elementów maksymalnych w kolumnach max(max(A)) - element największy w macierzy dwuwymiarowej min(A)- wektor elementów minimalnych w kolumnach macierzy A min(min(A)) - element najmniejszy w macierzy dwuwymiarowej ndims(A) - ile wymiarów macierzy numel(A) - liczba elementów macierzy reshape(A,n,m) - rekonfiguracja macierzy size(A) - rozmiar macierzy length(A) - największy rozmiar 13

14 sort (A, i, typ) - sortowanie i: 1 - kolumny lub 2 - wiersze typ: 'ascend' 'descend' domyślne wartości: 1 i 'ascend' m = 3 5 8 10 8 7 10 3 5 3 7 3 5 1 8 2 6 7 1 2 1 2 9 3 9 sortowanie kolumnami m1 = 1 2 3 1 2 2 3 5 1 3 3 5 7 3 8 7 6 8 5 8 7 10 9 10 9 sortowanie wierszami m2 = 3 5 8 8 10 3 3 5 7 10 1 3 5 7 8 1 2 2 6 7 1 2 3 9 9 sortowanie wierszami malejąco m3 = 10 8 8 5 3 10 7 5 3 3 8 7 5 3 1 7 6 2 2 1 9 9 3 2 1 clc m=round(10*rand(5)) disp('sortowanie kolumnami') m1=sort(m,1) disp('sortowanie wierszami') m2=sort(m,2) disp('sortowanie wierszami malejąco') m3=sort(m,2,'descend') 14

15 >> M=rand(3) M = 0.3404 0.7513 0.6991 0.5853 0.2551 0.8909 0.2238 0.5060 0.9593 >> size(M) ans = 3 3 >> Przykład 15

16 Możliwe jest także tworzenie tzw. tablic komórkowych (struktur) >>A = {[1 8 5], 'Jakiś tekst'; 2+4i, 1:2:7} Po co? Umożliwiają umieszczenie różnych typów danych w komórkach (tablice heterogeniczne) – teksty, dane liczbowe, tablice >> T= A{1} % pierwsza składowa tablicy A T = 1 8 5 A = [1x3 double] 'Jakiś tekst' [2.0000 + 4.0000i] [1x4 double] 16

17 WYKRESY 2-wymiarowe x=0:10 %generowanie wektora co 1 % wart_pocz:wart_koncowa y=[5.1 1.1 -2 -3 4.2 5.5 4.3 3.1 4.5 5.9 4.9] z=[0 2 3 3 5 4 3 4 5 4 9] %trzeci wektor title('wykres')%dodanie tytułu plot(x,y) %rysowanie wykresu plot(x,y,'r',x, z,'k') %r – red k- black 1 sposób: Funkcja plot Wymaga utworzenia dwóch wektorów o tej samej liczbie elementów 17

18 x=0:90%generowanie wektora co 1 y=sin(pi*x/180) %wektor y plot(x,y),grid%wykres z siatką Przykłady wykresów funkcji x=0:pi/50:6*pi y=cos(2*x)./sqrt(x+1) plot(x,y) x = - 9:1:9 z = x.^2 plot(x, z) Uwaga: zapis kropkowy elementowe dzielenie(mnożenie wektorów) 18

19 Wykres funkcji podanej jako parametr tekstowy jedna krzywa: fplot('sin(x*x)/x',[0 4*pi]) punkt dzielenia przez 0 nie jest rysowany - ostrzeżenie dwie krzywe: fplot('[sin(x*x)/x cos(x)]',[0.01 4*pi]) Uwaga: zamiast x można użyć innej, dowolnej nazwy zmiennej niezależnej 2 sposób: Funkcja fplot 19

20 Krzywe 3D Wykorzystujemy funkcję plot3(y,z,x) Przykładowo dla krzywej (helisy) danej równaniami: y=sin(x)z=cos(x) Tworzymy m-plik: t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t); Wykresy 3D 20

21 Korzystamy z funkcji mesh(x,y,z) Dla powierzchni podanej równaniem: z=cos3x siny 21 Wykresy powierzchniowe (3D)

22 clear y = 0:0.01:pi%wektor wierszowy x = y'%wektor kolumnowy! z=cos(3*x) * sin(y)% tablica z jest kwadratowa mesh(x, y, z) Piszemy m-plik: rezultat mnożenia dwóch wektorów: * sin y cos3x

23 Przykładowe funkcje rysujące standardowe wykresy powierzchniowe 3D peaks cylider (średnica) sphere (precyzja) 23

24 clear c = [8 6 4 2;4 -1 4 5] save ('mydata.dat', 'c','-ASCII') clear load ('mydata.dat') disp('Dane z pliku:'); mydata 24 Zapis całej tablicy do pliku ASCII i odczyt z pliku Obsługa plików

25 a=rand(3); b=6; save ('plik.mat', 'a', 'b'); clear a clear b load ('plik.mat') disp(a) disp(b) 25 Zapis danych do pliku typu mat i odczyt z pliku

26 x = 0: 0.1:1; y = [x; exp(x)]; file_id = fopen('tab.txt','wt'); fprintf(file_id,'%6.2f %10.8f \n',x, y); fclose(file_id); Można też tak zapisać tablicę w pliku nazwa pliku typ:zapis (write) zamknięcie pliku 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183 zawartość pliku tab.txt 26

27 Instrukcja iteracyjna (pętla liczona) for zmienna = wartość_pocz : krok: wartość_końcowa instrukcja …. end Schemat iteracji: 27 Jeśli pominięty krok to krok=1 blok instrukcji powtarzanych

28 clear for i= 1:1:10, a(i) = i; %element tablicy disp(a) pause end; Przykłady prostych "pętli": clc for i= 1:10, disp('jakiś tekst') end; 28

29 for i= 1:10, for j = 1:10, a(i, j) = i*j end Przykład ("zagnieżdżanie" iteracji): 29

30 30 for i= 1:5, for j = 1:i, a(i, j) = i*j; end disp(a) Przykład (uzależnienie licznika "pętli wewnętrznej): 1 0 0 0 0 2 4 0 0 0 3 6 9 0 0 4 8 12 16 0 5 10 15 20 25

31 a=0; suma = 0; for i= 1:5, for j = 1:5, a(i, j) = 2*i - 4* j, pause, %zatrzymuje do naciśnięcia klawisza suma=suma+a(i, j); end disp(suma) Przykład (sumowanie elementów w tablicy dwuwymiarowej): 31

32 clear; clc a=rand(5,5)-0.5 %elementy dodatnie i ujemne iledod= 0; for i= 1:1:5, for j = 1:1:5, if a(i, j)>0 iledod=iledod+1; end disp(iledod) Przykład (zliczanie elementów dodatnich w tablicy dwuwymiarowej): 32

33 a=rand(5) disp('Oto 3-ci wiersz') for k= 1:1:5, disp(a(3, k)) end disp('Oto przekątna') for k= 1:1:5, disp(a(k, k)) end Przykład 33


Pobierz ppt "Matlab Tablice i ich zastosowania Wykresy Iteracja Wykład 2 MOiPP 1."

Podobne prezentacje


Reklamy Google