1 Matlab. Wiadomoci wstepne. 1
Ćwiczenia z symulacji komputerowych. Zajecia 4.
Dla dalszych informacji o Matlabie polecam strone ta.
1 Matlab. Wiadomoci wstepne.
Kod może być wprowadzany z wiersza poleceń linia po linii lub uruchamiany z
pliku m, który jest przez Matlaba interpretowany (nie ma kompilacji czy kodu
pośredniego).
Linie kodu nie musza kończyć sie średnikiem. Jeśli kończa sie średnikiem,
to wynik operacji nie jest wypisywany. Kilka linii można umieścić w jednej,
wówczas należy je rozdzielić przecinkiem. Przecinek s również do separacji
luży
wspó
lrzednych w macierzach oraz argumentów w funkcjach. Z kolei wielokropek
(...) pozwala na przeniesienie cześci instrukcji do kolejnej linii.
Nie ma deklaracji zmiennych liczbowych, od razu sie je definiuje, a domyślny
typ to double lub matrix. Zmienne typu symbolicznego deklaruje sie poleceniem
syms, np.
syms x f;
f=3*x;
diff(f,x)
Nawiasy zwyk oznaczaja równocześnie odwo do tabeli (wektora), ma-
le lanie
cierzy jak i wywo funkcji, co może być powodem konfuzji. S też do
lanie luża
określania kolejności wykonywania dzia
lań.
W Matlabie nie ma wskazników ani referencji co praktycznie uniemożliwia
stosowania bardziej skomplikowanych struktur danych.
Ćwiczenie: Oblicz (symbolicznie) transformate Laplace a dla funkcji: 1,
sin(t), t, e-t. Skorzystaj z funkcjilaplace(informacje o niej:help laplace).
Uwaga: Matlab (etymologia: Matrix laboratory) z za jest środowiskiem
lożenia
do obliczeń numerycznych raczej niż symbolicznych (programy bardziej zorien-
towane ku obliczeniom symbolicznym to Maple czy Mathematica).
2 Macierze.
Polecenie
a=[3 2; 3 1; 4 5]
stworzy macierz o dwóch wierszach i trzech kolumnach. Średnik oddziela od
siebie kolejne wiersze. Spacja (lub przecinek) rozdziela kolejne pola w wierszu.
Do pól macierzy mamy dostep przez przecinek i nawiasy zwyk Np
le.
a(3,2)
to pole w trzecim wierszu i drugiej kolumnie. W szczególności podstawienie
a(4,5)=6
2 Macierze. 2
automatycznie poszerzy macierzado macierzy o czterech wierszach i pieciu
kolumnach i luki uzupe zerami. Natomiast polecenie
lni
b=a(4,5)
automatycznie zadeklaruje zmienna bale tylko jeśli
a(4,5)
ma sens.
Uwaga: wszystkie macierze numerowane sa od 1.
Wektor poziomy zawierajacy pierwszy wiersz macierzy a mozna uzyskać
przez
b=a(1,:)
natomiast wektor pionowy zawierajacy jej druga kolumne przez
b=a(:,2)
Wektor poziomy z " R11 taki, że zi = 1 + 0.5(i - 1), i = 1, . . . , 11 można
utworzyć przez
z=1:0.5:6
natomiast i = (1, 2, 3, 4, 5) przez
i=1:5
Operacja prawego dzielenia
x=A\b
rozwiazuje uk równań Ax = b gdzie A jest macierza kwadratowa, a b wekto-
lad
rem pionowym (czyli macierza sk
ladajaca sie z jednej kolumny). Z kolei
x=b/A
rozwia że nam równwnie xA = b gdzie b musi być wektorem wierszowym.
Inne operacje macierzowe to transpozycja ( ), mnożenie macierzy (*), potegowanie
(^), dodawanie (+), odejmowanie (-), mnożenie wyraz po wyrazie (.*), potegowanie
wyraz po wyrazie (.^).
Zwróćmy uwage, że instrukcja
A+2
zwiekszy nam o 2 wszystkie pola macierzy lub wektora A.
Inne przydatne funkcje tonorm,eig,rank,det(opis każdej funkcji można
przeczytać wpisujachelp nazwaFunkcji).
3 Instrukcje sterujace. 3
3 Instrukcje sterujace.
Petla for (przyk
lad)
for i = 1:20
a(i)=i*i;
end
W przyk tymiprzyjmuje kolejno wartości kwadratów liczb naturalnych
ladzie
do20. W petliimoże zmieniać sie po dowolnym wektorze (wierszowym).
Petla while (przyk
lad)
i=5;
while i>1
a(i)=i-1;
i=i-1;
end
W warunkach logicznych moga wystapić operatory: mniejsze (<), mniejsze lub
równe (<=), wieksze (>), wieksze lub równe (>=), równe (==), różne (~=), i (&),
lub (|), nie (~). Pojedynczy znak równości (=) to instrukcja podstawienia.
Instrukcja if (przyk
lad)
i=2;
if i==3
i=i+1;
elseif i==4
i=i-1;
else
i=0
end
Ćwiczenie: Napisać funkcje, która jako argument wezmie wektor i zwróci
wektor zawierajacy te same elementy w kolejności posortowanej. Skorzystaj z
funkcjilength.
4 Funkcje.
Sk jest nastepujaca:
ladnia
function [val1, val2, ...] = nazwa(arg1,arg2,...)
tresc
Jeśli zwracana jest tylko jedna wartość, to nawias kwadratowy nie jest konieczny.
Przyk
lad:
function b = oJedenWiecej(a)
b=a+1;
5 Solvery MATLABowe dla zadań poczatkowych. 4
5 Solvery MATLABowe dla zadań poczatkowych.
Funkcje rozwiazujace numerycznie równania zwyczajne to (miedzy innymi)ode23,
ode45. Funkcjaode23implementuje metode Rungego i Kutty rzedu 2 z adap-
tacja czasowa, natomiastode45Rungego i Kutty rzedu 4 z adaptacja czasowa.
Dzialanie jest takie (na przyk ode23):
ladzie
ode23(@f,[t1 t2],x0)
fjest tu funkcja prawej strony równania i powinna mieć sk = f(t,x)-
ladniey
koniecznie czas jako pierwszy argument. Z kolei[t1 t2]to przedzia czasowy na
l
którym szukamy rozwiazaniauax0to wartość warunku poczatkowego(u(t1)).
Funkcjaode23zwraca dwie wartości: wektor (kolumnowy) punktów czasowych
i wektor kolumnowy wartości rozwiazania w tych punktach. Przyk pliku m
lad
rozwiazujacego problem u = -2u + t, u(0) = 1:
function [t, y] = test
[t y] = ode23(@f,[0 1],0);
function y=f(t,x)
y=-2*x+t;
Skrypt wywo przez polecenie [a, b] = test.
lujemy
Solvery ODE dzia dla przypadku wielowymiarowego (uk równań)
laja ladu
analogicznie jak dla jednowymiarowego przy czymx0powinien być teraz wek-
torem wierszowym warunków poczatkowych, a funkcjafpowinna pobierać jako
drugi argument wektor (o wymiarze takim samym jakx0) i zwracać wektor (też
o takim samym wymiarze) kolumnowy (a nie wierszowy taki jak jest domyślnie).
Przyk
lad:
function [t, y] = test
[t y] = ode23(@f,[0 1],[0,0]);
function y=f(t,x)
y(1,1)=-2*x(1)+t+x(2);
y(2,1)=-3*x(2)+t+x(1);
Zwracana wartośćyjest macierza, która w poszczególnych kolumnach za-
wiera wartości rozwiazania dla poszczególnych czasów.
Funkcje wywo przez
lujemy
[t,y]=test;
plot(t,y(:,1), -bo ,t,y(:,2), -ro )
6 Zadania.
1. Napisać funkcje realizujaca ca
lkowanie numeryczne metoda trapezów
n-1
b
b - a b - a b - a
f(x) dx H" (f(a + i ) + f(a + (i + 1) )).
2n n n
a
i=0
6 Zadania. 5
Parametrami powinny być: funkcja, przedzia ca
l lkowania, oraz ilość kroków
Ą
siatki. Przetestować dzia tej funkcji dla f(x) = sin(x) na przedziale (0, ).
lanie
2
2. Ciag logistyczny dany jest rekurencyjnym wzorem an = kan-1(1 - an-1).
Zbadaj eksperymentalnie (za pomoca wykresu) zachowanie tego ciagu dla a1 =
0.5 i wartości k = 2.8, 3.1, 3.7. Znajdz maksymalna wartość k dla której ciag
wydaje sie zbiegać. Znajdz mimimalna wartość k dla której ciag wydaje sie
zachowywać nieprzewidywalnie.
3. Znajdz wartości w i odpowiadajace im wektory w dla macierzy
lasne lasne
B=[2 1 0; -1 2 3; -1 3 1]
4. Napisz funkcje rozwiazujaca numerycznie uk ODE (jest to problem
lad
typu drapieżnik-ofiara).
u = au - buv - cu2,
v = duv - ev
gdzie a = 0.05, b = 0.0002, c = 0.00001, d = 0.0003, e = 0.06. Rozwia ż uk dla
lad
t " (0, 300) oraz warunków poczatkowych u = 300, v = 100 oraz u = 0, v = 100.
Narysuj w obu przypadkach wykresy obrazujace zmiany u i v w czasie.
Wyszukiwarka
Podobne podstrony:
wiadomości wstępne1 Wiadomosci wstepne terminologia1 Wiadomosci wstepne terminologiaWiadom wstepne OZE1 teledetekcja wiadomosci wstepnewymiarowanie wiadomosci wstepnmeWykład 1 wiadomosci wstępne(1)Technologia zywności cz 1 1 Wiadomości wstępne01 automatyka wiadomosci wstepne01 Wiadomości WstępneMATLAB cw SkryptySIMULINK MATLAB to VHDL RouteIMiR NM2 Introduction to MATLABwięcej podobnych podstron