Upload
sebastian-andrzej-gwozdz
View
542
Download
0
Embed Size (px)
Citation preview
Metody matematycznej fizyki
Paweł Zimny
Katedra
Elektrotechniki Teoretycznej
i Informatyki
www.ely.pg.gda.pl/Zimny
A. Krupowicz: Metody numeryczne zagadnień początkowych
równań różniczkowych zwyczajnych.
Z. Fortuna, B. Macukow, J. Wąsowski: Metody numeryczne.
G.I. Marczuk: Analiza numeryczna zagadnień fizyki
matematycznej.
D. Poter: Metody obliczeniowe fizyki.
O.C. Zienkiewicz: Metoda elementów skończonych.
Gelfand I.M., Fomin S.W.: Rachunek wariacyjny.
Krzyżański M.: Równania różniczkowe cząstkowe
rzędu drugiego.
Rektorys K.: Variational Methods in Mathematics,
Science and Engineering.
Smirnow W.I.: Matematyka wyższa.
Snedon I.N.: Równania różniczkowe cząstkowe.
Zimny P.: Metody wariacyjne w elektrotechnice.
Równanie różniczkowe zwyczajne rzędu n-go
0x,...,x,x,tf n
przykład: tsinExxx1ax 22
Układ równań różniczkowych I-go rzędu w postaci normalnej:
n21nn
n2122
n2111
x,...,x,x,tfx
............................
x,...,x,x,tfx
x,...,x,x,tfx
Sprowadzenie równania rzędu n do układu n równań naprzykładzie:
tsinExxx1ax 22
oznaczamy:
22
21
1
xxdtd
xdtd
x
xxx
xx
i ostatecznie:
12
2212
21
xxx1atsinEx
xx
Równanie różniczkowe rzędu n może praktycznie zawszebyć zapisane w formie układu n równań I-go rzędu.
Zagadnienie początkowe dla równania różniczkowego:
Przykład: tfxx
całka ogólna: 0xx
texpAx Rozwiązanie:
Całka szczególna metodą uzmienniania stałej:
tftexpA
czyli
t
0
dexpfCA
Rozwiązanie równania: tfxx
ma postać: t
0
dtexpftexpCx
Stałą C wyznaczamy z warunków początkowych
Dla równania różniczkowego I-go rzędu potrzebujemyjeden warunek początkowy:
0x0tx
i dla wyznaczenia stałej C mamy równanie:
Cx0
i rozwiązanie ma postać:
t
00 dtexpftexpxtx
Przykład równania różniczkowego II rzędu:
R0
E C
R
L
t=0
i(t)
uc
cuCi
0uuRCuLC ccc
Warunki początkowe:
ERR
R0u
0c
0RRE
)0(i
ERR
R0u
0c
0RRE
)0(i
Biorąc pod uwagę, że cuCi zapisujemy warunki w postaci:
CRRE
u
ERR
R0u
00tc
0c
Warunków początkowych należy postawić tyle i nie więcej
ile wynosi rząd równania różniczkowego
0uuRCuLC ccc
CRRE
u
ERR
R0u
00tc
0c
Rozwiązanie:
Niech równanie charakterystyczne:
01RCLC 2
ma dwa różne pierwiastki rzeczywiste 21 ,
wtedy całka ogólna ma postać: t2
t1c
21 eAeAtu
Stałe A1 i A2 wyznaczamy z warunków początkowych:
CRRE
u
ERR
R0u
00tc
0c
czyli
CRRE
AA
ERR
RAA
02211
021
Rozwiązując powyższy układ równań wyznaczamy stałea następnie znajdujemy napięcie na kondensatorze.
Podsumowanie:
1. Mamy kłopoty z rozwiązywaniem równań o stałych współczynnikach, jeżeli rząd wyższy od dwóch równanie charakterystyczne jest wielomianem rzędu n i nie znamy wzorów na pierwiastki.2. Równań o zmiennych w czasie współczynnikach i nieliniowych nie potrafimy rozwiązać w ogólnym przypadku często już dla rzędu I-go
Konieczność użycia metod numerycznych
Ze względu na łatwość zbudowania ogólnego algorytmuobliczenia prowadzimy dla układu równań różniczkowych
I-go rzędu w postaci normalnej
który po wprowadzeniu formalnego zapisu w postaci wektorów:
tx
tx
tx
tX
n
2
1
tx
tx
tx
tX
n
2
1
n21nn
n2122
n2111
x,...,x,x,tfx
............................
x,...,x,x,tfx
x,...,x,x,tfx
n21n
n212
n211
x,...,x,x,tf
x,...,x,x,tf
x,...,x,x,tf
X,tF
zapisujemy: X,tFX
X,tFX
Wniosek – Jeżeli opanujemy metodę numerycznego rozwiązywania jednego równania różniczkowego pierwszego rzędu, czyli
x,tfx
to wyniki łatwo uogólnimy na układ n równań I-go rzędu w postaci normalnej
Rozpoczynamy od następującego zadania:
x,tfx
z warunkiem początkowym: 0x0tx
Należy znaleźć rozwiązanie dla t[0,T]
Metoda aproksymacji wielomianowej
metody wielokrokowe
t,xfx
Przyjmujemy algorytm w postaci
p
0i
p
1iininiini1n )t,x(fbhxax
tk=kh
Algorytm nazywamy jawnym, jeżeli sumowanie rozpoczynasię od 0 w przeciwnym przypadku mówimy, że algorytm jest
niejawny
Wyznaczenie współczynników ai, bi.
Metoda jest dokładna, jeżeli rozwiązaniem równania:
t,xfx
jest wielomian stopnia zerowego, czyli równanie ma postać:
0x.
którego rozwiązaniem jest: 0ctx
p
1i0i0 cac
podstawiając do
p
0i
p
1iininiini1n )t,x(fbhxax
mamy ponieważ f(x,t)=0. Dzieląc przez c0
otrzymujemy warunek:
1ap
0ii
Jeżeli współczynniki ai dobierzemy tak, aby spełnićpowyższy warunek, to algorytm jest dokładny dla
wielomianów stopnia zerowego.
Żądamy, aby jeżeli rozwiązaniem równania
01 ctcx
t,xfx
jest wielomian pierwszego stopnia
to algorytm
p
0i
p
1iininiini1n )t,x(fbhxax
jest dokładny.
Równanie spełniane przez wielomian 01 ctcx
ma postać: 1
.
cx czyli c)t,x(f 1
a więc algorytm:
p
0i
p
1iininiini1n )t,x(fbhxax
uwzględniając, że ti=ih przyjmuje postać:
p
1iii
p
0i01i01 cbh]ch)in(c[ach)1n(c
Biorąc pod uwagę, że dla wielomianu stopnia zerowegomamy warunek:
1ap
0ii
Z równania:
p
1iii
p
0i01i01 cbh]ch)in(c[ach)1n(c
otrzymujemy: 1biap
1ii
p
0ii
Powtórzmy jeszcze jako ćwiczenie rozumowanie dla wielomianu II-go stopnia:
012
2 ctctcx
który spełnia równanie 12
.
ctc2x
czyli 12 ctc2)t,x(f
Przyjmując dla skrócenia zapisu tn=0 algorytm:
p
0i
p
1iininiini1n )t,x(fbhxax
zapisujemy:
i uwzględniając:
12inin
012
2in
012
21n
c)ih(c2)t,x(f
c)ih(c)ih(cx
chchcx
p
1i12i
p
0i01
22i01
22 ]cihc2[bh]cihc)ih(c[achchc
a biorąc pod uwagę dwa poprzednie warunki:
1ap
0ii
1biap
1ii
p
0ii
otrzymujemy:
1ib2iap
1ii
2i
Dla wielomianu stopnia k:
011k
1kk
k ctc...tctcx
równie różniczkowe ma postać
12k
1k1k
k
.
c...tc)1k(tkcx
Przyjmując podobnie jak dla drugiego stopnia iht i
k
1m
1mminin
k
0m
mmin
k
0m
mm1n
)ih(mc)t,x(f
)ih(cx
hcx
i podstawiając do:
p
0i
p
1iininiini1n )t,x(fbhxax
otrzymujemy:
p
1i
k
1m
1mmi
p
0i
k
0m
mmi
k
0m
mm )ih(mcbh)ih(cahc
Porównując współczynniki przy tych samych potęgachh i poprzednie k-1 równań znajdujemy:
1)i(bk)i(ap
1i
1ki
p
0i
ki
Algorytm wielokrokowy:
p
0i
p
1iininiini1n )t,x(fbhxax
jest dokładny dla wielomianu stopnia k, jeżeli współczynnikiai, bi spełniają następujący układ k równań:
1ap
0ii
1biap
1ii
p
0ii
1ib2iap
1ii
2i
...............................
1)i(bk)i(ap
1i
1ki
p
0i
ki
Każdy algorytm spełniający warunki dla k>1 nazywamy
zwartym
Liczba niewiadomych do wyznaczenia w algorytmie:
p
0i
p
1iininiini1n )t,x(fbhxax
Współczynników ai wynosi: p+1
Współczynników bi wynosi: p+2
Całkowita liczba niewiadomych: 2p+3
1)i(bk)i(ap
1i
1ki
p
0i
ki
Układ równań:k=0,1,...,n
można spełnić pod warunkiem, że liczba równań n+1 2p+3
W metodzie Adamsa - Bashfortha przyjmujemy p=n-1
Liczba niewiadomych wynosi: 2(n-1)+3=2n+1, więc przy
spełnieniu n+1 równań możemy dowolnie wybrać
n współczynników
Przyjmujemy n-1 współczynników a1=a2=....=an-1=0
Pierwsze
z równań przy spełnieniu powyższych warunków
przyjmuje postać:
1ap
0ii
1a0
Jako n-ty dowolnie wybrany współczynnik przyjmujemy b-1=0A więc schemat Adamsa - Bashfortha jest schematem jawnym
Dla n=1 mamy p=0 i równanie wyznaczające b0
1)i(bk)i(ap
1i
1ki
p
0i
ki
jest 1b0
Przy n=2 będzie p=1 i mamy dwie niewiadome b0 i b1
spełniające układ równań:
21
b
1bb
1
10
czyli21
b;23
b 10
n1.3
1211
b
.
b
b
b
))1n((...)2()1(0
.......
)1n(...410
)1n(...210
1...111
1n
2
1
0
1nnn
2
Ogólnie jeżeli mamy n niewiadomych współczynników bi , to wyznaczamy je z równań
Rozwiązanie powyższego układu równań przedstawia tabela:
Współczynniki bk metoda Adamsa - Bashfortha
n b0 b1 b2 b3 b4 b5
1 1
2 3/2 -1/2
3 23/12 -16/12 5/12
4 55/24 -59/24 37/24 -9/24
5 1901/720 -2774/720 2616/720 -1274/720 251/720
6 4277/1440 -7923/1440 9982/1440 -7298/1440 2877/1440 -475/1440
Algorytm Adamsa - Bashfortha rzędu pierwszego jest
nazywany algorytmem Eulera i ma postać:
iii1i t,xhfxx
Przykład: t30sin10x3x
z warunkiem początkowym x(0)=0
Zapisujemy równanie w postaci normalnej:
x3t30sin10x
czyli w tym przypadku funkcja f(x,t) jest
x3t30sin10t,xf
Wybór kroku całkowania h:
Wybór kroku całkowania h:
Równanie jednorodne ma postać:
0x3x
Całka ogólna tego równania ma postać:
t3expAx
Przebieg rozwiązania jest scharakteryzowany przezwielkość tłumienia, które w tym przypadku wynosi
a=3 i charakterystyczny czas wynosi 1/a=1/3 s. Krok czasowy h należy wybrać co najwyżej
h<1/(10a), co w tym przypadku pozwala wybraćh=0.03s.
Należy również uważnie rozważyć funkcję wymuszającą,która w rozpatrywanym przypadku ma postać:
t30sin10
Okres T zmian analizowanej funkcji wynosi:
s21.0302
T
Rysunek funkcji sinus jest „gładki”, jeżeli podzielimyokres na co najmniej 20 kroków, czyli krok h powinien
wynosić h<T/20, a więc h=0.01s.
t0 h 2h 3h 4h
Z obu ograniczeń h=0.03s i h=0.01s wybieramy mniejszyczyli w tym przypadku przyjmujemy h=0.01s.Algorytm przy przyjętym kroku h ma postać:
nn1n x3n01.030sin1001.0xx
x0=0
i mamy: 02955.00301.030sin1001.0x
01.0t
1
1
następny:
08513.002955.0302.30sin1001.02955.0x
02.0t
2
2
itd..
0 6 12 18 24 30 36 42 48 54 600.5
0.25
0
0.25
0.5
0.75
1
xn
y n h( )
ny(t) - rozwiązanie dokładne
h=0.01
0 6 12 18 24 30 36 42 48 54 600.05
0.025
0
0.025
0.05
0.075
0.1
xn y n h( )
n
błąd bezwzględny
h=0.01
0 2 4 6 8 10 12 14 16 18 200.5
0.25
0
0.25
0.5
0.75
1
xn
y n h( )
n
h=0.05
0 2 4 6 8 10 12 14 16 18 200.5
0.33
0.17
0
0.17
0.33
0.5
xn y n h( )
n
h=0.05
0 2 4 6 8 10 12 14 16 18 205
3.33
1.67
0
1.67
3.33
5
xn
y n h( )
n
h=0.3
0 2 4 6 8 10 12 14 16 18 205
3.33
1.67
0
1.67
3.33
5
xn y n h( )
n
h=0.3
0 2 4 6 8 10 12 14 16 18 201000
666.67
333.33
0
333.33
666.67
1000
xn
y n h( )
n
h=0.75
0 2 4 6 8 10 12 14 16 18 201000
666.67
333.33
0
333.33
666.67
1000
xn y n h( )
n
h=0.75
Równanie drugiego rzędu na przykładzie wahadłamatematycznego o długości l:
0sinlg
dt
d2
2
Wprowadzamy nowe zmiennecelem zastąpienia układem równań I-go rzędu:
sinlg
dtddtd
Przyjmujemy wahadło o długości l=1m i g=10m/s2
Warunki początkowe:
0dtd
0
30
0t
Jeżeli zlinearyzujemy równanie: 0sinlg
dt
d2
2
to przyjmie on postać: 0lg
dt
d2
2
którego całka ogólna ma postać:
t
lg
cosAtlg
sinA 21
Okres T drgań zlinearyzowanego wahadła wynosi:
s2gl
2T
czyli krok należy przyjąć
1.0h20T
h
ponieważ mamy nieliniowe równanie, więc dla bezpieczeństwaprzyjmujemy h=0.05s.
Jawny schemat Eulera dla układu równań
sinlg
dtddtd
przyjmuje postać:
nn1n
nn1n
sinlg
h
h
z warunkiem startowym:
03
0
0
i dla n=0 mamy:
0433.03
sin05.00
0472.1005.03
1
1
czyli0433.0
0472.1
1
1
Znamy
0433.0
0472.1
1
1
możemy przyjąć n=1 i wyznaczyć wartości w następnymkroku
0866.00472.1sin05.00433.0
045035.10433.005.00472.1
2
2
czyli mamy:
0866.
045035.1
2
2
i obliczenia możemy powtórzyć.
0 400 800 1200 1600 20002
1.33
0.67
0
0.67
1.33
2
n
x n h( )
n
h=0.001
0 200 400 600 800 10005
3.33
1.67
0
1.67
3.33
5
n
x n h( )
n
h=0.005
0 200 400 600 800 10001
0.67
0.33
0
0.33
0.67
1
n
x n h( )
n
h=0.005 warunek początkowy:
0t
0t
0
18
Metody niejawne
Metoda Adamsa - Moultona
W metodzie Adamsa - Moultona przyjmujemy, że b-10
Przyjmujemy p=n-2
Liczba niewiadomych wynosi: 2(n-2)+3=2n-1,
w tym ai – n-1 nieznanych i bi – n nieznanych
więc przy spełnieniu n+1 równań możemy dowolnie wybrać
n-2 współczynników i przyjmujemy a1=a2=...=an-2=0
p
0i
p
1iininiini1n )t,x(fbhxax
pierwsze
z równań przy spełnieniu powyższych warunków
przyjmuje postać:
1ap
0ii
1a0
Z układu równań:
zapewniających zwartość metody otrzymujemy:
1)i(bk)i(ap
1i
1ki
p
0i
ki
k=0,1,...,n
Dla wyznaczenia pozostałych mamy układ równań:
k1
)i(b2n
1i
1ki
k=1,2,...,n
Jeżeli n=1, to mamy: b-1=1
i schemat metody I-go rzędu zwanej niejawną metodą Eulera
będzie: 1n1nn1n t,xhfxx
Dla n=2 mamy:
k1
)i(b0
1i
1ki
k=1,2
czyli
21
b
1bb
1
01
i rozwiązaniem powyższego układu równań są b-1=b0= 0.5
Algorytm niejawny II-go rzędu zwany metodą trapezów
jest:
1n1nnnn1n t,xft,xf2h
xx
Jest to jeden z najpopularniejszych obecnie algorytmów
całkowania równań różniczkowych zwyczajnych.
Następne współczynniki dla metody Adamsa – Moultona
otrzymujemy biorąc kolejno n=3,4, itd.. Poniżej podane
zostaną współczynniki dla metody do 5-go rzędu:
n=3
1n1nnn1n1nn1n t,xft,xf8t,xf512h
xx
w tym przypadku metoda nie jest metodą samostartującą
n=4
2n2n
1n1nnn1n1nn1n
t,xf
t,xf5t,xf19t,xf924h
xx
3n3n2n2n
1n1nnn1n1nn1n
t,xf19t,xf106
t,xf264t,xf646t,xf251720h
xx
n=5
Przykład zastosowania
Niejawna metoda Eulera
Załączenie siły elektromotorycznej sinusoidalnie zmiennej
w obwodzie RC.R
Ce(t)
t=00tC 0u
tsinEte m
Równanie obwodu ma postać:
teudt
duRC C
C
lub pisząc w postaci normalnej otrzymujemy:
RCu
tsinRCE
dtdu CmC
z warunkiem początkowym: 0tC 0u
Dla przeprowadzenia obliczeń numerycznych przyjmujemy
dane liczbowe: R=10, C=100F, Em=100V, =314rad-1,
=/4
Po podstawieniu danych liczbowych otrzymujemy:
C35C u10
4t314sin10
dtdu
z warunkiem początkowym: 0u 0C
Ustalenie kroku: stała czasowa obwodu RC=1ms okres przy 50Hz = 20ms
Dobry wybór powinien być 0.1ms. Zaryzykujmy h=0.0005.
Algorytm niejawny Eulera ma postać:
1n
31n
5n1n u10
4t314sin100005.0uu
Startujemy dla n=0 t=0 i mamy0u 0C
t=0.5ms
1
351 u10
40005.314sin100005.00u
Niewiadoma występuje po obu stronach równości i rozwiązującmamy:
5.01
942398.sin100005.0u
5
1
9657.26u1
Następny krok n=2, t=0.001s i mamy:
235
2 u107854.0001.0314sin100005.09657.26u
i rozwiązując otrzymujemy:
5.1
099398.1sin509657.26u2
6749.47u2
itd. W ramach ćwiczenia zalecane przeliczenie kilku kroków i porównać z rozwiązaniem dokładnym
0 50 100 150 200 250 300 350 400100
50
0
50
100
u n
uc n h( )
n
h=0.0005
0 50 100 150 200 250 300 350 4005
2.5
0
2.5
5
u n uc n h( )
n
błąd bezwzględny
0 12.5 25 37.5 50 62.5 75 87.5100100
50
0
50
100
u n
uc n h( )
n
h=0.002
0 12.5 25 37.5 50 62.5 75 87.510020
12.5
5
2.5
10
u n uc n h( )
n
0 2.5 5 7.5 10 12.5 15 17.5 20100
50
0
50
100
un
uc n h( )
n
h=0.01
0 2.5 5 7.5 10 12.5 15 17.5 2040
25
10
5
20
u n uc n h( )
n
0 2.5 5 7.5 10 12.5 15 17.5 200
25
50
75
100
u n
uc n h( )
n
h=0.02
0 2.5 5 7.5 10 12.5 15 17.5 200
10
20
30
40
u n uc n h( )
n
Jako następny przypadek rozpatrzymy nieliniową
indukcyjność
E
=f(i)
Rt=0
3i002.0i1.0 Charakterystyka dławika:
Przyjmujemy R=5, E=15V
Równanie obwodu jest ERidtd
Biorąc pod uwagę, że 3i002.0i1.0
mamy: ERidtdi
i006.0dtdi
1.0 2
lub zapisując w postaci normalnej będzie:
2i006.01.0
RiEdtdi
z warunkiem początkowym: i(0)=0
Wybór kroku całkowania: Jeżeli odrzucimy człon nieliniowy,
to mamy obwód o indukcyjności L=0.1H i rezystancji 5.
Stała czasowa tego obwodu wynosi 0.1/5=20ms. Należałobyprzyjąć krok co najwyżej 2ms. Spróbujmy zaryzykować i przyjmujemy h=0.004s.
Obliczenia przeprowadzimy korzystając z metody trapezów
Mamy po podstawieniu danych następujący schemat:
2
1n
1n2n
nn1n i006.01.0
i515
i006.01.0
i5152h
ii
z punktem startowym i0=0. Dla n=1 mamy:
21
121 i006.01.0
i515
0006.01.0
05152004.0
0i
lub21
11 i006.01.0
i515002.03.0i
21
11 i006.01.0
i515002.03.0i
Powyższe równanie nieliniowe rozwiązujemy jedną z metodnumerycznych. Zastosujemy iterację oznaczając:
k1i - wartość prądu w k-tej iteracji
mamy schemat iteracyjny:
2k1
k1k
i006.01.0
i515002.03.0i 1
1
punkt startowy:0ii 0
01
i mamy: 6.0i11 5453.i2
1 54993.i31 54953.i4
1
Kończymy iteracje: 54953.i41
na czwartej i mamy:
5495.i
ii
1
411
Możemy przystąpić do następnego kroku t=2h=0.008sprzyjmując jako punkt startowy otrzymany wynikdla t=h=0.004s.
22
222 i006.01.0
i515
5495.006.01.0
5495.5152004.0
5495.i
czyli
2k2
k1k
i006.01.0
i515002.07991.0i 2
2
5495.i01
Start:
0487.1i12
008.1i22
01123.1i32
011.1i42
Kończymy: 011.1ii 422
Metoda jawna wstecznego różniczkowania
p=m-1
W algorytmie jawnym:
p
0i
p
0iininiini1n )t,x(fbhxax
Wybieramy:
i przyjmujemy: b-1=b1=...=bm-1=0
mamy:)t,x(hfbxax nn0
1m
0iini1n
Układ równań : 1)i(bk)i(a1m
0i
1ki
1m
0i
ki
k=0,1,...,m
przyjmuje postać:
m2,3,4....,=k dla 1a)i(
1iab
1a
1m
1ii
k
1m
1ii0
1m
0ii
dla m=1 mamy:
1b
1a
0
0
znowu mamy metodę Eulera: nnn1n t,xhfxx
m=2 i mamy:
1a
1ab
1aa
1
10
10
którego rozwiązanie ma postać: a0=0; a1=1; b0=2i schemat: nn1n1n t,xhf2xx
Dla m=3 mamy schemat:
nn2n1nn1n t,xhf3x21
x3x23
x
m=4
nn3n2n1nn1n t,xhf4x31
x2x6x3
10x
m=5
nn4n3n2n1nn1n t,xhf5x41
x35
x5x10x1265
x
Metody jawne wstecznego różniczkowania nie są używanedo samodzielnego rozwiązywania numerycznego równańróżniczkowych. Są niestabilne.
Metody niejawne wstecznego różniczkowania
(metody Geara)
Algorytm:
p
0i
p
1iininiini1n )t,x(fbhxax
przyjmujemy: p=m-1
b0=b1=...bm-1=0
czyli: )t,x(hfbxax 1n1n1
1m
0iini1n
a dla wyznaczenia współczynników mamy równania:
m1,2,...,=k dla 1kba)i(
1a
1
1m
1ii
k
1m
0ii
m=1
1b
1a
1
0
i schemat: 1n1nn1n t,xhfxx
niejawny schemat Eulera !
m=2
1b2a
1ba
1aa
11
11
10
którego rozwiązanie jest:32
b;31
a;34
a 110
schemat przyjmuje postać:
1n1n1nn1n t,xhf32
x31
x34
x
dla m=3 mamy:
1n1n2n1nn1n t,xhf116
x112
x119
x1118
x
m=4
1n1n3n2n1nn1n t,xhf2512
x253
x2516
x2536
x2548
x
Lokalny błąd obcięcia wzorów całkowania numerycznego
Definicja błędu obcięcia T :
1n1nT xtx
gdzie x(t) rozwiązanie dokładne.
W metodach wielokrokowych błąd ten można obliczyć.
Dla metody Adamsa – Bashfortha lokalny błąd obcięcia dla metody k-go rzędu wyraża się zależnością:
Dla metody Adamsa – Bashfortha lokalny błąd obcięcia dla metody k-go rzędu wyraża się zależnością:
2k
0i
ki
1k1kk
4321
1nn
1k1kkT
i1kb1k1kk!1k
1C
720251
C;83
C;125
C;21
C
t,t
hxC
Dla metody Adamsa – Moultona lokalny błąd obcięcia dla metody k-go rzędu wyraża się zależnością:
3k
1i
ki
1k1kk
4321
1nn
1k1kkT
i2kb1k2k1k!1k
1C
72019
C;241
C;121
C;21
C
t,t
hxC
Dla metody Geara lokalny błąd obcięcia dla metody k-go rzędu wyraża się zależnością:
2k
0i
k1
1ki
1kk
4321
1nn
1k1kkT
k1kbi1kak!1k
1C
12512
C;243
C;92
C;21
C
t,t
hxC
Oszacowanie pochodnej rzędu k+1
Jeżeli mamy równanie różniczkowe:
t,xfx przyjmiemy oznaczenia:
nn
nnnn
txx
t,txfxf
Definiujemy operator różnicy wstecznej jfn:
1n1j
n1j
nj
3n2n1nn1n2
n2
n3
2n1nn1n1
n1
n2
1nn1n0
n0
n1
nn0
fff
ff3f3ffff
ff2ffff
fffff
ff
i mamy: nnn0 hfxhxh
czyli łatwo wyznaczyć ocenę I pochodnej.
Druga pochodna:
n2
nnn1nnn1
xh
xhhxhxhxhxhxh
czyli mamy ocenę drugiej pochodnej:
1nnn2 ffhxh
Ocena trzeciej pochodnej:
n
3n
2n
2n
2
1n2
n2
1n1
n1
n2
xhxhhxhxh
xhxhxhxhxh
i ostatecznie n1nnn3 ff2fhxh
Dla k+1 pochodnej mamy:
1kn
k1kn
kkn
kkn
k
k1n
kkn
k1n
1kn
1kn
k
xhxhhxhxh
xhxhxhxhxh
czyli w każdym kroku potrafimy szacować lokalnybłąd obcięcia
Przykład:
Dany jest obwód:10
10V tcosm1CC 0
gdzie C0=100F m=0.5 f=10kHz =2f
tq
równanie:
uc
Cq
u
EuqR
c
c
i ostatecznie w postaci normalnej:
tcosm1RCq
RE
q0
tcosm1RCq
RE
q0
z warunkiem początkowym: q(t=0)=0
Będziemy liczyli jawną metodą Adamsa – Bashfortha drugiego rzędu o schemacie:
00
001 tcosm1RC
qRE
hqq
1n1nnnn1n t,qf
21
t,qf23
hqq
Ponieważ schemat nie jest schematem samostartującym,wystartujemy z metody Eulera
Ocena błędu dla metody Eulera jest:
qh21 2
T
Z przybliżonej oceny mamy: 0112 ffhqh
Ze względu na częstotliwość 10kHz wybierzmy krokrzędu 1/10f co daje h=10-5s i mamy:
q1=10-5C
szacujemy drugą pochodną: 5E9832.qh2
Błąd obcięcia wynosi: 5E4916.T
Dużo czy mało?
Odpowiedź w obliczeniu błędu względnego
4916.05E1
5E4916.0q
e1
T
Jeżeli przyjmiemy, że błąd nie większy od .01, to niestetyprzekroczyliśmy zakres i musimy zmniejszyć krok.Krok należy zmniejszyć około 50 razy.
Nowy krok h=.2E-6
q1=.2E-6C
Druga pochodna: 11E8qh2
Błąd obcięcia: 11E4T
Błąd względny: e=.0002
Chyba wybraliśmy zbyt mały? Spróbujemy zwiększyć
Zwiększamy krok pięciokrotnie czyli h=1.0E-6
i mamy: q1=1.0E-6
f0=1f1=0.998
ocena drugiej pochodnej: 9E9961.1qh2
czyli błąd obcięcia: 9E998.0T
Błąd względny:001.3E998.
6E0.19E998.
qe
1
T
Można było wybrać większy.
Mamy już dwa punkty policzone: t0=0 q0=0
t1=1.0E-6 q1=1.0E-6
możemy przejść do schematu o dokładności II rzęduAdamsa – Bashfortha:
1n1nnnn1n t,qf
21
t,qf23
hqq
z błędem: qh125 3
T
lub ponieważ 2n1nnn3 ff2fhqh
to 2n1nnT ff2f12h5
Przy n=2 mamy policzone:998.0ff
1ff
112
022
czyli na mocy algorytmu:
0112
1n1nnnn1n
f21
f23
hqq
t,qf21
t,qf23
hqq
i po podstawieniu: 6E997.1q2
Ocena błędu:
99604.0f
ff2f12h5
2
012T
i 11E55197.1T stąd błąd względny6E772.7
qe
2
T
3E0.16E772.7q
e2
T
Spełniliśmy więc błąd z dużym zapasem.
Warto było lepiej policzyć pierwszy krok.
Następny krok wykonamy biorąc krok 2 razy większy,
bo mamy taką możliwość, czyli:
99604.0ff
1ff
112
022
6E997.1q6E0.2t
0q0t
6E0.2h
11
00
0112
1n1nnnn1n
f21
f23
hqq
t,qf21
t,qf23
hqq
6E98512.3q
f21
f23
hqq
t,qf21
t,qf23
hqq
2
0112
1n1nnnn1n
99227.f2
Ocena błędu:
3E0.15E9731.3q
e
10E58333.1
2
T
T
Można znowu startując z dwóch znanych punktów dwukrotniezwiększyć krok czyli h=4.0E-6
Metody predyktor - korektor
Predyktor
Jawny algorytm Adamsa -Bashfortha
p
0iininin
01n t,xfbhxx
Korektor
Niejawny algorytm Adamsa - Moultona
1nk
1n1
p
0iininin
1k1n t,xhfbt,xfbhxx
Jako przykład rozpatrzymy nieliniową indukcyjność
E
=f(i)
Rt=0
3i002.0i1.0 Charakterystyka dławika:
Przyjmujemy R=5, E=15V
Równanie obwodu jest ERidtd
Biorąc pod uwagę, że 3i002.0i1.0
mamy: ERidtdi
i006.0dtdi
1.0 2
lub zapisując w postaci normalnej będzie:
2i006.01.0
RiEdtdi
z warunkiem początkowym: i(0)=0
Wybór kroku całkowania: Jeżeli odrzucimy człon nieliniowy,
to mamy obwód o indukcyjności L=0.1H i rezystancji 5.
Stała czasowa tego obwodu wynosi 0.1/5=20ms. Przyjmujemy krok czasowy h=0.005s
Obliczenia poprowadzimy wykorzystując jako predyktor
metodę Eulera
2n
nn
01n
i006.01.0
i515hii
nnn0
1n t,xhfxx
w naszym przypadku:
i jako korektor – metodę trapezów:
1tn,xf2h
t,xf2h
xx k1nnnn
1k1n
2k1n
k1n
2n
nn
1k1n
i006.01.0
i5152h
i006.01.0
i5152h
ii
Dopuszczamy błąd względny dla algorytmu trapezów e=0.001i taki sam przyjmiemy błąd względny dla metody iteracji
w korektorze.
Start: t0=0
i0=0
Predyktor:2
01
0006.01.0
0515005.00i
75.i01
Korekcja:
2k1n
k1n1k
1i006.01.0
i5152005.0
375.0i
666074.i11
Błąd względny:
126.0e
i
iie
iter
1k1
k1
1k1
iter
Powtórzyć iterację!
0128.e
6747191.i
iter
21
Powtórzyć iterację!
00133.e
6738224.i
iter
31
Powtórzyć iterację!
000138.e
673915.0i
iter
41
Zakończyliśmy iterację
i1=.673915
Ocena błędu algorytmu trapezów:
1129.e
07609.
ff2h
T
01T
Błąd jest zbyt duży, ale nie mogliśmy zrobić dobrej ocenygdyż powinniśmy liczyć błąd obcięcia z zależności:
012T ff2f12h
ale jeszcze nie doszliśmy do punktu t2.
Wykonamy następny krok:
Predyktor:
27173.1i
i006.01.0
i515005.0ii
02
21
11
02
Korektor:
21734377.1i
00047.e
21734377.1i
0048.e
2179165.1i
0492.e
21207.1i
i006.01.0
i5152005.0
972821.0i
2
iter
32
iter
22
iter
12
2k2
k21k
1
Ocena błędu algorytmu trapezów:00298.e
0036279.T
No niestety błąd jest zbyt duży. Należy zmniejszyć krok.
Stabilność metod wielokrokowych
Analiza przenoszenia błędu:
Rozważmy następujący algorytm wielokrokowy:
2n2n1n1nnn3n1n t,xf
38
t,xf34
t,xfhxx
który jest algorytmem czwartego rzędu z błędem obcięcia:
55T hx
9028
2n2n1n1nnn3n1n t,xf
38
t,xf34
t,xfhxx
Zastosujemy ten algorytm do bardzo prostego równania:
xx
z warunkiem początkowym x(0)=1, którego rozwiązaniemjest:
tetx Dla
0
jest to rozwiązanie wykładniczo dążące do zera
0 0.5 10
0.5
1
f x( )
x
np. =10
Stosując algorytm:
2n2n1n1nnn3n1n t,xf
38
t,xf34
t,xfhxx
do równania: xx
mamy:
2n1nn3n1n x
38
x34
x38
hxx
oznaczamy: h
i równanie zapisujemy jako równanie różnicowe:
0x38
x34
x38
xx 2n1nn3n1n
Szukamy rozwiązania w postaci:
nn Azx
Podstawiając mamy:
0Az38
Az34
Az38
AzAz 2n1nn3n1n
0x38
x34
x38
xx 2n1nn3n1n
Dzieląc przez Azn-3 mamy równanie charakterystyczne:
01z38
z34
z38
z 234
Dobieramy mały krok h tak, że 1
Równanie ma 4 pierwiastki. Jeżeli =0, to tymi pierwiastkami są:
3,2,1,0ke1z k20j4
1j
jz
1z
jz
1z
4
3
2
1
Rozwiązanie dla małych różnych od zera powinno być funkcjąanalityczną , czyli można je zapisać w postaci:
...ddd1z
...ccciz
...bbbiz
...aaa1z
33
2211
33
2213
33
2212
33
2211
podstawiając kolejno pierwiastki do równania:
01z38
z34
z38
z 234
otrzymujemy dla z1:
01...zazaza138
...zazaza134
...zazaza138
...zazaza1
33
221
233
221
333
221
433
221
Dla z2=j
01...zbzbzbj38
...zbzbzbj34
...zbzbzbj38
...zbzbzbj
33
221
233
221
333
221
433
221
dla z3=-j
01...zczczcj38
...zczczcj34
...zczczcj38
...zczczcj
33
221
233
221
333
221
433
221
dla z4=-1
01...zdzdzd138
...zdzdzd134
...zdzdzd138
...zdzdzd1
33
221
233
221
333
221
433
221
Podnosząc do potęgi i porównując współczynniki przy tychsamych znajdujemy:
!41
a
!31
a
21
a
1a
4
3
2
1
3j
b1 3j
c1 35
d1
czyli
24
22
22
5432
1
O35
1z
O3j
jz
O3j
jz
eO!4!3!2
1z
Rozwiązanie równania:
01z38
z34
z38
z 234
ma postać:
n44
n33
n22
n11n zAzAzAzAx
Stałe A1, A2, A3, A4 wyznaczamy z warunków początkowych