Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


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

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

2 TABLICE Tworzenie tablicy wektor wierszowy
M1=[ ] 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]

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

4 Podobnie w tablicach wielowymiarowych
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! 1 2 3 4 5 10 11 12 13 14 15

5 x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa
Można wygenerować tablicę z wartościami funkcji: x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa M=[x; sind(x)] 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 0.0017 0.0035 0.0052 0.0070 0.0087 0.0105 0.0122 0.0140 0.0157 0.0175 x= [1 :10] M=[x; log(x)] 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972 2.3026

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

7 Operacje na tablicach (macierzach)
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!

8 Operatory "kropkowe" dla tablic 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

9 * = .* = ./ = .^ = Proste przykłady operacji macierzowych:
1 2 3 4 2 3 8 18 * = sumy iloczynów 1 3 4 2 3 1 2 6 12 1 .* = 1 3 4 2 16 1 0.5 1.5 0.25 1 ./ = 2 3 4 6 2 3 1 4 9 64 6 .^ =

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

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

12 R=roots ([1 3 0 -4]) funkcja roots(M) instrukcja:
Wyznaczanie pierwiastków równania n-tego stopnia funkcja roots(M) - gdzie M jest wektorem współczynników przy kolejnych potęgach np. x3 + 3x2 –4=0 instrukcja: R=roots ([ ]) 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!

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

14 sort (A, i, typ) - sortowanie
i: 1 - kolumny lub 2 - wiersze typ: 'ascend' 'descend' domyślne wartości: 1 i 'ascend' m = sortowanie kolumnami m1 = sortowanie wierszami m2 = sortowanie wierszami malejąco m3 = 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')

15 Przykład >> M=rand(3) M = 0.3404 0.7513 0.6991
>> size(M) ans = >>

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

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

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

19 Wykres funkcji podanej jako parametr tekstowy
2 sposób: Funkcja fplot 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

20 Wykorzystujemy funkcję plot3(y,z,x)
Wykresy 3D 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);

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

22 Piszemy m-plik: 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) 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)

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

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

26 Można też tak zapisać tablicę w pliku
nazwa pliku typ:zapis (write) 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); zamknięcie pliku zawartość pliku tab.txt

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

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

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

30 Przykład (uzależnienie licznika "pętli wewnętrznej):
for i= 1:5, for j = 1:i, a(i , j) = i*j; end disp(a)

31 Przykład (sumowanie elementów w tablicy dwuwymiarowej):
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)

32 Przykład (zliczanie elementów dodatnich w tablicy dwuwymiarowej):
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)

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


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

Podobne prezentacje


Reklamy Google