Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wykład 2 MATLAB cd INFORMATYKA 2 MPZI2 sem.4. 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.

Podobne prezentacje


Prezentacja na temat: "Wykład 2 MATLAB cd INFORMATYKA 2 MPZI2 sem.4. 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."— Zapis prezentacji:

1 Wykład 2 MATLAB cd INFORMATYKA 2 MPZI2 sem.4

2 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)*B%wektor rozwiązań (lub X=inv(A)*B) A*X% wynikiem powinien być wektor wyrazów wolnych B Rozwiązywanie układu równań liniowych Wybrane metody wykorzystania macierzy 2

3 …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 3

4 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! 4

5 Użyteczne wbudowane funkcje tablicowe rand ( n) - losowo generowana tablica kwadratowa nxn rand(n,m)- losowo generowana tablica prostokątna 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 5

6 Macierze specjalne ones ( n,m) - macierz nxm wypełniona jedynkami zeros(n,m)- macierz nxm wypełniona zerami magic(n)- wektor sum elementów w kolumnach macierzy A x=magic(4) y1=sum(x) y2=sum(x') x = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 y1 = 34 34 34 34 y2 = 34 34 34 34 także przekątne mają sumę=34

7 M=round(10*rand(3)) w=size(M) M2=reshape(M,1, 9) M2=reshape(M',1, 9) Przykład 7 M = 2 2 5 9 3 4 3 6 8 w = 3 3 M2= 2 9 3 2 3 6 5 4 8 M3 = 2 2 5 9 3 4 3 6 8

8 sort (A, i, typ) 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 m2 = 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') m2=sort(m,2,'descend') 8 Sortowanie

9 Możliwe jest także tworzenie tzw. tablic komórkowych >>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 >> s1= A{1} % pierwsza składowa tablicy A s1 = 1 8 5 A = [1x3 double] 'Jakiś tekst' [2.0000 + 4.0000i] [1x4 double] 9

10 A(2:5) fragment wektora (elementy od 2-go do 5-go) A(2:end) od 2-go do końca A(1:2:end) co drugi elemet począwszy od pierwszego A(3,:) cały trzeci wiersz macierzy A A(3,2:5) trzeci wiersz macierzy A o kolumnach od drugiej do piątej A(:,2)druga kolumna macierzy A diag(A) główna przekątna macierzy A Fragmenty wektorów i macierzy dwuwymiarowych:

11 11 clear,clc M=fix(rand(4)*10) M2=M(2:3,2:3) M3=M(2:end;1:end) M = 7 6 9 7 7 1 3 2 2 1 5 5 6 4 2 6 M2 = 1 3 1 5 M3 = 7 1 3 2 2 1 5 5 6 4 2 6 Przykład

12 Instrukcja iteracyjna („pętla liczona”) for zmienna = wartość_pocz : krok: wartość_końcowa instrukcja1 instrukcja2 ….itd. end Schemat iteracji: 12 Jeśli pominięty krok to krok=1

13 clear for i= 1:1:10, a(i) = i; %generowanie kolejnych elementów wektora disp(a) pause end; Przykłady prostych "pętli": clc for i= 1:10, disp('jakiś tekst') end; 13

14 %generowanie kolejnych elementów wektora for wiersz= 1:10, for kolumna = 1:10, a(wiersz, kolumna) = wiersz*kolumna pause end Przykład ("zagnieżdżanie" iteracji): 14

15 15 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

16 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): 16

17 clear; clc a=rand(5,5)-0.5 %tablica z elementami ujemnymi 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 warunkowe - elementów dodatnich w tablicy dwuwymiarowej): 17

18 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 18

19 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 19

20 x=0:90%generowanie wektora co 1 y=sind(x) %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) 20

21 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 21

22 Sposoby rysowania wielu krzywych fplot('[sin(x*x)/x cos(x)]',[0.01 4*pi]) fplot('sin(x*x)/x',[0.01 4*pi]) hold on fplot('cos(x)',[0.01 4*pi]) subplot(1,2,1) fplot('sin(x*x)/x',[0.01 4*pi]) subplot(1,2,2) fplot('cos(x)',[0.01 4*pi])

23 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 23

24 Piszemy m-plik: 24 clear x = (0:0.01:pi)'%wektor (kolumnowy!) x y = x'%wektor wierszowy y z=cos(3*x) * sin(y)%przeanalizować tablicę z mesh(x, y, z) z=cos3x siny Powierzchnie 3D Korzystamy z funkcji mesh(x,y,z) Dla powierzchni podanej równaniem:

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

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

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

28 Porównywanie kolejnych par elementów sąsiadujących i zamiana miejscami w przypadku niewłaściwej kolejności Sortowanie bąbelkowe 1234.....N N-1 porównańWykonujemy N przebiegów Sortowanie bąbelkowe skrócone Przebiegów wykonujemy N-1 W każdym kolejnym przebiegu liczba analizowanych par jest zmniejszana o 1, a

29 29 9612227664237411 96 2276 6423741112 2 PRZEBIEG 1 PRZEBIEG

30 30 clc clear N=5; G=rand(1,N) %stadardowa funkcja sortująca G1=sort(G) %sortowanie bąbelkowe for k=1:N-1 for m=1:N-k if G(m)>G(m+1) pom=G(m); G(m)=G(m+1); G(m+1)=pom; end disp(G) %pokazuje kolejne wypływające "bąbelki" end %ostatecznie po posortowaniu disp(G) zamiana miejscami gdy elementy w niewłaściwej kolejności M-plik- sortowanie "bąbelkowe"

31 Symbolic ToolBox Dodatkowy zestaw narzędziowy do Matlaba Wymaga odrębnej licencji

32 wymagają zadeklarowania zmiennych symbolicznych – abstrakcyjnych zmiennych nie posiadających wartości. syms zmienna1 zmienna2 itd Służy do tego polecenie syms: 32 Obliczenia symboliczne

33 Symboliczne rozwiązywanie równań – funkcja solve() syms x a f=a - x^2 f = a - x^2 r=solve(f, x) r= a^(1/2) -a^(1/2) Przykład: 33

34 syms a b c d A=[a b; c d] A = [ a, b] [ c, d] B=[e f ; g h] B = [ e, f] [ g, h] Symboliczne operacje macierzowe il_m=A*B il_m = [ a*e+b*g, a*f+b*h] [ c*e+d*g, c*f+d*h] il_e=A.*B il_e = [ a*e, b*f] [ c*g, d*h] ilustracja iloczynów macierzy kwadratowych macierzowy Cauchy'ego elementowy Hadamarda (po współrzędnych) 34

35 Podstawienie wartości do wyrażenia symbolicznego Przykład: syms a b c x % definicja 4 zmiennych symbolicznych y = solve(a*x^2+b*x+c) % rozwiązanie równania względem x y = -1/2*(b-(b^2-4*a*c)^(1/2))/a -1/2*(b+(b^2-4*a*c)^(1/2))/a a=3; b=4; c=1; % Przypisanie wartości liczbowych a b c w = subs(y)% Obliczenie wartości liczbowej dla y w = -0.3333 Obliczenia na wyrażeniach symbolicznyc h - funkcja subs( ) 35

36 Argumentami funkcji są: funkcja, której pochodna będzie liczona, zmienna, względem której pochodna jest liczona (opcjonalnie) rząd pochodnej (opcjonalnie) Obliczanie pochodnych funkcji - funkcja diff( ) diff (F,[zmienna],[N]) 36

37 syms x df=diff(x^2) df = 2*x Przykład: Obliczenie pochodnej funkcjif(x)=x 2 37

38 syms x y z f=(x*y*z)^x+(1/(x*y))^2 dfx=diff(f) dfx = (x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 dfx=diff(f,x) dfx = (x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 dfy=diff(f,y) dfy = (x*y*z)^x*x/y-2/x^2/y^3 dfz=diff(f,z) dfz = (x*y*z)^x*x/z Obliczenie pochodnej funkcji f(x, y, z) według każdej zmiennej (pochodne cząstkowe): Przykład: 38

39 u= (x*y*z)^x*(log(x*y*z)+1)^2+(x*y*z)^x/x+6/x^4/y^2 Obliczenie drugiej pochodnej funkcji: Przykład: f (x, y, z) syms x y z f=(x*y*z)^x+(1/(x*y))^2 u=diff(f,x,2) 39 Można też tak: u=diff(diff(f,x))

40 Całkowanie funkcji - funkcja int ( ) Jej argumentem jest funkcja symboliczna opcjonalnie także zmienna całkowania oraz granice całkowania (dla całek oznaczonych). int(F,[zmienna], {a, b}) Uwaga: domyślnie zmienną symboliczną jest x 40 opcjonalnie

41 syms a x c=int(a+x) % domyślna zmienna to x c = a*x+1/2*x^2 c=int(a+x, a) % teraz zmienna to a cs = 1/2*a^2+a*x Sprawdzenie: s=diff(f) s = a+x Przykład: Obliczenie całki nieoznaczonej funkcji f(a,b)=a+b 41

42 Obliczenie całki oznaczonej: syms x c=int(x^2,1,3) syms x c=int(sin(x),0,pi) Obliczenie całki oznaczonej funkcji sin(x) w przedziale (0, π) c= 26/3 c = 2 42

43 Obliczenie całki oznaczonej: syms x c=int(x^2,1,3) ezplot(x^2,[1 3]) c= double(c) syms x c=int(sin(x),0,pi) Obliczenie całki oznaczonej funkcji sin(x) w przedziale (0,  ) c= 26/3 c = 8.6667 c = 2 43 Całka oznaczona określa pole powierzchni między krzywą opisaną daną funkcją a osią x w określonym przedziale

44 44 Wykresy funkcji symbolicznych ezplot( f, [xmin xmax ymin ymax]) clc syms x f=x^2 ezplot(f,[-10 10]) hold on df=diff(f) ezplot(df,[-10 10]) hold on f0=0*x ezplot(f0,[-10 10])

45 45 ezplot( f ) Domyślne przedziały: x (-2 , 2  ), y (-2 , 2  ) ezplot( 'x-y', [ -5 5 -5 5] ) Mogą być też funkcje uwikłane dwóch zmiennych: ezplot( 'x-y ') domyślny przedział: x (-2 , 2  )

46 46 clc syms x y f=y-sin(x) df=y-diff (f) ezplot (f,[0 2*pi -1 1]) hold on ezplot (df,[0 2*pi -1 1]) Przykład

47 47 Długość krzywej (np. paraboli) clc clear syms x disp('parabola') f=x^2; d=int(sqrt(1+diff(f)^2), -1, 1); %całka oznaczona disp('całkowita długość:') disp(d) disp (double(d)) parabola f= x^2 całkowita długość: 5^(1/2)-1/2*log(-2+5^(1/2)) 2.9579 a b


Pobierz ppt "Wykład 2 MATLAB cd INFORMATYKA 2 MPZI2 sem.4. 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."

Podobne prezentacje


Reklamy Google