MatLab część V 1
Elementarna analiza statystyczna W standardowym pakiecie MatLab-a istnieją jedynie podstawowe funkcje analizy statystycznej. Bardziej zaawansowane znajdują się w pakiecie statystycznym dokupywanym osobno pakiecie (toolbox) Statistics Toolbox Istnieją alternatywne (bezpłatne) pakiety statystyczne, napisane przez użytkowników MatLab-a, np. Stixbox stworzony przez Andersa Holtsberga, dostępny na stronie: http://www.maths.lth.se/matstat/stixbox/ 2
Elementarna analiza statystyczna W pakiecie podstawowym mamy następujące funkcje statystyczne: wartości minimalne i maksymalne: min(x), max(x) wartość średnia: mean(x) odchylenie standardowe próby: std(x) wariancja z próby: var(x) przydatne w konstrukcji funkcji statystycznych sumowanie i mnożenie elementów: sum(x), prod(x) macierz kowariancji: cov(x) macierz wspólczynników korelacji: corrcoef(x) 3
Elementarna analiza statystyczna Analiza częstościowa histogramy: polecenie h=hist(x) zwraca wektor wartości histogramu z próby x na dziesięciu przedziałach polecenie h=hist(x, n) zwraca wektor wartości histogramu z próby x na n przedziałach polecenie h=hist(x, xc) zwraca wektor wartości histogramu z próby x na przedziałach o środkach podanych w wektorze xc polecenie h=histc(x, edges) zwraca wektor wartości histogramu z próby x na przedziałach pomiędzy wartościami podanymi w wektorze edges powyższe polecenia bez podania zmiennej, do której będą zwracane wartości, tworzą wykres słupkowy histogramu. 4
Elementarna analiza statystyczna Analiza częstotliwościowa transformata Fouriera: dyskretna transformata Fouriera: fft(x) odwrotna dyskretna transformata Fouriera: ifft(x) 5
Aproksymacja wielomianowa Aproksymujemy za pomocą wielomianu nieznaną funkcję y=f(x), dla której znamy zbiór par wartości x,y polecenie p=polyfit(x,y,n) zwraca wartości współczynników wielomianu stopnia n dopasowanego do zbioru wartości x,y metodą najmniejszych kwadratów polecenie yi=polyval(p,xi) zwraca wartość yi wielomianu o współczynnikach p dla zadanej wartości xi polecenie r=roots(p) zwraca pierwiastki wielomianu o współczynnikach p polecenie p=poly(r) zwraca współczynniki wielomianu o pierwiastkach r 6
7
8
Interpolacja Interpolujemy nieznane wartości yi dla zadanych xi, dla których znamy zbiór par wartości x,y połączonych nieznaną zależnością y=f(x) składnia: yi=interp1(x,y,xi,'metoda') Wartości parametru 'metoda': 'linear' interpolacja liniowa (domyślna) 'spline' interpolacja za pomocą kawałkami sklejanej funkcji kubicznej (3 stopnia) z zachowaniem krzywizny; tożsame poleceniu yi=spline(x,y,xi) 'cubic' lub 'pchip' interpolacja za pomocą kawałkami sklejanej funkcji kubicznej (3 stopnia) bez zachowania ciągłości krzywizny 'nearest' interpolacja funkcją najbliższego sąsiedztwa 9
'spline' vs 'cubic' Interpolacja 10
11
Metoda najmniejszych kwadratów Dopasowujemy parametry kształtu a1 an funkcji o zadanej postaci analitycznej y=f(x) lub z=f(x,y), mając zadane punkty o współrzędnych X i Y lub X, Y i Z Przypadek, gdy dopasowywana funkcja jest liniowo zależna od parametrów: y=a1*f1(x)+...+an*fn(x) zależność tę możemy przedstawić w postaci: FA=Y gdzie F=[f1(X),...,fn(X)], oraz A=[a1;...;an] można pokazać, że macierz parametrów uzyskujemy za pomocą rachunku: A=(F T F)\F T Y 12
Metoda najmniejszych kwadratów Przypadek ogólny rozwiązujemy za pomocą funkcji fit: składnia: fo=fit(x,y, ft) lub fo=fit([x,y], Z, ft) fo wynik dopasowania w postaci parametrów kształtu (wraz z podaniem przedziału ufności na poziomie 95%) i parametrów dobroci dopasowania X, Y, ewentualnie Z współrzędne zadanych punktów fn sposób dopasowania wyrażony za pomocą jego nazwy, albo za pomocą funkcji fittype 13
Metoda najmniejszych kwadratów fittype przykłady g = fittype('a*x^2+b*x+c') wyszczególnienie zmiennych niezależnych i zależnych: g = fittype('a*t^2+b*t+c','independent','t','dependent','h') funkcja zależna liniowo od parametrów (y=a*cos(x)+b): g = fittype({'cos(x)','1'}) jak wyżej, ale z podaniem nazw parametrów: g = fittype({'cos(x)','1'}, 'coefficients', {'a','b'}) z anonimową definicją funkcji: g = fittype( @(a,b,c,x) a*x.^2+b*x+c ) jak wyżej, ale dla funkcji powierzchniowej: g = fittype( @(a,b,c,d,x,y) a*x.^2+b*x+c*exp(-(y-d).^2), 'independent', {'x', 'y'}, 'dependent', 'z' ) 14
15
Nadokreślony układ równań Układ m równań na n niewiadomych, gdy m > n Postaci: AX=B A jest macierzą o wymiarach: m n B jest macierzą o wymiarach: m 1 X jest wektorem niewiadomych o wymiarach: n 1 Chcemy doprowadzić równanie do postaci: ΩX=Δ gdzie: Ω jest macierzą o wymiarach: n n Δ jest macierzą o wymiarach: n 1 16
Nadokreślony układ równań Uzyskujemy to mnożąc strony przez A T : A T AX=A T B gdzie A T A=Ω oraz A T B=Δ W MatLab-ie można to zrealizować, korzystając z operacji dzielenia: X=A\B uzyskujemy w ten sposób pseudorozwiązanie w sensie rozwiązania metodą najmniejszych kwadratów 17
18
19
20
21
Całkowanie numeryczne Metodą trapezów polecenie z=trapz(x,y) lub z=trapz(y) całkowanie funkcji przybliżonej łamaną o wierzchołkach w punktach o współrzędnych x,y Metodą Simpsona polecenie z=quad('funkcja',a,b) całkowanie funkcji podanej w parametrze 'funkcja', w granicach od a do b 'funkcja' musi być nazwą funkcji tablicowej zdefiniowanej w m-pliku 22
Różniczkowanie numeryczne Pochodną funkcji danej wzorem y=f(x) można interpretować jako iloraz różnicowy zmiennych x i y: f (x)=dy/dx Mając wektory wartości zmiennych x oraz y wystarczy policzyć ich różniczki, a potem podzielić je przez siebie: polecenie dy=diff(y), zwraca różnice pomiędzy kolejnymi wartościami y zamiast wektora wartości y można użyć wyrażenia obliczającego wartości funkcji, np.: dy=diff(sin(x.^2)) Jeżeli przyrosty dx są stałe, to licząc f (x) wystarczy dy podzielić przez skalar równy wartości przyrostu, np.: pochodna=diff(sin(x.^2))/h 23