STEINHAUS HUGO CENTER W R O C L AW Pakiety Matematyczne MAT1351W dr in». Marek Teuerle Centrum im. Hugona Steinhausa Politechnika Wrocªawska Wrocªaw, 05 marca 2019
Kilka uwag o zmiennoprzecinkowej reprezentacji liczb R Przykªad: 8 bitowa reprezentacja w systemie dwójkowym-(s)mmmm(s)cc, gdzie s: 0-dodatnie, 1-ujemne : x = ((1)1110(0)10) 2 liczba ujemna mantysa zapisana jako uªamek M = 1 2 1 + 1 2 2 + 1 2 3 + 0 2 4 = 7/8 cecha dodatnia zapisana jako liczba caªkowita (dodatnia) C = 1 2 1 + 0 2 0 = 2 x = ( 7/8 2 +2 ) 10 = ( 3.5) 10
Kilka uwag o zmiennoprzecinkowej reprezentacji liczb R Wspóªczesne komputery u»ywaj zapisu liczb w bardziej skomplikowany sposób -> reguluje to norma IEEE 754 Liczba bitów przeznaczonych na cech i mantys jest ograniczona Zatem nie ka»d liczb mo»na zapisa w danym systemie liczbowym => bª dy reprezentacji. Pewne liczby rzeczywiste traktowane jak jedna liczba zmiennoprzecinkowa Epsilon maszynowy - najmniejsza liczba nieujemna, której dodanie do jedno±ci daje wynik nierówny 1: min ɛ : 1 + ɛ 1
Bª dy numeryczne Bª d bezwzgl dny: = A a, Bª d wzgl dny: = A a A, dla A 0, gdzie A warto± dokªadna, a warto± przybli»ona numerycznie.
Bª dy numeryczne Bª dy wej±ciowe: wynikaj ce z uproszcze«przyj tego modelu matematycznego, zwi zane z przyj tym algorytmem numerycznym, danych wej±ciowych algorytmu. Bª dy obci cia (np. wielko±ci b d ce granicami). Bª dy zaokr gle«(np. reprezentacja liczb).
MATLAB operacje na macierzach MATLAB zostaª stworzony do efektywnych oblicze«macierzowych. Jak deniowa macierze? >> A = [1, 2, 3, 4; 5, 6, 7, 8]; >> A = [1 2 3 4;5 6 7 8]; >> A = [1:4; 5:8]; elementy macierzy odlegªe o 1, >> A = [1:krok:4; 5:krok:8]; pozwala sterowa odlegªo±ci kolejnych liczb: krok, >> A=[]; macierz pusta.
MATLAB operacje na macierzach Jak deniowa macierze? Budowanie macierzy z istniej cych ju» macierzy: >> A = [1 2 3 4;5 6 7 8]; >> B = [9:12]; >> C = [101, 102, 103]; nowa macierz >> D = [[A;B] C']; macierz C' to macierz C transponowana.
MATLAB operacje na macierzach Tworzenie macierzy funkcje wbudowane: eye(n) - macierz jednostkowa kwadratowa wymiaru n, eye(n,m) - macierz rozmiaru n*m z jedynkami na gªównej przek tnej, pozostaªe elemnty to zera, ones(n,m) - macierz rozmiaru n*m skªadaj ca si z jedynek, zeros(n,m) - macierz rozmiaru n*m skªadaj ca si z zer, rand(n,m) - macierz n*m liczb pseudolosowych z rozkªadu jednostajnego na [0, 1].
MATLAB operacje na macierzach Tworzenie macierzy funkcje wbudowane: hadamard - macierz Hadamarda, hilb - macierz Hilberta, invhilb - odwrotna macierz Hilberta, magic - kwadrat magiczny, pascal - macierz Pascala, toeplitz - macierz Toeplitza, vander - macierz Vandermondea, gallery - ró»ne macierz testowe.
MATLAB operacje na macierzach Dost p do elem. macierzy (podmacierzy): >> A(1:3,4:end) gdzie 1:3 oznacza wybór wierszy od 1,2,3, 3:end oznacza wybór kolumn 3,4,...,end Kasowanie wiersza/kolumny macierzy >> A(1,:)=[] ; A(:,1)=[];
MATLAB operacje na macierzach Rozmiary macierzy: >> [a b]=size(a); % Komentarz: funkcja % zwraca % dwa argumenty Dªugo± wektora A: >>A=[1:10]; length(a)
MATLAB operacje na macierzach Operatory macierzowe: +, -, *, / - dzielenie prawostronne, \ - dzielenie lewostronne, = - podstawienie, ^ - pot gowanie (np. X 3 = X X X ), ' - transpozycja.
MATLAB operacje na macierzach Operatory tablicowe: operatory dziaªaj na elementach macierzy.* - mno»enie,.^ - pot gowanie,./ - dzielenie prawostronne,.\ - dzielenie lewostronne, np. [1 2 3].*[2 0 1]
MATLAB operacje na macierzach Funkcje matematyczne: trygonometryczne: hiperboliczne: cyklometryczne: sin(z), cos(z), tan(z), cot(z) sinh(z), cosh(z), tanh(z), coth(z) asin(z), acos(z), atan(z), cot(z)
MATLAB operacje na macierzach Funkcje matematyczne (równie» dla liczb zespolonych): exp(z) - eksponenta liczby z, log(z) - logarytm naturalny liczby z, log10(z) - logarytm dziesi tny liczby z, abs(z) - moduª z, angle(z) - argument gªówny liczby z, real(z),imag(z) - cz ± rzeczywista,urojona liczby z.
MATLAB operacje na macierzach Funkcje matematyczne (r - l.rzeczywista, z - l.zespolona, ): ceil(z) - 'sut' z, floor(z) - 'podªoga' z, round(z) - zaokr glenie matematyczne z, fix(z) - zaok/ do najbli»szej caªkowitej, bli»szej 0 z, lcm(r1,r2) - najmniejsza wspólna wielokrotno± r1,r2, rem(r1,r2) - reszta z dzielenia r1 przez r2, sign(r) - znak r, sqrt(z) - pierwiastek kwadratowy z.
MATLAB operacje na macierzach Modykacje macierzy: flipdim - 'wywini cia macierzy wzdªu» wybranego wymiaru', np. A=[1 2;3 4;5 6];, >>flipdim(a,1) [5 6;3 4;1 2]; >>flipdim(a,2) [2 1;4 3;6 5]; flipdim(a,1) równowa»ne flipud(a), flipdim(a,2) równowa»ne fliplr(a),
MATLAB operacje na macierzach Modykacje macierzy: reshape(a,n,m) - tworzy macierz n*m skªadaj ca si elementów macierzy A (elementy z A wybierane kolumnowo), repmat(a,n,m) - tworzy macierz, która skªada si z n*m replikacji macierzy A, rot90 - obrót macierzy o 90 o, tril - tworzy macierz trójk tn doln, triu - tworzy macierz trójk tn górn.
MATLAB porównania, operacje logiczne MATLAB nie ma dedykowanego typu danych do obsªugi danych logicznych, binarnych,, u»ywane s macierze zero-jedynkowe', operatory porówna«, == - czy równe, ~= - czy ró»ne, <,<=,>,>=.
MATLAB operacje logiczne operatory logiczne: & - logiczne 'and', - logiczne 'or', ~ - logiczne 'not' xor - logiczne 'exclusive or' kolejno± wykonywania zªo»onych warunków logicznych: od lewej do prawej, nawiasy pozwalaj stworzy inn ni» domy±lna kolejno±.
MATLAB skrypty i m- funkcje MATLAB pozwala na grupowanie instrukcji; czyli tworzenia skryptów. W MATLABie mo»na te» tworzy wªasne funkcje pisz c instrukcje w j zyku skryptowym.
MATLAB skrypty Nie posiadaj argumentów wej±ciowych i wyj±ciowych. Mo»na w nich zapisa zªo»one sekwencje polece«matlab. Šatwiejszy ni» w oknie polece«zapis p tli, instrukcji warunkowych. Skrypty operuj na danych w przestrzeni roboczej (m. in. tworz zmienne, odnosz si do zmiennych zapisanych w pami ci). Mo»liwo± debuggowania.
MATLAB m-funkcje Mog posiada argumenty wej±ciowe i wyj±ciowe. Zmienne tworzone tylko lokalnie (chyba,»e wymuszone inaczej). Šatwiejszy ni» w oknie polece«zapis p tli, instrukcji warunkowych. Pozwalaj na rozszerzanie MATLABa o wªasne rozwi zania. Mo»liwo± debuggowania.
MATLAB przykªad skryptu Otwieramy okno edytora (metoda klikana lub >>edit nazwa_skryptu) i wpisujemy a=[1:100]; b=a.^-1;%komentarz programisty %b=a;%linia nieaktywna c=a+b/2; Zapisujemy skrypt (CTRL+s). Aby uruchomi skrypt w oknie polece«wpisujemy >>nazwa_skryptu Aby uruchomi skrypt w oknie polece«wpisujemy CTRL+r - komentuje wszystkie zaznaczone linie kodu, CTRL+t - usuwa komentarze dla wszystkich zaznaczonych linii kodu.
MATLAB przykªad m-funkcji Otwieramy okno edytora (metoda klikana lub >>edit testowa_funkcja) i deklarujemy funkcj : function [y x]=testowa_funkcja(x,a,b,c) %ten komentarz wy±wietli si po wpisaniu %w oknie polece«: help funkcja_testowa %komentarz niewy±wietlany y=a*x.^2+b*x+c;
MATLAB przykªad m-funkcji Zapisujemy m-funkcj (CTRL+s) uwaga plik musi mie tak sam nazw jak funkcja, tj. tak naprawd uruchamiamy skrypt o nazwie testowa_funkcja w oknie polece«wpisujemy np.: >>testowa_funkcja(1:4,1,0,0) w celu przegl dni cia kodu z poziomu konsoli: >>type testowa_funkcja
MATLAB przykªad m-funkcji W pliku z zapisan funkcj mo»emy stworzy funkcje pomocnicze (niedost pn poza skryptem): y=a*x.^2+b*x+c; z=a*pomocnicza(x)+b*x+c; function y=pomocnicza(x) y=x.^2;
MATLAB instrukcje warunkowe: if... If (warunek)...(instrukcje) elseif (warunek)...(instrukcje) else...(instrukcje) end
MATLAB p tle: 'for', 'while' n=ilosc_powtorzen; for k=1:n...(instrukcje) end while (warunek)...(instrukcje) end
MATLAB 'switch' switch zmienna case {wartosc_zmiennej1, wartosc_zmiennej2}...(instrukcje) case wartosc_zmiennej...(instrukcje) otherwise...(instrukcje) end