OBLICZENIA
NUMERYCZNE
za pomocą pakietu MATLAB
Miejsca zerowe i minima funkcji
x_zer =
fzero(f,x0)
zwraca miejsce zerowe
x_zer
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: nazwę funkcji lub definicję funkcji
inline
x1=fminbnd(f,x0,
xk)
zwraca wartość
x1
, dla której
nieliniowa
funkcja jednej zmiennej
f(x)
osiąga minimum;
argumentami funkcji są liczby
x0
i
xk
,
określające początek i koniec przedziału
poszukiwań oraz łańcuch znaków funkcji
f
X=fminsearch(f,X
0)
zwraca wektor wartości
X
,
dla których nieliniowa funkcja
wielu zmiennych osiąga
minimum; argumentami
funkcji są:
wektor X0
,
określający punkt startowy
poszukiwań oraz
f
– łańcuch
znaków, jak w przypadku
funkcji
fzero
Przykład:
Policzyć miejsca zerowe wielomianu
W(x) =
x^2 + 5*x + 2
1) x_zer =
fzero
( ' x^2 + 5*x + 2 ' , -1)
2) x_zer =
fzero
( ' W(x) ' , -1)
3) x_zer =
fzero
( @W , -1) x_zer =
fzero
( @W , [-
1.1 , -1.3] )
w przypadku 2 i 3 w m.pliku o nazwie
W.m
musi być zdefiniowana
funkcja
function y=W(x)
y=x^2 + 5*x + 2
Wszystkie powyższe funkcje można wywołać z
opcjonalnym argumentem
opcje
, np..
x1 = fzero(f,x0,
opcje
)
Opcje
określają parametry wywołania tych funkcji.
Domyślne ustawienia parametrów można zmieniać za
pomocą funkcji optimset:
opcje = optimset(parametr, wartość,...)
Wykonując w oknie Command Window polecenie:
- optimset
– uzyskamy listę parametrów i ich możliwe
wartości
-
optimset( ’fminbnd’ )
– wyświetli nazwy parametrów oraz
ich domyślne wartości dla funkcji
fminbnd
Parametry zmieniane za pomocą funkcji
optimset
‘Diagnostic’
Wydruk diagnostyki minimalizowanej
funkcji lub rozwiązywanego równania;
dopuszczalne wartości:’on’ lub
‘off’(domyślna)
‘Display’
Sposób wyświetlania wyników: bez
wyświetlania (‘off’), wyświetlanie wyników
po każdej iteracji (‘iter’), wyświetlanie tylko
ostatecznego rozw.(‘final’-wart.dom.)
‘MaxFunEval
s’
Maks. dozwolona liczba obliczeń wartości
funkcji (l.całk.dodat.)
‘MaxIter’
Maks. dozwolona liczba iteracji
(l.całk.dodat.)
‘TolX’
Dokładność wykonywania obliczeń(l.+)
Wyznaczanie pierwiastków
wielomianu
Wielomian n-tego stopnia ma ogólną postać:
W(x,a) = a
1
x
n
+ a
2
x
n-1
+...+ a
n
x + a
n+1
,
gdzie
a
1
, a
2
, a
3
, ..., a
n+1
są współczynnikami
wielomianu, uszeregowane według malejących
potęg zmiennej x.
r
= roots(
a
)
Zwraca wektor
r
pierwiastków
wielomianu
W(x,a)
;
gdzie
a
jest wektorem współczynników
wielomianu
a
1
, a
2
, a
3
, ..., a
n+1
Funkcja wyznaczająca pierwiastki
wielomianów
Przykład: napisz skrypt który pozwoli
wyznaczyć pierwiastki wielomianów:
W1(x) = x
2
+ 3x – 4
pier_W1 =
roots([ 1 3 -4 ])
W2(x) = 3x
5
- 2x
4
+ 5x
2
– 7
pier_W2 =
roots([ 3 -2 0 5 -7 ])
Funkcje wyznaczające wielomiany i ich
wartości
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ści 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
)
;
jeśli
x0
jest wektorem
(macierzą), wartości wielomianu
obliczane są dla wszystkich elementów
wektora
x0
Układy równań liniowych
[L,U] =
lu(A)
Dokonuje rozkładu LU macierzy A,
tzn. znajduje macierze L i U takie,
że A=L*U, przy czym L-macierz
trójkątna dolna, U-macierz
trójkątna górna
x =
inv(A)*b
lub
x = A\b
Rozwiązuje układ równań:
A*x=b
(b-wektor kolumnowy)
x = A/b
Rozwiązuje układ równań:
x*A=b
(b-wektor wierszowy)