Matematyka finansowa w pakiecie Matlab - Wykład 1

Transkrypt

Matematyka finansowa w pakiecie Matlab - Wykład 1
Matematyka finansowa w pakiecie Matlab
Wykład 1. Wprowadzenie do Matlaba
Bartosz Ziemkiewicz
Wydział Matematyki i Informatyki UMK
Kurs letni dla studentów studiów zamawianych
na kierunku „Matematyka w ekonomii i finansach”
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
1/71
Rys historyczny
lata 70. XX wieku — powstają LINPACK i EISPACK profesjonalne
biblioteki pozwalające wykonywać obliczenia numeryczne z zakresu
algebry liniowej,
koniec lat 70. XX wieku — Cleve Moler pracownik naukowy
uniwersytetu stanu Nowy Meksyk, pisze program aby ułatwić
swoim studentom korzystanie z tych bibliotek, nadaje mu nazwę
MATLAB (od słów MATrix LABoratory),
1983 r. — Cleve Moler i inżynier Jack Little zakładają firmę
MathWorks, która ma się zająć dalszym rozwojem programu
MATLAB,
w kolejnych latach MATLAB zyskuje coraz większą popularność
wśród naukowców i inżynierów z różnych dziedzin, zaczyna też być
wykorzystywany jako narzędzie edukacyjne, szczególnie do nauki
algebry liniowej i analizy numerycznej,
obecnie nowe wersje MATLAB-a pojawiają się dwa razy do roku,
aktualna wersja to R2010a,
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
2/71
Dostęp do Matlaba
Jest to oprogramowanie komercyjne i to niestety dosyć drogie.
Studenci mogą kupić specjalną wersję edukacyjną MATLAB &
Simulink Student Version.
Aktualne ceny można znaleźć na stronie firmy MathWorks —
www.mathworks.com i stronie firmy ONT — polskiego
dystrybutora Matlaba, www.ont.com.pl
Na Wydziale Matematyki i Informatyki UMK Matlab jest
zainstalowany (wersja R2009a):
w każdym laboratorium (licencja typu ClassRoom, tylko do celów
dydaktycznych),
w pokojach niektórych pracowników,
na maszynie anna,
Darmowe odpowiedniki Matlaba:
GNU Octave do pobrania ze strony www.gnu.org/software/octave/
SciLab do pobrania ze strony www.scilab.org
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
3/71
Czym jest Matlab?
Profesjonalne środowisko do wykonywania wydajnych obliczeń
naukowych i inżynierskich.
Duże możliwości wizualizacji wyników obliczeń — wykresy dwui trójwymiarowe, animacje.
Bogata biblioteka funkcji matematycznych.
Język programowania wysokiego poziomu pozwalający na pisanie
własnych funkcji i wzbogacanie możliwości programu.
Około 50-ciu dodatkowych bibliotek (tzw. toolboxów)
zawierających specjalistyczne funkcje z różnych dziedzin,
w szczególności Financial Toolbox i Financial Derivatives Toolbox
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
4/71
Interfejs Matlaba
W głównym oknie programu znajdują się główne menu programu, pasek narzędzi oraz pulpit na którym umieszczone są okna zawierające
narzędzia służące do zarządzania plikami, zmiennymi i aplikacjami związanymi z Matlabem. W standardowym (domyślnym) widoku, który możemy zmienić i dostosować do własnych potrzeb, na pulpicie znajdują się
4 okna:
okno poleceń (ang. Command Window),
okno historii poleceń (ang. Command History),
okno przestrzeni roboczej (ang. Workspace),
okno aktualnego katalogu (ang. Current Directory).
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
5/71
Interfejs Matlaba
Rysunek: Główne okno Matlaba
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
6/71
Okno poleceń
Zajmuje centralną część pulpitu.
Wyświetla znak zachęty > > oznaczający, że Matlab czeka na
wprowadzenie polecenia.
Polecenia wprowadzamy najczęściej pojedynczo z klawiatury
i zatwierdzamy klawiszem Enter.
Matlab wykona obliczenia i wyświetli wynik lub komunikat
o błędzie.
Wszystkie wprowadzane polecenia są zapamiętywane. Możemy je
ponownie wybrać za pomocą klawiszy kursora (strzałka w górę
i strzałka w dół).
Okno poleceń możemy wyczyścić wybierając z menu Edit opcję
Clear Command Window.
W menu File znajduje się polecenie Preferences, umożliwiające
ustawienie niektórych parametrów okna poleceń. Możemy tu na
przykład zmienić wielkość i kolor używanego fontu.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
7/71
Okno historii poleceń
Możemy tu przeglądać nie tylko polecenia z aktualnej sesji, ale
również te, które wprowadziliśmy wiele tygodni wcześniej.
Polecenia te są ułożone w kolejności w jakiej je wprowadzaliśmy.
Poszczególne sesje są oddzielone od siebie wierszem komentarza,
w którym znajduje się data i godzina rozpoczęcia sesji.
Po dwukrotnym kliknięciu polecenia zostanie ono skopiowane do
okna poleceń i uruchomione.
Historię poleceń możemy wyczyścić, wybierając z menu Edit opcję
Clear Command History.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
8/71
Okno przestrzeni roboczej
Są tu przechowywane wszystkie zmienne, jakie zdefiniujemy
w czasie aktualnej sesji.
W oknie tym możemy znaleźć podstawowe informacje o każdej
zmiennej (nazwę, typ, aktualną wartość, itp.).
Korzystając z tego okna, możemy również definiować nowe
zmienne, kasować istniejące, bądź modyfikować ich wartości.
Przestrzeń roboczą możemy wyczyścić za pomocą polecenia Clear
Workspace z menu Edit.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
9/71
Okno aktualnego katalogu
Wyświetlana jest w nim zawartość tzw. aktualnego katalogu
Matlaba
Jeżeli wprowadzimy w oknie poleceń nazwę funkcji, to właśnie
w tym katalogu Matlab będzie najpierw próbował ją znaleźć.
Jeżeli podczas pracy z Matlabem zamierzamy definiować własne
funkcje, powinniśmy zapisywać je w aktualnym katalogu Matlaba.
Możemy zapisywać je również w innym katalogu, który znajduje
się na tzw. ścieżce przeszukiwania. Ścieżkę tę możemy przeglądać
i modyfikować za pomocą polecenia Set Path znajdującego się
w menu File.
Aktualny katalog możemy wybrać sami, na pasku narzędzi
znajduje się pole tekstowe, w którym wprowadzamy odpowiednią
ścieżkę dostępu. Zawartość aktualnego katalogu wyświetli nam się
w oknie aktualnego katalogu.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
10/71
Inne okna
okno pomocy (ang. Help) otwierane za pomocą klawisza F1,
pozwala przeglądać bardzo rozbudowane pliki pomocy,
okna grafiki (ang. Figure), w których prezentowane są różnego
rodzaju wykresy i inne wyniki poleceń Matlaba mające postać
graficzną,
okno edytora plików (ang. Editor) zawierające prosty edytor
tekstów, w którym możemy tworzyć własne skrypty i funkcje,
okno profilera pozwalające testować własne funkcje i poprawiać ich
wydajność.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
11/71
Dziennik
Zanim zaczniemy pracę w Matlabie warto włączyć tzw. dziennik.
Dzięki temu wszystkie wprowadzone przez nas polecenia Matlaba
oraz większość wyników (bez wykresów) będą zapisywane w pliku
tekstowym.
Aby włączyć dziennik wprowadzamy w oknie poleceń komendę
> > diary(’nazwa_pliku’)
W aktualnym katalogu Matlaba zostanie utworzony plik tekstowy
o tej nazwie. Jeżeli taki plik już istnieje, nowe polecenia będą do
niego dodawane.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
12/71
Proste obliczenia
Matlab może być traktowany jak bardzo rozbudowany kalkulator.
Aby wykonać działanie, wprowadzamy je w naturalny sposób do
okna poleceń i naciskamy klawisz Enter.
Matlab potrafi wykonywać działania we właściwej kolejności,
możemy używać nawiasów i wielu standardowych funkcji
matematycznych.
>> 2 + 3
ans =
5
>> 2 + 3 * 5
ans =
17
> > (2 + 3) * 5
ans =
25
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
13/71
Funkcje standardowe i pomoc
Matlab zawiera bogatą bibliotekę funkcji matematycznych
> > sin(pi/2)
ans =
1
> > exp(1)
ans =
2.7183
Listę dostępnych standardowych funkcji matematycznych możemy
wyświetlić poleceniem
> > help elfun
Bardziej szczegółowe informacje o konkretnej funkcji uzyskamy za
pomocą polecenia
> > help nazwa_funkcji
Na przykład polecenie
> > help cos
wyświetli informacje o funkcji cosinus.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
14/71
Zmienne
Zmienne służą do zapamiętywania wyników obliczeń.
Nie musimy deklarować zmiennej ani określać jej typu.
Nazwa zmiennej to ciąg znaków zaczynający się od litery.
Zmiennej przypisujemy wartość za pomocą operatora =.
>> a = 3 + 1
a =
4
> > b = -5
b =
-5
>> c = a + b
c =
-1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
15/71
Zmienne
Jeżeli nie podstawimy wyniku obliczeń pod żadną zmienną,
zostanie on zapamiętany w domyślnej zmiennej ans.
Zmienna ans przechowuje tylko wynik ostatniego obliczenia, każda
nowa operacja powoduje zmianę jej wartości.
>> 3 + 1
ans =
4
> > ans + 2
ans =
6
Aby sprawdzić aktualną wartość zmiennej wpisujemy jej nazwę
w oknie poleceń.
W oknie przestrzeni roboczej znajduje się lista aktualnie
zdefiniowanych zmiennych. Po dwukrotnym kliknięciu na wybraną
nazwę otwiera się okno edytora zmiennych, w którym można
sprawdzić oraz zmienić wartość zmiennej.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
16/71
Blokowanie wyświetlania wyników
Domyślnie wyniki obliczeń wyświetlają się na ekranie.
Jeżeli chcemy tylko wykonać polecenie i nie wyświetlać jego
wyniku, należy je zakończyć znakiem ; (średnik).
Najczęściej wykorzystuje się to przy tworzeniu macierzy o dużych
rozmiarach oraz w skryptach i funkcjach aby zapobiec
wyświetlaniu na ekran wszystkich pośrednich wyników obliczeń.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
17/71
Liczby zespolone
Matlab pozwala w prosty sposób wykonywać obliczenia na liczbach
zespolonych.
Jednostkę urojoną oznaczamy literą i lub j.
> > u = 2 + 3i
u =
2.0000 + 3.0000i
>> v = i
v =
0 + 1.0000i
>> u + v
ans =
2.0000 + 4.0000i
> > vˆ2
ans =
-1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
18/71
Definiowanie prostych funkcji
W oknie poleceń możemy definiować proste funkcje.
Składnia tworzenia funkcji jest bardzo prosta f = inline(’wzor
funkcji’).
> > f = inline(’x + 5’)
f =
Inline function
f(x) = x + 5
> > g = inline(’2 * x + y’)
g =
Inline function
g(x,y) = 2*x + y
> > f(3)
ans =
8
> > g(1,5)
ans =
7
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
19/71
Formatowanie wyników
Za pomocą polecenia format możemy zmienić sposób
wyświetlania wyników.
Domyślnie stosowany jest format short, wyniki wyświetlane są
z dokładnością do 4 miejsc po przecinku.
> > sqrt(2)
ans =
1.4142
> > format long
> > sqrt(2)
ans =
1.414213562373095
> > format short
> > sqrt(2)
ans =
1.4142
Polecenie format zmienia tylko sposób wyświetlania wyniku, nie
wpływa natomiast w żaden sposób na dokładność obliczeń.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
20/71
Obliczenia numeryczne
Matlab jest pakietem obliczeń numerycznych, co oznacza, że
wszystkie obliczenia wykonywane są na liczbach, a nie na
symbolach.
W przeciwieństwie do pakietów algebry komputerowej, takich jak
Maple, Matlab nie potrafi stwierdzić, że pochodną funkcji sinus
jest cosinus ani że rozwiązaniem równania ax + b = 0 jest
x = −b/a.
Możemy natomiast wyznaczyć przybliżoną wartość pochodnej
w danym punkcie oraz przybliżone rozwiązanie równania o danych
współczynnikach.
Podstawowy typ liczbowy używany w Matlabie to znany z wielu
języków programowania typ double.
Pozwala on wykonywać obliczenia na liczbach rzeczywistych
z zakresu od 10−308 do 10308 z dokładnością do 16 miejsc po
przecinku.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
21/71
Obliczenia numeryczne
Algorytmy numeryczne używane przez Matlaba zazwyczaj nie
wyznaczają dokładnego wyniku, ale generują ciąg jego przybliżeń,
który powinien być do niego zbieżny.
Algorytmy te zatrzymują się po osiągnięciu określonej dokładności.
Dlatego nie powinniśmy przejmować się tym, że zamiast
oczekiwanej jedynki dostajemy 0.99999999, a zamiast zera np.
8.881784197001252e-016
Ten ostatni wynik jest zapisany w tzw. postaci wykładniczej,
liczba znajdująca się po literze e oznacza o ile miejsc, i w którą
stronę musimy przesunąć przecinek w liczbie znajdującej się po
lewej stronie liczby e.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
22/71
Macierze w Matlabie
Macierz (tablica dwuwymiarowa) to podstawowa struktura danych
używana w Matlabie.
Jej szczególnymi przypadkami są skalary, czyli macierze wymiaru
1 × 1 oraz wektory czyli macierze wymiaru 1 × n lub n × 1).
Najprostszą metodą utworzenia macierzy jest podanie jej
wszystkich elementów. Musimy przy tym pamiętać o kilku
prostych zasadach:
elementy poszczególnych wierszy oddzielamy od siebie spacjami
lub przecinkami,
w każdym wierszu musimy umieścić taką samą liczbę elementów,
wiersz kończymy średnikiem,
całą listę elementów otaczamy nawiasami kwadratowymi.
> > A = [1 7
A =
1 7
4 3
10 23
8 ; 4 3 6 ; 10 23 4]
8
6
4
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
23/71
Macierze w Matlabie
Macierz możemy też wygenerować za pomocą wbudowanej funkcji
Matlaba.
zeros — generuje macierz złożona z samych zer,
ones — generuje macierz złożoną z samych jedynek,
eye — generuje macierz identycznościową,
rand — generuje macierz, której elementy są losowane zgodnie
z rozkładem jednostajnym na odcinku [0, 1],
randn — generuje macierz, której elementy są losowane zgodnie ze
standardowym rozkładem normalnym.
Każda z tych funkcji przyjmuje dwa argumenty wejściowe, są to
wymiary macierzy. Jeżeli chcemy utworzyć macierz kwadratową,
wystarczy podać jeden argument
> > B = zeros(3,2)
B =
0 0
0 0
0 0
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
24/71
Macierze w Matlabie
> > C = eye(2,2)
C =
1 0
0 1
> > D = eye(2,3)
D =
1 0 0
0 1 0
> > E = rand(1,3)
E =
0.8147 0.9058 0.1270
> > F = ones(3)
F =
1 1 1
1 1 1
1 1 1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
25/71
Operacje na macierzach
Matlab pozwala wykonywać na macierzach operacje dodawania,
odejmowania, mnożenia przez skalar i przez siebie. Używamy do
tego naturalnych operatorów +, −, ∗.
> > A = [1 2 5 ; 0 8 1]
A =
1 2 5
0 8 1
> > B = [2 3 4 ; 7 2 5]
B =
2 3 4
7 2 5
> > C = [1 2 ; 5 3 ; 4 1]
C =
1 2
5 3
4 1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
26/71
Operacje na macierzach
>> A + B
ans =
3 5 9
7 10 6
>> B - A
ans =
1 1 −1
7 −6 4
>> 2 * C
ans =
2 4
10 6
8 2
>> B * C
ans =
33 17
37 25
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
27/71
Wymiary macierzy
Matlab udostępnia dwie funkcje pozwalające sprawdzać wymiary
macierzy, są to size i length.
Funkcja size jako argument przyjmuje dowolną macierz A,
i zwraca dwuelementową tablicę postaci
[liczba_wierszy(A) liczba_kolumn(A)].
Jeżeli wywołamy ją z dodatkowym parametrem 1, to uzyskamy
tylko liczbę wierszy, a jeżeli z parametrem 2, to tylko liczbę
kolumn.
Funkcja length działa tylko dla wektorów (macierzy 1 × n lub
n × 1). Zwraca liczbę elementów wektora.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
28/71
Wymiary macierzy
> > A = [1 2 5 ; 0 8 1]
A =
1 2 5
0 8 1
> > B = [3 6 7 9]
B =
3 6 7 9
> > size(A)
ans =
2 3
> > size(A,1)
ans =
2
> > length(B)
ans =
4
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
29/71
Operacje na macierzach
Kolejne często wykonywane operacje to transponowanie
i odwracanie macierzy. Pierwszą z nich wykonujemy za pomocą
operatora ’ (apostrof), drugą za pomocą funkcji inv.
Możemy również obliczyć rząd macierzy — funkcja rank,
wyznacznik — det, ślad — trace, współczynniki wielomianu
charakterystycznego — poly oraz wartości i wektory własne —
eig.
Inną przydatna funkcją jest sum. Jeżeli jej argumentem jest
wektor, to zwraca ona liczbę będącą sumą jego elementów. Jeżeli
argumentem jest macierz, to funkcja zwraca wektor, którego
elementy są sumami kolejnych kolumn macierzy.
Listę wszystkich dostępnych funkcji tego typu możemy uzyskać za
pomocą poleceń.
> > help matfun
> > help elmat
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
30/71
Operacje „element po elemencie”
Dla dwóch macierzy o tych samych rozmiarach wynikiem
mnożenia „element po elemencie” jest macierz tego samego
rozmiaru, której elementami są iloczyny odpowiednich elementów
macierzy wejściowych.
Aby wykonać takie działanie, używamy operatora .* (znaku
mnożenia poprzedzonego kropką).
Inne często używane operatory tego typu to ./ (kropka znak
dzielenia) oraz .ˆ (kropka znak potęgi).
A =
1 2 5
0 8 1
B =
2 3 1
2 −3 4
> > C = A.*B
C =
2
6
5
0 −24 4
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
31/71
Operacje „element po elemencie”
Większość wbudowanych funkcji Matlaba może mieć argument
będący macierzą. Jeżeli na przykład wywołamy funkcję sqrt na
macierzy A, to w wyniku otrzymamy macierz, której elementami
będą pierwiastki elementów macierzy A.
> > A = [1 2 ; 4 9]
A =
1 2
4 9
> > sqrt(A)
ans =
1.0000 1.4142
2.0000 3.0000
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
32/71
Dostęp do elementów macierzy
Do elementu leżącego w k-tym wierszu i l -tej kolumnie macierzy A
odwołujemy się poprzez A(k,l).
> > A = [1 2 5 ; 0 8 1]
A =
1 2 5
0 8 1
> > A(1,3)
ans =
5
Możemy też zmieniać poszczególne elementy macierzy
> > A(2,1) = 10
A =
1 2 5
10 8 1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
33/71
Operator zakresu
Aby uzyskać dostęp do większej części macierzy, wykorzystujemy
operator zakresu : (dwukropek).
Jego ogólna postać to wartość_początkowa : krok :
wartość_końcowa. Parametr krok możemy pominąć, Matlab
przyjmie wówczas jego domyślną wartość 1. I tak np.
1 : 2 : 5 odnosi się do elementów 1., 3. i 5.,
2 : 6 odnosi się do elementów 2., 3., 4., 5., 6.,
10 : -1 : 7 odnosi się do elementów 10., 9., 8. i 7.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
34/71
Operator zakresu
Niech A =
3 4 7 9
2 5 0 1
10 8 5 2
> > A(1:2,2:4)
. ans =
4 7 9
5 0 1
Wszystkie elementy 3. wiersza
> > A(3,:)
ans =
10 8 5 2
Tylko parzyste kolumny macierzy
> > A(:,2:2:4)
ans =
4 9
5 1
8 2
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
35/71
Łączenie macierzy
Do łączenia macierzy wykorzystujemy operator [] (parę nawiasów
kwadratowych). Jeżeli np.
A =
1 2 5
0 8 1
B =
7
3
to
> > C = [A B]
C =
1 2 5 7
0 8 1 3
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
36/71
Łączenie macierzy
Dzięki operatorom konkatenacji i zakresu możemy w prosty sposób
tworzyć złożone tablice.
Utworzymy tablicę zawierającą w kolejnych kolumnach parzyste
liczby od 2 do 100, ich kwadraty oraz pierwiastki.
> > x = [2 : 2 : 100]’ ;
> > y = [x x.ˆ2 sqrt(x)] ;
ans =
2
4
1.4142
4
16
2
.
.
.
.
.
.
.
.
.
100 10000
10
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
37/71
Usuwanie kolumn i wierszy
Aby usunąć fragment macierzy za pomocą operatora zakresu
odwołujemy się do niegi i używamy operatora [].
> > A = [1 2 5 ; 0 8 1]
A =
1 2 5
0 8 1
Usuniemy drugą kolumnę macierzy.
> > A(:,2) = []
>> A
A =
1 5
0 1
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
38/71
Wykresy dwuwymiarowe
Do rysowania wykresów dwuwymiarowych służy funkcja plot.
Jej najczęściej używana forma to plot(x,y), gdzie x i y są
wektorami tej samej długości n.
Na wykresie punkty (x(k),y(k)), gdzie k = 1, . . . , n, zostaną
połączone linią łamaną.
Po wywołaniu poleceń
> > x = [1 2 3 4]
> > y = [5 3 6 2]
> > plot(x,y)
otrzymamy wykres przedstawiony na rysunku (następny slajd).
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
39/71
Wykresy dwuwymiarowe
Rysunek: Wykres liniowy
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
40/71
Wykresy dwuwymiarowe
Możemy również rysować wykresy funkcji y = f (x).
Aby wykres był „gładki”, musimy podawać współrzędne wektora x
leżące blisko siebie.
> > x = 0 : pi/100 : 2*pi;
> > y = sin(x);
> > plot(x,y)
Do
>>
>>
>>
wykresu możemy dodać tytuł i etykiety osi
title(’Wykres funkcji sinus’)
xlabel(’x=[0,2\pi]’)
ylabel(’sin(x)’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
41/71
Wykresy dwuwymiarowe
Rysunek: Wykres funkcji y = sin(x)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
42/71
Wykresy dwuwymiarowe
Na jednym rysunku możemy narysować wykresy kilku funkcji.
Każdemu wykresowi musi odpowiadać para argumentów x i y
funkcji plot.
Matlab automatycznie wybierze dla wykresów różne kolory.
> > x = 0 : pi/100 : 2*pi
> > y = sin(x)
> > z = cos(x)
> > plot(x,y,x,z)
W celu łatwiejszej identyfikacji wykresów możemy dodać legendę:
> > legend(’sin(x)’,’cos(x)’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
43/71
Wykresy dwuwymiarowe
Rysunek: Wykresy funkcji y = sin(x) i y = cos(x)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
44/71
Wykresy dwuwymiarowe
Do zmiany koloru linii służą parametry: ’c’ — cyjan
(jasnoniebieski), ’m’ — magenta (purpurowy), ’y’ — żółty, ’r’
— czerwony, ’g’ — zielony, ’b’ — niebieski, ’w’ — biały, ’k’
— czarny.
Do zmiany stylu linii służą parametry: ’-’ — linia ciągła, ’--’ —
linia przerywana, ’:’ — linia kropkowana, ’-.’ — linia
przerywano-kropkowana, ’none’ — brak linii.
Wykres nie musi mieć formy liniowej. Możemy tylko zaznaczyć
punkty określone przez wektory x i y. Punkty te możemy
zaznaczać znacznikami: ’o’, ’*’, ’x’, ’s’ (kwadrat), ’d’
(romb), ’ˆ’ (trójkąt), ’v’ (trójkąt), ’>’ (trójkąt), ’<’ (trójkąt),
’p’ (gwiazdka pięcioramienna), ’h’ (słoneczko).
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
45/71
Wykresy dwuwymiarowe
Rysunek: plot(x,y,’r’,x,z,’k’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
46/71
Wykresy dwuwymiarowe
Rysunek: plot(x,y,’:’,x,z,’–’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
47/71
Wykresy dwuwymiarowe
Rysunek: plot(x,y,’+’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
48/71
Wykresy dwuwymiarowe
Rysunek: plot(x,y,’r-s’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
49/71
Wykresy dwuwymiarowe
Matlab pozwala na umieszczanie nowych wykresów na już
istniejących rysunkach. Po wydanie polecenia
> > hold on
wszystkie kolejne wykresy będą umieszczane na jednym rysunku.
Po wywołaniu polecenia
> > hold off
Matlab wróci do domyślnego zachowania, tzn. każdy kolejny
wykres będzie powodował utratę poprzedniego.
Domyślnie wszystkie wykresy są rysowane w oknie zatytułowanym
Figure 1.
Możemy tworzyć nowe okna za pomocą polecenia figure.
Ostatnie utworzone okno staje się oknem domyślnym i to w nim
Matlab będzie umieszczał wykresy.
Aby przełączać się między istniejącymi oknami wywołujemy
polecenie figure(n), gdzie n jest numerem okna.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
50/71
Wykresy trójwymiarowe
Załóżmy, że chcemy narysować wykres funkcji
p
sin( x 2 + y 2 )
f (x, y ) = p
x2 + y2 + 1
określonej na prostokącie [−7, 7] × [−8, 8].
Wywołanie polecenia
> > [X,Y] = meshgrid(-7:0.2:7, -8:0.2:8)
spowoduje utworzenie dwóch macierzy X i Y .
Punkty (X (i, j), Y (i, j)) są rozmieszczone równomiernie na
prostokącie [−7, 7] × [−8, 8].
Wartość 0.2 występującą w argumencie polecenia możemy
oczywiście zmienić, jeżeli siatka punktów będzie zbyt rzadka, co
wpłynie negatywnie na jakość wykresu.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
51/71
Wykresy trójwymiarowe
Obliczamy wartości funkcji f w wyznaczonych w poprzednim
kroku punktach
> > Z = sin(sqrt(X.ˆ2 + Y.ˆ2)) ./ (sqrt(X.ˆ2 + Y.ˆ2)+1)
Rysujemy wykres za pomocą polecenia
> > mesh(X,Y,Z)
lub
> > surf(X,Y,Z)
Pierwsze z nich utworzy wykres „siatkowy” składający się z linii
łączących wyznaczone punkty, drugie wykres „powierzchniowy”.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
52/71
Wykresy trójwymiarowe
Rysunek: Wykres „siatkowy”
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
53/71
Wykresy trójwymiarowe
Rysunek: Wykres „powierzchniowy”
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
54/71
Wykresy
Wybierając z menu Tools polecenie Edit Plot, a następnie klikając
dwa razy w obszarze wykresu, włączamy edytor właściwości, za
pomocą którego możemy w wygodny sposób dostosować wykres
do naszych potrzeb — zmienić używane kolory, fonty, grubość linii,
jednostki na osiach itp.
Każdy wykres możemy zapisać w domyślnym formacie Matlaba
.fig lub w jednym z popularnych formatów graficznych: .bmp, .jpg,
.png, .pdf, .tif, .eps. W tym celu w oknie z wykresem wybieramy
z menu File polecenie Save, a następnie w oknie dialogowym
podajemy nazwę pliku i wybieramy jego format.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
55/71
Wykresy
Wybierając z menu Tools polecenie Edit Plot, a następnie klikając
dwa razy w obszarze wykresu, włączamy edytor właściwości, za
pomocą którego możemy w wygodny sposób dostosować wykres
do naszych potrzeb — zmienić używane kolory, fonty, grubość linii,
jednostki na osiach itp.
Każdy wykres możemy zapisać w domyślnym formacie Matlaba
.fig lub w jednym z popularnych formatów graficznych: .bmp, .jpg,
.png, .pdf, .tif, .eps. W tym celu w oknie z wykresem wybieramy
z menu File polecenie Save, a następnie w oknie dialogowym
podajemy nazwę pliku i wybieramy jego format.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
56/71
Skrypty
Skrypt to zwykły plik tekstowy zawierający ciąg poleceń Matlaba.
Pliki te mają rozszerzenie .m dlatego nazywamy je zazwyczaj
m-plikami.
Po utworzeniu skryptu i zapisaniu go na dysku, wpisanie w oknie
poleceń nazwy skryptu spowoduje wywołanie kolejno wszystkich
poleceń umieszczonych w skrypcie.
Polecenia te mają dostęp do wszystkich zmiennych zdefiniowanych
w głównym oknie Matlaba, wyniki działania tych poleceń są
również wyświetlane w głównym oknie (bądź w oknach typu
Figure, jeżeli są to polecenia rysujące wykresy).
Aby utworzyć skrypt wybieramy z menu File polecenie New, Blank
M-File.
Pojawi się okno Edytora plików z otwartym pustym dokumentem.
Jest to dosyć proste narzędzie zawierające jedynie podstawowe
funkcje do edycji tekstu.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
57/71
Skrypty
Utworzymy skrypt rysujący wykres funkcji sinus na przedziale
[0, 2π]. W oknie edytora wpisujemy trzy polecenia
x = 0 : pi/100 : 2*pi;
y = sin(x);
plot(x,y)
Aby zapisać skrypt, wybieramy z menu File edytora polecenie
Save. Musimy podać nazwę pliku (np. wykressinusa) i katalog,
w którym chcemy go zapisać.
Po zapisaniu skryptu przechodzimy do głównego okna programu
i w oknie poleceń wpisujemy
> > wykressinusa
Spowoduje to utworzenie nowego wykresu funkcji sinus.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
58/71
Funkcje
Funkcje to również pliki tekstowe (z rozszerzeniem .m) zawierające
ciągi poleceń Matlaba.
Od skryptów różni je to, że mogą przyjmować argumenty
wejściowe i zwracać argumenty wyjściowe.
Operują na zmiennych lokalnych, nie mają bezpośredniego dostępu
do zmiennych zdefiniowanych w oknie poleceń Matlaba.
Aby utworzyć funkcję, wybieramy z menu File polecenie New,
Function M-File. Pojawi się okno Edytora plików z nowym plikiem
zawierającym szkielet nagłówka funkcji.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
59/71
Funkcje
function [ output_args ] = Untitled1( input_args )
%UNTITLED1 Summary of this function goes here
%
Detailed explanation goes here
end
Słowo function oznacza, że w pliku tym znajduje się funkcja,
a nie zwykły skrypt.
Untitled1 to tymczasowa nazwa funkcji, należy ją zastąpić własną
nazwą.
Za nazwą funkcji w nawiasie okrągłym należy podać argumenty
wejściowe funkcji (oddzielamy je od siebie przecinkiem).
Po lewej stronie znaku równości w nawiasie kwadratowym
umieszczamy argumenty zwracane przez funkcję.
Jeżeli funkcja zwraca tylko jeden argument, możemy opuścić
nawiasy kwadratowe.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
60/71
Funkcje
Funkcja może również nie zwracać żadnych argumentów (np.
rysować tylko wykres) — wtedy nawias kwadratowy i znak
równości możemy pominąć.
Następne dwie linijki zaczynają się od znaku %. Jest to
komentarz, możemy umieścić tu opis naszej funkcji.
Dalej umieszczamy ciało funkcji, czyli kolejne polecenia, które
będą wykonywane po jej wywołaniu.
Funkcję kończy słowo end.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
61/71
Funkcje — przykład
Utworzymy funkcję rysującą wykres funkcji y = sin(ax) na
przedziale [0, 2π].
function sinus(a)
x = 0 : pi/100 : 2*pi;
y = sin(a*x);
plot(x,y);
end
Zapisujemy funkcję poleceniem Save z menu File. Uwaga: nazwa
pliku musi być taka sama jak nazwa funkcji, tzn funkcja sinus musi
być zapisana w pliku o nazwie sinus.m.
Przechodzimy do głównego okna Matlaba. Wywołanie polecenia
sinus(3) spowoduje narysowanie wykresu funkcji y = sin(3x),
polecenie sinus(0.125) narysowanie wykresu funkcji
y = sin(0.125x) itd.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
62/71
Funkcje — przykład
Napiszemy funkcję zwracająca największą i najmniejszą liczbę
z danego wektora. Skorzystamy z wbudowanych funkcji min i max.
function [M,m] = maxmin(x)
M = max(x);
m = min(x);
end
Zapisujemy ją w pliku maxmin.m.
W oknie poleceń Matlaba tworzymy dowolny wektor i wywołujemy
na nim naszą funkcję
> > w = [3 1 5 9 0 8 4]
> > [a,b] = maxmin(w)
Na ekranie powinien pojawić się wynik
a =
9
b =
0
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
63/71
Instrukcja warunkowa
Najprostsza postać instrukcji warunkowej to:
if wyrażenie_logiczne
instrukcja_1
instrukcja_2
..
.
instrukcja_n
end
Jeżeli wartość wyrażenia_logicznego jest różna od 0, to
wykonywane są wszystkie instrukcje znajdujące się pomiędzy
słowami if i end.
Jeżeli wartość wyrażenia_logicznego wynosi 0 (wyrażenie
fałszywe), instrukcje te są pomijane i wykonywana jest pierwsza
instrukcja znajdująca się po słowie end.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
64/71
Instrukcja warunkowa — postać ogólna
if wyrażenie_logiczne_1
blok_instrukcji_1
elseif wyrażenie_logiczne_2
blok_instrukcji_2
..
.
elseif wyrażenie_logiczne_n
blok_instrukcji_n
else
blok_instrukcji
end
Matlab sprawdza po kolei wartości wyrażeń logicznych. Jeżeli
znajdzie wyrażenie prawdziwe, to wykonuje odpowiedni blok
instrukcji i przechodzi do wykonywania instrukcji znajdujących się
po słowie end.
Jeżeli wszystkie wyrażenia logiczne są fałszywe, to wykonywane są
instrukcje z bloku else.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
65/71
Instrukcja warunkowa — przykłady
if a >= 0
w = sqrt(a);
end
if a == b
M = a;
elseif a > b
M = b;
else
M = a + b;
end
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
66/71
Operatory relacyjne i logiczne
Najczęściej wyrażenia logiczne tworzymy za pomocą operatorów
relacyjnych
<
<=
>
<
==
˜=
mniejszy niż,
mniejszy lub równy,
większy niż,
większy lub równy,
równy,
różny,
Operatory logiczne pozwalają na łączenie wyrażeń logicznych
&&
logiczne AND (koniunkcja),
||
logiczne OR (alternatywa),
˜
logiczne NOT (negacja),
xor
wykluczające OR (alternatywa wykluczająca),
Przykłady:
(x >= 0) && (y < x)
(x + 2 ˜= y) || (y == z)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
67/71
Pętla for
Pętla for służy do wykonywania grupy instrukcji ustaloną liczbę
razy. Jej ogólna postać to:
for licznik = start : krok : koniec
instrukcja 1
instrukcja 2
. . .
instrukcja n
end
Obliczmy kwadraty liczb od 1 do 100 i umieśćmy je w tablicy A
for k = 1 : 100
A(k) = k^2;
end
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
68/71
Pętla while
Pętla while również służy do wielokrotnego wykonywania tej
samej grupy instrukcji.
W odróżnieniu od pętli for nie musimy tu określać z góry liczby
powtórzeń. Instrukcje są wykonywane dopóki prawdziwe jest
pewne wyrażenie logiczne.
while wyrażenie_logiczne
instrukcja 1
instrukcja 2
. . .
instrukcja n
end
e = 1;
while e > 0.000001
e = e/2;
end
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
69/71
Publikowanie raportów
Skrypty Matlaba możemy przekształcić w atrakcyjnie wyglądające
dokumenty formatów HTML, MS Word, MS PowerPoint czy
LATEX.
Załóżmy, że napisaliśmy skrypt rysujący wykres funkcji sinus.
x = 0:0.1:2*pi;
y = sin(x);
plot(x,y)
Z menu File edytora plików wybieramy polecenie Publish skrypt.m.
Utworzony zostanie plik skrypt.html oraz plik graficzny zawierający
wykres funkcji sinus.
Utworzona strona zawiera wszystkie polecenia Matlaba z naszego
skryptu oraz ich wyniki.
Aby uatrakcyjnić wygląd dokumentu i zwiększyć jego czytelność,
możemy podzielić go na części zwane komórkami.
Nową komórkę rozpoczynamy znakiem podwójnego procenta %%.
Tekst w wierszu zaczynającym się tym znakiem pełni rolę tytułu
komórki.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
70/71
Publikowanie raportów — przykład
%% Rysowanie wykresu funkcji sinus
%% Tworzymy wektor punktów
% Wykorzystujemy do tego operator zakresu :
x = 0 : 0.1 : 2 * pi
%% Obliczamy wartości funkcji sinus w tych punktach
y = sin(x)
%% Rysujemy wykres funkcji
plot(x,y)
%%
% Zmieniamy kolor wykresu na czerwony
plot(x,y,’r’)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
71/71

Podobne dokumenty