Metody
numeryczne-‐to
dział
matematyki
stosowanej
umożliwiający
rozwiązywanie
różnorodnych
problemów
z
dziedziny
techniki,
medycyny,
ekonomii.
Matlab-‐
jest
programem
przeznaczonym
do
wykonania
różnorodnych
obliczeń
numerycznych.
F.
generujące
macierz:
eye(n,m)-‐macierz
jednostkowa
o
rozm.
nxm;
ones(n,m)-‐macierz
o
rozm.
nxm
wszystkie
elem.
równe
1;
zeros(n,m)-‐elem.
równe
zero.
A=diag(x)-‐tworzenie
macierz
przekątnej
ze
składnikami
wektora
x
na
głównej
przekątnej.
x=diag(A)-‐tworzenie
wektora
x
z
elementami
znajdującymi
się
na
przekątnej.
inv(A)-‐macierz
odwrotna
do
A.
tril(A)-‐utworzy
z
macierzy
A
macierz
3-‐kątnej
dolnej(wyzerowanie
elem.
leżących
powyżej
gł.
przekątnej).
triu(A)-‐||-‐
poniżej
głównej
przekątnej.
disp(A)-‐wyświetla
zawartość
macierzy
A.
Typy
fundamentalne-‐tworzenie
zmiennych
wybitnego
typu
poprzez
funkcje:
double,
spense,
char,
sMnct,
unit
8.
Typy
wielowymiarowe-‐elementy:
liczby,
znaki,
bloki/struktury,
dostęp
do
danego
elementu
macierzy
po
podaniu
nr
wierszy
i
nr
kolumny.
Typy
znakowe:
łańcuchy-‐wektory
składające
się
ze
znaków
definiowanych
za
pomocą
apostrofów-‐
s=’student’;
tablice
znakowe-‐liczba
znaków
w
wierszach
musi
być
taka
sama.
Dwukropek:
A(:,j)-‐wypisanie
j-‐tej
kolumny
macierzy
A;
A(i,:)-‐wypisanie
i-‐tego
wiersza
macierzy
A;
A(j:k)-‐wypisanie
w
jednym
wierszu
elementów
macierzy
A,
począwszy
od
elem.
o
indeksie
j,
aż
do
indeksu
k,
gdy
j>k
to
powstanie
wektor
pusty;
sum(A(:,end))-‐suma
elementów
ostatniej
kolumny
A;
A(i,:)=[]-‐usuwanie
i-‐tego
wiersza
macierzy
A;
A(:,j)=[]-‐usuwanie
j-‐tej
kolumny
macierzy
A.
M-‐pliki
skryptowe:
zawierają
ciąg
poleceń
własnych,
pisanych
przez
użytkownika
i
jego
algorytmy
obliczeniowe;
działają
tylko
na
zmiennych
dostępnych
w
przestrzeni
roboczej(nie
pobierają
żadnych
argumentów
wejściowych
i
nie
zwracają
arg.
wyjściowych);
wywołanie-‐poprzez
podanie
jego
nazwy,
jeśli
skrypt
znajduje
się
w
bieżącym
katalogu;
używa
się
w
nich
poleceń
umożliwiających
interaktywną
współpracę
programu
z
użytkownikiem;
wadą
m-‐pliku
skryptowego
jest
możliwość
powstania
konfliktu
nazw
zmiennych
w
przestrzeni
roboczej;
m-‐pliki
skryptowe
traktujemy
jako
etap
wstępny
w
przygotowaniu
m-‐pliku
funkcyjnego;
wywołanie
komentarza(opis
działania);
m-‐plik
działa
poprawnie
jeśli
zmienne
istnieją
już
w
przestrzeni
roboczej.
M-‐pliki
funkcyjne:
zawierają
funkcje
tworzone
przez
użytkownika;
rozpoczynają
się
od
słowa
kluczowego
funcMon,
następnie
nazwa
funkcji
i
lista
argumentów
wejściowych;
nazwa
funkcji
musi
być
taka
sama
jak
nazwa
M-‐pliku(bez
rozszerzenia);
działają
na
zmiennych
lokalnych
i
globalnych.
Zmienne
lokalne
i
globalne:
argumenty
wejściowe
i
wprowadzone
zmienne
w
M-‐pliku
funkcyjnym
mają
charakter
lokalny
w
ciele
funkcji
wielkości
te
nie
są
przechowywane
w
przestrzeni
roboczej
z
chwilą
zakończenia
wykonywania
funkcji;
istniejące
zmienne
w
przestrzeni
roboczej
nie
są
dostępne
w
ciele
funkcji.
inst2str-‐konwersja
liczb
całkowitych
w
łańcuch.
eval-‐wykonanie
łańcucha
jako
poleceń
M-‐pliku.
Funkcja
inline:
f1=inline(‘sin(2*t)+sin(t)’);y=f1(pi).
Formaty
liczb:
format
short-‐reprezentacja
stałoprzecinkowa
pięciocyfrowa;
format
long-‐
pietnastocyfrowa;
format
short
e-‐zmiennoprzecinkowa
pięciocyfrowa;
format
long
e-‐15-‐cyfrowa;
format
short
g-‐najlepsza
stała
zmiennoprzecinkowa;
format
long
g-‐-‐||-‐;
format
rad-‐ułamek
dziesiętny
za
pomocą
małych;
format
hex-‐16-‐stkowe
wyświetla
zawartosć
komórek
pamięci
zawierajacych
daną
liczbę;
format
+
-‐
wyświetla
+
dla
dodatnich
i
–
dla
ujemnych;
format
bank-‐format
walutowy
część
całkowita
do
2
miejsca
po
przecinku.
poly-‐
wyznacza
współczynniki
wielomianu;
p1=[a,b,c,d]
r=roots(p1)-‐oblicza
pierwiastki
wielomianu
y=polyval(p1,r)-‐oblicza
wartość
wielomianu
dla
podanego
argumentu
(dla
dowolnego
x);
fzero(‘F’,x0)-‐oblicza
miejsca
zerowe
funkcji
o
nazwie
F,
pierwiastki
funkcji
f
w
postaci
łańcucha.
Dekompozycja:1.
Faktoryzacja
Cholesky’ego
dla
macierzy
symetrycznych
dodatnio
określonych
(chol).
2.
Eliminacja
Gaussa
dla
macierzy
kwadratowych
3.
Ortogonalizacja
macierzy
prostokątnych.
Rząd
macierzy-‐to
liczba
liniowa
niezależnych
wierszy/kolumn
macierzy.
rank-‐oblicza
rząd
macierzy.
Problemy
wyznaczania
wartości
własnych
i
wektorów
własnych:
brak
dokładnych
i
szybkich
metod;
przy
wyborze
metody
należy
uwzględnić
cechy
macierzy,
czy
poszukujemy
wartości
rzeczywistych
czy
zespolonych.
eig-‐oblicza
wartości
i
wektory
własne
macierzy.
Macierz
Hessenberga-‐nazywamy
macierz
będącą
sumą
macierzy
3-‐diagonalną
i
trójkątnej
górnej;
każda
macierz
kwadratowa
jest
podobna
do
macierzy
Hessenberga
(ma
takie
same
wartości
własne).
Algorytm:
H=hess(A)
H:[Q,R]=gr(H)
H=R*Q
X=A\B jest
równoważne
X2=inv(A)*B jest równoważne
X1=A^(-‐1)*B
TYPY DANYCH -‐podstawowym typem danych w MATLABie jest
tablica(macierz)
o
elementach
rzeczywistych
lub
zespolonych
-‐wszystkie
zmienne
w
MATLABie
są
traktowane
jak
macierze
-‐
wektory
i
skalary
są
szczególnymi
przypadkami
macierzy
-‐
każda
macierz
jest
identyfikowana
przez
nazwę
zmiennej
-‐
nazwy
zmiennych
rozpoczynają
się
od
litery,
a
po
niej
mogą
być
litery,
cyfry
i
znaki
podkreślenia
-‐
pamiętanych
jest
31
pierwszych
znakówNAZWY
I
DEFINICJE
ZMIENNCYCH
-‐MATLAB
rozróżnia
duże
i
małe
litery
-‐
polecenia
standardowe
należy
pisać
małymi
literami
-‐
do
nazywania
własnych
programów
i
zmiennych
można
używać
małych
i
dużych
liter
-‐
definiowanie
typu
i
wymiarów
macierzy
odbywa
się
automatycznie
-‐
przez
rozpoznanie
rodzaju
wpisanych
wartości
-‐
MATLAB
generuje
zmienną
automatycznie
podczas
jej
pierwszego
użycia
-‐
aby
sprawdzić
wartość
istniejącej
już
zmiennej,
należy
w
wierszu
poleceń
wpisać
jej
nazwę.
-‐po
wydaniu
polecenia
i
naciśnięciu
klawisza
Enter
Matlab
natychmiast
wyświetla
jego
wynik
-‐
umieszczenie
po
poleceniu
średnika
spowoduje
wykonanie
obliczeń,
ale
bez
wyświetlania
wyniku
-‐
polecenie
powinno
się
mieścić
w
jednym
wierszu
-‐
kilka
poleceń
w
jednym
wierszu
oddzielamy
od
siebie
przecinkami
lub
średnikami.
FUNKCJE
MATEMATYCZNE
abs
-‐
wartość
bezwzględna
funkcje
trygonometryczne,
hiperboliczne
i
odwrotne:
exp
-‐
e
do
x;
fix
-‐
zaokrągla
w
stronę
zera;
floor-‐
zaokrągla
w
dół;
log
-‐
logarytm
naturalny;
log2
-‐
logarytm
o
podstawie
2;
round
-‐
zaokrągla
do
najbliższej
całkowitej;
sign
–
znak;
sqrt-‐
pierwiastek
MACIERZE
eye(n)
–
macierz
jednostkową
nxn;
ones(n)
-‐
macierz
nxn
o
elementach
równych
1
;
zeros(n)
-‐
macierz
zerowa
nxn;
rand(n)
-‐
macierz
nxn
wypełniona
liczbami
pseudolosowymi
z
przedziału
<0,1>
o
rozkładzie
jednostajnym;
A=diag(x)
-‐
macierz
przekątniowa
A
ze
składnikami
wektora
x
na
głównej
przekątnej;
x=diag(A)
-‐
wektor
x
utworzony
z
elementów
znajdujących
się
na
głównej
przekątnej
macierzy
A;
inv(A)
-‐
macierz
odwrotna
do
A
STAŁE
MATEMATYCZNE
pi
-‐
przybliżenie
wartości;
eps
-‐
względna
dokładność
zmiennoprzecinkowa
i
lub
j
-‐
pierwiastek
z
liczby
–1
nieskończoność
(ang.
infinity);
jest
rezultatem
operacji,
Inf
lub
inf
-‐
która
przekracza
zakres
arytmetyki
komputera,
np.dzielenie
przez
0;
NaN
lub
nan
-‐
nie
liczba;
jest
wynikiem
matematycznie
niezdefiniowanych
operacji
OPERACJE
NA
WEKTORACH
max(x)
-‐
zwraca
największy
element
wektora
x;
min(x)
-‐
zwraca
najmniejszy
element
wektora
x;
sum(x)
-‐
zwraca
sumę
elementów
wektora
x;
prod(x)
-‐
zwraca
iloczyn
elementów
wektora
x;
mean(x)
-‐
zwraca
średnią
arytmetyczną
elementów
wektora
xOPIS
WYKRESÓW
wyświetla
łańcuch
znaków
tekst
jako
opis
osi
x
aktywnego
wykresu
-‐
xlabel(tekst)wyświetla
łańcuch
znaków
tekst
jako
opis
osi
y
aktywnego
wykresu
-‐
ylabel(tekst)
włącza/wyłącza
wyświetlanie
pomocniczej
siatki
współrzędnych
-‐
grid
on/off
wyświetla
legendę;
łańcuch
znaków
s1
jest
opisem
odnoszącym
się
do
pierwszego
wykresu,s2-‐drugiego,...
-‐
legend(s1,s2,..)
wyświetla
łańcuch
znaków
tekst
w
miejscu
określonym
przez
współrzędne
x,y
-‐
text(x,y,tekst)
wyświetla
łańcuch
znaków
tekst
jako
tytuł
aktywnego
wykresu
-‐
itle(tekst)
rysuje
wykres
y(x)
z
określeniem
dokładnego
wyglądu
linii;
s-‐łańcuch
zawierający
kody
-‐
plot(x,y,s)
rysuje
wykres
elementów
wektora
y,
przyjmując
x=1:length(y)
-‐
plot(y)
rysuje
wykres
elementów
wektora
y
względem
elementów
wektora
x
–
plot(x,y)
OPERATORY
PORÓWNANIA
a==b
równy;
a~=
nierówny;
a<b
mniejszy;
a>b
większy;
a<=b
mniejszy
lub
równy;
a>=b
większy
lub
równy
aM-‐PLIKI
-‐
własne
programy
(wieloliniowe)
można
pisać
w
edytorze
MATLABa
lub
w
notatniku
-‐
zapisywane
są
do
plików
z
rozszerzeniem
*.m
-‐
uruchamiane
(wywoływane)
są
przez
wpisanie
nazwy
pliku
(bez
rozszerzenia
.m)
w
oknie
komend.
Rozróżniamy:
skrypty
-‐
operujące
na
zmiennych
przestrzeni
roboczej
Matlaba;
funkcje
-‐
posiadające
zmienne
lokalneSKRYPTY
-‐skrypt
jest
plikiem
tekstowym
o
rozszerzeniu
.m
(m-‐plikiem),
zawierającym
polecenia
i
instrukcje
Matlaba
-‐
skrypty
nie
pobierają
żadnych
argumentów
wejściowych
ani
nie
zwracają
argumentów
wyjściowych
-‐
mogą
tylko
operować
na
zmiennych
dostępnych
w
przestrzeni
roboczej
Matlaba.FUNKCJE
Pierwszy
wiersz
m-‐pliku
musi
zawierać
definicję
nowej
funkcji:
-‐
słowo
kluczowe
funcMon
-‐
nazwę
funkcji;
-‐
musi
być
taka
sama,
jak
nazwa
pliku
(bez
rozszerzenia
.m),
w
którym
znajduje
się
funkcja;
-‐
wartości
funkcji
(lista
argumentów
wyjściowych);
-‐
parametry
funkcji
(lista
argumentów
wejściowych).
PIERWIASTKI
WIELOMIANU
Wielomian
n-‐tego
stopnia
ma
ogólną
postać:
W(x,a)=a
1
x
n
+a
2
x
n-‐1
+...+a
nx
+a
n+1
; a=poly( r ) -‐
zwraca wektor a współczynników a
1
, a
2
a
3
, ..., a
n+1
wielomianu W(x,a) o pierwiastkach podanych w postaci wektora
r=[r
1
,r
2
, ..., r
n
]; p=polyval(a,x0) -‐ zwraca wartość wielomianu W(x,a) w punkcie x=x0; współczynniki wielomianu określa
wektor a, przy czym muszą być one uszeregowane w kolejności od najbardziej znaczącego (a
1
) do wyrazu wolnego (a
n+1)
r=roots(a) -‐ wraca wektor r pierwiastków wielomianu W(x,a); a jest wektorem współczynników wielomianu a
1
, a
2
, a
3
, ..., a
n
+1
;
x1=fzero(f,x0) -‐ zwraca miejsce zerowe x1 nieliniowej funkcji jednej zmiennej f(x); argument x0 określa początkowe
przybliżenie
wartości
szukanego
miejsca
zerowego;
f
jest
łańcuchem
znaków
określającym
funkcję
Matlaba.
rank(A)-‐
oblicza
rząd
macierzy
A
;
det(A) -‐ oblicza wyznacznik macierzy kwadratowej A
;
norm(A) -‐ oblicza normę macierzy A
;
cond(A) -‐
oblicza liczbę warunkową macierzy A
;
L=eig(A) -‐ zwraca wektor L, zawierający wartości własne macierzy
kwadratowej
A;
x=inv(A)*b
lub
x=b/A
-‐
rozwiązuje
układ
równań
A*x=b
(b-‐wektor
kolumnowy)PRZYKŁAD
z=5+10i
→z=5.0000+10.0000i;
z1=real(z)
→
z1=5
–
l.
rzeczywista;
z2
=
imag(z)
→
z2
=
10
–
l.urojona
PRZYKŁAD x=[-‐10:1:10]; f=inline('(1./(x-‐0.3).^2+0.01)+(1./(x-‐0.9).^2+0.04)-‐6'); y=f(x); z=fzero(f,3); plot(x,y)
PRZYKŁAD
a
=1
b
=2
c
=3;
K>>
W=2*a.^(3)+3*b.^(2)+4*c;
W
=
26;
K>>
r=roots([a,b,c])
r
=-‐1.0000
+
1.4142i;
-‐1.0000
-‐
1.4142i;
K>>
p=poly(r);
p
=1.0000
2.0000
3.0000