metody numeryczne procedury - cirm.am.szczecin.plcirm.am.szczecin.pl/download/ms - procedury...
TRANSCRIPT
Metody numeryczne –
proceduryna podstawie [Marciniak et. al. 1997] oraz [Bronsztejn et. al. 2004]
dr inż. Paweł ZalewskiAkademia Morska w Szczecinie
- 2 -
Interpolacja wielomianowa:
Zadanie interpolacji polega na znalezieniu pewnej funkcji, która
„przybliża” daną funkcję f. Dla funkcji f znane są przy tym wartości f(xi) lub
wartości jej pochodnych w pewnej skończonej liczbie różnych punktów xi,
które nazywamy węzłami interpolacji.
Wartość wielomianu interpolacyjnego Lagrange’a Ln w punkcie x dla danej
funkcji f oblicza się z wzoru:
n
ijj ji
jn
i
inxx
xxxfxL
00
gdzie wartości xi oraz f(xi) (i = 0, 1, ... , n) są dane.
- 3 -
Interpolacja wielomianowa:
Wartość wielomianu interpolacyjnego w punkcie x dla danej funkcji f
można obliczyć również algorytmem Neville’a na podstawie zależności
rekurencyjnych:
ijnixx
PxxPxxP
nixfP
jii
jiijiji
ji
ii
,...,1,0,,...,1,0,
,...,1,0,
1,11,
,
0,
gdzie wartości xi oraz f(xi) (i = 0, 1, ... , n) są dane. Wartość elementu Pn,n
jest poszukiwaną wartością wielomianu w punkcie x.
- 4 -
Aproksymacja wielomianowa:
Przykładem jest aproksymacja średniokwadratowa wielomianem, która
dla danej funkcji f(x) polega na określeniu wielomianu p(x) stopnia m, który
w przypadku danych dyskretnych minimalizuje sumę:
gdzie wartości xi oraz f(xi) (i = 0, 1, ... , n) są dane, m < n, a w(x) oznacza
funkcję wagową. Współczynniki wielomianu aproksymującego funkcję
f(x):
n
j
m
i
i
jijm xaxfaaaH1
2
0
10 ,...,,
n
i
iii xwxpxf1
2
m
mxaxaa ...10
gdzie m < n.
można wyznaczyć poszukując minimum poniższego funkcjonału przy
danych wartościach xi oraz f(xi) :
- 5 -
Aproksymacja wielomianowa:
mkxxaxfa
H k
j
n
j
m
i
i
jij
k
,...,1,0,01
2
0
mkyakiz ki
m
i
,...,1,0,,0
Powyższy układ równań liniowych można rozwiązać np. metodą eliminacji
Gaussa lub metodami iteracyjnymi (przybliżonymi).
Wprowadzając oznaczenia:
mkixkiz
mkxxfky
n
j
ki
j
n
j
k
jj
,...,1,0,,,
,...,1,0,
1
1
otrzymujemy układ równań liniowych postaci:
- 6 -
Całkowanie numeryczne:
Wiele całek nie można przedstawić za pomocą funkcji elementarnych. Do
ich obliczenia stosuje się metody przybliżone (przykładowo dla obliczenia
pola powierzchni pod krzywą). W celu wyznaczenia przybliżonej wartości
całki:
b
a
k
n
k
k
b
a
xfAdxxfxwdxxF0
funkcję podcałkową F(x) przedstawia się w postaci iloczynu w(x) f(x),
gdzie funkcja w(x), zwana funkcją wagową zazwyczaj wynosi 1, a funkcję
f(x) przybliża się wielomianem. Wówczas:
badxxF
b
a
,
gdzie współczynniki Ak zależą od zastosowanej metody numerycznej
obliczeń.
- 7 -
Całkowanie numeryczne:
W metodzie Simpsona dany przedział [a, b] dzieli się na równe
podprzedziały. W przypadku trzech podprzedziałów:
bxxxxxxxxa ,,,,,,, 23221101
2,1,0,2
43
1
1
1
ixx
h
Ixfhxfxfh
dxxf
ii
iiii
x
x
i
i
w każdym podprzedziale stosuje się wzór Simpsona:
Następnie każdy z przedziałów dzieli się znowu na trzy części i otrzymuje
się drugie przybliżenie całki. Procedura ta jest kontynuowana do chwili,
gdy różnica pomiędzy dwoma kolejnymi przybliżeniami całki jest
dostatecznie mała lub, gdy długości podprzedziałów są mniejsze od:
Nnab
n
,
3
- 8 -
Układy równań liniowych:
Metody dokładne rozwiązywania układu równań liniowych:
,bAx
gdzie macierz kwadratowa A stopnia n i wektor b Rn są dane,
teoretycznie pozwalają uzyskać rozwiązanie dokładne:
,1bAx
gdzie x Rn, o ile macierz kwadratowa A jest nieosobliwa. Ponieważ
wartości elementów macierzy A i wektora b nie są reprezentowane
dokładnie (rozdzielczość typów liczbowych w operacjach
zmiennoprzecinkowych w danym środowisku programowym), i podczas
obliczeń występują błędy zaokrągleń, więc rozwiązanie obliczone metodą
„dokładną” może różnić się od teoretycznego rozwiązania dokładnego.
- 9 -
Układy równań liniowych:
W przypadku układu równań liniowych z macierzą trójkątną górną:
nnnn
nn
nn
bxa
bxaxa
bxaxaxa
...
,...
,...
22222
11212111
jeżeli macierz układu nie jest osobliwa, tj. gdy aii ≠ 0 dla każdego
i = 1, 2,..., n to niewiadome xi są obliczane na podstawie zależności:
1,...,1,,1
nnia
xab
xii
n
ik
kiki
i
- 10 -
Układy równań liniowych:
W przypadku układu równań liniowych z macierzą trójkątną dolną:
nnnnnn bxaxaxa
bxaxa
bxa
...
...
,
,
2211
2222121
1111
jeżeli macierz układu nie jest osobliwa, tj. gdy aii ≠ 0 dla każdego
i = 1, 2,..., n to niewiadome xi są obliczane na podstawie zależności:
nia
xab
xii
i
k
kiki
i ,...,2,1,
1
1
Następnie w macierzy A(k) zamieniamy wiersze o numerach ik oraz k,
a w wektorze b(k) składowe o takich samych numerach. Odpowiada to
lewostronnemu przemnożeniu macierzy A(k) i wektora b(k) przez macierz
permutacji P(k). W otrzymanym układzie równań:
- 11 -
Układy równań liniowych:
Rozwiązywanie układu równań liniowych metodą eliminacji Gaussa
z częściowym wyborem elementu podstawowego:
Macierz A jest rozkładana na iloczyn macierzy LU, gdzie L oznacza
macierz trójkątną dolną z jedynkami na głównej przekątnej, a U macierz
trójkątną górną. Krok k (k = 1, 2 , ... , n-1) operacji rozkładu macierzy A
można opisać następująco:
Znajdujemy element taki, że: k
kkia
k
nik
k
ikkkiaa
max
kkbxA
- 12 -
Układy równań liniowych:
Rozwiązywanie układu równań liniowych metodą eliminacji Gaussa
z częściowym wyborem elementu podstawowego:
eliminujemy niewiadomą xk z wierszy o numerach k + 1, k + 2, .... , n
korzystając z wzorów:
,,...,2,1,,...,2,1
,
,
1
1
nkkjnkki
blbb
alaa
k
kik
ki
k
i
k
kjik
kij
k
ij
gdzie:
k
kk
k
ikik
a
al
- 13 -
Układy równań liniowych:
Rozwiązywanie układu równań liniowych metodą eliminacji Gaussa
z częściowym wyborem elementu podstawowego:
po n-1 krokach otrzymamy układ równań postaci:
1...
...............
0...1
0...01
0...001
321
3231
21
nnn lll
ll
l
L
,1PbLUx
w którym P=P(n-1)P(n-2)...P1, U=A(n) oraz:
Powyższy układ równań jest rozwiązywany za pomocą zależności:
PbLbnniu
xub
xii
n
ij
jiji
i
11 ˆ;1,...,1,,
ˆ
- 14 -
Układy równań liniowych:
Wyznaczenie macierzy odwrotnej do macierzy rzeczywistej:
W celu wyznaczenia macierzy odwrotnej do macierzy rzeczywistej A:
,
...
...............
...
...
...
321
3333231
2232221
1131211
nnnnn
n
n
i
aaaa
aaaa
aaaa
aaaa
A
macierz A jest najpierw rozkładana na iloczyn LU metodą eliminacji
Gaussa. Po wykonaniu tej operacji otrzymujemy:
gdzie P oznacza macierz permutacji.
PLUA
LUPA
111
- 15 -
Układy równań liniowych:
Wyznaczenie macierzy odwrotnej do macierzy rzeczywistej:
Elementy macierzy L-1 oraz elementy macierzy U-1 są określone wzorami:
,,...,1,,,...,2,1,
,,...,1,,,...,2,1,
1
1
njjinju
uu
u
njjinjl
ll
l
ij
i
jk
kjikij
ij
ij
i
jk
kjikij
ij
gdzie:
.gdy,1
,gdy,0
ji
jiij
- 16 -
Układy równań liniowych:
Metody iteracyjne rozwiązywania układu równań liniowych:
),1(bAx
gdzie macierz kwadratowa A stopnia n i wektor b Rn są dane, generują
ciąg kolejnych przybliżeń wektora x.
Rozpoczęcie procesu iteracyjnego wymaga podania początkowych
przybliżeń wszystkich składowych tego wektora.
Jedną z metod iteracyjnych rozwiązywania układu równań liniowych z
nieosobliwą macierzą kwadratową A jest metoda Jacobiego. W metodzie
tej macierz A jest przekształcana na sumę trzech macierzy:
,UDLA
gdzie L oznacza macierz trójkątną dolną, D – macierz diagonalną, a U
macierz trójkątną górną.
- 17 -
Układy równań liniowych:
Rozwiązywanie układu równań liniowych metodą iteracyjną (przybliżoną)
Jacobiego:
Uwzględniając rozkład macierzy A, układ równań (1) można zapisać w
postaci:
)2(
,
111
1
bDxULDx
bxULDx
kk
kk
z czego wynika następujący proces iteracyjny:
,
,
bxULDx
bxUDL
jeżeli promień spektralny macierzy –D-1(L+U) jest mniejszy od 1, to
powyższy proces iteracyjny jest zbieżny.
- 18 -
Układy równań liniowych:
Rozwiązywanie układu równań liniowych metodą iteracyjną (przybliżoną)
Jacobiego:
Z zależności (2) wynika, że (k+1)-sze przybliżenie i-tej składowej
rozwiązania jest określone wzorem:
,0lub0,
,max
1
1
1
kk
kk
kk
xxxx
xx
),3(,...,2,1,,11 ni
a
bxa
xii
i
n
ijj
k
jij
k
i
przy czym aii ≠ 0. Proces iteracyjny kończy się, gdy:
gdzie:,max
1i
nixx
a ε oznacza zadaną dokładność, lub gdy xk+1 = xk = 0 lub też, gdy liczba
iteracji w procesie (3) jest większa od przyjętej wartości maksymalnej.
- 19 -
Równania i układy równań nieliniowych:
Równanie skalarne z jedną niewiadomą może być zapisane w postaci:
,0xf
gdzie f: X → Y, przy czym X, Y R. Jeśli równanie to nie może być
rozwiązane analitycznie, to do znalezienia jego pierwiastków stosujemy
zwykle metodę iteracyjną, za pomocą której można otrzymać przybliżoną
wartość pierwiastków, w przypadku, gdy rozwiązanie równania istnieje.
Stosując metodę regula falsi znajduje się wartość pierwiastka równania
skalarnego z jedną niewiadomą leżącego w przedziale [a, b] takim, że:
0bfaf
- 20 -
Jeden krok metody regula falsi polega na zastąpieniu bieżącego
przedziału [a, b] przedziałem mniejszym, którym jest jeden z przedziałów
[a, z] lub [z, b], gdzie:
Równania i układy równań nieliniowych:
afbf
abbfbz
Wybór odpowiedniego przedziału zależy od spełnienia jednego
z warunków f(a)f(z) ≤ 0 lub f(z)f(b) ≤ 0.
Obliczenia kontynuuje się dopóty, dopóki a < z < b.
- 21 -
Wartość pierwiastka równania skalarnego z jedną niewiadomą leżącego
w przedziale [a, b] można również znaleźć za pomocą metody siecznych
(interpolacji liniowej), która polega na zastosowaniu zależności:
Równania i układy równań nieliniowych:
abbaba 1,0i1,0
....,3,2,21
2111
k
xfxf
xxxfxx
kk
kkkkk
Za początkowe przybliżenia x1 i x2 w procesie iteracyjnym przyjąć można
np. wartości (zależnie od rozdzielczości podziału przedziału [a, b]):
uporządkowane w taki sposób, że:
21 xfxf
- 22 -
Różniczkowanie numeryczne:
Przybliżone wartości pochodnej funkcji f(x) mogą być wyznaczone z
wielomianu aproksymującego p(x). Ponieważ różnica f(x) - p(x) może być
bardzo mała, a różnica f’(x) – p’(x) bardzo duża, podejście takie może
spowodować powstanie zbyt dużego błędu. Gdy jest wymagana duża
dokładność obliczania pochodnej zaleca się stosować metodę Romberga.
W metodzie tej dla danego początkowego kroku h0 wyznacza się
wartości:
...,1,0,2
0 ih
hii
,
20
i
iii
h
hxfhxfT
gdzie:
następnie korzystając z wzoru:
ikTT
TTk
kiki
kiki ,...,2,1,14
1,11,
1,,
oblicza się kolejne elementy następującej tablicy:
- 23 -
Różniczkowanie numeryczne:
kixfT
TTT
TT
T
ki danegodlagdy,',
222120
1110
00
Obliczenia kończą się, gdy:
1,1, kiki TT
gdzie ε oznacza zadaną z góry dokładność.
Jeżeli dla założonego i oraz k powyższy warunek nie będzie spełniony to
dany krok h0 dzieli się na połowę i cały proces obliczeń powtarza się. Gdy
po mN iteracjach zadana dokładność ε nie jest osiągnięta to za
rozwiązanie przyjmuje się ostatnio obliczone przybliżenie Ti,k.
- 24 -
Różniczkowanie numeryczne:
Rozwiązanie zagadnienia początkowego dla pojedynczego równania
różniczkowego to inaczej obliczenie przybliżonej wartości y(x1)
rozwiązania skalarnego równania:
yxfdx
dyy ,'
z warunkiem początkowym:
00 yxy
Jedną z metod numerycznych prowadzących do rozwiązania tego
zagadnienia jest metoda Rungego-Kutty z automatycznym doborem
kroku całkowania.
- 25 -
Różniczkowanie numeryczne:
Wartość y(x1) oblicza się stosując zależność:
4321 226
KKKKh
xyhxy
gdzie:
34
23
12
1
,
,2
,2
,2
,2
,,
hKyhxfK
Kh
yh
xfK
Kh
yh
xfK
yxfK
- 26 -
Różniczkowanie numeryczne:
Na podstawie przedstawionej zależności wyznacza się dwie wartości
przybliżonego rozwiązania w punkcie x+h, gdzie h oznacza krok
całkowania, a mianowicie: y(x+h,h) przy użyciu kroku h i y(x+h,h) stosując
dwukrotnie krok h/2. Jeżeli:
)4(
,2
,,,max
2,,
hhxyhhxy
hhxyhhxy
gdzie ε, η > 0 oznaczają wartości charakteryzujące dokładność
rozwiązania, to końcową przybliżoną wartość rozwiązania w punkcie x+h
oblicza się z wzoru:
15
,2
,
2,
hhxyh
hxyh
hxyhxy