Komputeryzacja projektowania w elektrotechnice

background image




METODY NUMERYCZNE

W ELEKTROTECHNICE

background image

2

Metody numeryczne – dział matematyki stosowanej, zajmujący się opracowywaniem i
badaniem metod przybliżonego rozwiązywania problemów obliczeniowych w modelach
matematycznych innych dziedzin nauki

Przykładowe zastosowania:

elektrotechnika – obliczanie parametrów obwodów elektrycznych

medycyna – tomografia komputerowa, opracowywanie nowych leków

chemia – konstruowanie nowych cząsteczek

inżynieria – przemysł samochodowy i lotniczy

informatyka – konstruowanie nowych procesorów


W obrębie klasycznych metod numerycznych możemy wyróżnić m.in. takie zagadnienia jak:

analiza błędów zaokrągleń

interpolacja

aproksymacja

rozwiązywanie równań i układów równań nieliniowych

całkowanie i różniczkowanie numeryczne

rozwiązywanie układów równań liniowych

obliczanie wartości własnych i wektorów własnych macierzy

rozwiązywanie zagadnień dla równań różniczkowych zwyczajnych i cząstkowych

rozwiązywanie równań całkowych i układów równań całkowych

(każdy wynik musi podlegać weryfikacji!)


Reprezentacja liczb w maszynie cyfrowej
Liczby całkowite (stałopozycyjne = stałoprzecinkowe):

i

n

0

i

i

2

e

znak

l

, gdzie e

i

= 0 lub 1


Jeżeli rejestr ma d-bitów, wówczas liczba całkowita n może zawierać się w przedziale

-2

d-1

< n < 2

d-1

-1


przykład: Zapisać liczbę 18 w systemie dwójkowym:

0

1

2

3

4

2

0

2

1

2

0

2

0

2

1

l

, może być zatem przechowywana w słowie o długości D

+ 1 > 5 bitów jako





a

rozwinieci

cyfr

d

znak

0010010

...

00

0


Liczby rzeczywiste (zmiennopozycyjne):

c

2

m

zn

x

,

gdzie ½ < m < 1, m-mantysa, i-cecha

i

1

i

i

2

e

m

background image

3

W maszynie cyfrowej mantysa zapisywana jest w t-bitach m

t

i

t

1

i

i

t

)

2

t

(

t

2

e

2

e

m

w wyniku zaokrąglenia do t-bitów mantysy

t

t

2

2

1

m

m


Zmiennopozycyjna reprezentacja liczby rzeczywistej x oznaczana jest symbolem rd(x) i jest
równa

t

c

m

2

zn

)

x

(

rd

t

2

x

x

)

x

(

rd

!

Gdy elementy macierzy są rzędu

lub n musimy dokonać przekształcenia całego

układu. Uciekamy się od operacji na małych liczbach.



Nie prowadzi się operacji na małych liczbach, co oznacza, że:

1

x

)

x

(

rd

,

gdzie

t

2

liczbę 2

-t

nazywamy dokładnością maszynową


przykład: Liczba 18,5 daje się przedstawić w postaci:

6

5

4

3

2

1

)

2

1

2

0

2

1

(

2

1

2

0

2

1

2

0

2

0

2

1

2

x

0

1

2

może być więc przechowywana w słowie o długości d + 1 > 11 bitów o t > 6 bitach mantysy:









mantysy

bitów

t

cechy

bitów

t

d

c

znak

znak

0

...

1001010

00101

...

000

0

0

0,5781525


W sytuacji, gdy elementy macierzy są < 1, np. mV, musimy wtedy dokonać przeskalowania
całego układu (np. poprzez pomnożenie macierzy przez jakąś liczbę).

Błędy obliczeń
Przy obliczeniach wykonywanych na maszynach cyfrowych spotyka się trzy podstawowe
rodzaje błędów:

błędy wejściowe (danych wejściowych) – występujące, gdy dane wprowadzane do
pamięci maszyny cyfrowej odbiegają od dokładnych wartości tych danych. Źródłem

background image

4

tych błędów jest najczęściej skończona długość słów binarnych reprezentujących
liczby i w związku z tym nieuniknione jest wstępne ich zaokrąglenie

błędy odcięcia – powstają podczas obliczeń na skutek zmniejszenia liczby działań, na
przykład przy obliczaniu sum nieskończonych. Chcąc obliczyć wartość wyrażenia e

x

równego szeregowi:

...

x

!

N

1

...

x

2

1

x

1

N

2

zastępuje je sumą częściową o

odpowiednio dobranej wartości N:

N

x

N

x

x

!

1

...

2

1

1

2


Jeżeli liczba N będzie niedostatecznie duża, to uzyskana w ten sposób wartość liczby e

x

będzie obliczona niedokładnie, a popełniony w ten sposób błąd jest właśnie błędem odcięcia.
Błędy tego typu powstają też często przy obliczaniu wielkości będących granicami. Podobnie
zastąpienie wartości pochodnej funkcji jej ilorazem różnicowym powoduje powstanie błędu
odcięcia. W wielu przypadkach daje się uniknąć błędu wejściowego i odcięcia przez
ograniczenie danych.

Lemat Wilkinsona:
Błędy zaokrągleń powstające podczas wykonywania działań zmiennopozycyjnych są
równoważne zastępczemu zaburzeniu liczb, na których wykonujemy działania. W przypadku
działań arytmetycznych otrzymujemy:

)

1

(

x

)

1

(

x

)

x

x

(

fl

2

2

1

1

2

1

2

1

3

3

2

1

2

1

)

1

(

x

x

)

x

x

(

fl

1

2

5

2

1

4

5

2

1

2

4

1

2

1

)

1

(

x

x

x

)

1

(

x

x

x

fl





gdzie

ε

i

są co do modułu niewiększe niż dokładność maszyny

ε

. Przedrostek fl oznacza, że są

to wyniki działań wyznaczone przy użyciu maszyny cyfrowej.

Oszacowanie błędów w obliczeniach iteracyjnych:
Wiele algorytmów obliczeniowych polega na wyznaczeniu ciągu liczb zbieżnego do
poszukiwanej wartości.

Przykład:
wyznaczyć wartość funkcji

x

y

, przekształcając do równania iteracyjnego. Można to

uczynić obliczając ciąg y

0

, y

1

, y

2

..., gdzie y

0

jest dowolnie wybraną liczbą, natomiast każdy

element ciągu y

i

jest dany wzorem:





1

i

1

i

i

y

x

y

2

1

y

, dla i = 1, 2, 3, ...

(niewiadoma musi być po obu stronach równania)

2

x

y

x

y

2

x

y

y

y

x

1

y

, współczynnik przed funkcją (tutaj 1) musi być < 1 dlatego:

y

x

y

y

2

background image

5

2

:

y

y

x

y

2





1

i

1

i

i

y

y

x

2

1

y

- iteracja i-ta

np.





1

i

1

i

i

2

y

y

x

7

2

1

y

y

x

7

)

y

y

2

(

x

7

y

takiego równania nie da się rozwiązać

bo 7/2
ale można zrobić tak:





1

i

1

i

i

y

7

y

x

7

8

1

y

y

x

7

)

y

7

y

8

(

jeśli założyć, że działania wykonywane są dokładnie, to ciąg y

0

, y

1

, y

2

, ... będzie zbieżny do

liczby x, ponieważ

x

p

y

i

i

, to

x

p

1

p

2

1

y

i

i

1

i





, a ciąg p

o

> 0





i

i

1

i

p

1

p

2

1

p

, przy i = 1, 2, 3, ... jest zbieżny do 1


Przykład:
rozwiązanie iteracyjne

5

4

)

4

5

(

2

3

7

7

8

5

2

4

3

7

x

y

y

y

x

x

y

x

y

x



5

1

2

5

4

2

8

1

3

7

7

1

1

i

i

i

i

i

i

y

x

y

y

x

x

wszystkie składniki przy niewiadomych są < 1 (7/8, -7/8, 3/5)


przyjmujemy dowolnie x

i

= 1, y

i

= 2


Działania potrzebne do wyznaczania kolejnych wartości ciągu y

0

, y

1

, y

2

, ... nazywamy

iteracją. Informację o tym czy w kolejnej iteracji nastąpiło przybliżenie do rozwiązania
uzyskujemy obliczając wyrażenie:

x

y

x

y

q

i

i

i

1

W przypadku dokładnych działań, gdy

x

p

y

i

i

i

i

i

i

p

2

1

p

q

, więc q

i

< 0 dla i = 1, 2, 3, ...

jeśli p

i

>1/3. Oznacza to, że maleje wartość bezwzględna różnicy

x

y

1

odpowiednio

dużego numeru iteracji i.

background image

6

Dla obliczeń wykonywanych na maszynie cyfrowej, mamy:

 



yi

1

1

x

1

y

2

1

)

y

(

fl

i
3

i
2

i

1

i

1

i

, gdzie

3

i
k

, k = 1, 2, 3, ...

Dla liczby

)

y

(

fl

y

1

i

'

1

i

uzyskamy

x

y

x

y

q

i

'

'
i

1

i

Jeżeli y

i

jest już dostatecznie dobrym przybliżeniem liczby

x , a więc p

i

jest bliskie

jedności, to pierwszy składnik powyższego wyrażenia ma pomijalnie małą wartość, natomiast
drugi ze składników wynika z błędów zaokrągleń i może mieć tym większą wartość im
bliższe jedności jest p

i

.


Przykład: dla liczby 4 x=4

000609

,

2

05

,

2

4

05

,

2

2

1

y

05

,

2

5

,

2

4

5

,

2

2

1

y

5

,

2

4

4

4

2

1

y

1

y

3

2

1

0

 


Algorytm:

zmienne rzeczywiste x, y, eps
y:= x/4;

{pierwsze przybliżenie}

repeat
y:= 0,5*(y+(x/y));
until abs (x-sqr(y))<=eps

{eps jest zakładaną dokładnością obliczeń)



Uwarunkowanie zadania i stabilność algorytmów.

Załóżmy, że mamy skończoną liczbę danych rzeczywistych, x = ( x

1

, x

2

, ... x

n

), na ich

podstawie chcemy obliczyć skończenie wiele wyników rzeczywistych y = ( y

1

, y

2

, ... y

m

).

Będziemy więc chcieli określić wartość y według odwzorowania y = φ (x), gdzie

: D → R

m

jest ciągłym odwzorowaniem i D

R

m

.


Algorytm to jednoznaczny przepis obliczania wartości odwzorowania φ (x) składający się ze
skończonej liczby kroków.

Jeśli zadanie rozwiązujemy numerycznie to zamiast dokładnymi wartościami x

1

, x

2

, ... x

n

posługujemy się reprezentacjami rd (x

1

), rd (x

2

), ..., rd (x

n

). Operacje elementarne nie są więc

realizowane dokładnie tylko przez odwzorowanie zastępcze fl.

Ta niewielka zmiana danych

powoduje, że różne algorytmy rozwiązania tego samego zadania dają na ogół niejednakowe
wyniki. Dużą rolę odgrywa tu przenoszenie błędów zaokrągleń. Często niewielkie zmiany
danych powodują duże względne zmiany rozwiązania zadania. Zadanie takie nazywamy źle
uwarunkowanym. Wielkości charakteryzujące wpływ zaburzeń danych na zaburzenia
rozwiązania nazywamy wskaźnikami uwarunkowania zadania.

Przykład:

20

1

k

0

1

19

19

20

20

k

x

a

x

a

...

x

a

x

a

)

x

(

w

background image

7

Zerami tego wielomianu będą liczby naturalne 1, 2, ..., 20. Gdy zakłócimy np. a

19

= - 210 i

jego wartość wynosi a

19

(ε) = - (210 + 2

-23

), czyli a

19

(ε) = a

19

(1+ε). Otrzymujemy wtedy

wielomian w

ε

(x) = w (x) – 2

-23

, który posiada już pierwiastki zespolone i np. najbliższe

pierwiastkowi 15 wielomianu w(x) są pierwiastki 13,992358137

2,518830070j.

Metodę badania przenoszenia błędów można rozbudować do analizy różniczkowej błędów
algorytmu.
Niech δ

x1

= rd (x

i

) – x

i

dla i = 1, 2, ..., n

 

  

i

n

1

i

i

j

yi

x

x

)

x

(

x

x

rd

dla j = 1, 2, ..., m

We wzorze tym, czynnikiem określającym wrażliwość y

j

na bezwzględną zmianę δx

i

jest

i

j

x

)

x

(

Analogiczny wzór można wyprowadzić dla przenoszenia się błędów względnych. Jeśli

0

y

j

dla j = 0,1, 2, ..., m i

0

x

i

dla i = 1, 2, ..., n to

i

j

x

i

j

n

1

i

j

j

y

x

)

x

(

)

x

(

x

, gdzie

i

j

j

j

x

)

x

(

)

x

(

x

nazywamy wskaźnikiem uwarunkowania.

Jeśli wskaźniki uwarunkowania co do wartości bezwzględnej są duże to zadanie jest źle
uwarunkowane.

Przykład:
Badamy uwarunkowanie sumy y = a + b + c

R

c

b

a

,

,

 

 

c

b

a

c

b

a

c

b

a

3

2

1

1

1

1

=





c

b

a

c

c

b

a

b

c

b

a

a

c

b

a

c

b

a

3

2

1

, gdzie ε jest

największą z wartości ε

1

, ε

2

i ε

3

, gdzie

c

b

a

c

c

b

a

b

c

b

a

a

jest wskaźnikiem

uwarunkowania zadania.


Stabilność numeryczna algorytmów

Algorytm jest stabilny, jeżeli posiada tę własność, że małe błędy powstałe w pewnym

kroku algorytmu nie są powiększane w innych krokach oraz nie powodują poważnego
ograniczenia dokładności wszystkich obliczeń. Oznacza to, że algorytm jest numerycznie
stabilny, gdy zwiększając dokładność obliczeń można wyznaczyć (z dowolną dokładnością)
istniejące rozwiązanie zadania. Numeryczną stabilność zadania łatwo sprawdzić rozwiązując
zadanie raz z dokładnością np. 10

-6

, a potem z dokładnością 10

-12

.

background image

8

INTERPOLACJA:
Dana jest funkcja y = f (x),

n

x

x

x

,

0

, dla której znana jest tablica wartości w punktach

zwanych węzłami interpolacji. Należy wyznaczyć taką funkcję W(x), aby:
W(x

0

) = Y

0

, W(x

1

) = Y

1

, ..., W(x

n

) = Y

n


interpolacja funkcji f(x)


Zadaniem interpolacji jest wyznaczenie przybliżonych wartości funkcji zwanej funkcją
interpolową w punktach nie będących węzłami interpolacji. Przybliżoną wartość funkcji
obliczamy za pomocą funkcji zwanej funkcją interpolującą, która w węzłach ma te same
wartości co funkcja interpolowana.
Funkcja interpolująca jest funkcją pewnej klasy. Najczęściej będzie to wielomian
algebraiczny, wielomian trygonometryczny, funkcja wymierna i funkcja sklejana.
Interpolację stosuje się najczęściej, gdy nie znamy analitycznej postaci funkcji (jest ona tylko
stablicowana) lub gdy jej postać analityczna jest zbyt skomplikowana.
Najczęściej stosowaną metodą wyznaczania funkcji W(x) jest jej dobór w postaci kombinacji

liniowej n+1 funkcji bazowych

)

x

(

),...,

x

(

),

x

(

),

x

(

n

2

1

0

n

i

i

i

x

a

x

W

0

)

(

)

(

wyrażenie to nazywamy wielomianem uogólnionym.
Wprowadzając macierz bazową

)

x

(

),...,

x

(

),

x

(

n

1

0

i macierz współczynników

n

1

0

a

a

a

A


mamy

A

x

x

W

)

(

)

(


warunek W(x

0

) = Y

0

, W(x

1

) = Y

1

, ..., W(x

n

) = Y

n

można zapisać w postaci układu równań liniowych X · A = Y, gdzie

background image

9

)

x

(

)

x

(

)

x

(

)

x

(

)

x

(

)

x

(

)

x

(

)

x

(

)

x

(

X

n

n

n

1

n

0

1

n

1

1

1

0

0

n

0

1

0

0

n

1

0

Y

Y

Y

Y


Jeśli macierz X nie jest osobliwa (da się odwrócić), to:

A = X

-1

·Y

co ostatecznie daje

W(x) = Φ(x) · X

-1

· Y


Interpolacja wielomianowa
W praktyce często używa się bazy złożonej z jednomianów

,

)

(

,

,

)

(

,

1

)

(

1

0

n

n

x

x

x

x

x


Baza dla funkcji ciągłych na odcinku skończonym [x

o

, x

n

] jest bazą zamkniętą, tzn., że każda

funkcja tej klasy może być przedstawiona w postaci szeregu złożonego z funkcji bazowych.
Wielomian interpolacyjny ma w tym przypadku postać:

n

n

x

a

x

a

x

a

a

x

W

2

2

1

0

)

(

dodatkowo musi być spełniony warunek:

n

n

n

n

n

1

0

1

n

1

n

1

1

0

0

n

0

n

0

1

0

y

x

a

x

a

a

y

x

a

x

a

a

y

x

a

x

a

a


Powyższy układ równań ma jedyne rozwiązanie względem a

1

, jeżeli wartości x

0

, x

1

, ..., x

n

od siebie różne

n

n

n

n

n

x

x

x

x

x

x

X

1

1

1

det

1

1

0

0


Macierz X

-1

dla bazy wielomianowej

,

x

)

x

(

,

,

x

)

x

(

,

1

)

x

(

n

n

1

0

nazywana jest

macierzą Lagrange’a
Zauważyć należy, że każdy zbiór węzłów równoodległych x

i+1

– x

i

= h = const. można

sprowadzić do zbioru podstawowego podstawiając

h

x

x

q

0

, wówczas

 

n

q

,

0

, a macierz

Φ przyjmuje postać

n

2

q

,

,

q

,

q

,

1

background image

10

Interpolacja Lagrange’a
Przedstawiony powyżej sposób podejścia do interpolacji nie jest zbyt efektywny, ponieważ
macierz X jest macierzą pełną i nie zawsze dobrze uwarunkowaną, co oznacza, że
numeryczna procedura jej odwracania może być obarczona dużym błędem.

W interpolacji wielomianowej Lagrange’a dla n+1 węzłów interpolacji

)

y

,

x

(

,

),

y

,

x

(

,

),

y

,

x

(

),

y

,

x

(

n

n

i

i

1

1

0

0


przyjmuje się funkcje bazowe w postaci

)

x

x

(

)

x

x

)(

x

x

)(

x

x

)(

x

x

(

)

x

(

)

x

x

(

)

x

x

)(

x

x

(

)

x

x

)(

x

x

)(

x

x

)(

x

x

(

)

x

(

)

x

x

(

)

x

x

)(

x

x

)(

x

x

(

)

x

(

)

x

x

(

)

x

x

)(

x

x

)(

x

x

(

)

x

(

1

n

3

2

1

0

n

n

1

i

1

i

3

2

1

0

i

n

3

2

0

1

n

3

2

1

0


Funkcje te są wielomianami stopnia n zbudowanymi w ten sposób, że w funkcji bazowej φ

1

brakuje czynnika (x-x

i

). Zatem wielomian interpolacji wyraża się następującym wzorem:

)

x

x

(

)

x

x

)(

x

x

(

a

...

)

x

x

(

)

x

x

)(

x

x

(

a

)

x

x

(

)

x

x

)(

x

x

(

a

)

x

(

W

1

n

1

0

n

n

2

0

1

n

2

1

0


współczynniki a

0

... a

n

tego wielomianu wyznaczamy z równania:

X · A = Y, przy czym macierz X ma postać:

 

 

 

1

n

n

0

n

n

1

0

1

n

0

1

0

x

x

...

x

x

0

0

0

x

x

...

x

x

0

0

0

x

x

...

x

x

X


Macierz posiada tylko główną przekątną niezerową w związku z tym układ równań X · A = Y
rozwiązuje się natychmiastowo

)

x

x

(

)

x

x

)(

x

x

(

y

a

)

x

x

(

)

x

x

)(

x

x

(

y

a

)

x

x

(

)

x

x

)(

x

x

(

y

a

1

n

n

1

n

0

n

n

n

n

1

2

1

0

1

1

1

n

0

2

0

1

0

0

0

background image

11

Można więc wielomian interpolacyjny Lagrange’a zapisać w postaci ułamka:

n

1

i

n

i

1

i

i

1

i

i

1

i

0

i

n

1

i

1

i

1

0

i

)

x

x

(

)

x

x

)(

x

x

(

)

x

x

)(

x

x

(

)

x

x

(

)

x

x

)(

x

x

(

)

x

x

)(

x

x

(

y

)

x

(

W


lub krócej

 

n

1

i

i

j

j

i

j

i

)

x

x

(

)

x

x

(

y

)

x

(

W

, j = 0, 1, ..., n


Przykład:
Wyznaczyć wielomian interpolacyjny Lagrange’a funkcji f (x) = e

x

w przedziale [0,2 ; 0,5]

mając dane:
f (0,2) = 1,2214, f (0,4) = 1,4918, f (0,5) = 1,6487

009

,

1

91

,

0

724

,

0

1

,

0

3

,

0

)

4

,

0

)(

2

,

0

(

6487

,

1

)

1

,

0

(

2

,

0

)

5

,

0

)(

2

,

0

(

4918

,

1

)

3

,

0

(

2

,

0

)

5

,

0

)(

4

,

0

(

2214

,

1

)

(

2

x

x

x

x

x

x

x

x

x

W


algorytm do wyznaczania wielomianu Lagrange’a dla podanego punktu:

begin
fx:=0;
for i:=0 to n do
begin
p:=1;
for k:=0 to n do
if k<>i then p:=p*(xx-x[k])/(x[i]-x[k]);
fx:=fx+f[i]*p
end;
end;

Należy pamiętać, ze przed przystąpieniem do obliczeń należy sprawdzić czy w wektorze x
wartości się nie powtarzają, ponieważ grozi to wystąpieniem błędu dzielenia przez zero.


Różnice skończone

Dla funkcji stabelaryzowanej przy stałym kroku h = x

i+1

– x

i

można wyprowadzić pojęcie

różnicy skończonej rzędu k

 

 

 

k

0

j

1

k

i

k

j

j

i

1

k

1

i

1

k

i

1

k

i

k

i

1

i

2

i

i

1

i

i

i

2

i

1

i

i

y

1

y

y

y

y

...

y

y

2

y

y

y

y

y

y

y

y

background image

12

Przykład: Dla funkcji danej w postaci tablicy zbudować tablicę różnic skończonych.

NR

x

y

Δy

Δ

2

y

Δ

3

y

Δ

4

y

Δ

5

y

0

1,2

1,728

0,469

0,078

0,006

0

0

1

1,3

2,197

0,547

0,084

0,006

0

2

1,4

2,744

0,631

0,090

0,006

3

1,5

3,375

0,721

0,096

4

1,6

4,096

0,817

5

1,7

4,913



Wzory interpolacyjne dla argumentów równoodległych

Dla zbioru węzłów tworzących ciąg arytmetyczny x

0

, x

1

= x

0

+ h, x

2

= x

0

+ 2h, ..., x

n

= x

0

+ nh

dane są wartości funkcji f(x

0

), f(x

1

), ..., f(x

n

). Szukany wielomian interpolacyjny zapisać

możemy w następujący sposób:

W(x) = a

0

+ a

1

q + a

2

q(q – 1) + a

3

q(q – 1)(q – 2) + ... + a

n

q(q – 1)(q – 2)...(q – n +1),

gdzie

h

x

x

q

0


Dla:
x = x

0

: q = 0

x = x

1

: q = 1

x = x

2

: q = 2

...
x = x

n

: q = n


Funkcje bazowe dla wielomianu W(x) przyjęto w postaci:

Φ

0

(x) = 1

Φ

1

(x) = q

Φ

2

(x) = q(q – 1)

Φ

3

(x) = q(q – 1)(q – 2)

Φ

n

(x) = q(q – 1)(q – 2)...(q – n + 1)


Otrzymujemy następujący układ równań:

n

3

2

1

0

n

3

2

1

0

y

y

y

y

y

a

a

a

a

a

!

n

)

2

n

)(

1

n

(

n

)

1

n

(

n

n

1

0

6

6

3

1

0

0

2

2

1

0

0

0

1

1

0

0

0

0

1

z którego wyznacza się wartości nieznanych współczynników a

0

, a

1

, a

2

, ..., a

n

background image

13

!

n

y

a

y

a

!

n

...

a

)

1

n

(

n

na

a

...

...

!

3

y

a

y

a

6

a

6

a

3

a

!

2

y

a

y

a

2

a

2

a

y

a

y

a

a

y

a

0

n

n

n

n

2

1

0

0

3

3

3

3

2

1

0

0

2

2

2

2

1

0

0

1

1

1

0

0

0


Ostatecznie otrzymujemy I wzór interpolacyjny Newtona w postaci

0

n

0

2

0

0

y

!

n

)

1

n

q

)...(

1

q

(

q

...

y

!

2

)

1

q

(

q

y

q

y

)

x

(

W


Przykład: Dla zależności f(T)=T log p znaleźć wielomian interpolacyjny stopnia 3 i obliczyć
odchyłki w węzłach interpolacji

T

0,8

1,0

1,2

1,4

1,6

1,8

T log p

0,3566

0,9383

1,5598

2,2169

2,9059

3,6229


Tablica:

T

T log p

Δ

Δ

2

Δ

3

błąd [%]

0,8

0,3566

0,5817

0,0398

-0,0042

0

1,0

0,9383

0,6215

0,0356

-0,0037

0

1,2

1,5598

0,6571

0,0319

-0,0039

0

1,4

2,2169

0,6890

0,0280

0

1,6

2,9059

0,7170

1,9

1,8

3,6229

4,2

przyjmijmy

4

T

5

2

,

0

8

,

0

T

q

8

,

0

T

0

1,5002

1,791T

0,7225T

0,075T

W(T)

2)

1)(q

0,0007q(q

1)

0,0189q(q

0,5817q

0,3566

W(T)

2

3


Zauważmy, że I wzór Newtona daje dobrą dokładność w pobliżu punktu T

0

, natomiast dla

punktów leżących niżej w tabeli błąd wzrasta. Jeśli chcielibyśmy wyzerować odchyłki we
wszystkich węzłach tabeli trzeba by podwyższyć rząd interpolacji i w efekcie wzór
empiryczny staje się wtedy praktycznie mało przydatny. Wzory interpolacyjne stosuje się też
do obliczania wartości funkcji w punktach pośrednich tabeli (do zagęszczenia). Aby obliczyć
T log p dla T = 1,3 z dokładnością do Δ

2

wystarczy przyjąć T

0

= 1,2, a wówczas q = 0,5 i

znajdujemy

88437

,

1

0319

,

0

25

,

0

6571

,

0

5

,

0

5598

,

1

)

3

,

1

(

W

.

background image

14

Zadanie takich wartości T = 1,65 byłoby już niewykonalne, ponieważ brakuje różnic. Widać
tu ograniczenie tzw. interpolacji w przód, określonej I wzorem Newtona. Do interpolacji
wstecz służy II wzór Newtona. Szukamy wielomian interpolacyjny

W(x) = a

0

+ a

1

q + a

2

q(q + 1) + a

3

q(q + 1)(q + 2) + ... + a

n

q(q + 1)(q + 2)...(q + n – 1),

gdzie

h

x

x

q

n


Współczynniki a

0

, a

1

, a

2

, ..., a

n

wyznaczamy jak poprzednio i dochodzimy do wzoru:

0

2

2

1

0

!

)

1

)...(

1

(

...

!

2

)

1

(

)

(

y

n

n

q

q

q

y

q

q

y

q

y

x

W

n

n

n


Przykład: Obliczyć T log p dla T = 1,65 z dokładnością do Δ

2

75

,

0

2

,

0

8

,

1

T

q

8

,

1

T

n

)

65

,

1

(

W

3,6229-0,75*0,717-0,75*0,25*0,028=3,0825


for j:=1 to 2 do
for i:=1 to n-j do
z[i,j]:=z[i+1,j-1]-z[i,j-1];
q0:=(x-x0)/h;
k:=int(q,0);
q:=q0-k;
if k>=n then write (‘Brak danych’)
else wart:=z[k,0]+q*z[k,1]+0.5*q*(q-1)*z[k,2];


Interpolacja trygonometryczna


Załóżmy, że znamy wartości pewnej ciągłej i okresowej funkcji f(x) o okresie 2π w 2n+1
węzłach. Jako bazę interpolacji przyjmujemy zbiór funkcji trygonometrycznych





)

nx

cos(

),

nx

sin(

),...,

x

2

cos(

),

x

2

sin(

),

x

cos(

),

x

sin(

,

2

1


Otrzymujemy zatem wielomian interpolacyjny w postaci

)

nx

cos(

a

)

nx

sin(

b

...

)

x

2

cos(

a

)

x

2

sin(

b

)

x

cos(

a

)

x

sin(

b

2

a

)

x

(

W

n

n

2

2

1

1

0


zawierający 2n+1 nieznanych parametrów.

Ze względu na uproszczenie obliczeń najistotniejszy jest przypadek interpolacji funkcji
określonej na zbiorze równoodległych węzłów x

i

[0,2π] dobranych według następującej

zależności

background image

15

1

n

2

i

2

x

i

, gdzie i = 0, 1, ..., 2n


Czyli

1

n

2

n

4

x

...,

,

1

n

2

2

x

,

0

x

n

1

0


Warunek interpolacji prowadzi do układu równań liniowych w postaci

 

 

 

 

 

 

 

 

n

1

0

n

1

0

1

1

2n

2n

1

1

1

1

y

...

y

y

a

...

b

a

nx

cos

nx

sin

...

x

cos

x

sin

2

1

...

...

...

...

...

...

nx

cos

nx

sin

...

x

cos

x

sin

2

1

1

0

...

1

0

2

1


Współczynniki pierwszego wiersza macierzy X wynikają z wartości funkcji sin(hx) i cos (hx)
dla x

0

= 0. Przedstawiony układ równań rozwiązuje się natychmiastowo, ponieważ macierz X

-

1

można wyznaczyć z zależności

T

1

X

1

n

2

2

X


Przykład: Daną funkcję f(x) = 7x – x

2

przybliżyć wielomianem trygonometrycznym

przyjmując n = 3. Współrzędne węzłów interpolacji obliczamy ze wzoru:

1

2n

2iπ

x

i

x

0

0,898

1,795

2,693

3,590

4,488

5,386

y

0

5,478

9,344 11,598 12,242 11,274 8,695


Baza interpolacji – zbiór funkcji:





)

x

3

cos(

),

x

3

sin(

),

x

2

cos(

),

x

2

sin(

),

x

cos(

),

x

sin(

,

2

1


background image

16

Tworzymy macierz X:

901

,

0

434

,

0

223

,

0

975

,

0

623

,

0

782

,

0

707

,

0

623

,

0

782

,

0

901

,

0

434

,

0

223

,

0

975

,

0

707

,

0

223

,

0

975

,

0

623

,

0

782

,

0

901

,

0

434

,

0

707

,

0

223

,

0

975

,

0

623

,

0

782

,

0

901

,

0

434

,

0

707

,

0

623

,

0

782

,

0

901

,

0

434

,

0

223

,

0

975

,

0

707

,

0

901

,

0

434

,

0

223

,

0

975

,

0

623

,

0

782

,

0

707

,

0

1

0

1

0

1

0

707

,

0


Elementy macierzy X mnożymy przez 2/7, otrzymaną macierz transponujemy i obliczamy
współczynniki wzoru interpolacyjnego

T

491

,

1

,

147

,

0

,

961

,

1

,

513

,

0

,

923

,

4

,

336

,

1

,

845

,

11

A


background image

17

Aproksymacja

jest to przybliżanie funkcji f(x) zwanej aproksymowaną inną funkcją Q(x) zwaną funkcją
aproksymującą. Aproksymacja bardzo często występuje w dwóch przypadkach:

gdy funkcja aproksymowana jest przedstawiona w postaci tablicy wartości i
poszukujemy dla niej odpowiedniej funkcji ciągłej

gdy funkcję o dosyć skomplikowanym zapisie analitycznym chcemy przedstawić w
„prostszej” postaci


Dokonując aproksymacji funkcji f(x) musimy rozwiązać dwa ważne problemy:

dobór odpowiedniej funkcji aproksymującej Q(x)

określenie dokładności dokonanej aproksymacji


Dobór odpowiedniej funkcji aproksymującej Q(x)
Najczęściej stosowane funkcje aproksymujące są dobierane w postaci wielomianów
uogólnionych będących kombinacją liniową funkcji q(x)

m

0

j

j

j

m

)

x

(

a

)

x

(

Q

Jako funkcje bazowe stosowane są:

jednomiany

funkcje trygonometryczne

wielomiany ortogonalne


Przyjęcie odpowiednich funkcji bazowych powoduje, że aby wyznaczyć funkcję
aproksymującą należy wyznaczyć wartości współczynników, a

0

, a

1

, ..., a

m

.


Określenie dokładności aproksymacji
Aproksymacja funkcji powoduje powstanie błędów i sposób ich oszacowania wpływa na
wybór metody aproksymacji. Jeśli błąd będzie mierzony na dyskretnym zbiorze punktów x

0

,

x

1

, ..., x

n

to jest oto aproksymacja punktowa, jeśli będzie mierzony w przedziale (a,b) –

aproksymacja integralna lub przedziałowa.

Najczęściej stosowanymi miarami błędów aproksymacji są:

dla aproksymacji średniokwadratowej punktowej

n

0

i

2

)

x

(

Q

)

x

(

f

S

dla aproksymacji średniokwadratowej integralnej lub przedziałowej

b

a

2

dx

)

x

(

Q

)

x

(

f

S

dla aproksymacji jednostajnej

)

x

(

Q

)

x

(

f

sup

S

b

,

a

x




We wszystkich tych przypadkach zadanie aproksymacji sprowadza się do takiego
optymalnego doboru funkcji aproksymującej (dla wielomianu uogólnionych zaś do
optymalnego doboru współczynników a

0

, a

1

, ..., a

m

) aby zdefiniowane wyżej błędy były

minimalne.

background image

18

Aproksymacja średniokwadratowa
Niech dana będzie funkcja y=f(x), która w pewnym zbiorze X punktów x

0

, x

1

, ..., x

n

przyjmuje wartości y

0

, y

1

, ..., y

n

. Wartości te znane tylko w przybliżeniu z pewnym błędem

(np. jako wyniki pomiarów). Poszukujemy takiej funkcji Q(x) przybliżającej daną funkcję
f(x), która umożliwi wygładzenie funkcji f(x), czyli pozwoli z zakłóconych błędami danymi
wartości funkcji przybliżonej otrzymać gładką funkcję przybliżającą.
Niech

j

(x), j=0, 1,...,n będzie układem funkcji bazowych. Poszukujemy wielomianu

uogólnionego Q(x) będącego najlepszym przybliżeniem średniokwadratowym funkcji f(x) na
zbiorze X=(x

j

). Funkcja przybliżająca ma postać

m

0

i

i

i

(x)

a

Q(x)


Przy czym współczynniki a

i

są tak określone, aby wyrażenie

n

0

i

2

i

i

i

)

x

(

Q

)

x

(

f

)

x

(

w

)

x

(

Q

)

x

(

f

0

)

x

(

w

i

dla i=0, 1, ..., n


było minimalne. Funkcja w(x) jest z góry ustaloną funkcją wagową.

Aby wyznaczyć współczynniki a

i

oznaczamy odchylenie

n

0

j

2

j

j

2

m

0

i

i

i

i

j

n

0

j

j

n

1

0

R

)

x

(

w

)

x

(

a

)

x

(

f

)

x

(

w

a

,...,

a

,

a

H

n

0

j

2

j

j

2

m

0

i

j

i

i

j

n

0

j

j

n

1

0

)R

w(x

)

(x

a

)

f(x

)

w(x

a

,...,

a

,

a

H


gdzie R

j

jest odchyleniem w punkcie x

j

.


Następnie obliczamy pochodne cząstkowe funkcji H względem a

i

. Z warunku

0

a

H

k

,

gdzie k = 0, 1, ..., n


otrzymujemy układ m+1 równań o niewiadomych a

i

zwany układem normalnym

0

)

x

(

)

x

(

a

)

x

(

f

)

x

(

w

2

a

H

j

k

m

0

i

i

i

i

j

n

0

j

j

k

,

gdzie k = 0, 1, ..., n

0

)

(x

)

(x

a

)

f(x

)

w(x

2

a

H

j

k

m

0

i

j

i

i

j

n

0

j

j

k


Jeśli wyznacznik tego układu jest różny od zera to rozwiązaniem układu jest minimum funkcji
H. W zapisie macierzowym układ przyjmuje postać

F

D

DA

D

T

T

background image

19

gdzie

n

m

n

0

1

m

1

0

0

m

0

0

x

...

x

...

...

...

x

...

x

x

...

x

D

m

1

0

a

...

a

a

A

)

a

(

f

...

)

x

(

f

)

x

(

f

f

n

1

0



Aproksymacja wielomianowa
Jeżeli za funkcje bazowe przyjmiemy ciąg jednomianów (x

i

), i = 0, 1, ..., n to układ normalny

przyjmuje postać

0

x

)

x

(

a

)

x

(

f

n

0

j

k

j

m

0

i

i

j

i

j

,

k = 0, 1, ..., n


co po zmianie kolejności sumowania daje

 





n

j

m

i

n

j

k

i

j

i

k

j

j

x

a

x

x

f

0

0

0

)

(


przykład: Odnaleźć zależność między x i y w postaci ax+by=1

x 1 3 4 6 8 9 11 14
y 1 2 4 4 5 7 8

9


Będziemy rozpatrywać odchylenia zarówno wartości x jak i y, ponieważ wiodą one do
różnych wyników. Zakładamy, że dane są obarczone błędami, wówczas minimalizujemy
wyrażenia

2

n

1

i

i

i

y

y

2

n

1

i

i

i

x

x

przy czym

1

y

b

x

a

i

i

n

1

i

i

1

n

1

i

i

0

y

a

x

na

,

gdzie:

b

a

a

1

,

b

1

a

o

n

1

i

i

i

1

n

1

i

2

i

0

n

1

i

i

y

x

a

x

a

x

2

n

1

i

i

n

1

i

2

i

n

1

i

n

1

i

i

i

i

n

1

i

n

1

i

2

i

i

0

x

x

n

y

x

x

x

y

a

 

 

2

n

1

i

i

n

1

i

2

i

n

1

i

n

1

i

i

i

n

1

i

i

i

1

x

x

n

x

y

y

x

n

a

 



background image

20

Układ normalny dla danych z tablicy ma rozwiązanie
a

0

= 6/11

i

a

1

= 7/11,

więc ma postać
11y – 7x = 6
Minimalizując w ten sam sposób wyrażenie

2

n

1

i

i

i

x

x

otrzymamy równanie
2x - 3y = -1
Dla obu otrzymanych równań wykresy się pokrywają.

Algorytm

tablice: tab[1..4,1..5], a, p[1..4], s, suma[1..6]
zmienne rzeczywiste: x, y
zmienne indeksowe: i, j, n, k

for j:=1 to n do
begin
write (‘Podaj x i y dla węzła:’);
readln (x:10:4, y:10:4);
s[1]:=x;
for i:=2 to 6 do s[i]:=x*s[i-1];
for i:=1 to 6 do suma[i]:=suma[i]+s[i];
p[1]:=p[1]+y;
for i:=2 to 4 do p[i]:=p[i]+y*s[i-1];
end;
tab[1,1]:=n;
for i:=1 to 4 do
begin
tab[i,5]:=p[i];
for j:=1 to 4 do
begin
k:=i+j;
if not (k=2 then tab[i,j]:=suma[k-2]
end;
end;
RUKL(tab,a,4,5);
writeln (‘Poszukiwane współczynniki to’);
for i:=1 to 4 do writeln (a[i]:12:6);

Aproksymacja za pomocą wielomianów ortogonalnych ze wzrostem stopnia wielomianu,
obliczenia stają się coraz bardziej pracochłonne a ich wyniki niepewne. Problem ten można
usunąć stosując do aproksymacji wielomiany ortogonalne.

Funkcje f(x) i g(x) nazywa się ortogonalnymi na dyskretnym zbiorze punktów x

0

, x

1

, ..., x

n

jeśli

n

0

i

i

i

)

x

(

g

)

x

(

f

background image

21

przy czym

n

0

i

2

0

)

x

(

f

n

0

i

2

0

)

x

(

g


Analogicznie ciąg funkcyjny

),...

x

(

),...,

x

(

),

x

(

)

x

(

m

1

0

m


nazywamy ortogonalnym na zbiorze punktów x

0

, x

1

, ..., x

n

jeśli

n

0

i

i

k

i

j

0

)

x

(

)

x

(

dla j≠k


Zastosowanie tej metody powoduje, że znika jedna z trudności obliczeniowych przy
aproksymacji wielomianowej, mianowicie złe uwarunkowanie macierzy układu normalnego.
Przy aproksymacji wielomianami ortogonalnymi macierz układu normalnego jest macierzą
diagonalną, a jej elementy położone na głównej przekątnej dane są wzorem

n

0

i

i

2

j

jj

)

x

(

a


Załóżmy, że znamy n+1 równoodległych punktów x

i

(x

i

= x

0

+ih, i = 0, 1, ..., n). Za pomocą

przekształcenia liniowego

h

x

x

q

0


przeprowadzimy te punkty w kolejne liczby całkowite od 0 do n poszukujemy ciągu
wielomianów

)

q

(

F

),...,

q

(

F

,

F

)

q

(

F

)

n

(

m

)

n

(

1

)

n

(

0

)

n

(

i


(dolny indeks oznacza stopień i m ≤ n) spełniających warunek ortogonalności

0

)

i

(

F

)

i

(

F

n

0

i

)

n

(

k

)

n

(

j

dla j≠k

przy czym

 

 

 

k

k

2

2

1

1

0

)

n

(

k

q

a

...

q

a

q

a

a

)

q

(

F


gdzie

 

)

1

k

q

)...(

1

q

(

q

q

k





background image

22

Często używa się unormowanego ciągu wielomianów spełniających warunek

1

)

0

(

F

)

n

(

k

,

gdzie k = 0, 1, ..., m

]

k

[

k

]

1

[

1

)

n

(

k

q

b

...

q

b

1

)

q

(

F


Co po przekształceniu daje nam wzór na wielomiany Grama, zwane też wielomianami
Czebyszewa stopni k = 0, 1, ..., m w postaci

  

]

n

[

]

s

[

s

k
s

k
s

k

0

s

s

)

n

(

k

n

q

1

)

q

(

F

,

gdzie k = 0, 1, ..., m


Wzór aproksymacyjny oparty na wielomianach Grama ma postać:

 

m

0

k

m

0

k

0

)

n

(

k

k

)

n

(

k

k

m

h

x

x

F

s

c

)

q

(

F

s

c

y


gdzie,

n

m

oraz


n

0

q

2

)

n

(

k

k

)

q

(

F

s

)

x

(

F

y

c

i

)

n

(

n

0

i

i

k



Przykład:

Na podstawie tablicy wartości f(x) znaleźć najlepszy w sensie aproksymacji
średniokwadratowej wielomian przybliżający tę funkcję.

x

1

1,5

2

2,5

3

y

3

4,75

7

9,75

13


Ponieważ węzły są równoodległe posłużymy się wielomianem Grama. Konstruujemy
wielomian aproksymacyjny dla n = 4. Wartości F

k

(q), q=1, 2,…, 4.

Obliczamy ze wzoru:

]

[

]

[

0

)

(

)

1

(

)

(

n

S

k

S

s

n

k

h

q

s

s

k

s

k

q

F





 





1

)

(

0

q

F

n

q

q

F

2

1

)

(

1

1

n

background image

23

)

1

n

(

n

)

1

q

(

q

6

n

q

6

1

)

q

(

F

2

2

n

)

2

n

)(

1

n

(

n

)

2

q

)(

1

q

(

q

20

)

1

n

(

n

)

1

q

(

q

30

n

q

12

1

)

q

(

F

2

3

n

)

3

n

)(

2

n

)(

1

n

(

n

)

3

q

)(

2

q

)(

1

q

(

q

70

)

2

n

)(

1

n

(

n

)

2

q

)(

1

q

(

q

140

)

1

n

(

n

)

1

q

(

q

90

n

q

20

1

)

q

(

F

2

4

n



Zestawienie wyników przedstawia tabela:

q

x

i

y

i

F

0

(q)

F

1

(q)

F

2

(q)

F

3

(q)

F

4

(q)

0

1

3

1

1

1

1

1

1

1,5

4,75

1

0,5

-0,5

-2

-4

2

2

7

1

0

-1

0

6

3

2,5

9,75

1

-0,5

-0,5

2

-4

4

3

13

1

-1

1

-1

1



Następnie korzystając ze wzorów:

n

0

q

2

)

n

(

k

k

)

q

(

F

s

)

x

(

F

y

c

i

)

n

(

n

0

i

i

k


Obliczamy c

i

i s

i

oraz b

i

= c

i

/ s

i

i ze wzoru:

m

j

j

j

m

x

a

x

Q

0

)

(

)

(

otrzymujemy:

c

i

37,5

-12,5

1,75

0

0

s

i

5

2,5

3,5

10

70

b

i

7,5

-5

0,5

0

2

dla

5

,

0

1

x

q

background image

24

Aproksymacja trygonometryczna

Często spotykamy się z przypadkiem, gdy funkcja f(x) jest okresowa. Taką funkcję
wygodniej jest aproksymować, wielomianem trygonometrycznym o bazie:

1, sin x, cos x, sin 2x, cos 2x, …, sin kx, cos kx

Jeżeli f(x) jest funkcją dyskretną określoną w dyskretnym zbiorze równoodległych punktów i
ich liczba jest parzysta i wynosi 2L (dla nieparzystej liczby punktów rozumowanie jest
analogiczne), niech:

L

i

x

i

dla i = 0, 1, …, 2L-1


Baza jest ortogonalna nie tylko na przedziale <0, 2π>, ale też na zbiorze punktów x

i

, przy

czym warunki ortogonalności mają postać:

0

k

m

dla

0

0

k

m

dla

L

k

m

dla

0

)

kx

sin(

)

mx

sin(

1

L

2

0

i

i

i

0

k

m

dla

L

2

0

k

m

dla

L

k

m

dla

0

)

kx

cos(

)

mx

cos(

1

L

2

0

i

i

i

0

)

kx

sin(

)

mx

cos(

1

L

2

0

i

i

i

dla m, k dowolnych, przy czym m i k zmieniają się od 0 do L



Przybliżeniem funkcji f(x) na zbiorze punktów x

i

jest wielomian trygonometryczny:

n

1

j

j

j

0

n

))

jx

sin(

b

)

jx

cos(

a

(

a

2

1

)

x

(

y

, n<L


Współczynniki a

j

i b

j

wielomianu wyznaczamy tak, aby suma kwadratów różnic

1

L

2

0

i

2

i

n

i

)

x

(

y

)

x

(

f

była minimalna.

background image

25

Korzystając z warunku ortogonalności otrzymujemy rozwiązanie układu normalnego

0

)

x

(

)

x

(

a

)

x

(

f

)

x

(

w

2

a

H

j

k

n

0

j

j

i

m

0

i

i

j

j

k


w postaci:

1

L

2

0

i

1

L

2

0

i

i

i

i

j

L

ij

cos

)

x

(

f

L

1

jx

cos

)

x

(

f

L

1

a

dla j=1, 2, …, n

1

L

2

0

i

1

L

2

0

i

i

i

i

j

L

ij

sin

)

x

(

f

L

1

jx

sin

)

x

(

f

L

1

b



Algorytm:

const max: … {zdefiniowanie stałej}
type zakres: 1…max;
wektor: array[zakres] of real;
procedure APR (N, K: zakres; var y, a, b: wektor);
var i, j: integer;
PI, A0, S1, S2: real;
begin
write(‘Podaj wartość y’);
for i:=1 to N do readln(Y[I]);
A0:=0.0;
for j:=1 to N do A0:=A0+Y[I];
A0:=A0/N;
PI:=4.0*arctan(1.0)/N;
for i:=1 to K do
begin
S1:=0.0;
S2:=0.0;
for j:=1 to N do
begin
S1:=S1+Y[J]*cos(PI*J*I);
S2:=S2+Y[J]*sin(PI*J*I);
end;
A[I]:=S1*2/N;
B[I]:=S2*2/N;
end;
end;

background image

26

Szybka transformata Fouriera

Każdą funkcję w tablicy tablicą wartości w n punktach

β

n

x

β

, gdzie

= 0, 1, ..., n-1

można przybliżać wielomianem trygonometrycznym w postaci

 

1

n

0

k

k

jkx

exp

c

)

x

(

f

,

j - czynnik urojony

lub

m

0

k

1

m

k

k

0

x

)

1

m

(

cos

a

2

1

)

kx

sin(

b

)

kx

cos(

a

2

a

)

x

(

f

gdzie

= 1

2

2

n

m

dla n parzystych

= 1

2

1

n

m

dla n nieparzystych

1

0

1

0

1

0

)

exp(

)

(

1

1

-

n

...,

1,

0,

k

dla

)

sin(

)

(

2

1

)

cos(

)

(

2

1

n

k

n

k

n

k

jkx

x

f

n

c

kx

x

f

n

b

kx

x

f

n

a



Aproksymacja za pomocą funkcji sklejonych stopnia 3 (funkcji giętych)

Każdą funkcję

)

(

)

(

3

n

S

x

s

można przedstawić w postaci kombinacyjnej liniowej

1

n

1

i

3
i

i

)

x

(

c

)

x

(

s

,

a ≤ x ≤ b oraz gdzie

3
i

są funkcjami określonymi wzorem:




pozostaych

dla

0

x

,

x

x

dla

)

x

x

(

x

,

x

x

dla

)

x

x

(

3

)

x

x

(

h

3

)

x

x

(

h

3

h

x

,

x

x

dla

)

x

x

(

3

)

x

x

(

h

3

)

x

x

(

h

3

h

x

,

x

x

dla

)

x

x

(

n

1

2

i

1

i

3

2

i

1

i

i

3

1

i

2

1

i

1

i

2

3

i

1

i

3

1

i

2

1

i

1

i

2

3

1

i

2

i

3

2

i

3

3
i

gdzie

ih

a

x

i

,

n

a

b

h


Aproksymacja na przedziale <a,b>

Współczynniki c

i

dobieramy tak, aby odchylenie kwadratowe dane poniższym wzorem było

jak najmniejsze:

background image

27

dx

)

x

(

C

)

x

(

f

I

2

b

a

1

n

1

i

3
i

i

w celu wyznaczenia minimum funkcji I=I(c

-1

, c

0

, … , c

n+1

) obliczamy pochodne:

j

c

I

j = -1 , 0, … , n+1

i przyrównujemy je do zera. Otrzymane równania tworzą układ n+3 równań z n+3
niewiadomymi c

i

 

1

n

1

i

b

a

b

a

3

j

3

j

3
i

i

dx

)

x

(

)

x

(

f

dx

)

x

(

)

x

(

C

j= -1, 0, 1, … ,n+1


Funkcje

)

x

(

3
i

są liniowo niezależne na przedziale <a,b>, więc układ równań ma

rozwiązanie w postaci punktu. Funkcji I osiąga minimum. Układ równań możemy zapisać w
postaci:

1

n

1

i

b

a

3

j

i

ij

dx

)

x

(

)

x

(

f

h

1

c

a

j = -1, 0, 1, … , n+1,

gdzie

b

a

3

j

3
i

ij

dx

)

x

(

)

x

(

h

1

a

Aproksymacja funkcji określonej na dyskretnym zbiorze punktów

Niech (x

i

’) dla i= 0, 1, … ,n

1

; n

1

> n + 3 będzie zbiorem punktów, w których dane są wartości

funkcji f(x). Szukane jest minimum wyrażenia:

2

n

0

k

1

n

1

i

k

3
i

i

1

)

'

x

(

c

)

x

(

f

J

W celu wyznaczenia c

i

obliczamy pochodne cząstkowe funkcji J = J (c

-1

, c

0

,… ,c

n+1

)

względem zmiennych c

i

i przyrównujemy je do zera.


Otrzymane równania tworzą układ:

1

n

1

i

n

0

k

k

3
i

k

i

ij

1

)

'

x

(

)

'

x

(

f

c

b

, gdzie

1

n

0

k

k

3

j

k

3
i

ij

)

'

x

(

)

'

x

(

b

background image

28

Jeżeli wyznacznik tego układu jest różny od zera to rozwiązując go możemy wyznaczyć
współczynniki c

j

takie, że funkcja J osiągnie minimum.





Metody numeryczne rozwiązywania układów algebraicznych równań
liniowych

.

Rozpatrujemy układ n równań liniowych zawierających n niewiadomych

n

n

nn

2

2

n

1

1

n

2

n

n

2

2

22

1

21

1

n

n

1

2

12

1

11

b

x

a

...

x

a

x

a

...

...

...

...

...

...

...

b

x

a

...

x

a

x

a

b

x

a

...

x

a

x

a


Układ ten można zapisać także w postaci macierzowej A · X = B, gdzie

n

2

1

n

2

1

nn

2

n

1

n

n

2

22

21

n

1

12

11

x

...

x

x

X

b

...

b

b

B

a

...

a

a

...

...

...

...

a

...

a

a

a

...

a

a

A


metody dokładne: metoda Cramera, metoda eliminacji Gaussa, metoda Crouta (LU)
metody niedokładne: iteracja prosta, Gaussa-Siedla, metoda sukcesywnej nadrelaksacji (SOR)

O wyborze metody decyduje postać macierzy współczynników A. Jeśli macierz A jest
macierzą pełną to na ogół stosujemy metody dokładne. Jeśli macierz współczynników A jest
macierzą niepełną (znacząca ilość współczynników jest równa zero) wtedy stosujemy metody
iteracyjne.
Macierz A nazywana jest macierzą główną układu, X – wektorem niewiadomych, B –
wektorem wyrazów wolnych. Jeśli macierz główna nie jest osobliwa (det A ≠ 0), to układ
równań jest oznaczony (posiada dokładnie jedno rozwiązanie).
Gdy macierz A posiada niezerowe elementy tylko na głównej przekątnej, to układ równań
rozwiązuje się natychmiastowo.



n

n

nn

2

2

22

1

1

11

b

x

a

b

x

a

b

x

a

Niewiadome można wtedy obliczyć

ii

i

i

a

b

x

, a

ii

≠ 0, i = 0, 1, ..., n.

background image

29

Łatwo rozwiązuje się trójkątne układy równań



n

n

nn

2

n

n

2

2

22

1

n

n

1

2

12

1

11

b

x

a

...

...

...

b

x

a

...

x

a

b

x

a

...

x

a

x

a


Z ostatniego równania możemy wyznaczyć x

n

, z przedostatniego x

n-1

nn

n

n

a

b

x

a ogólnie

ii

n

1

i

s

s

is

i

i

a

x

a

b

x

, i = n-1, n-2, ..., 1 przy założeniu, że a

ii

≠ 0, i = 1, 2,

..., n

PRZYKŁAD:

6

1

6

x

x

x

2

0

0

1

2

0

1

1

1

3

2

1


zmienną x

3

mamy daną wprost - x

3

= 3

1

a

x

a

x

a

b

x

2,

a

x

a

b

x

11

3

13

2

12

1

1

22

3

23

2

2


ALGORYTM:

zmienne indeksowe

n, i, j, s

zmienne rzeczywiste

suma

tablice

a[1..n,1..n], b[1..n], c[1..n]


for i:=n downto 1 do
begin
suma:=0;
for s:=i+1 to n do
suma:=suma+a[i,s]*x[s];
x[i]:=(b[i]-suma)/a[i,i];
end;

Wzory Cramera
Jesli oznaczymy symbolem W wyznacznik główny układu równań



n

n

nn

2

2

n

1

1

n

2

n

n

2

2

22

1

21

1

n

n

1

2

12

1

11

b

x

a

...

x

a

x

a

...

...

...

...

...

b

x

a

...

x

a

x

a

b

x

a

...

x

a

x

a

background image

30

nn

2

n

1

n

n

2

22

21

n

1

12

11

a

...

a

a

...

...

...

...

a

...

a

a

a

...

a

a

A

det

W

n

2

n

1

n

2

22

21

1

12

11

j

b

...

a

a

...

...

...

...

b

...

a

a

b

...

a

a

W

to można wykazać, że

W

W

x

j

j

, W ≠ 0, j = 1, 2, ..., n

Metoda ta należy do metod dokładnych. Ze względu na dużą złożoność obliczeniową
praktycznie stosowana do numerycznego rozwiązywania równań.

Metoda eliminacji Gaussa
Metoda polega na zapisaniu układu równań w postaci macierzy C, której n pierwszych
kolumn zawiera elementy a

ij

macierzy głównej A, natomiast kolumnę n+1 tworzą dowolne

wyrazy b

i

.

Zakładając, że C

11

0, odejmujemy pierwsze równanie pomnożone przez

11

1

C

C

i

od i-tego

równania (i=2,3,...,n) a obliczonymi współczynnikami zastępujemy przednie wartości. W
wyniku tej operacji otrzymujemy układ równań i odpowiadającą mu macierz C

1

.

)

1

(

1

,

)

1

(

3

)

1

(

3

2

)

1

(

2

)

1

(

1

,

3

)

1

(

3

3

)

1

(

33

2

)

1

(

32

1

,

2

2

3

23

2

22

1

,

1

1

3

13

2

12

1

11

...

...

...

...

n

n

n

nn

n

n

n

n

n

n

n

n

n

n

n

C

x

C

x

C

x

C

C

x

C

x

C

x

C

C

x

C

x

C

x

C

C

x

C

x

C

x

C

x

C


Za pomocą wzorów określających nowe współczynniki

j

i

ij

ij

C

C

C

C

C

1

11

1

)

1

(

i=2,3,...,n j=2,3,...,n+1

Jeśli

0

)

1

(

22

C

, to odejmiemy drugie równanie układu pomnożone przez

)

1

(

22

)

1

(

2

C

C

i

od i-tego

równania układu i=3,4,...,n. W wyniku otrzymujemy układ:

)

2

(

1

,

)

2

(

)

2

(

3

)

2

(

1

,

3

)

2

(

3

)

2

(

33

)

1

(

1

,

2

)

1

(

2

)

1

(

23

)

1

(

22

1

,

1

1

13

12

11

2

...

0

0

:

:

...

:

:

:

...

0

0

...

0

...

n

n

nn

n

n

n

n

n

n

n

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C


A nowe współczynniki wyrażone są wzorami

)

1

(

2

)

1

(

22

)

1

(

2

)

1

(

)

2

(

j

i

ij

ij

C

C

C

C

C

i=3, 4, ..., n j=3, 4, ..., n

Kontynuując takie postępowanie po wykonaniu n kroków dochodzimy do układu trójkątnego

background image

31

)

1

(

1

,

)

1

(

)

2

(

1

,

1

)

2

(

3

3

)

2

(

33

)

1

(

1

,

1

)

1

(

2

3

)

1

(

23

2

)

1

(

22

1

,

1

1

3

13

2

12

1

11

...

...

...

n

n

n

n

n

nn

n

n

n

n

n

n

n

n

n

C

x

C

C

x

C

x

C

C

x

C

x

C

x

C

C

x

C

x

C

x

C

x

C

)

1

(

1

,

)

1

(

)

2

(

1

,

3

)

2

(

3

)

2

(

33

)

1

(

1

,

2

)

1

(

2

)

1

(

23

)

1

(

22

1

,

1

1

13

12

11

2

0

0

0

0

0

0

n

n

n

n

nn

n

n

n

n

n

n

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C


Algorytm dochodzenia od układu trójkątnego do układu równań liniowych





)

1

(

)

1

(

)

1

(

)

1

(

)

(

,...,

2

,

1

1

,...,

2

,

1

s

sj

s

ss

s

is

s

ij

s

ij

C

C

C

C

C

n

s

s

i

n

s


Przykład

4

2

3

5

2

3

1

4

3

2

3

2

1

3

2

1

3

2

1

x

x

x

x

x

x

x

x

x

4

2

3

1

5

1

2

3

1

4

3

2

C


Obliczamy elementy macierzy C

1

2

9

0

2

9

2

13

7

2

13

14

11

31

34

)

1

(

34

13

11

31

33

)

1

(

33

12

11

31

32

)

1

(

32

14

11

21

24

)

1

(

24

13

11

21

23

)

1

(

23

12

11

21

22

)

1

(

22

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

background image

32

druki krok s=2

0

13

63

)

1

(

24

)

1

(

22

)

1

(

32

)

1

(

34

)

2

(

34

)

1

(

23

)

1

(

22

)

1

(

32

)

1

(

33

)

2

(

33

C

C

C

C

C

C

C

C

C

C

0

13

63

0

0

2

13

7

2

13

0

1

4

3

2

2

C





co daje nam macierz C

1

:

2

9

0

2

9

0

2

13

7

2

13

0

1

4

3

2

1

C



i dalej ze wzorów dla układów trójkątnych mamy x

3

=0, x

2

=-1, x

1

=1


ALGORYTM:

zmienne indeksowe

n, i, j, s

zmienne rzeczywiste

suma

tablice

c[1..n,1..n+1], x[1..n]


for s:=1 to n-1 do
for i:=s+1 to n do
for j:=s+1 to n+1 do
c[i,j]:=c[i,j]-(c[i,s]*c[s,j])/c[s,s];

x[n]:=c[n,n+1]/c[n,n]

for i:=n-1 downto 1 do
begin
suma:=0;
for s:=i+1 to n do
suma:=suma+c[i,s]*x[s];
x[i]:=(c[i,n+1]-suma)/c[i,i];
end;


Metody iteracyjne
Proces iteracyjnego obliczania wrtości x polega na przyjęciu pewnej wartości początkowej
X

o

, zwanej przybliżeniem początkowym, a następnie wykonaniu określonych operacji

arytmetycznych dających w wyniku X

1

(zwanym pierwszym przybliżeniem). Kolejne

przybliżenia oblicza się wykonując te same operacje na ostatnio obliczonym przybliżeniu.

background image

33

Jeżeli ciąg przybliżeń {X

n

} zmierza do X, to proces iteracyjny jest zbieżny i tylko wtedy

metoda iteracyjna jest efektywna. Metody iteracyjnego rozwiązywania układów równań
liniowych można stosować dla układów typu

...

nn

n2

n1

2n

22

21

1n

12

11

n

2

1

w

w

w

w

w

w

w

w

w

X

X

X



Przykład:
Sprowadzić układ do postaci AX=B

2x

1

+x

2

+x

3

=4

x

1

=-0,5x

2

-0,5x

3

+2

x

1

+x

2

-x

3

=1

x

2

=-x

1

+x

3

+1

x

1

+x

2

+x

3

=3

x

3

=-x

1

-2x

2

+4


W pierwszej kolejności macierz A zakładamy na dwie macierze D i R przy czym D zawiera
tylko główną przekątną macierzy A, natomiast R pozostałe jej elementy.

0

2

1

1

0

1

1

1

0

1

0

0

0

1

0

0

0

2

1

2

1

1

1

1

1

1

2

A

=

D

+

R

Równanie A*X=B sprawdziło się dla

D*X+R*X=B  D*X=-R*X+B


Ostatnie równanie pomnożymy lewostronnie przez D

-1

i otrzymujemy:

E*X=D

-1

*R*X+D

-1

*B

Oznaczając –D

-1

*R=W i D

-1

*B=Z dochodzimy dorównania: X=W*X+Z


Wracając do zadania:



4

1

4

1

0

0

0

1

0

0

0

2

0

2

1

1

0

1

1

1

0

1

0

0

0

1

0

0

0

2

1

3

2

1

1

3

2

1

x

x

x

x

x

x

ponieważ

1

0

0

0

1

0

0

0

5

,

0

1

0

0

0

1

0

0

0

2

1


więc jak łatwo sprawdzić mamy taki sam układ jaki znaleziono sposobem „naturalnym”

background image

34


Metoda iteracji prostej (Jakobiego):
Metoda ta dla równania X=W*X+Z polega na przyjęciu zerowego przybliżenia wektora
X=X

o

, a następnie przeprowadzenia obliczeń iteracyjnych za pomocą zależności:

X

i+1

=W*X

i

+Z i=0,1,...


Liczba kroków, które należy wykonać, aby uzyskać wymaganą dokładność rozwiązania, jest z
reguły dość duża i istotnie zależy od przyjęcia punktu startowego X

o

. Punkt ten najczęściej się

dobiera na podstawie dodatkowych informacji o fizycznych aspektach problemu.

Przykład: Metodę iteracji prostej wykorzystano do rozwiązania układu równań będącego
różnicową aproksymacją równania Laplace`a z warunkami brzegowymi I rodzaju. Równanie
to opisuje stacjonarne pole temperatury w pewnym dwuwymiarowym obszarze, na którego
brzegach temperatury są znane. Jako przybliżenie zerowe przyjęto wartość temperatur w
wnętrzu obszaru T=50

C, wymiary prostokątne a=b=0,8 cm.

50

0

0

0

0

0

0

0

0

100

50

38

38

38

38

38

25

0

100

63

50

50

50

50

50

38

0

100

63

50

50

50

50

50

38

0

100

63

50

50

50

50

50

38

0

100

63

50

50

50

50

50

38

0

100

63

50

50

50

50

50

38

0

100

75

63

63

63

63

63

50

0

100

100

100

100

100

100

100

100

50

0

0

0

0

0

18

14

10

6

0

32

26

19

10

0

42

35

26

14

0

50

42

32

18

0

58

50

39

22

0

68

61

50

31

0

100

94

90

86

82

78

69

50

0

100

100

100

100

100

100

100

100

50

background image

35

Metoda Gaussa-Seidla

Stanowi ulepszenie metody iteracyjnej prostej polegające na wykorzystaniu obliczonych k
pierwszych składowych wektora X

i+1

do obliczenia składowej k+1. Modyfikacja ta znacznie

przyspiesza proces obliczania.

Przykład: Rozwiązując układ równań:

2

1

5

2

0

3

,

0

1

,

0

2

,

0

1

,

0

0

2

,

0

3

,

0

2

,

0

3

,

0

0

1

,

0

2

,

0

1

,

0

2

,

0

0

4

3

2

1

4

3

2

1

x

x

x

x

x

x

x

x


dla uproszczenia zapisu oznaczamy składowe z wektora iteracji „i” symbolem „x”, a
składowe wektora i iteracji i+1 symbolem „u”. W metodzie iteracji prostej układ ten
zapisujemy:

2

3

,

0

1

,

0

2

,

0

1

1

,

0

2

,

0

3

,

0

5

2

,

0

3

,

0

1

,

0

2

2

,

0

1

,

0

2

,

0

3

2

1

4

4

2

1

3

4

3

1

2

4

3

2

1

x

x

x

u

x

x

x

u

x

x

x

u

x

x

x

u

Przyjmujemy teraz punkt startowy np. X

0

= [3, 6, 4, 3]

T

, składowe tego wektora podstawiamy

do prawych stron równań wyliczając u

1

, ..., u

4

, które w następnej iteracji przejmą rolę punktu

startowego. Kolejne przybliżenia otrzymane tą metodą

78

,

3

13

,

4

33

,

7

53

,

4

37

,

3

05

,

4

27

,

7

45

,

4

15

,

3

4

08

,

7

4

,

4

2

,

3

4

,

3

1

,

7

2

,

4

3

4

6

3


rozwiązaniem dokładnym jest X = [4,59, 7,49, 4,20, 3,44]

Ten sam układ w metodzie Gaussa – Siedla ma postać:

2

3

,

0

1

,

0

2

,

0

1

1

,

0

2

,

0

3

,

0

5

2

,

0

3

,

0

1

,

0

2

2

,

0

1

,

0

2

,

0

3

2

1

4

4

2

1

3

4

3

1

2

4

3

2

1

u

u

u

u

x

u

u

u

x

x

u

u

x

x

x

u

background image

36

a kolejne przybliżenia:

44

,

3

2

,

4

4

,

7

58

,

4

43

,

3

19

,

4

38

,

7

56

,

4

41

,

3

15

,

4

32

,

7

51

,

4

32

,

3

4

22

,

7

2

,

4

3

4

6

3



Formalny zapis algorytmu


Macierz W w równaniu X = W · X + Z przedstawiamy jako sumę dwóch macierzy: górnej
trójkątnej W

u

i dolnej trójkątnej W

l

. Macierz górna trójkątna składa się z elementów macierzy

W leżących nad główną przekątną (pozostałe są zerami), natomiast macierz dolna trójkątna
składa się z elementów macierzy W leżących pod główną przekątną. Macierz W w tym
przykładzie ma zerową główną przekątną

Algorytm metody Gaussa – Siedla realizowany jest następującym wzorem:

Z

X

W

X

W

X

i

i

i

u

i

1

1


czyli mamy:

2

1

5

2

0

3

,

0

1

,

0

2

,

0

0

0

2

,

0

3

,

0

0

0

0

1

,

0

0

0

0

0

0

0

0

0

1

,

0

0

0

0

2

,

0

3

,

0

0

0

2

,

0

1

,

0

2

,

0

0

4

3

2

1

4

3

2

1

x

x

x

x

u

u

u

u



Metoda sukcesywnej nadrelaksacji (SOR)


Jest ulepszeniem metody Gaussa-Seidla mającym poprawić szybkość zbieżności procesu
iteracyjnego. Istota polega na sukcesywnym wprowadzaniu w miejsce składowych u

i

po

prawej stronie układu wartości

x

i

+ α (u

i

– x

i

)

α – współczynnik nadrelaksacji, α

<1,2>

i – liczba niewiadomych a nie iteracja


Sposób dobory optymalnego współczynnika

nazywanego czynnikiem nadrelaksacyjnym

jest trudny do określenia, chociaż wiadomo, że jest on liczbą z przedziału [1 , 2]. Można
zauważyć, że dla

=1 otrzymuje się metodę Gaussa – Siedla. Według źródeł literaturowych

zaleca się przyjmowanie

rzędu 1,8.


Algorytm metody nadrelaksacyjnej sprowadza się do wzoru:

Z

X

X

X

W

X

W

X

i

i

i

i

i

u

i

)]

(

[

1

1

1

background image

37

Zbieżność metod iteracyjnych

Jeżeli macierz A kwadratowa oraz x jest wektorem niezerowym, wówczas istnieje pewien
wektor równoległy do Ax, co oznacza, że istnieje pewna stała

taka, że:

Ax =

x


Możemy wtedy zapisać równanie charakterystyczne

(A -

I)x = 0,

gdzie I – macierz jednostkowa

oraz wielomian charakterystyczny ma postać

p(

) = det (A -

I)


Jeżeli wielomian macierzy A jest

n

n

, wektora x jest n, wówczas p jest wielomianem m-

tego stopnia, którego pierwiastki są pojedyncze i zespolone. Jeżeli wektor

jest

pierwiastkiem wielomianu p wówczas:

0

det

I

A


Jeżeli powyższy warunek jest spełniony, oznacza to, że równanie charakterystyczne ma
rozwiązanie x

0.



Zbieżność metod iteracyjnych (2)

Promień spektralny

(A) macierzy A jest zdefiniowany jako:

max

)

A

(

,

gdzie

- oznacza moduł wektora


wówczas równanie charakterystyczne jest zbieżne gdy:

1

)

A

(


Można wykazać, że:

A

macierzy

normę

oznacza

A

gdzie

A

A

)

(


ostatecznie dla metod iteracyjnych można zapisać twierdzenie:


Warunkiem koniecznym i wystarczającym zbieżności procesu iteracyjnego danego wzorem

Z

X

W

X

i

i

1

przy dowolnym wektorze początkowym

)

0

(

X

i dowolnym wektorze Z jest,

aby wszystkie wartości własne macierzy W były co do modułu mniejsze od jedności.


background image

38

Zbieżność metod iteracyjnych

W praktyce jest na ogół wygodniej korzystać z twierdzenia:

Jeżeli norma macierzy W jest mniejsza od jedności to proces iteracyjny

określany wzorem X

i+1

= W · X

i

+ Z jest zbieżny.



Z przytoczonych twierdzeń wynika, że zbieżność procesu iteracyjnego nie zależy ani od
wartości początkowej

)

0

(

X

, ani też od wartości danego wektora Z, a wystarczy jedynie

spełnienie jednego z następujących warunków:

n

j

ij

i

w

1

1

max

norma wierszowa

n

i

ij

j

w

1

1

max

norma kolumnowa



n

i

n

j

ij

w

1

1

2

1

norma energetyczna



Kryterium „stopu” metod iteracyjnych

Obliczenia iteracyjne trwają do momentu kiedy zostanie spełniony warunek

 

 

i

1

i

X

X


gdzie: X

(i+1)

oraz X

(i)

są kolejnymi przybliżeniami rozwiązania X

i+1

= W · X

i

+ Z oraz δ jest

dokładnością obliczeń – dowolna liczba większa od 0

j

1

i

j

i

1

i

x

x

x

,

gdzie ε

<10

-1

, 10

-256

> – przyjęta dokładność obliczeń


background image

39

Numeryczne rozwiązywanie równań nieliniowych

Metoda Newtona

Dany jest układ równań nieliniowych z n niewiadomymi

0

)

x

...

x

(

f

..

..........

..........

0

)

x

...

x

(

f

0

)

x

...

x

(

f

n

1

n

n

1

2

n

1

1


który możemy zapisać w postaci wektorowej

f(x)=0

gdzie:

n

x

x

x

:

:

1

)

(

:

:

)

(

)

(

1

x

f

x

f

x

f

n


O funkcjach fi(x

1

...x

n

) dla i = 1, 2, ..., n zakładamy, że mają ciągłe pochodne pierwszego

rzędu w pewnym obszarze zawierającym odosobniony pierwiastek układu równań. Niech

x

(k)

= {x

1

(k)

, ..., x

n

(k)

}


będzie k-tym przybliżeniem pierwiastka a = {a

1

, ..., a

n

} równania.

Dokładną wartość pierwiastka wyraża wzór a = x

(k)

+ ε

(k)


Gdzie

}

,...,

{

)

(

)

(

1

k

n

k

jest błędem pierwiastka przybliżonego

)

(k

x

. Skoro istnieje ciągła

pochodna funkcji f(x) możemy zapisać:

)

(

)

(

)

(

)

(

'

)

(

)

(

k

k

k

x

f

x

f

a

f

Zastępując błąd

)

(k

przyrostem

)

(

)

1

(

)

(

k

k

k

x

x

h

i porównując prawą stronę powyższego

wyrażenia do zera otrzymujemy równanie liniowe:

0

)

)(

(

'

)

(

)

(

)

1

(

)

(

)

(

k

k

k

k

x

x

x

f

x

f

Wzór ten stanowi zapis rekurencyjny dla metody Newtona w postaci macierzowej.

background image

40

Pochodna f’(x) jest macierzą Jakobiego

n

n

2

n

1

n

n

2

2

2

1

2

n

1

2

1

1

1

x

f

...

x

f

x

f

...

...

...

...

x

f

...

x

f

x

f

x

f

...

x

f

x

f

)

x

(

W

)

x

(

'

f

Przyjmując, że

)

(

)

(k

x

W

jest macierzą nieosobliwą możemy równanie liniowe przekształcić do

postaci:

)

(

)

(

)

(

)

(

1

)

(

)

1

(

k

k

k

k

x

f

x

W

x

x

stąd przyjmując dowolną wartość

)

0

(

x

otrzymujemy ciąg kolejnych przybliżeń pierwiastka

równania

)

(

)

2

(

)

1

(

)

0

(

...,

,

,

,

k

x

x

x

x

uzyskanych metodą Newtona.


Metoda iteracji

Dany jest układ równań nieliniowych z n niewiadomymi

)

x

...

x

(

g

x

..

..........

..........

)

x

...

x

(

g

x

)

x

...

x

(

g

x

n

1

n

3

n

1

2

2

n

1

1

1



który możemy zapisać w postaci wektorowej

x=g(x)

gdzie:

n

x

x

x

:

:

1

)

(

:

:

)

(

)

(

1

x

g

x

g

x

f

n



Zakładamy, że funkcja g

1

, g

2

, ..., g

n

są rzeczywiste i ciągłe w pewnym otoczeniu

odosobnionego pierwiastka a = {a

1

, ..., a

n

} układu równań.

background image

41

Metoda iteracji polega na stosowaniu następującego wzoru

x

k+1

= g(x

(k)

)


Po przyjęciu przybliżenia

)

0

(

x

, w rezultacie otrzymujemy ciąg kolejnych przybliżeń

...

,

,

,

)

2

(

)

1

(

)

0

(

x

x

x

pierwiastka a równania.



Metoda siecznych

Rozpatrujemy układ równań nieliniowych w postaci



0

)

x

...,

,

x

,

x

(

f

.

..........

..........

..........

0

)

x

...,

,

x

,

x

(

f

0

)

x

...,

,

x

,

x

(

f

n

2

1

n

n

2

1

2

n

2

1

1



Który możemy ogólnie zapisać w postaci:

f(x)=0

gdzie x jest wektorem n zmiennych.
Metoda iteracji polega na stosowaniu wzoru wyliczającego k-te przybliżenie i-tej zmiennej
tych:

)

(

)

(

)

(

)

(

1

1

1

k

i

k

i

k

i

k

i

k

i

k

i

k

i

x

f

x

f

x

f

x

x

x

x



Metoda ma dwie wady:
- potrzebne są 2 zestawy punktów startowych: x

0

, f(x

0

), x

1

, f(x

1

)

- wykrywamy jeden wektor x-ów (globalny) (jeden zestaw x-ów), a pierwiastki mogą być
wielokrotne


Przykład:
Dany jest układ równań w postaci

0

2

y

x

0

4

x

2


Napisać program wyznaczający rozwiązanie tego układu.
Niezbędne deklaracje typów:

background image

42

wektor array[1..2] of Extended;

zmienne:

x, X1, Xn, F, F1, Fn: Extended;
iteracja: LongInt;


Funkcja reprezentująca układ równań

function funkcja (z:word):wektor;
begin
funkcja[1]:=sqrt(z[1])-4;
funkcja[2]:=z[1]*z[2]-2;
end;

Realizacja obliczeń:

Procedure oblicz
Begin
x[1]:=4;
x[2]:=7;
X1[1]:=9;
X1[2]:=11;
Repeat
Inc(iteracje);
F:=funkcja(x);
F1:=funkcja(X1);
xn[1]:=x[1]

-

((x[1]-x1[1])*F[1])/F[1]-F1[1];

Xn[2]:=x[2]

-

((x[2]-X1[2])*F[2])/F[2]-F1[2];

Fn:=funkcja(xn);
X1:=x;
x:=Xn;
until (abs(Fn[1]+abs(Fn[2])<=0.0000000001;

Po zakończeniu obliczeń wektor x przechowuje wartości zmiennych, natomiast zmienna
iteracje zawiera liczbę wykonanych iteracji.


background image

43

Rozważania dotyczą numerycznego obliczania wartości:
- całek pojedynczych funkcji ciągłych
- całek pojedynczych funkcji niewłaściwych
- całek funkcji osobliwych
- całek wielokrotnych
- całek Monte Carlo

Całkowanie pojedyncze – metody obliczeń

a) kwadratury z ustalonymi węzłami

kwadratury Newtona-Cotesa

złożone kwadratury Newtona-Cotesa

metody Romberga

metoda adaptacyjna

b) kwadratury Gaussa

- kwadratury Gaussa
- złożone kwadratury Gaussa

Całki pojedyncze właściwe

Całka oznaczona Riemanna
Niech funkcja f(x) będzie określona i ograniczona na przedziale [a,b]. Dokonajmy podziału
przedziału [a,b] takiego, że:

a = x

0

< x

1

< ... < x

n+1

= b


i utwórzmy sumę

  

 

1

c

f

x

x

S

n

0

i

i

i

1

i

n

,

gdzie

1

i

i

i

x

,

x

c

są dowolnymi punktami pośrednimi


Jeżeli ciąg {S

N

} dla

n

jest zbieżny do tej samej granicy S przy każdym przedziale

odcinka [a ; b] takim, że

0

max

1

0

i

i

n

i

x

x

niezależnie od wyboru punktów C

i

to funkcję f(x)

nazywamy całkowalną w przedziale [a ; b], a granicę S ciągu (1) nazywamy:
Całką oznaczoną Riemanna funkcji f o oznaczamy:

b

a

dx

x

f

)

(

Można wykazać, że funkcja ograniczona w przedziale domkniętym jest całkowalna wtedy i
tylko wtedy, gdy jej punkt nieciągłości w przedziale [a ; b] tworzą zbiór miary zero.

Jeżeli przez F(x) oznaczymy funkcję pierwotną funkcji f(x) w przedziale [a,b] (jeżeli F’(x) =
f(x)) to ma miejsce wzór

background image

44

 

 

   

 

2

a

F

b

F

dx

x

f

f

I

b

a

 

 

 

3

f

E

S

f

I

n

, gdzie E(f) – reszta kwadratury


Interpretacją graficzną całki oznaczonej jest pole pomiędzy osią OX, krzywą.
Wzór (1) jest inaczej nazywany kwadraturą. Nazwa pochodzi od sumowania wyrazów ciągu,
które w najprostszym przypadku graficzną interpretację mają w postaci czworokątów.

background image

45

Całka oznaczona Riemanna

Interpretacją graficzną całki oznaczonej jest pole powierzchni pomiędzy osią OX a krzywą.
Rysunek obok to ilustruje


Wyznaczmy S sumę ciągu n-wyrazów, które są określone jako iloczyn wartości funkcji w
punktach x

i

<a,b> oraz współczynników niezależnych od rodzaju funkcji.


Wówczas

n

i

i

i

x

f

a

f

S

0

)

(

)

(

(1)

b

a

dx

x

f

f

I

)

(

)

(

(2)


Można wykazać, że suma ciągu S(f) jest zbieżna do całki oznaczonej I(f) dla

n

background image

46

Uwagi ogólne o całkowaniu numerycznym

Całkowanie numeryczne stosujemy wtedy gdy trudno obliczyć całkę w sposób analityczny
lub w przypadku gdy znane są tylko wartości funkcji podcałkowej w punktach zwanych
węzłami


W celu przybliżonego obliczenia całki oznaczonej funkcji f(x) na skończonym przedziale

]

;

[ b

a

x

, funkcję podcałkową f(x) zastępujemy interpolującą funkcją φ(x), którą łatwo

można całkować. Funkcja φ(x) będzie wielomianem interpolującym z węzłami interpolacji x

0

,

x1, …, x

n

. Wówczas całkę możemy zastąpić sumą, współczynniki a

i

zależą od metody

obliczeń

b

a

b

a

n

i

i

i

x

f

a

dx

x

dx

x

f

0

)

(

)

(

)

(

(4)



Kwadratury z ustalonymi węzłami

Kwadratury Newtona-Cotesa
Całkowanie z zastosowaniem kwadratur o ustalonych węzłach polega na zastąpieniu funkcji
podcałkowej wielomianem interpolacyjnym Lagrange’a Li(x).
Jeżeli dla skończonego przedziału [a,b] wybierzemy zbiór punktów węzłowych {x

0

, ..., x

n

}

takich, że:

x

i

= x

0

+ i · h

background image

47

gdzie:

n

a

b

h

)

(

dla wówczas=(0, 1, …, n)


n - oznacza również stopień wielomianu interpolacyjnego

n

i

i

i

x

L

x

f

x

0

)

(

)

(

)

(

(5), gdzie:

n

k

i

k

k

i

k

i

x

x

x

x

x

L

0

)

(

)

(

)

(

(6)


wówczas

 

   

 

 

7

dx

!

1

n

x

f

x

x

dx

x

L

x

f

dx

x

f

b

a

n

0

i

b

a

n

0

i

1

n

i

i

i

b

a





 

 

 

8

dx

x

f

x

x

!

1

n

1

dx

x

f

a

b

a

n

0

i

b

a

n

0

i

1

n

i

i

i





ξ – dowolny punkt pośredni z przedziału (x,x

i

)


gdzie:

]

;

[

)

(

b

a

x

oraz

b

a

n

i

n

i

i

i

t

n

t

t

t

i

n

i

h

dx

x

L

a

0

)

)...(

1

(

)!

(

!

)

1

(

)

(

(9)


ostatecznie wzór kwadratury Newtona – Cotesa oraz reszta kwadratury

b

a

n

i

i

i

f

E

x

f

a

dx

x

f

0

)

(

)

(

)

(

(10)



b

a

n

i

n

i

dx

x

f

x

x

n

f

E

0

)

1

(

))

(

(

)

(

)!

1

(

1

)

(

(11)


Twierdzenie 1

Kwadratury Newtona-Cotesa oparte na n+1 węzłach są rzędu

ych

nieparzyst

n

dla

1

n

parzystych

n

dla

2

n


wówczas wzory kwadratur dla n parzystych mają postać

background image

48

 

 

 

 

  

 

 

12

b

,

a

gdzie

,

dt

n

t

...

1

t

t

!

2

n

f

h

dx

x

f

a

dx

x

f

b

a

n

0

i

n

0

2

n

2

n

3

n

i

i

b

a





oraz dla nieparzystych mają postać:

b

a

n

n

i

n

n

n

i

i

dt

n

t

t

t

n

f

h

x

f

a

dx

x

f

0

0

)

1

(

)

2

(

)

)...(

1

(

)!

1

(

)

(

)

(

)

(

(13)

Kwadratury z ustalonymi węzłami – wzór trapezów

Wyznaczmy wzór kwadratury dla n = 1

 

   

  

 

 

14

f

E

dx

x

f

x

x

x

x

x

f

x

x

x

x

dx

x

f

1

0

x

x

1

0

1

0

0

1

0

1

b

a




gdzie:

1

1

3

1

1

)

)(

(

)

(

2

1

)

)(

))(

(

(

2

1

)

(

x

x

x

x

o

n

o

n

o

o

dx

x

x

x

x

f

dx

x

x

x

x

x

f

f

E

)

(

12

2

)

(

3

)

(

2

1

3

0

1

1

0

2

0

1

3

n

n

f

h

x

x

x

x

x

x

x

x

x

f



wówczas:

b

a

n

f

h

x

x

x

f

x

x

x

x

x

f

x

x

x

x

dx

x

f

)

(

12

)

(

)

(

2

)

(

)

(

)

(

2

)

(

)

(

3

0

1

1

0

1

2

0

0

1

0

2

1

background image

49

)

(

12

)

(

)

(

2

)

(

3

1

0

0

1

n

f

h

x

f

x

f

x

x

(16)


Ostatecznie otrzymujemy

 

   

 

 

17

b

a

,

''

f

12

h

b

f

a

f

2

h

dx

x

f

3

b

a


powyższe równanie jest znane jako wzór trapezów – widać, że wzór pozwala dokładnie
obliczyć całkę dla dowolnej funkcji, dla której druga pochodna jest zero (wtedy reszta jest 0).


Zauważmy, że dla powyższych rozwiązań końce przedziału całkowania są węzłami
kwadratury x

0

=a oraz x

n

=b. Wzory kwadratur oparte na tych węzłach nazywamy wzorami

zamkniętymi Newtona – Cotesa.
Podobnie wyznaczyć można wzory dla innych n.

Kwadratury Newtona-Cotesa – wzory zamknięte

Poniżej znajdują się wzory zamknięte dla n = (1..3):

wzór trapezów

 

   

 

 

18

,

''

12

2

1

1

0

3

1

0

x

x

f

h

x

f

x

f

h

dx

x

f

n

b

a



wzór parabol (Simpsona)

 

 

   

 

 

19

,

90

4

3

2

2

0

)

3

(

5

2

1

0

x

x

f

h

x

f

x

f

x

f

h

dx

x

f

n

b

a



wzór Bessela

 

 

 

   

 

 

20

,

80

3

3

3

8

3

3

3

0

)

4

(

7

3

2

1

0

x

x

f

h

x

f

x

f

x

f

x

f

h

dx

x

f

n

b

a

background image

50

Interpretacja graficzna

wzór parabol (Simpsona)



wzór Bessela


Kwadratury Newtona - Cotesa - wzory otwarte

Wzory kwadratur nie opartych na węzłach będących końcami przedziału całkowania
nazywamy wzorami otwartymi Newtona - Cotesa

background image

51

Jeżeli dla skończonego [a ; b] przedziału wybierzemy zbiór punktów węzłowych {x

0

, …, x

n

}

takich, że :

h

i

x

x

i

0

gdzie:

2

)

(

n

a

b

h

dla i=(0, …, n)


oraz

h

a

x

0


W oparciu o Twierdzenie 1 można również wyznaczyć wzory kwadratur otwartych.

Wówczas

wzory kwadratur dla n parzystych mają postać

 

 

 

  

 

21

]

b

,

a

[

gdzie

,

dt

n

t

...

1

t

t

!

2

n

f

h

dx

x

f

a

dx

x

f

n

0

i

1

n

1

2

2

n

3

n

i

i

b

a


oraz dla n nieparzystych mają postać:

b

a

n

i

n

n

n

n

i

i

b

a

gdzie

dt

n

t

t

t

n

f

h

x

f

a

dx

x

f

0

1

1

)

1

(

)

1

(

)

2

(

)

22

(

]

;

[

,

)

)...(

1

(

)!

1

(

)

(

)

(

)

(

wzór prostokątów

 

 

 

 

23

x

x

,

''

f

3

h

x

f

2

h

dx

x

f

0

n

1

1

3

0

b

a

 

   

 

 

24

x

x

,

''

f

3

h

3

x

f

x

f

2

h

3

dx

x

f

1

n

2

1

3

1

0

b

a

 

   

 

 

 

25

,

45

14

2

2

3

4

2

3

1

)

4

(

5

2

1

0

x

x

f

h

x

f

x

f

x

f

h

dx

x

f

n

b

a

 

     

 

 

 

26

,

144

95

11

11

24

5

3

4

1

)

4

(

5

3

2

1

0

x

x

f

h

x

f

x

f

x

f

x

f

h

dx

x

f

n

b

a


background image

52

Interpretacja geometryczna

wzór prostokątów

wzór trapezów


Kwadratury Newtona-Cotesa – porównanie

Przykładowe wyniki obliczeń całki

 

 

29289922

,

0

2

2

1

x

cos

dx

x

sin

4

0

4

0


Wyniki obliczeń dla wzorów otwartych i zamkniętych:

n

0

1

2

3

wzory zamknięte

0,27768018

0,29293264

0,29291070

błąd

0,01521303

0,00003924

0,00001748

wzory otwarte

0,30055887

0,29798754

0,29285866

0,29286923

błąd

0,007666565

0,00509432

0,00003456

0,00002399


background image

53

Kwadratury Newtona-Cotesa – podsumowanie

Kwadratury Newtona-Cotesa dają coraz lepszą dokładność wraz ze wzrostem n. Jednak wraz
ze wzrostem n wzór na sumę posiada również rosnącą liczbę czynników. Dlatego kwadratur
Newtona-Cotesa nie stosuje się dla dużych n oraz z uwagi na pojawianie się ujemnych
współczynników (dla n = 7). Co więcej dla dużych n istnieją funkcje ciągłe, dla których ciąg
kwadratur Newtona – Cotesa nie jest zbieżny do całki

b

a

dx

x

f

)

(


W praktyce nie stosuje się kwadratur Newtona – Cotesa wysokiego rzędu.
Jak widać aby obliczyć wartość całki stosując kwadratury Newtona – Cotesa wystarczy
wyznaczyć wartość funkcji w punktach węzłowych, a następnie podstawić je do wzoru.
Większą trudność sprawia oszacowanie reszty kwadratury, gdyż należy wyznaczyć
maksimum pochodnej k rzędu funkcji dla przedziału całkowania.

Obliczyć poniższą całkę stosując metodę Simpsona

 

 

4

4

5

0

d

)

sin(

d

2

90

1

sin

2

sin

4

0

sin

6

dx

)

x

sin(

 

 

 

cos

d

)

sin(

d

4

4

, wtedy

1

)

cos(

max

,

0


wówczas wyniki:

09439510

,

2

3

2

dx

)

x

sin(

0


oraz oszacowanie błędu obliczeń:

106256835

,

0

2880

1

2

90

1

5

2

 


rozwiązanie dokładne:

2

)

0

cos(

)

cos(

)

x

cos(

dx

)

x

sin(

0

0


Kody źródłowe:

przykładowa całkowana funkcja:

function f(x:extender):extender,
begin
result:=sin (2*x*x)+2*cos(3x);
end;

background image

54

wzór prostokątów:

function calka_n_0_wzor_otwarty(a,b:extended):extended;
var h:extended;
begin
h:=(b-a)/2;
result:=2*h*f(a+h);
end;


wzór trapezów:

function calka_n_1_wzor_zamkniety(a,b:extended):extended;
var h:extended;
begin
h:=(b-a);
result:=(h/2)*(f(a)+f(b));
end;

wzór parabol:

function calka_n_2_wzor_zamkniety(a,b:extended):extended;
var h:extended;
begin
h:=(b-a)/2;
result:=(h/3)*(f(a)+f(a+h)=f(b));
end;

background image

55

Kwadratury z ustalonymi węzłami

Złożone kwadratury Newtona – Cotesa:
W poprzednim punkcie zostały przedstawione kwadratury Newtona-Cotesa. Wiemy, że błąd
kwadratury zależy od długości przedziału całkowania oraz rzędu kwadratury. Dlatego w
oparciu właśnie o kwadratury Newtona-Cotesa niskich rzędów zdefiniujemy tzw. wzory
złożone Newtona-Cotesa. W celu zwiększenia dokładności obliczeń należy zmniejszyć
długość przedziału. Wynika z tego, że dzieląc przedział całkowania na m podprzedziałów i
obliczając dla każdego przedziału kwadraturę Newtona-Cotesa niskiego rzędu, następnie, gdy
zsumujemy wyniki podprzedziałów, uzyskamy wynik zbieżny do rozwiązania dokładnego,
natychmiast zwiększy się dokładność obliczeń.

m=1


Otrzymane w ten sposób kwadratury określono na całym przedziale całkowania nazywamy
złożonymi kwadraturami Newtona-Cotesa

Twierdzenie 2:
Podzielmy przedział całkowania [a,b] na m części przy pomocy punktów:

h

i

a

x

i

, dla

)

1

m

,...,

1

,

0

(

i

,

m

)

a

b

(

h

mamy wtedy:

 

1

m

0

i

x

x

b

a

1

i

i

dx

)

x

(

f

dx

)

x

(

f

background image

56

stosując do każdej z całek po prawej stronie równania dowolny wzór kwadratury Newtona-
Cotesa

...


Na podstawie poprzedniej zależności możemy wyprowadzić wzory złożonych kwadratur:

złożony wzór prostokątów:

E

2

h

x

f

h

E

2

h

x

f

h

dx

)

x

(

f

1

m

0

i

i

1

m

0

i

i

1

m

0

i

i

b

a

(28)

gdzie błąd przybliżenia

 

1

m

0

i

)

2

(

3

f

3

h

E

(29)

oraz

1

i

i

i

x

,

x


złożony wzór trapezów:

 

E

x

f

2

)

x

(

f

)

x

(

f

h

E

)

x

(

f

)

x

(

f

2

h

dx

)

x

(

f

1

m

1

i

i

m

0

1

m

0

i

i

1

m

0

i

1

i

i

b

a

(30)

gdzie błąd przybliżenia

 

i

1

m

0

i

)

2

(

3

f

12

h

E

(31)

oraz

1

i

i

i

x

,

x

background image

57

złożony wzór parabol – dla m parzystych:

1

m

0

i

i

1

m

0

i

1

i

1

i

i

b

a

E

)

x

(

f

)

2

h

x

(

f

4

)

x

(

f

3

h

dx

)

x

(

f

(32)

E

)

x

(

f

4

)

x

(

f

2

)

x

(

f

)

x

(

f

3

h

dx

)

x

(

f

1

2

m

1

i

1

i

2

1

2

m

1

i

i

2

m

0

b

a

(33)

gdzie błąd przybliżenia

)

(

f

h

180

)

a

b

(

E

)

4

(

4

(34)

oraz

1

i

i

i

x

,

x


Podsumowanie:

Z powyższych wzorów wynika, że jeśli funkcja f jest wystarczająco regularna, to całka tej
funkcji może być z dowolnie dużą dokładnością przybliżona przy pomocy złożonych
kwadratur. Dla złożonych kwadratur Newtona-Cotesa, również największą trudność sprawia
oszacowanie błędu obliczeń.

Twierdzenie 3:
Jeżeli

]

b

;

a

[

c

f

(jest jednokrotnie całkowalna w przedziale [a,b]), to dla każdego ciągu m

złożonych kwadratur Newtona-Cotesa n-tego rzędu dla funkcji f jest zbieżny do całki:

b

a

dx

)

x

(

f

, przy

m

inaczej

 

1

m

1

i

x

x

m

b

a

1

i

i

dx

)

x

(

f

lim

dx

)

x

(

f

h

i

a

x

i

,

)

1

m

,...,

1

,

0

(

i

,

m

)

a

b

(

h

background image

58

Przykład:
Obliczyć poniższą całkę:

Rozwiązanie dokładne

59815

,

53

0

4

4

0

e

e

dx

e

x


Metoda Simpsona m=1, h=2

76958

,

56

4

3

2

4

2

0

4

0

e

e

e

dx

e

x

błąd = -3,17143

Metoda Simpsona m=1, h=1

 

86385

,

53

4

3

1

4

3

1

4

3

2

2

1

0

4

2

2

0

4

0

e

e

e

e

e

e

dx

e

dx

e

dx

e

x

x

x

błąd = -0,26570


Metoda Simpsona m=4, h=0,5

61622

,

53

4

3

3

2

2

1

1

0

4

0

dx

e

dx

e

dx

e

dx

e

dx

e

x

x

x

x

x

błąd = -0,01807


Przykładowe wyniki obliczeń całki:

2

)

cos(

)

sin(

0

0

x

dx

x

Wyniki obliczeń dla wzorów złożonych w zależności od m:

m

2

4

8

16

32

64

wzór

prostokątów

wynik

1,110720735 1,751785441 1,936297295 1,983970758 1,995986709 1,998996147

błąd

0,889279265 0,248214559 0,066102705 0,016029242 0,004013791 0,001003853

wzór

trapezów

wynik

1,570796327 1,896118898 1,1974231602 1,993570344 1,998393361 1,999598389

błąd

0,429203673 0,103881102 0,025768398 0,006429656 0,001606639 0,000401611

wzór parabol

wynik

2,094395102 2,004559755 2,000269170 2,000016591 2,000001033 2,000000065

błąd

-0,094395102 -0,004559755 -0,000269170 -0,000016591 0,000001033 0,000000065


Kody źródłowe:

Złożony wzór prostokątów:

function
Calka_Prostokat_Zlozony(a,b:extended;m:integer):extended;
var h,x,I_0:extended;
begin
h:=(b-a)/m;

background image

59

I_0:=0.0;
for i:=0 to m-1 do
begin
x:=a+(i*h);
x:=x+(h/2);
I_0:=I_0+f(x)
end;
result:=I_0*h
end;

Złożony wzór trapezów:

function
Calka_Trapez_Zlozony(a,b:extended;m:integer):extended;
var h,x,I_0,I_1:extended;
begin
h:=(b-a)/m;
I_0:=f(a)+f(b);
I_1:=0.0;
for i:=0 to m-1 do
begin
x:=a+(i*h);
I_1:=I_1+f(x);
end;
result:=(0.5*I_0+I_1)*h;
end;


Złożony wzór parabol:

function
Calka_Simpson_Zlozony(a,b:extended;m:integer):extended;
var h,x,I_0,I_1,I_2:extended;
begin
h:=(b-a)/m;
I_0:=f(a)+f(b);
I_1:=0.0;
I_2:=0.0;
for i:=0 to m-1 do
begin
x:=a+(i*h);
if (i mod 2)=0
then I_2:=I_2+f(x);
else I_1:=I_1+f(x);
end;
result:=(I_0+2.0*I_2+4.0*I_1)*h/3;
end;

background image

60

Kwadratury z ustalonymi węzłami

Metoda ekstrapolacyjna – Romberga

Metoda adaptacyjna

Kwadratury Gaussa

W poprzednim rozdziale omawiane były metody Newtona-Cotesa, które bazowały na
całkowaniu wielomianu interpolacyjnego stopnia n. Pozwalał on na dokładne przybliżenie
całki dla funkcji stopnia (n+1) lub (n+2). Wszystkie metody Newtona-Cotesa
wykorzystywały wartości funkcji dla punktów węzłów równoległych. Ten warunek jest
dogodny dla konstrukcji złożonych wzorów, ale może znacząco zmniejszyć dokładność
przybliżenia całek.
Poniżej widać kwadraturę Newtona-Cotesa opartą na końcach przedziału – przybliżenie
funkcji nie jest dokładne.


Kwadratury Gaussa dobierają takie węzły, aby osiągnąć optymalne przybliżenie całki:

n

1

i

i

i

b

a

)

x

(

f

c

dx

)

x

(

f

Węzły kwadratury x

1

, x

2

,..., x

n

z przedziału całkowania [a,b] oraz współczynniki c

1

, c

2

,...,c

n

tak dobrane, aby zminimalizować błąd przybliżenia. Nie zakładamy jednak żadnych
ograniczeń na węzły x

i

o współczynnikach c

i

natomiast chcemy zmaksymalizować rząd

kwadratury.

background image

61

Mamy znaleźć 2n stałe we wzorze, przypuszczamy więc, że rząd kwadratury powinien
wynosić 2n, a więc wzór powinien być dokładny dla wielomianów stopnia (2n-1). Dla
wielomianu stopnia równego lub wyższego od (2n-1) należy uwzględnić resztę kwadratury E:

E

)

x

(

f

c

dx

)

x

(

f

n

1

i

i

i

b

a

Aby pokazać proces wyboru odpowiednich węzłów oraz współczynników zilustrujemy to na
przykładzie:
n=2 – liczba węzłów oraz przedział [-1,1]

Należy wyznaczyć x

1

, x

2

oraz c

1

, c

2

, ponieważ:

)

x

(

f

c

)

x

(

f

c

dx

)

x

(

f

2

2

1

1

1

1

(64)


Zgodnie z założeniami, powyższe przybliżenie będzie dokładne tylko gdy stopień funkcji f(x)
mniejszy lub równy

3

1

)

2

(

2

1

2

n

wówczas

3

3

2

2

1

0

x

a

x

a

x

a

a

)

x

(

f

(65)

gdzie a

0

, a

1

, a

2

, a

3

– dowolne stałe


a więc możemy zapisać:

dx

x

a

dx

x

a

xdx

a

dx

1

a

dx

x

a

x

a

x

a

a

3

3

2

2

1

0

3

3

2

2

1

0


Poszukujemy x

1

, x

2

oraz c

1

, c

2

, więc można zapisać:

2

1

c

1

c

2

1

(67)

0

dx

x

x

c

x

c

1

1

2

2

1

1

(68)

3

2

dx

x

x

c

x

c

1

1

2

2

2

2

2

1

1

(69)

0

dx

x

c

x

c

1

1

3

2

2

3

1

1

(70)


otrzymaliśmy układ liniowych równań algebraicznych, którego rozwiązanie jest:

1

c

1

1

c

2

3

3

x

1

3

3

x

2

background image

62

ostatecznie otrzymaliśmy wzór na przybliżenie całki dla funkcji danej wzorem (64):









3

3

f

3

3

f

dx

)

x

(

f

1

1

Metoda poszukiwania węzłów oraz współczynników może zostać zastosowana dla funkcji
wyższych rzędów, lecz istnieje łatwiejsza metoda. Bazuje ona na wykorzystaniu jednego z
wielomianów ortogonalnych. Mają one taką właściwość, że całka z iloczynu dwóch
dowolnych wielomianów jest równa 0:

b

a

dx

x

g

x

f

g

f

0

)

(

)

(

,

Dla naszych dalszych rozważań, zajmiemy się tylko ciągiem wielomianów Legendre’a

)

(

)

(

),

(

1

0

x

P

x

P

x

P

n

, który posiada właściwości:

1. Dla każdego n, P

n

(x) jest wielomianem stopnia n

2.

1

1

0

)

(

)

(

dx

x

P

x

P

n

, gdzie P(x) jest wielomianem stopnia wyższego

(niższego???)

od n


Wzory kilku pierwszych wielomianów Legendre’a:

1

)

(

0

x

P

x

x

P

)

(

1

3

1

2

3

)

(

2

2

x

x

P

 

x

x

x

P

3

5

2

5

)

(

3

3


oraz wzór rekurencyjny do wyznaczania wielomianów krzywych

???

oraz ich pochodnych:

)

(

1

)

(

1

2

)

(

2

1

x

P

n

n

x

P

x

n

n

x

P

n

n

n

)

(

1

)

(

1

)

(

'

1

2

2

x

P

x

n

x

P

x

x

n

x

P

n

n

n


Pierwiastki tego wielomianu są tylko pojedyncze, leżą w przedziale <-1,1> oraz są
symetryczne względem początku układu współrzędnych. Najważniejszą właściwością jest to,
że bardzo dobrze nadają się do wyznaczania punktów węzłowych oraz współczynników.

Punkty węzłowe potrzebne w celu dokładnego przybliżenia całki funkcji stopnia mniejszego
od 2n są pierwiastkami wielomianu Legendre’a

n-tego stopnia.


Jeżeli x

1

, x

2

, ... x

n

są pierwiastkami wielomianu Lagrange’a, P

n

(x) stopnia n dla każdego i =

(1,2,...n) wtedy współczynniki c

i

można obliczyć ze wzoru:

2

1

2

1

1

1

1

1

)

(

)

1

(

1

2

)

(

'

)

(

)

1

(

2

i

n

i

i

n

i

n

n

i

k

k

k

i

k

x

P

n

x

x

P

x

P

n

dx

x

x

x

x

c




wówczas jeżeli P(x) jest dowolnym wielomianem stopnia mniejszego od 2n wtedy:

1

1

1

)

(

)

(

n

i

i

i

x

P

c

dx

x

P

(75)

background image

63

reszta dla stopnia większego od (2n-1):

 

)

2

2

(

1

1

2

!

1

2

)

(

n

f

n

dx

x

P

E


Pierwiastki wielomianu oraz współczynniki c

i

są tabelaryzowane – nie obliczamy ich przy

każdym całkowaniu.

Prawa strona wzoru (75) jest nazwana kwadraturą Gaussa-Lagrange’a.

Wzór ten pozwala na obliczenie całki tylko w przedziale

1

,

1

. W celu obliczenia

przybliżenia całki w dowolnym przedziale

b

a,

dla którego f(x) jest ciągła należy wykonać

przekształcenie poprzez podstawienie.
Dokonujemy przekształcenia dowolnego przedziału

b

a,

do przedziału

1

,

1

.

2

2

a

b

t

a

b

x

dt

a

b

dx

2


Wówczas możemy zapisać:

b

a

dt

a

b

t

a

b

f

a

b

dx

x

f

1

1

2

2

2

)

(


po zastosowaniu kwadratury Gaussa-Lagrange’a otrzymujemy

2

2

2

2

2

2

)

(

1

1

1

a

b

x

a

b

f

c

a

b

dt

a

b

t

a

b

f

a

b

dx

x

f

i

n

i

i

b

a


gdzie x

i

– pierwiastek wielomianu stopnia n

c

i

– współczynnik ze wzoru (74)


przykład:
Obliczyć całkę wykorzystując kwadraturę Gaussa:

5

,

1

1

1093643

,

0

2

dx

e

x


dokończyć ???

najpierw przekształcenia przedziału całkowania:

dt

t

f

dt

t

f

dx

e

x

1

1

5

,

1

1

1

1

2

16

5

4

1

2

1

5

,

1

2

1

5

,

1

2

1

5

,

1

2


po zastosowaniu kwadratury Gaussa-Lagrange’a, n=2 otrzymujemy:

c

1

=1 c

2

=1

3

3

1

x

3

3

2

x

background image

64

1094003

,

0

1

1

4

1

4

1

16

5

3

3

16

5

3

3

16

5

2

16

5

1

5

,

1

1

2

1

2









e

e

e

c

e

c

dx

e

x

x

x


Po zastosowaniu kwadratury Gaussa-Lagrange’a, n=3 otrzymujemy:

9

5

1

c

9

8

2

c

9

5

3

c

3

15

1

x

0

2

x

3

15

3

x

 

1093642

,

0

9

5

9

8

9

5

4

1

4

1

16

5

3

15

16

5

0

16

5

3

15

16

5

3

16

5

2

16

5

1

5

,

1

1

3

2

1

2













e

e

e

e

c

e

c

e

c

dx

e

x

x

x

x


Tablica pierwiastków wielomianu Legendre’a:

n

x

0

x

1

x

2

x

3

x

4

1

0

-

-

-

-

2

-0,5773509

0,5773509

-

-

-

3

0,7745966

0

-0,77459666

-

-

4

0,86113631

0,33998104

-0,33998104

-0,86113631

-

5

-0,53846931

-0,90617984

0

0,90617984

0,53846931




Kod źródłowy kwadratury Gaussa:
Przykład f. całką wykorzystując kwadraturę G w przedziale

b

a,

oraz n- oznacz. stopnia

met. L.


function Gauss_Legendre (n:Integer; var x:vector); Extended
var k,l,m:Integer;
p0,p1,p2,s,x1,ci:Extended
begin
if n>0 then
begin
s:=0
l:=n div2;
for k:=0 to n do
begin
p0:=1;
x1:=x[k];

background image

65

p1:=x1
for m:=1 to n-1 do
begin
p2:=((2*m+1)*x1*p1-m*p0)/(m+1);
p0:=p1;
p1:=p2;
end;
ci:=-2*(x1*x1-1)/((n+1)*(n+1)*p1*p1);
s:=s+f(x1)*ci;
end;
Result:=s;
end;
end;

gdzie x – tabl. zawiera pierwiastki wielomianu Legendre’a
oraz n – stopień wielomianu Legendre’a

Obliczanie całek niewłaściwych:
Przy numerycznym całkowaniu w przedziale obustronnie lub jednostronnie nieskończonym,
należy stosować takie funkcje wagowe, które zapewniają zbieżność całki, W zależności od
przedziału stosujemy odpowiedni wielomian interpolacyjny:

n

i

i

i

b

a

x

P

c

dx

x

f

x

w

I

1

)

(

)

(

)

(


Całkowanie funkcji osobliwych:
W celu obliczenia przybliżonej całki funkcji posiadającej punkty nieciągłości, należy
zmodyfikować poznanie metody. Aby dokonać takiego całkowania, należy zlokalizować
wszystkie punkty nieciągłości należące do przedziału całkowania.

Przykłady funkcji nieciągłych:

b

a

dx

x

f

I

)

(

,

gdzie f(x):

przypadek 1*

przypadek 2*

0

background image

66

b

a

c

a

b

a

dx

x

f

c

dx

x

f

dx

x

f

)

(

)

(

)

(


Powyższe metody wymagają wielu przekształceń matematycznych, które nie dają wyznaczyć
się informatycznie.
Ma to charakter historyczny.

Alternatywną metodą wyliczenia całki jest metoda polegająca na oddalaniu się od punktu
nieciągłości

o małe ε ???

Metoda zwykłego szeregu Taylora:

9253141

,

2

0017691

,

0

9235450

,

2

1

0

dx

x

e

x


Metoda adaptacyjna:

925324091

,

2

1

0000000001

,

0

1

0

dx

x

e

dx

x

e

x

x

zał. dokładne 0,0001 liczba przedzi. 235 il. wywoł. funkcji 941

???


Całki wielokrotne:
rozpatrzmy całkę podwójną:

 

b

a

x

d

x

c

dx

dy

y

x

f

)

(

)

(

)

,

(

x – stała i stosunek kwadratury do obliczonej całki

)

(

)

(

)

,

(

)

(

x

d

x

c

dy

y

x

f

x

s

background image

67

otrzymujemy:

1

1

1

1

2

2

2

0

)

,

(

4

)

,

(

2

)

,

(

)

,

(

6

)

(

)

(

)

(

m

j

m

j

j

j

m

y

x

f

y

x

f

y

x

f

y

x

f

m

x

c

x

d

x

s


m – liczba przedziałów przedziału [c(x) ; d(x)]

wykorzystanie z kolei kwadratury Simpsona do obliczenia całki:

b

a

dx

x

S

s

)

(

ostatecznie:

1

1

1

1

2

2

2

0

)

(

4

)

(

2

)

(

)

(

6

n

i

n

i

i

i

n

x

S

x

S

x

S

x

S

n

a

b

s

np.:

5

,

1

0

,

1

0

,

2

4

,

1

4295549269

,

0

)

2

ln(

dx

dy

y

x


stos. złoż. kwadratury Simpsona:
dla n=4 i m=2

5

,

1

0

,

1

0

,

2

4

,

1

7

4295522438

,

0

)

2

ln(

dx

dy

y

x

 

1800

6

,

0

5

,

0

E

6

10

72

,

4

E


Całkowanie wielokrotne – całka podwójna
kod źródłowy:
function f (x,y:real):real;
begin
Result:=

explg (x)???

end;

function c(x:real):real;
begin
Result:=x*x*x
end;

function d(x:real):real;
begin
Result:=x*x
end;

background image

68

function simpson-Podwojna
(a,b:real; m,n:integer):real;
var i,j:integer
h,hx,j1,j2,j3
k1,k2,k3,x,y,x:real;
begin
h:=(b-a)/(2*n)
j1:=0; j2:=0;
j3:=0
for i:=0 to 2*n do
begin
x:=a+i*h;
nx:=(d(x)-c(x))/(2*m);
k1:=f(x,c(x))+f(x,d(x));
k2:=0
k3:=0
for j:=1 to 2*m-1 do
begin
y:=c(x)+j*hx
z:=f(x,y);

if Odd(j) ???

then k3 :=k3+z
else k2:=k2+z
end
i:=(k1+2*k2+4*k3)+hx/3
if(i=0) or (i=2*n)
then j1:=j1+1

else if Odd (i)
then j3:=j3+l
else j2:=j2+l
end;
Result:=(j1+2*j2+4*h/3)
end;


Kody źródłowe:

Function f(x,y:real):real;
Begin
Result:=exp(y/x);
End;

Function c (x:real):real;
Begin
Result:=x*x*x;
End;

Function d (x:real):real;
Begin
Result:=x*x;

background image

69

End;

function Simpson_Podwojna (a,b:real; m,n:integer):real;
var i,j:integer;
h,hx,j1,j2,j3,k1,k2,k3,I,x,y,z:real;
begin
h:=(b-a)/(2*n);
j1:=0;
j2:=0;
j3:=0;
for i:=0 to 2*n do
begin
x:=a+i*h;

tu tomek napisał ... j*h a ja mam i*h sprawdźcie!!!

hx:=(d(x)-c(x))/(2*m)
k1:=f(x,c(x)+f(x,d(x));
k2:=0;
k3:=0;
for j:=1 to 2*m-1 do
begin
y:=c(x) +j*hx;
z:=f(x,y);
if odd(j)
then k3:=k3+z
else k2:=k2+z
end;
I:=(k1+2*k2+4*k3)*hx/3;
If (i=0) or (i=2*n)
then j1:=j1+I

else if Odd(i)

tu też mam troche inaczej

then j3:=j3+l
else j2:=j2+l
end;
Result:=(j1+2*j2+4*j3)*h/3;
End;

Obliczanie całek metodą Monte-Carlo


Metoda Monte Carlo – całka pojedyncza

Mamy obliczyć przybliżoną wartość In całki oznaczonej

a

b

f(x)dx

I

(129)

przy założenie, że f(x) jest funkcją ciągłą w przedziale domkniętym [a;b]
Następnie n-krotnie generujemy realizację x zmiennej losowej X o rozkładzie równomiernym
w przedziale [a,b], otrzymujemy w rezultacie ciąg liczb x

1

, x

2

, ..., x

n

,

background image

70

Przybliżoną wartość całki określa wzór

n

i

i

n

x

f

n

a

b

I

1

)

(

)

(

(130)

Zbieżność przybliżonej wartości całki In do jej dokładnej wartości jest gwarantowana w
sensie probalistycznym, tzn., że dla każdego ε>0 zachodzi relacja:

1

)

1

n

(

P

lim

n

(131)

gdzie P jest prawdopodobieństwem, przy czym błąd metody monte Carlo można określić
wzorem

n

I

I

n

1

(132)


Maszyny typowe zazwyczaj dysponują generatorem liczb losowych o rozkładzie
równomiernym w przedziale [0,1], zachodzi zatem konieczność przeliczania wylosowanej
realizacji Y z przedziału [0,1], na realizację zmiennej losowej X o rozkładzie równomiernym
w przedziale [a, b]. Wzory poniżej, to ilustrują:
Przeliczanie zmiennych losowych Y na X

X=(b-a)Y+a

(133)


Przeliczanie realizacji zmiennych losowych Y na X

x=(b-a)y+a

(134)


Kod źródłowy:

Function Calka_MonteCarlo (a,b:extended; n:lingint):extended
Var i:integer;
h,x:extended;

begin
Result:=0;
h:=(b-a)/n;
for :=1 to n do
begin
x:=a+((b-a)*Random);
Result:=Result+f(x);
End;
Result:=Result*h;
end;

background image

71

Całkowanie – Metody Monte Carlo. Całki wielokrotne właściwe

Dana jest całka wielokrotna:

3

2

1

2

1

...

)

,...,

,

(

dx

dx

dx

x

x

x

f

I

n

(135)


Każda ze zmiennych x

i

zawiera się w przedziale

i

i

i

b

x

a

(136)

Losujemy n-krotnie punkty Pk kostki, przyjmując że współrzędnymi tych punktów są
zmienne losowe X

1

(k)

, X

2

(k)

,..., X

m

(k)

o rozkładzie równomiernym w odpowiednich

przedziałach [a

i

,b

i

]. Każdemu punktowi Pk odpowiada zatem ciąg m-elementowy

wylosowanych realizacji x

1

(k)

, x

2

(k)

,..., x

m

(k)

. Po wylosowaniu sprawdzamy czy każdy punkt Pk

należy do obszaru Ω. Możemy zatem po zakończeniu losowań uporządkować wylosowane
punkty w następujący sposób:

k

P

dla k=(1, 2, ..., n),

k

P

dla k=(n+1, n+2, ..., N)

(137)


Przy dostatecznej liczbie losowań możemy obliczyć przybliżoną wartość V

Ω

objętości m-

wymiarowanego obszaru całkowania:

V

N

n

V

(138),

gdzie

)

(

1

i

m

i

i

a

b

V

(139)

jest objętością m-wymiarowej kostki. Przybliżona wartość I

n

całki (135) określana wzorem:

n

k

k

n

P

f

N

V

I

1

)

(

(140)

Aby uzyskać ciąg realizacji X1, X2, ..., Xm losujemy m-krotnie zmienną losową Y o
rozkładzie równomiernym w przedziale [0,1], a następnie przeliczamy realizacje y na
realizację x

i

(k)

w przedziale [a

i

; b

i

] korzystając ze zależności:

x

i

(k)

=(b

i

-a

i

)y

i

(k)

+a

i


Rozwiązywanie równań różniczkowych
Rozważania dotyczą:

- równań różniczkowych zwyczajnych z warunkami początkowymi i brzegowymi,
- układów równań różniczkowych zwyczajnych z warunkami początkowymi i

brzegowymi,

- równań różniczkowych cząstkowych,
- układów równań różniczkowych cząstkowych

background image

72

Numeryczne obliczanie pochodnej
Aby obliczyć pochodną funkcji f w punkcie x

0

, mamy

h

x

f

h

x

f

x

f

h

)

(

)

(

lim

)

(

'

0

0

0

(1)

W celu wyznaczenia przybliżonej wartości pochodnej f’(x) dla małych wartości h możemy
użyć wyrażenia

h

x

f

h

x

f

)

(

)

(

0

0

(2)

Możemy to udowodnić. Dokonujemy interpolacji f(x); zdefiniujemy wielomian Lagrange`a
stopnia 1, który będzie oparty na węzłach x

0

oraz x

0

+h pod warunkiem, że funkcja f jest

dwukrotnie różniczkowalna w przedziale [a; b]

!

2

)

)(

(

)

(

)

(

0

0

1

h

x

x

x

x

x

P

x

f

ktoś nie zdązył do końca, a ja nie wiem czy w

mianowniku jest 2!, czy co??

Wówczas obliczając pochodną funkcji f, mamy:

h

)

x

(

f

)

h

x

(

f

)

x

(

'

f

0

0

0

(3)

oraz po uproszczeniu

)

(

"

2

f

h

(4)

background image

73

Jeżeli dokonamy interpolacji funkcji f wielomianem stopnia 2, wówczas

h

h

x

f

h

x

f

x

f

2

)

(

)

(

)

(

'

0

0

0

(5)

oraz po uproszczeniu

)

(

6

)

3

(

2

f

h

I(6)

Za pomocą wielomianów wyższych stopni możemy wyznaczyć wzory na przybliżenie
pochodnej.


Przykład: Obliczyć pochodną funkcji f(x)=ln(x) dla x

0

=1,8 stosując metodę w przód i wstecz

stopnia 1.

2

)

(

)

(

)

(

'

0

0

0

h

h

x

f

h

x

f

x

f

M

h

h

f

h

f

f

2

)

8

,

1

(

)

8

,

1

(

)

(

"

,

gdzie:

)

(

"

max

)

8

,

1

,

8

,

1

(

f

M

h

brak textu

Metoda w przód

Metoda wstecz

h

Wynik

Błąd

Wynik

Błąd

0,1

0,5406772

0,0154321

0,5715841

0,0173010

0,01

0,5540180

0,0015432

0,5571045

0,0015605

0,001

0,5554013

0,0001543

0,5557099

0,0001545


background image

74

Numeryczne obliczanie drugiej pochodnej.
Jeżeli dokonamy rozwinięcia funkcji f w szereg Taylora 3 rzędu w otoczeniu punktu x

0

dla

punktów x

0

+h oraz x

0

-h, zakładając, że f jest 4-krotnie różniczkowalna na przedziale [x

0

-h,

x

0

+h], wówczas dla x

0

-h:

Wzor (8)

gdzie

]

x

h;

[x

ξ

0

0

dodając oba równania stronami otrzymujemy:

wzór (9)

Rozwiązując równanie ze względu na f”(x

0

), otrzymujemy:

)]

(

)

(

2

)

(

[

1

)

(

"

0

0

0

2

0

h

x

f

x

f

h

x

f

h

x

f

(11)

oraz

)

(

[

12

)

(

n

n

f

h

, gdzie

]

;

[

0

0

h

x

h

x

Powyższy wzór otrzymamy różniczkując obustronnie wzór na pierwszą pochodną (5) kroku
h/2.

Przykład: Obliczyć drugą pochodną funkcji f(x)=ln(x

3

) dla x

0

=2 stosując powyższą metodę

różnych wartości kroku h.

Wzór

Rozwiązanie dokładne

2

3

)

(

"

x

x

f

f”(2)=-0,1875

h

Wynik

Błąd

Oszacowanie ε

0,1

-0,1875586182

0,0000586182

0,01

-0,1875005859

0,001

-0,1875000049



Równania różniczkowe zwyczajne z warunkami początkowymi

Równania różniczkowe są wykorzystywane do odwzorowania wielu problemów z zakresu
różnych nauk, które dotyczą zmian jednej zmiennej względem innej zmiennej. Wiele
problemów świata rzeczywistego opisywanych przez równania różniczkowe jest za bardzo
złożonych, aby uzyskać rozwiązanie dokładne (analityczne), należy znaleźć rozwiązanie
przybliżone. Są dwa sposoby aby uzyskać rozwiązanie przybliżone. Po pierwsze można
dokonać uproszczenia zadanego równania różniczkowego do takiej postaci, dla której znamy
rozwiązanie dokładne, wówczas uproszczone równanie będzie przybliżało rozwiązanie
równania zadanego. Drugim sposobem jest zastosowanie jednej z metod numerycznych w
celu przybliżenia rozwiązania zadanego równania.

Metody różnicowe jednokrokowe:

- metody Eulera;
- metody Rundego-Kutty
- metody Rundego-Kutty-Fehenberga

background image

75

Metody różnicowe wielokrokowe:

- metody bezpośrednie
- metody pośrednie
- metoda Predictor-Corrector
- metoda trapezów


Metoda Eulera
Rozpatrzmy zadanie znalezienia funkcji y=y(t), które dla

]

,

[

b

a

t

spełnia równanie

różniczkowe zwyczajne pierwszego rzędu:

)

,

( y

t

f

dx

dy

(7)

oraz warunek początkowy

y(a)=y

0

(8),

gdzie f jest daną funkcją dwu zmiennych. Warunek wystarczający istnienia i jednoznaczności
rozwiązania zadania (7) oraz (8) jest warunek ciągłości funkcji f(t,y)

Metoda ta rzadko jest używana w praktyce, natomiast ze względu na jej prostotę, zostanie
przedstawiona w celu zobrazowania i zrozumienia technik stosowanych w bardziej
zaawansowanych metodach, pomijając przy tym złożone działania matematyczne.
Przedmiotem rozważań będzie poniższe równanie.

)

,

( y

t

f

dx

dy

, gdzie

]

,

[

b

a

t

oraz y(a)=a (10)


Na rozwiązanie powyższego zagadnienia będziemy obliczać przybliżone wartości funkcji
yi=y(ti), gdzie ti=a+ih, h=(b-a)/N, dla którego i=(0,1, ..., N), gdzie ti nazywane są punktami
węzłowymi, natomiast h odległością między nimi.
Rozwiniemy y(t) w szereg Taylora w celu wyprowadzenia metody Eulera. Zakładając, że y(t)
jest jedynym rozwiązaniem (10) oraz posiada drugą pochodną, która jest ciągła w przedziale
[a, b] wówczas dla każdego i=1, 2, ..., N.
Wykorzystując powyższe założenia możemy zapisać:

)

(

"

2

)

(

)

(

'

)

(

)

(

)

(

2

1

1

1

i

i

i

i

i

i

i

i

y

t

t

t

y

t

t

t

y

t

y

(11), gdzie

)

,

(

1

i

i

i

t

t


Oznaczamy h=t

i+1

-t

i

, wówczas otrzymujemy:

)

(

"

2

)

(

'

)

(

)

(

2

1

i

i

i

i

y

h

t

hy

t

y

t

y

(12)


Użyjemy podstawienia y’(t)=f(t, y), wówczas otrzymujemy:

)

(

"

2

))

(

,

(

)

(

)

(

2

1

i

i

i

i

i

y

h

t

y

t

hf

t

y

t

y

(13)


Zapisując ω

i

≈y(t

i

) oraz pomijając błąd przybliżenia otrzymujemy ω

i+1

i

+hf(t

i

, ω

i

) (14)

background image

76

Powyższy wzór nazywamy metodą Eulera – wzór ten nazywany jest inaczej równaniem
różniczkowym, gdyż można zapisać:

h

t

f

i

i

i

i

1

)

,

(

(15)

Aby wyznaczyć wartość szukanej funkcji y(x) w następnym kroku h, wykorzystujemy
poprzednią wartość funkcji oraz wielkości zmian funkcji – dzięki pochodnej. Natomiast
uwzględniając błąd przybliżenia wzór (13) przyjmuje postać:

i

i

i

i

i

h

t

y

t

f

1

))

(

,

(

, gdzie

)

(

"

2

2

i

i

y

h

(16)


Lokalny błąd dyskretyzacji τ

i+1

(h)

)

(

1

)

,

(

(

1

)

(

1

1

1

1

i

i

i

i

i

i

i

y

h

t

f

y

y

h

h

(17)

dodatkowo możemy określić krok h, dla którego błąd lokalny jest mniejszy od zadanej
dokładności δ

M

2

h

, gdzie

)

(

"

y

max

M

)

t

,

t

(

1

i

i


Globalny błąd dyskretyzacji g(x)
g(t)= ω(t)-y(t) (19)
Dla wybranego punktu t

i

możemy zapisać:

g

i

i

-y(t

i

) (20), wówczas

1

2

)

(

)

(

0

t

t

L

i

i

i

i

e

L

hM

t

y

g

, gdzie L- liczba Lipschnitz`a

background image

77

Lokalny błąd dyskretyzacji

Globalny błąd dyskretyzacji

nie będę wskazywał na tego, kto nie narysował go ;)))





Stosując metodę Eulera rozwiązać następujące równanie różniczkowe
y’=y-t

2

+1 0<t<2 y(0)=0,5

dla N=10, wtedy h=0,2; t

i

=ih, ω=0,5 oraz ω

i+1

i

+hf(t

i

, ω

i

), gdzie f(t,y)=y-t

2

+1

ω

i+1

i

+h(ω

i

-t

2

i

+1)= ω

i

+0,2[ω

i

-0,04i

2

+1]=1,2ω

i

-0,008i

2

+0,02 dla i=0, 1, ..., 9

Rozwiązanie dokładne ma postać
y(t)=(t

2

-1)-0,5e

t


background image

78

Metoda Eulera – wstecz
Powyższe rozważania dotyczyły metody Eulera w przód, ponieważ krok spełniał warunek
h>0. W analogiczny sposób można wyprowadzić metodą Eulera wstecz przyjmując h<0,
wówczas otrzymujemy:

w

i+1

= w

i

+ hf (t

i+1

, w

i+1

)

(22)


w

i+1

(k)

= w

i

+ hf (t

i+1

, w

i+1

(k-1)

)

(23)


Metoda wstecz różni się w stosunku do metody w przód argumentami funkcji f.

Metoda w przód wykorzystuje do obliczenia przybliżenia wartości z poprzedniego kroku,
natomiast metoda wstecz jest równaniem uwikłanym, ponieważ aby obliczyć kolejne
przybliżenie w

i+1

wykorzystujemy wartości z poprzedniego kroku oraz poszukiwaną wartość

w

i+1

. Takiego równania nie można rozwiązać w sposób bezpośredni. Aby rozwiązać takie

równanie (23) należy zastosować proces iteracyjny, czyli poszukujemy kilkakrotnie w

i+1

(k)

,

stojącej po prawej stronie równania podstawiając jako w

i+1

(k-1)

- lewa strona równania, wynik

przybliżenia z poprzedniej iteracji (k-1). Proces trwa do momentu, kiedy spełniony zostanie
warunek:

|w

i+1

(k)

- w

i+1

(k-1)

| ≤ ε (24)

gdzie ε - tolerancja obliczeń

Kody źródłowe:
Metoda Eulera w przód:

Function Euler_order_One_Forward (t0, tn, y0:extended;
n:integer): extended;
var i:integer;
h, wi, wi_1,t :extended;
Begin
h:= (tn-t0)/n;
yi_1:=y0;
for i:=0 to n-1 do
begin
t:=t0+i*h;
wi:=wi_1+h*f(t,wi_1);
wi_1:=wi;
end;

Result:=wi;

end;

background image

79

Przykładowa funkcja definiująca równanie różniczkowe

)

,

( y

t

f

dt

dy

function f(t,y:extended):extended;
begin
result:=y-sqr(t)+1;
end;


Metoda Eulera “wstecz”

function Euler_Order_One_Backward
t0, tn, y0, eps : extended; n:integer):extended;
var i:integer;
h,wi,wi_p,wi_1,t :extended
begin
h:=(tn-t0)/n
wi_1:=y0;
for i:=0 to n-1 do

begin

t:=t0 + i*h;
wi:=wi_1 + h*f (t, wi_1);
repeat
wi_p:=wi;
wi:=wi_1 + h*f (t, wi_p);
until abs(wi-wi_p)<eps;
wi_1:=wi;
end;
Result:=wi;
end;


Przykładowa funkcja definiująca równanie różniczkowe

)

,

( y

t

f

dt

dy

function f(t,y:extended):extended;
begin
result:=y-sqr(t)+1;
end;


Metody Rungego-Kutty
Powszechnie na całym świecie stosuje się metody Rungego–Kutty czwartego rzędu. Polegają
one na rozwiązaniu zagadnienia:

)

,

( y

t

f

dt

dy

gdzie t

a,b

oraz y(a)=

(25)

i przedstawieniu różnicy funkcji y(t) w punktach t

i+1

oraz t

i

w postaci:

w

i+1

- w

i

=

m

i

j

j

k

c

1

lub inaczej w

i+1

– w

i

= h0 (t

i

,w

i

,h) (26)

background image

80

gdzie m oznacza rząd metody, c

j

są stałymi, a

1

1

1

,

,

,





j

j

i

j

i

j

i

l

li

i

j

i

j

k

w

t

hf

k

w

h

t

hf

k


gdzie α

j

, β

j

, γ

j

,

δlj

– stałe

h - krok całkowania

Określenie stałych c

j

, α

j

, β

j

otrzymujemy poprzez rozwinięcie funkcji f(t,y) w szereg Taylora

w otoczeniu punktu t

i



Metody R-K – metoda 2 rzędu

Metoda wyprowadzona przez rozwinięcie f(t,y) w szereg Taylora 2 rzędu pozwala określić
stałe c

1

,

1

,

1

, c

2

,

2

,

2

:


Metoda punktu środkowego:

C

1

= 0

C

2

= 1

α

1

= 0

α

2

= h/2

1

= 0

2

= ½ (28)


wówczas możemy zapisać:
k

1

=hf (t

i

,w

i

) k

2

=hf (t

i

+ ½ h, w

i

+ ½ k

1

)


ostatecznie:
w

i+1

=w

i

+k

2

lub
w

i+1

=w

i

+ hf(t

i

+ h/2, w

i

+ h/2 * f(t

i

, w

i

))

background image

81

Interpretacja graficzna:
f

1

=f(t

i

,w

i

) f

2

=f(t

i

+ h/2, w

i

+ h/2 * f

1

)



Stosując metody Rungego–Kutty 2 rzędu , rozwiązać następujące równanie różniczkowe:

y’=y-t

2

+ 1 0

t

2 y(0)=0,5


dla N = 10 wtedy h = 0,2; t

i

= i

h ; w

0

= 0,5 oraz

metoda punktu środkowego w

i+1

= 1,22 w

i

– 0,0088 i

2

+ 0,218



Metoda zmodyfikowana Eulera
w

i+1

= 1,22 w

i

- 0,0088 i

2

+ 0,216


Metoda Heana dla i = 0, 1, ..., 9
w

i+1

= 1,22 w

i

- 0,0088 i

2

+ 0,2173


Rozwiązanie dokładne ma postać:
y(t) = (t

2

+1) - 0,5 e

t


Metody R-K rzędu 4

Metoda wyprowadzona przez rozwinięcie f(t,y) w szereg Taylora 4 rzędu, pozwala określić
stałe we wzorze (wzór ogólny R-K). Poniżej przedstawiono najczęściej stosowaną metodę 4
rzędu

k

1

= hf (t

i

, w

i

)

k

2

= hf (t

i

+ ½ *h, w

i

+ ½ *k

1

)

k

3

= hf (t

i

+ ½ *h, w

i

+ ½ *k

2

) (37)

background image

82

k

4

= hf (t

i

+h, w

i

+k

3

)


ostatecznie:
w

i+1

=w

i

+ 1/6 (k

1

+ 2k

2

+ 2k

3

+ k

4

) (38)


Interpretacja graficzna:


f

1

= f (t

i

, w

i

)

f

2

= f (t

i

+ ½ * h, w

i+1

+ h f

1

)

f

3

= f (t

i

+ ½ * h, w

i

+ ½ * h f

2

)

f

4

= f (t

i

+ h, w

i

+ h f

3

)

linia 3-4 nie jest łamana – jest prosta !!! (na 99%) :)


Metoda R-K jest najczęściej stosowaną metodą do rozwiązywania układów równań
różniczkowych

Przykład:
Stosując metodę R-K 4-tego rzędu rozwiązać następujące równanie różniczkowe:
y’ = y-t

2

+ 1 0

t

2 y(0) = 0,5

dla N = 10 wtedy h = 0,2 t

1

= i*h w

0

= 0,5 oraz:

Metoda Rungego-Kutty 4-rzedu:

w

i+1

= 1,2214 w

i

- 0,008856 i

2

+ 0,00856 i + 0,218593

dla i = 0, 1, ..., 9

Rozwiązanie dokładne ma postać y(t) = (t

2

+1) - 0,5e

t

background image

83

Kody źródłowe:

function RK_Rzedu_4 (t0, tn, y0: extended;
n:integer):extended;
var i:integer;
h, yi, y_i, t, k1, k2, k3, k4: extended;
begin
h:= (tn-t0)/n
y_i = y0;
for i:=0 to n-1 do
begin
t:=t0 + i*h;

k

1 :

= h*ft, y_i);

k

2 :

= h*f(t + 0.5 * h, y_i+0.5 * k1);

k

3 :

= h*f(t+0.5*h, y_i + 0.5 * k

2

);

k

4 :

= h*f(t+h, y_i + k3);

yi:= y_i+(k1 + 2*k2 + 2*k3 + k4)/6;
y_i:=yi;
end;
Result := yi;
end;



Metody wykorzystujące więcej niż jedną przybliżoną wartość dla poprzednich punktów
węzłowych w celu przybliżenia wartości w następnym punkcie węzłowym nazywamy
metodami wielokrokowymi.

Ogólny wzór na m-krotną metodę wielokrokową dla rozwiązania równania

)

,

( y

t

f

dt

dy

gdzie t

a,b

oraz

y(a) =

(55)


jest równaniem różniczkowym dla znalezienia przybliżenia w

i+1

, dla punktu węzłowego t

i+1

,

gdzie m>1, które przyjmuje postać:
w

i+1

= a

m-1

* w

i

+ a

m-2

* w

i-1

+ ... + a

0

* w

i+1_m

+ h [b

n

f(t

i+1

,w

i+1

) + b

n-1

f(t

i

, w

i

) + ... + t + b

0

f(t

i+1_m

, w

i+1_m

)]


dla i = (m-1, m, ..., N-1),
N - liczba węzłów w przedziale, gdzie h = (b-a) / N

background image

84

Równania różniczkowe cząstkowe z warunkami brzegowymi – rodzaje:

a)

równania różniczkowe eliptyczne

równanie Laplace’a,

równanie Poisson’a,

b)

równanie różniczkowe paraboliczne

równanie dyfuzji

c) równanie różniczkowe hiperboliczne

równanie falowe


Równania różniczkowe cząstkowe z warunkiem brzegowym – wstęp

Równania różniczkowe prezentowane w poprzednich rozdziałach pozwalały na wyznaczenie
poszukiwanej funkcji jednej zmiennej dla podanych warunków początkowych lub
brzegowych. Problemy przedstawione w tym rozdziale będą opisywane funkcjami wielu
zmiennych.
W zależności od specyfiki problemu można opisać go za pomocą odpowiedniego
równania różniczkowego: Laplace’a, Poisson’a, Dyfuzji, Falowego, itp… . Aby rozwiązać
problem opisany odpowiednim równaniem różniczkowym należy określić warunki brzegowe.
Warunki brzegowe mogą być opisane w formie warunków Dirichleta lub Neumanna.

Równania różniczkowe cząstkowe – warunek brzegowy Dirichleta

Jeżeli funkcja u(x,y) jest poszukiwana na obszarze R, wówczas musi mieć zdefiniowane
warunki w postaci funkcji g(x,y) na brzegu S.
Warunek brzegowy Dirichleta

   

y

,

x

g

y

,

x

u

dla

 

S

y

,

x


gdzie: u(x,y) – poszukiwana funkcja w punktach wewnątrz obszaru R, g(x,y) – zadana
funkcja dla punktów (x,y) należących do brzegu S obszaru R.
Wynika z tego, że w trakcie obliczeń wartości funkcji g w poszczególnych punktach (x,y)

S

nie mogą się zmienić.

background image

85

Równania różniczkowe cząstkowe – warunek brzegowy Neumanna
Warunek brzegowy Neumanna

)

y

,

x

(

g

)

y

,

x

(

n

u

dla

 

S

y

,

x

gdzie:

)

y

,

x

(

n

u

– pochodna normalna poszukiwanej funkcji w punktach należących do

brzegu S obszaru R, g(x,y) – zadana funkcja dla punktów (x,y) należących do brzegu S
obszaru R.

Oznacza to, że na brzegu obszaru zmienność funkcji u(x,y) w kierunku normalnym dla
punktów (x,y)

S jest równa funkcji g(x,y).


Dla zmiennej x

)

y

,

x

(

g

h

)

y

,

h

x

(

u

)

y

,

x

(

u


Dla zmiennej y

)

y

,

x

(

g

h

)

h

y

,

x

(

u

)

y

,

x

(

u


Równania różniczkowe cząstkowe z warunkiem brzegowym - Równania eliptyczne -
Poissona i Laplace’a

Równania różniczkowe cząstkowe eliptyczne znane jako równanie Poissona , dla dwóch
wymiarów i prostokątnego układu współrzędnych przyjmuje postać:

)

y

,

x

(

f

)

y

,

x

(

dy

u

d

)

y

,

x

(

dx

u

d

)

y

,

x

(

u

2

2

2

2

2

(1)

na

d

y

c

b

x

a

y

x

R

;

)

,

(

z warunkami brzegowymi

)

,

(

)

,

(

y

x

g

y

x

u

dla

S

y

x

)

,

(


W powyższym równaniu funkcja f opisuje dane wejściowe na płaszczyźnie dla obszaru R
ograniczonego brzegiem S. Równania tego typu są stosowane dla różnych problemów
fizycznych, które są niezależne od czasu. Najczęściej stosowane są do obliczenia rozkładu
potencjału (np. temperatury) w stanie ustalonym.

Szczególnym przypadkiem równania Poissona gdy f(x,y)=0 jest równanie Laplace’a.

Aby rozwiązać równanie cząstkowe eliptyczne (1) zastosujemy metodę różnic skończonych
MRS.
W tym celu weźmiemy dwie liczby całkowite m i n, i zdefiniujemy kroki całkowania h = (b-
a)/n
oraz k = (c-d)/m. Dzięki temu możemy podzielić: przedział [a,b] na n równych części o
szerokości h oraz przedział [c,d] na m równych części o szerokości k.
Umieśćmy siatkę na obszarze R poprzez narysowanie pionowych i poziomych linii
przechodzących przez punkty (xi, yj), takich że:

background image

86

ih

a

x

i

dla i = 0,1, .. n

oraz

jk

c

y

j

dla j = 0,1, .. m

Linie x = xi oraz y = yj nazywamy liniami siatki, natomiast ich punkty przecięcia (xi,yj)
nazywamy punkami węzłowymi siatki. Dla wewnętrznych punktów węzłowych (xi,yj),
które nie należą do brzegu obszaru R, zastosujemy metodę różnic skończonych – MRS.
Metoda ta opiera się na zastąpieniu pochodnych cząstkowych rozwinięciem funkcji w szereg
Taylora w otoczeniu punktu (xi,yj) – (patrz druga pochodna numeryczna) . Wówczas
otrzymujemy:

Dla zmiennej x

)

,

(

12

)

,

(

)

,

(

2

)

,

(

)

,

(

4

4

2

2

1

1

2

2

j

i

j

i

j

i

j

i

j

i

y

x

u

h

h

y

x

u

y

x

u

y

x

u

y

x

x

u

(2)

gdzie:

)

,

(

1

1

i

i

i

x

x



Dla zmiennej y

)

,

(

12

)

,

(

)

,

(

2

)

,

(

)

,

(

4

4

2

2

1

1

2

2

j

i

j

i

j

i

j

i

j

i

x

y

u

k

k

y

x

u

y

x

u

y

x

u

y

x

y

u

(3)


gdzie:

)

,

(

1

1

j

j

j

y

y


background image

87

Podstawiając wzory (2) oraz (3) do równania Poissona (1) otrzymujemy:

2

1

1

2

1

1

)

,

(

)

,

(

2

)

,

(

)

,

(

)

,

(

2

)

,

(

k

y

x

u

y

x

u

y

x

u

h

y

x

u

y

x

u

y

x

u

j

i

j

i

j

i

j

i

j

i

j

i

)

,

(

12

)

,

(

12

)

,

(

4

4

2

4

4

2

j

i

j

i

x

y

u

k

y

x

u

h

y

x

f

(4)


dla i = 1,2 … n-1 oraz j = 1,2, … m-1
natomiast warunki brzegowe mają postać:

)

,

(

)

,

(

0

0

j

j

y

x

g

y

x

u

oraz

)

,

(

)

,

(

j

n

j

n

y

x

g

y

x

u

dla j = 0,1, .. m (5)

)

,

(

)

,

(

m

i

m

i

y

x

g

y

x

u

oraz

)

,

(

)

,

(

0

0

y

x

g

y

x

u

i

i

dla i = 1,2, .. n (6)


Ostatecznie wzór na MRS, podstawiając za (xi,yj) = wij oraz wyłączając oszacowanie błędu
zapisujemy:

)

,

(

)

(

)

(

1

2

2

1

,

1

,

2

,

1

,

1

2

j

i

j

i

j

i

j

i

j

i

ij

y

x

f

h

w

w

k

h

w

w

w

k

h

(7)


dla i = 1,2 … n-1 oraz j = 1,2, … m-1

natomiast warunki brzegowe mają postać:

)

,

(

0

0

j

j

y

x

g

w

oraz

)

,

(

j

n

nj

y

x

g

w

dla j = 0,1, .. m (8)

)

,

(

0

0

y

x

g

w

i

i

oraz

)

,

(

m

i

im

y

x

g

w

dla i = 1,2, .. n (9)


gdzie w

ij

jest przybliżeniem u(x

i

,y

j

).


background image

88

Analizując równanie (7) można zauważyć, że w celu wyznaczenia przybliżenie rozwiązania w
punkcie (xi,yj), potrzebne są wartości przybliżenia rozwiązania w czterech sąsiednich
punktach – patrz rysunek obok.


Postać macierzowa
Jak widać poszukujemy rozwiązania równania Poissona dla wewnętrznych węzłów siatki, w
tym celu dla każdego punktu siatki układamy równanie (7). Po uwzględnieniu warunków
brzegowych otrzymujemy układ (n-1)

(m-1) równań liniowych. Układ równań możemy

rozwiązać metodami deterministycznymi bądź iteracyjnymi.

Zakładając, że h = k możemy wyprowadzić uproszczoną postać równania (7) :

)

,

(

)

(

)

(

4

2

1

,

1

,

,

1

,

1

j

i

j

i

j

i

j

i

j

i

ij

y

x

f

h

w

w

w

w

w

(10)


dla i = 1,2 … n-1 oraz j = 1,2, … m-1


natomiast warunki brzegowe są takie same jak (8) i (9) :

Postać iteracyjna

Równanie (7) i (10) można przedstawić również w postaci iteracyjnej, wyprowadzając wij z
każdego równania, gdzie l oznacza numer iteracji :

z równania (7)

 

 

1

2

)

(

)

(

)

,

(

2

)

(

1

,

)

(

1

,

2

)

(

,

1

)

(

,

1

2

)

1

(

k

h

l

j

i

l

j

i

k

h

l

j

i

l

j

i

j

i

l

ij

w

w

w

w

y

x

f

h

w

(11)

z równania (10)

4

)

(

)

,

(

)

(

1

,

)

(

1

,

)

(

,

1

)

(

,

1

2

)

1

(

l

j

i

l

j

i

l

j

i

l

j

i

j

i

l

ij

w

w

w

w

y

x

f

h

w

(12)


background image

89

Równania eliptyczne - przykład 1

Wyznaczyć rozkład temperatury w stanie ustalonym dla cienkiej kwadratowej
metalowej płytki o wymiarach 0,5 m na 0,5 m. Na brzegu płytki znajdują się źródła
ciepła utrzymujące temperaturę na poziomie 0°C dla boku dolnego i prawego, natomiast
temperatura boku górnego i lewego zmienia się liniowo od 0°C do 100°C Problem
rozwiązać układając układ równań liniowych (postać macierzowa) dla wewnętrznych
węzłów siatki 5 x 5 – układ równań rozwiązać metodą Gaussa -Siedla.

Siatka dyskretyzacyjna 5 x 5


Problem ten opisuje równanie Laplace’a

0

)

,

(

)

,

(

)

,

(

2

2

2

2

2

y

x

dy

T

d

y

x

dx

T

d

y

x

T

z warunkami brzegowymi:
1) T(0,y) = 0 [°C ]
2) T(x,0) = 0 [°C ]
3) T(0,5,y) = 200y [°C ]
4) T(x,0,5) = 200x [°C ]

Układ równań tworzymy w oparciu o wzór (10)

25

0

0

50

0

0

100

50

25

4

1

0

1

0

0

0

0

0

1

4

1

0

1

0

0

0

0

0

1

4

0

0

1

0

0

0

1

0

0

4

1

0

1

0

0

0

1

0

1

4

1

0

1

0

0

0

1

0

1

4

0

0

1

0

0

0

1

0

0

4

1

0

0

0

0

0

1

0

1

4

1

0

0

0

0

0

1

0

1

4

3

,

1

2

,

1

1

,

1

3

,

2

2

,

2

1

,

2

3

,

3

2

,

3

1

,

3

T

T

T

T

T

T

T

T

T

background image

90

Rozwiązanie układu równań metodą Gaussa-Siedla, daje wyniki

75

,

18

50

,

12

25

,

6

50

,

37

00

,

25

50

,

12

25

,

56

50

,

38

75

,

18

3

,

1

2

,

1

1

,

1

3

,

2

2

,

2

1

,

2

3

,

3

2

,

3

1

,

3

T

T

T

T

T

T

T

T

T


Ostatecznie wyniki dla założonej siatki mają postać:

00

,

0

00

,

0

00

,

0

00

,

0

00

,

0

0

00

,

25

75

,

18

50

,

12

25

,

6

00

,

0

125

,

0

00

,

50

50

,

37

00

,

25

50

,

12

00

,

0

25

,

0

00

,

75

25

,

56

50

,

37

75

,

18

00

,

0

375

,

0

00

,

100

00

,

75

00

,

50

00

,

25

00

,

0

5

,

0

5

,

0

375

,

0

25

,

0

125

,

0

0

y

y

y

y

y

x

x

x

x

x


Rozwiązanie dokładne problemu ma postać:

xy

y

x

T

400

)

,

(


Natomiast oszacowanie błędu obliczeń :

0

)

,

(

)

,

(

12

4

4

4

4

2

j

i

j

i

x

y

T

y

x

T

h

, bo

0

)

400

(

)

,

(

4

4

4

4

xy

x

y

x

x

T

i

0

)

400

(

)

,

(

4

4

4

4

xy

y

y

x

y

T


Wynika z tego, że rozwiązanie numeryczne jest równe z rozwiązaniu dokładnemu.

Równania eliptyczne - przykład 1 - kody źródłowe

Funkcje charakteryzujące dane równanie różniczkowe eliptyczne

function F( X,Y : real ) : real;
begin
F := 0;
end;

function G( X,Y : real ) : real;
begin
if X = 0 then G := 0;
if X = 0,5 then G := 200*Y;
if Y = 0 then G := 0;
if Y = 0,5 then G := 200*X;
end;

Definicja wymaganych stałych i typów

background image

91

const max = 4;
type
Macierz = array [ 0..max, 0..max ] of real;
Vector = array [ 0..max ] of real;


Funkcja obliczająca przybliżenie równania różniczkowego eliptycznego

function PoissonEq(A,B,C,D,TOL : real;N,M,NMAX : integer; var W : Macierz)
:boolean;
var
X,Y : Vector; H,K,V,VV,Z,E : real;
M1,M2,N1,N2,I,J,L,LL: integer;
Ok :boolean;
begin
M1 := M - 1; M2 := M - 2;
N1 := N - 1; N2 := N - 2;
H := ( B - A ) / N; K := ( D - C ) / M;
for I := 0 to N do X[I] := A + I * H;
for J := 0 to M DO Y[J] := C + J * K;
for I := 1 to N1 do begin
W[I,0] := g(X[I],Y[0]);
W[I,M] := g(X[I],Y[M])
end;
for J := 0 to M do begin
W[0,J] := g(X[0],Y[J]);
W[N,J] := g(X[N],Y[J])
end;
for I := 1 to N1 do for J := 1 to M1 do W[I,J] := 0.0;
V := H * H / ( K * K ); VV := 2.0 * ( 1.0 + V );
L := 1; OK := false;
while ( ( L <= NMAX ) and ( not OK ) ) do begin
Z := (-H*H*F(X[1],Y[M1])+G(A,Y[M1])+V*G(X[1],D)+V*W[1,M2]+W[2,M1])/VV;
E := abs( W[1,M1] - Z ); W[1,M1] := Z;
for I := 2 to N2 do begin
Z := (-H*H*F(X[I],Y[M1])+V*G(X[I],D)+W[I-1,M1]+W[I+1,M1]+V*W[I,M2])/VV;
if ( abs( W[I,M1] - Z ) > E ) then E := abs( W[I,M1] - Z );
W[I,M1] := Z
end;
Z := (-
H*H*F(X[N1],Y[M1])+G(B,Y[M1])+V*G(X[N1],D)+W[N2,M1]+V*W[N1,M2])/VV;
if ( abs( W[N1,M1] - Z ) > E ) then E := abs( W[N1,M1] - Z ); W[N1,M1] := Z;
for LL := 2 to M2 do begin
J := M2 - LL + 2; Z := (-H*H*F(X[1],Y[J])+G(A,Y[J])+V*W[1,J+1]+V*W[1,J-
1]+W[2,J])/VV;
if ( abs( W[1,J] - Z ) > E ) then E := abs( W[1,J] - Z );
W[1,J] := Z;
for I := 2 to N2 do begin
Z := (-H*H*F(X[I],Y[J])+W[I-1,J]+V*W[I,J+1]+V*W[I,J-1]+W[I+1,J])/VV;
if ( abs( W[I,J] - Z ) > E ) then E := abs( W[I,J] - Z );

background image

92

W[I,J] := Z
end;
Z := (-H*H*F(X[N1],Y[J])+G(B,Y[J])+W[N2,J]+V*W[N1,J+1]+V*W[N1,J-1])/VV;
if ( abs( W[N1,J] - Z ) > E ) then E := abs( W[N1,J] - Z ); W[N1,J] := Z
end;
Z := ( -H * H * F( X[1],Y[1] ) + V * G( X[1], C ) + G( A, Y[1] ) + V * W[1,2] + W[2,1] ) /
VV;
if ( abs( W[1,1] - Z ) > E ) then E := abs( W[1,1] - Z );
W[1,1] := Z;
for I := 2 to N2 do begin
Z := (-H*H*F(X[I],Y[1])+V*G(X[I],C)+ W[I+1,1]+W[I-1,1]+V*W[I,2])/VV;
if ( abs( W[I,1] - Z ) > E ) then E := abs( W[I,1] - Z );
W[I,1] := Z
end;
Z := (-H*H*F(X[N1],Y[1])+V*G(X[N1],C)+G(B,Y[1])+W[N2,1]+V*W[N1,2])/VV;
if ( abs( W[N1,1] - Z ) > E ) then E := ABS( W[N1,1] - Z );
W[N1,1] := Z;
if ( E <= TOL ) then OK := true
else L := L + 1;
end;
Result := OK;
end;


background image

93

Równania eliptyczne - przykład 2
Wyznaczyć rozkład temperatury w stanie ustalonym dla cienkiej kwadratowej metalowej
płytki o wymiarach 1 m na 1 m. Na trzech brzegach płytki znajdują się źródła ciepła
utrzymujące temperaturę na poziomie 100°C dla boku górnego, 50°C dla boku lewego, 0°C
dla boku dolnego (warunki Dirichleta), natomiast przy czwartym lewym boku jest
umieszczony izolator termiczny (warunek Neumanna – pochodna normalna równa jest 0).
Problem rozwiązać wg postaci iteracyjnej dla wewnętrznych węzłów siatki 101 x 101.
Tolerancję obliczeń przyjąć na poziomie 10

-6

.


Problem ten opisuje równanie Laplace’a

0

)

,

(

)

,

(

)

,

(

2

2

2

2

2

y

x

dy

T

d

y

x

dx

T

d

y

x

T

z warunkami brzegowymi:
1) T(0,y) = 0
[°C ]
2) T(x,0) = 50 [°C ]
3) T(1,y) = T(1-h,y) [°C ]
4) T(x,1) = 100 [°C ]

background image

94

Przybliżenie rozwiązania równania w postaci mapy barwnej po 13484 iteracjach


Tabela wyników dla wybranych punków prawego boku płytki - izolator

Numer węzła

Numer iteracji

Dokładne

0

1000

3000

7000

13000

T100,0

100,00

100,00

100,00

100,00

100,00

100,00

T100,10

0,00

75,17

86,03

89,59

89,92

90,00

T100,20

0,00

52,58

72,46

79,24

79,87

80,00

T100,30

0,00

34,03

59,66

69,00

69,86

70,00

T100,40

0,00

20,27

47,91

58,89

59,90

60,00

T100,50

0,00

11,08

37,37

48,90

49,97

50,00

T100,60

0,00

5,55

28,07

39,03

40,05

40,00

T100,70

0,00

2,55

19,91

29,22

30,09

30,00

T100,80

0,00

1,07

12,70

19,47

20,10

20,00

T100,90

0,00

0,37

6,17

9,73

10,06

10,00

T100,100

0,00

0,00

0,00

0,00

0,00

0,00

background image

95

Równania eliptyczne - przykład 2 - kody źródłowe


Funkcje charakteryzujące dane równanie różniczkowe eliptyczne

function
F( X,Y : real ) : real;
begin
F := 0;
end;


Definicja wymaganych stałych i typów

const max = 100;
type
Macierz = array [ 0..max, 0..max ] of real;
Vector = array [ 0..max ] of real;

function PoissonEquationIteration (a,b,c,d, TOL : real ; N,M ,nmax : integer; var V :
Macierz) : boolean;
var EPS,H,K,Vs : real; X,Y : Vector; I,J,L : integer;
begin
H := ( B - A ) / N; K := ( D - C ) / M;
for I := 0 to N do X[I] := A + I * H; for J := 0 to M do Y[J] := C + J * K;
for i:=0 to N do for j:=0 to M do V[i,j]:=0;
L := 0; Result := true;
repeat
eps:=0; L := L + 1;
for i:=0 to N do for j:=0 to M do begin
Vs:=V[i,j];
if j=0 then V[i,j]:=0 else // bok dolny
if j=M then V[i,j]:=100 else // bok gora
if i=0 then V[i,j]:= 50 else // bok lewo
if i=N then V[i,j]:= V[i-1,j] else // bok prawo
V[i,j]:=(- h*h* F(X[i],Y[j] ) + (V[i+1,j]+V[i-1,j])+sqr(h/k)*(V[i,j+1]+V[i,j-1])
)/(2*(sqr(h/k)+1));
If abs(V[i,j]-Vs) > eps then eps := abs(V[i,j]-Vs);
end;
until (eps< TOL ) or ( L > nmax);
if (L > nmax) then Result := false;
end;

background image

96

Równania różniczkowe cząstkowe z warunkiem brzegowym

Równania paraboliczne - Dyfuzja

Równania różniczkowe cząstkowe paraboliczne znane jako równanie dyfuzji lub
przewodnictwa, w zależności od jednego wymiaru oraz czasu przyjmuje postać:

dla oraz

(13)



z warunkami brzegowymi dla


i początkowymi dla


Równania tego typu są stosowane dla różnych problemów fizycznych, które są zależne od
czasu. Najczęściej stosowane są do obliczenia przepływu ciepła wzdłuż pręta o długości l,
przy założeniu że, powierzchnia boczna pręta jest odizolowana od otoczenia. Stała

jest

niezależna od położenia oraz czasu i najczęściej określa przewodność cieplną materiału z
którego zrobiony jest pręt. Funkcja f określa początkowy rozkład temperatury w pręcie.

Aby rozwiązać równanie cząstkowe paraboliczne (13) zastosujemy metodę różnic
skończonych MRS.

W tym celu weźmiemy liczbę
całkowitą m i zdefiniujemy
krok całkowania h = (b-a)/m.
Dodatkowo ustalimy wartość
kroku czasowego k. Dzięki
temu możemy wyznaczyć
węzły siatki (xi , tj ), gdzie:

dla i = 0,1, .. m oraz dla j = 0,1, ..


Dla wewnętrznych punktów węzłowych (xi,tj), które nie należą do brzegu, zastosujemy
metodę różnic skończonych – MRS. Metoda ta opiera się na zastąpieniu pochodnych
cząstkowych rozwinięciem funkcji w szereg Taylora w otoczeniu punktu (xi,tj) – (patrz
pierwsza i druga pochodna numeryczna) . Wówczas otrzymujemy:

Dla zmiennej x (14)

gdzie:

Dla zmiennej t (15)

gdzie:

0

)

,

(

)

,

(

2

2

2

t

x

dx

u

d

t

x

dt

du

l

x

0

0

t

0

)

,

(

)

,

0

(

t

l

u

t

u

0

t

)

(

)

0

,

(

x

f

x

u

l

x

0

ih

x

i

jk

t

j

)

,

(

12

)

,

(

)

,

(

2

)

,

(

)

,

(

4

4

2

2

1

1

2

2

j

i

j

i

j

i

j

i

j

i

t

x

u

h

h

t

x

u

t

x

u

t

x

u

y

x

x

u

)

,

(

1

1

i

i

i

x

x

)

,

(

2

)

,

(

)

,

(

)

,

(

2

2

1

j

i

j

i

j

i

j

i

x

t

u

k

k

t

x

u

t

x

u

t

x

t

u

)

,

(

1

j

j

j

t

t

background image

97

j

i

j

i

j

i

j

i

w

w

h

k

w

h

k

w

,

1

,

1

2

2

,

2

2

1

,

2

1





Podstawiając wzory (14) oraz (15) do równania dyfuzji (13) oraz wyłączając oszacowanie
błędu zapisujemy:

(16)



warunek brzegowy : (17)

dla i = 1,2 … m-1 oraz j = 1,2, …

natomiast lokalny błąd odcięcia jest równy :

(18)


gdzie: oraz

Ostatecznie wzór na MRS, podstawiając za ( xi , tj ) = wi,j oraz wyłączając oszacowanie
błędu zapisujemy:

(19)


przekształcając powyższy wzór ze względu na wi,j+1 ,wówczas otrzymujemy:


(20)



lub

gdzie: (21)

dla i = 1,2 … m-1 oraz j = 1,2, …

0

)

,

(

)

,

(

2

)

,

(

)

,

(

)

,

(

2

1

1

2

1

h

t

x

u

t

x

u

t

x

u

k

t

x

u

t

x

u

j

i

j

i

j

i

j

i

j

i

0

)

,

(

)

,

0

(

j

j

t

l

u

t

u

)

,

(

12

)

,

(

2

4

4

2

2

2

2

j

i

j

i

ij

t

x

u

h

x

t

u

k

)

,

(

1

1

i

i

i

x

x

)

,

(

1

j

j

j

t

t

0

2

2

,

1

,

,

1

2

,

1

,

h

w

w

w

k

w

w

j

i

j

i

j

i

j

i

j

i

j

i

j

i

j

i

j

i

w

w

w

w

,

1

,

1

,

1

,

2

1

2

h

k

background image

98

Równania paraboliczne – Schemat jawny

Analizując równanie (21) można zauważyć,
że w celu wyznaczenia przybliżenia
rozwiązania w punkcie (xi,tj+1),
potrzebne są wartości trzech punktów z
poprzedniego kroku czasowego tj - patrz
rysunek obok. Metoda ta nazywana jest
rozwiązywaniem równania parabolicznego
wg schematu jawnego


Jak

widać

poszukujemy

rozwiązania

równania dyfuzji dla wewnętrznych węzłów siatki, w tym celu dla każdego punktu siatki
układamy równanie (21). Obliczenia rozpoczynamy od kroku czasowego j = 1, gdyż najpierw
musimy wygenerować wartości początkowe dla t = 0 dla wszystkich punktów u( xi , 0).
Obliczmy je zgodnie z warunkami początkowymi u( xi , 0) = f(xi).

A więc mamy do rozwiązania układ (m-1) równań, który powstał poprzez ułożenie równania
(21) dla każdego punktu wi,j siatki dla i = 1,2, .. m-1 :

(22)

co rozpisując daje nam:



(23)





Czyli w ten sposób możemy wyznaczyć poszukiwane wartości w(j+1). Wystarczy tylko
przemnożyć macierz A przez wektor w(j) - wartości dla poprzedniego kroku.

)

(

)

1

(

j

j

Aw

w

j

m

j

j

j

m

j

j

w

w

w

w

w

w

,

1

,

2

,

1

1

,

1

1

,

2

1

,

1

)

2

1

(

0

0

0

0

0

0

)

2

1

(

background image

99

Równania paraboliczne - Dyfuzja - przykład 1

Rozwiązać poniższe równanie przewodnictwa:

dla oraz


z warunkami brzegowymi dla

i początkowymi dla

Obliczenia wykonać dla czasu t = 0.5 używając schematu jawnego najpierw dla h = 0.1 oraz k
= 0.0005
, następnie dla h = 0.1 oraz k = 0.01 ,przyjąć

2 = 1


Rozwiązanie dokładne ma postać:



Tabela wyników – schemat jawny

Mały krok czasu

Duży krok czasu

xi

u( xi , 0.5 )

wi,1000
k = 0.0005

| u( xi , 0.5 ) –
wi,1000|

wi,50
k = 0.01

| u( xi , 0.5 ) –
wi,50|

0,0

0

0

0

0,1

0,00222241 0,00228652 6,411

10-5

8,19876

107 8,199

107

0,2

0,00422728 0,00434922 1,219

10-4

-1,55719

108 1,557

108

0,3

0,00581836 0,00598619 1,678

10-4

2,13833

108 2,138

108

0,4

0,00683989 0,00703719 1,973

10-4

-2,50642

108 2,506

108

0,5

0,00719788 0,00739934 2,075

10-4

2,62685

107 2,627

108

0,6

0,00683989 0,00703719 1,973

10-4

-2,49015

108 2,490

108

0,7

0,00581836 0,00598619 1,678

10-4

2,11200

107 2,112

108

0,8

0,00422728 0,00434922 1,219

10-4

-1,53086

108 1,531

108

0,9

0,00222241 0,00228652 6,411

10-5

8,03604

107 8,036

107

1,0

0

0

0

0

)

,

(

)

,

(

2

2

2

t

x

dx

u

d

t

x

dt

du

1

0

x

0

t

0

)

,

1

(

)

,

0

(

t

u

t

u

0

t

)

sin(

)

0

,

(

x

x

u

1

0

x

)

sin(

)

,

(

2

x

e

t

x

u

t

background image

100

Interpretacja graficzna




























Równania paraboliczne – Schemat jawny

Analizując wyniki z przykładu 1 można zauważyć, że metoda wykorzystująca schemat jawny
jest warunkowo stabilna, gdyż dla zbyt dużych wartości kroku wyniki są rozbieżne w
stosunku do rozwiązania dokładnego. Wynika to wartości własnej macierzy A , dla której
powinien być spełniony warunek

(23)

z powyższego wyrażenia wynika, że warunek stabilności tej metody jest:

(24)

Wykorzystując powyższy wzór można wyznaczyć dla przykładu 1 graniczną wartość kroku
czasowego, dla której schemat jawny jest stabilny:

wtedy

 

1

sin

4

1

max

)

(

2

2

1

1

m

i

m

i

A

2

1

2

2

h

k

2

2

1

h

k

0,005

1

1

,

0

2

1

2

k

background image

101

0

)

,

(

)

,

(

2

)

,

(

)

,

(

)

,

(

2

1

1

2

1

h

t

x

u

t

x

u

t

x

u

k

t

x

u

t

x

u

j

i

j

i

j

i

j

i

j

i

Równania paraboliczne – Schemat niejawny

Poprzednia metoda wykorzystująca schemat jawny, była warunkowo stabilna, gdyż należy
zwracać uwagę na wielkości kroków całkowania. Metoda opisana poniżej nie ma tej wady, i
jest bezwarunkowo stabilna dla różnych wielkości kroków całkowania. Metoda ta
wykorzystuje schemat niejawny gdyż zalicz się do metod pośrednich wymagających
wielokrotnych iteracji dla danej chwili czasu. Różnica polega na innym określeniu pochodnej
cząstkowej po czasie:

Dla zmiennej t (25)

gdzie:


Wówczas podstawiając wzór (25) oraz (14) do równania parabolicznego (13), pomijając błąd
obcięcia otrzymamy :

(26)

Modyfikując powyższy wzór, podstawiając za ( xi , tj ) = wi,j zapisujemy:

(27)

lub:

gdzie: (28)

dla i = 1,2 … m-1 oraz j = 1,2, …



Analizując równanie (28) można
zauważyć, że w celu wyznaczenia
przybliżenia rozwiązania w punkcie
(xi,tj), potrzebne są wartości trzech
punktów:

dwóch

sąsiednich

z

aktualnego kroku czasowego oraz
wartość dla tego samego węzła, ale
dla poprzedniej iteracji tj-1 - patrz
rysunek obok. Metoda ta nazywana
jest

rozwiązywaniem

równania

parabolicznego

wg

schematu

niejawnego


Jak widać poszukujemy rozwiązania równania dyfuzji dla wewnętrznych węzłów siatki, w
tym celu dla każdego punktu siatki układamy równanie (28). Obliczenia rozpoczynamy od
kroku czasowego j = 1, gdyż najpierw musimy wygenerować wartości początkowe dla t = 0
dla wszystkich punktów u( xi , 0). Obliczmy je zgodnie z warunkami początkowymi u( xi , 0)
= f(xi)
.

)

,

(

2

)

,

(

)

,

(

)

,

(

2

2

1

j

i

j

i

j

i

j

i

x

t

u

k

k

t

x

u

t

x

u

t

x

t

u

)

,

(

1

j

j

j

t

t

0

2

2

,

1

,

,

1

2

1

,

,

h

w

w

w

k

w

w

j

i

j

i

j

i

j

i

j

i

1

,

,

1

,

1

,

)

(

)

2

1

(

j

i

j

i

j

i

j

i

w

w

w

w

2

h

k

background image

102

1

,

1

1

,

2

1

,

1

,

1

,

2

,

1

)

2

1

(

0

0

0

0

0

0

)

2

1

(

j

m

j

j

j

m

j

j

w

w

w

w

w

w

A więc mamy do rozwiązania układ (m-1) równań, który powstał poprzez ułożenie równania
(28) dla każdego punktu wi,j siatki dla i = 1,2, .. m-1 :


(29)


co rozpisując daje nam:





(30)







Czyli w ten sposób możemy wyznaczyć poszukiwane wartości w(j). Najlepiej do rozwiązania
tego typu układów użyć rozkładu Crouta dla macierzy trójdiagonalnych


Równania paraboliczne - Dyfuzja - przykład 2 (1)


Rozwiązać poniższe równanie przewodnictwa:

dla oraz


z warunkami brzegowymi dla

i początkowymi dla

Obliczenia wykonać dla czasu t = 0.5 używając schematu niejawnego dla h = 0.1 oraz k
= 0.01
,przyjąć

2 = 1


Rozwiązanie dokładne ma postać:

)

1

(

)

(

j

j

w

Aw

0

)

,

(

)

,

(

2

2

2

t

x

dx

u

d

t

x

dt

du

1

0

x

0

t

0

)

,

1

(

)

,

0

(

t

u

t

u

0

t

)

sin(

)

0

,

(

x

x

u

1

0

x

)

sin(

)

,

(

2

x

e

t

x

u

t

background image

103

Tabela wyników – schemat niejawny

xi

u( xi , 0.5 )

wi,50
k = 0.01

| u( xi , 0.5 )
– wi,50|

0,0

0

0

0,1

0,00222241 0,00289802 6,756

10-4

0,2

0,00422728 0,00551236 1,285

10-3

0,3

0,00581836 0,00758711 1,769

10-3

0,4

0,00683989 0,00891918 2,079

10-3

0,5

0,00719788 0,00937818 2,186

10-3

0,6

0,00683989 0,00891918 2,079

10-3

0,7

0,00581836 0,00758711 1,769

10-3

0,8

0,00422728 0,00551236 1,285

10-3

0,9

0,00222241 0,00289802 6,756

10-4

1,0

0

0



Równania paraboliczne – Schemat niejawny


Analizując wyniki z przykładu 2 można zauważyć, że metoda wykorzystująca schemat
niejawny jest bezwarunkowo stabilna, gdyż jest ona zawsze zbieżna nie zależnie od wielkości
kroków całkowania. Wynika to ze spełniania poniższego warunku dla promienia spektralnego
macierzy A:

(31)


Równania paraboliczne – kody źródłowe


Funkcja określająca warunki początkowe równania paraboliczne

function
F( X,Y : real ) : real;
begin
F := sin( pi * x );
end;

Definicja wymaganych stałych i typów

const
max = 100;
type
Vector = array [ 0..max ] of real;

 

1

sin

4

1

max

)

(

2

2

1

1

m

i

m

i

A

background image

104

Funkcji „HeatingForward” - schemat jawny

function HeatingForward (FX,ALPHA ,FT : real; M,N : integer; var W : Vector):
boolean ;
var
H,K,VV : real; I,J : integer; W_1 : Vector;
begin
H := FX / M; K := FT / N;
VV := ALPHA * ALPHA * K / ( H * H );
if K <= (0.5*SQR(H/ALPHA)) then begin
W_1[0] := 0; W_1[M] := 0; Result := True;
W[0] := 0; W[M] := 0;
for I := 1 to M-1 do W_1[I] := F( I * H );
for J := 1 to N do begin
for I := 1 to M-1 do W[I] := (1.0 - 2.0 * VV)*W_1[I] + VV*( W_1[I-1] + W_1[I+1]
);
W_1 := W;
end;
end
else Result := False;
end;

Funkcji „HeatingBackward” - schemat niejawny

function HeatingBackward (FX,alpha ,FT : real; m,n : integer; var W : Vector):
boolean ;
var
L,U,Z : Vector; H,K,VV : real; I1,I,J : integer;
begin
Result := true;
H := FX / M; K := FT / N;
VV := ALPHA * ALPHA * K / ( H * H );
W[0] := 0; W[M] := 0;

for I := 1 to M-1 do W[I] := F( I * H );

L[1] := 1.0 + 2.0 * VV; U[1] := -VV / L[1];

for I := 2 to M-2 do begin
L[I] := 1.0 + 2.0 * VV + VV * U[I-1]; U[I] := -VV / L[I]
end;

L[M-1] := 1.0 + 2.0 * VV + VV * U[M-2];

for J := 1 to N do begin
Z[1] := W[1] / L[1];

for I := 2 to M-1 do Z[I] := ( W[I] + VV * Z[I-1] ) / L[I];

W[M-1] := Z[M-1];

background image

105


for I1 := 1 to M-2 do begin
I := M-2 - I1 + 1; W[I] := Z[I] - U[I] * W[I+1]
end;

end;
end;

background image

106

Równanie hiperboliczne – Falowe

Równania różniczkowe cząstkowe hiperboliczne znane jako równanie falowe, w zależności
od jednego wymiaru oraz czasu przyjmuje postać:

(32)

dla oraz


z warunkami brzegowymi

dla


i początkowymi

oraz

dla




Równania tego typu są stosowane dla różnych problemów fizycznych, które są zależne od
czasu. Najczęściej stosowane są do obliczenia wartości fali płaskiej w dowolnym punkcie
pomiędzy 0 a l dla dowolnej chwili czasu większej od zera. Funkcje f(x) i g(x) określają
warunki początkowe położenia oraz prędkości rozchodzenia się fali.

Aby rozwiązać równanie cząstkowe paraboliczne (32) zastosujemy metodę różnic
skończonych MRS.

W tym celu weźmiemy liczbę całkowitą m i zdefiniujemy krok całkowania h = (b-a)/m.
Dodatkowo ustalimy wartość kroku czasowego k. Dzięki temu możemy wyznaczyć węzły
siatki (x

i

, t

j

), gdzie:

dla i = 0,1, .. m oraz dla j = 0,1, ..














Dla wewnętrznych punktów węzłowych (x

i

,t

j

), które nie należą do brzegu, zastosujemy

metodę różnic skończonych – MRS. Metoda ta opiera się na zastąpieniu pochodnych
cząstkowych rozwinięciem funkcji w szereg Taylora w otoczeniu punktu (x

i

,t

j

) – (patrz druga

pochodna numeryczna) . Wówczas otrzymujemy:

Dla zmiennej x

(33)

0

)

,

(

)

,

(

2

2

2

2

2

t

x

dx

u

d

t

x

dt

u

d

l

x

0

0

t

0

)

,

(

)

,

0

(

t

l

u

t

u

0

t

)

(

)

0

,

(

x

f

x

u

)

(

)

0

,

(

x

g

x

t

u

l

x

0

ih

x

i

jk

t

j

)

,

(

12

)

,

(

)

,

(

2

)

,

(

)

,

(

4

4

2

2

1

1

2

2

j

i

j

i

j

i

j

i

j

i

t

x

u

h

h

t

x

u

t

x

u

t

x

u

t

x

x

u

background image

107


gdzie



Dla zmiennej t

(34)



gdzie



Podstawiając wzory (33) oraz (34) do równania falowego (31) oraz wyłączając oszacowanie
błędu zapisujemy:

(35)



warunek brzegowy :

(36)


dla

i = 1,2 … m-1 oraz j = 1,2, …


natomiast lokalny błąd odcięcia jest równy :


(37)




gdzie:

oraz

Ostatecznie wzór na MRS, podstawiając za ( x

i

, t

j

) = w

i,j

zapisujemy:



(38)




przekształcając powyższy wzór ze względu na w

i,j+1

,wówczas otrzymujemy:



gdzie:

(39)



dla i = 1,2 … m-1 oraz j = 1,2, …

z warunkami brzegowymi

dla j = 1,2, …

i początkowymi

dla i = 1,2, … m-1

)

,

(

1

1

i

i

i

x

x

)

,

(

12

)

,

(

)

,

(

2

)

,

(

)

,

(

4

4

2

2

1

1

2

2

j

i

j

i

j

i

j

i

j

i

x

t

u

k

k

t

x

u

t

x

u

t

x

u

t

x

y

u

)

,

(

1

1

j

j

j

t

t

0

)

,

(

)

,

(

2

)

,

(

)

,

(

)

,

(

2

)

,

(

2

1

1

2

2

1

1

h

t

x

u

t

x

u

t

x

u

k

t

x

u

t

x

u

t

x

u

j

i

j

i

j

i

j

i

j

i

j

i

0

)

,

(

)

,

0

(

j

j

t

l

u

t

u

)

,

(

)

,

(

12

1

4

4

2

2

4

4

2

j

i

j

i

ij

t

x

u

h

x

t

u

k

)

,

(

1

1

i

i

i

x

x

)

,

(

1

1

j

j

j

t

t

0

2

2

2

,

1

,

,

1

2

2

1

,

,

1

,

h

w

w

w

k

w

w

w

j

i

j

i

j

i

j

i

j

i

j

i

1

,

,

1

,

1

2

,

2

1

,

1

2

j

i

j

i

j

i

j

i

j

i

w

w

w

w

w

h

k

 

0

,

,

0

j

m

j

w

w

)

(

0

,

i

i

x

f

w

background image

108

Analizując równanie (39) można zauważyć, że w celu wyznaczenia przybliżenia rozwiązania
w punkcie (x

i

,t

j+1

), potrzebne są wartości trzech punktów z poprzedniego kroku

czasowego t

j

oraz jednej wartości dla czasu t

j-1

– patrz rysunek poniżej.



















Jak widać poszukujemy rozwiązania równania falowego dla wewnętrznych węzłów siatki, w
tym celu dla każdego punktu siatki układamy równanie (39). Obliczenia rozpoczynamy od
kroku czasowego j = 2, gdyż najpierw musimy wygenerować wartości początkowe dla t = 0
dla wszystkich punktów u( x

i

, 0)=f(x

i

), następnie wygenerujemy z drugiego warunku

początkowego wartości punktów dla t = t

1

jako du( x

i

, t

1

) / dt = g(x

i

).


A więc mamy do rozwiązania układ (m-1) równań, który powstał poprzez ułożenie równania
(39) dla każdego punktu w

i,j

siatki dla i = 1,2, .. m-1 :


(40)


co rozpisując daje nam:




(41)







Czyli w ten sposób możemy wyznaczyć poszukiwane wartości w

(j+1)

. Wystarczy tylko

przemnożyć macierz A przez wektor w

(j)

- wartości dla poprzedniego kroku, a następnie odjąć

od tego wektor wynikowy dla t

j-1

czyli w

(j-1)

.

)

1

(

)

(

)

1

(

j

j

j

w

Aw

w

1

,

1

1

,

2

1

,

1

,

1

,

2

,

1

2

2

2

2

2

2

1

,

1

1

,

2

1

,

1

)

1

(

2

0

0

0

0

0

0

)

1

(

2

j

m

j

j

j

m

j

j

j

m

j

j

w

w

w

w

w

w

w

w

w

background image

109

Ponieważ obliczania rozpoczynamy od kroku czasowego j = 2 musimy oprócz warunków
początkowych dla j = 0 określić wartości dla j = 1, skorzystamy z drugiego warunku
początkowej prędkości fali:


dla

(42)


Zamienimy pochodną cząstkową po czasie wykorzystując wzór schematu jawnego dla
równań parabolicznych:

(43)


Wyprowadźmy u(x

i

,t

1

) z powyższego równania, wtedy otrzymujemy:



(44)

Podstawmy do równania (44) wartość pochodnej z równania (42) :


(45)



Podstawmy za u( x

i

,t

j

) = w

i,j

, pomijając błąd odcięcia, ostatecznie mamy:

dla i = 1,2, .. m-1

:

(46)


Powyższy wzór pozwala na określenie warunków początkowych dla j = 1, wadą tego jest
duży błąd oszacowania rzędu O(k). Alternatywą do tego jest wzór wyprowadzony jako
rozwiniecie funkcji u(x

i

,t

1

) w szereg Maclurina 2 rzędu:




dla i = 1,2, .. m-1

(47)



gdzie:

:

l

x

0

)

(

)

0

,

(

x

g

x

t

u

)

~

,

(

2

)

0

,

(

)

,

(

)

0

,

(

2

2

1

j

i

i

i

x

t

u

k

k

x

u

t

x

u

x

t

u

)

,

0

(

~

1

t

j

)

~

,

(

2

)

0

,

(

)

0

,

(

)

,

(

2

2

1

j

i

i

i

x

t

u

k

x

t

u

k

x

u

t

x

u

)

~

,

(

2

)

(

)

0

,

(

)

,

(

2

2

1

j

i

i

i

i

x

t

u

k

x

g

k

x

u

t

x

u

)

(

0

,

1

,

i

i

i

x

g

k

w

w

)

(

2

)

1

(

0

,

1

0

,

1

2

0

,

2

1

,

i

i

i

i

i

x

g

k

w

w

w

w

h

k

 

background image

110

Równania hiperboliczne - Falowe - przykład 1

Rozwiązać poniższe równanie falowe:


dla

oraz



z warunkami brzegowymi

dla


i początkowymi

oraz

dla



Obliczenia wykonać dla czasu t = 1 wykorzystując metodę MRS dla równań falowych,
przyjąć: h = 0.1 oraz k = 0.05 ,przyjąć

2

= 4


Rozwiązanie dokładne ma postać:


Tabela wyników

























0

)

,

(

)

,

(

2

2

2

2

2

t

x

dx

u

d

t

x

dt

u

d

0

)

,

1

(

)

,

0

(

t

u

t

u

1

0

x

0

t

0

t

)

sin(

)

0

,

(

x

x

u

1

0

x

0

)

0

,

(

x

t

u

)

2

cos(

)

sin(

)

,

(

t

x

t

x

u

0

0,8090169944

0,8090169944

0,3

0

0,3090169944

0,5877852523

0,8090169944

0,9510565163

1,0000000000

0,9510565163

0,5877852523

0,3090169944

0

u( x

i

, 1

)

5,421

10

-20

0

0

1,1102

10

-16

1,1102

10

-16

0

0

0

| u( x

i

, 1

)

– w

i,20

|

0

0,3090169944

0,5877852523

0,8090169944

0,9510565163

1,0000000000

0,9510565163

0,5877852523

0,3090169944

0

w

i,20

k = 0.05

0,5

0,6

0,7

0,8

0,9

1,0

0,4

0,2

0,1

0,0

x

i

background image

111

Interpretacja graficzna



































background image

112

Równania hiperboliczne – kody źródłowe
Funkcja określająca warunki początkowe równania paraboliczne

function F( X,Y : real ) : real;

begin
F := sin( pi * x );
end;

function G( X,Y : real ) : real;
begin
G := 0;
end;

Definicja wymaganych stałych i typów

const
max = 100;
type
Vector = array [ 0..max ] of real;
Macierz = array [ 0..max ] of Vector;

Funkcja „WaveEquation” – oblicza przybliżenie rozwiązania równania falowego

function WaveEquation(FX,ALPHA ,FT : real; M,N : integer; var W : Macierz):
boolean ;
var H,K,V : real; M1,N1,I,J : integer;
begin
M1 := M + 1; N1 := N + 1; Result := True;
H := FX / M; K := FT / N;
V := ALPHA * K / H;
for J := 1 to N do begin
W[0,J] := 0; W[M,J] := 0;
end;
W[0,0] := F( 0 ); W[M,0] := F ( FX );
for I := 1 to M-1 do begin
W[I,0] := F( H * ( I ) );
W[I,1] := (1-V*V)*F(H*(I))+V*V*(F((I+1)*H) + F(H*(I-1)))/2+K*G(H*(I));
end;
for J := 1 to N-1 do for I := 1 to M-1 do
W[I,J+1] := 2*(1-V*V)*W[I,J]+V*V*(W[I+1,J]+W[I-1,J])-W[I,J-1];
end;


Wyszukiwarka

Podobne podstrony:
Zagadnienia 2011, Szkoła, Politechnika 1- 5 sem, SEM IV, Komputeryzacja Projektowania w Elektronice.
16wykl 4 1, Polibuda, IV semestr, SEM IV, Komputeryzacja Projektowania w Elektronice. Wykład, Opraco
kpwie, elektrotechnika PP, studfyja, Komputeryzacja Projektowania w Elektronice. Wykład, Opracowania
16wykl 3 2, Polibuda, IV semestr, SEM IV, Komputeryzacja Projektowania w Elektronice. Wykład, Opraco
16wykl 3 1, Polibuda, IV semestr, SEM IV, Komputeryzacja Projektowania w Elektronice. Wykład, Opraco
lab, MetNum2 lab, Laboratorium: ANALIZA I PROJEKTOWANIE KOMPUTEROWE UKŁADÓW ELEKTRONICZNYCH
komputerowe projektowania nowoczesnych instalacji elektrycznych
SYMULACJA KOMPUTEROWA OBWODÓW ELEKTRYCZNYCH
Projekt elektrownia
PROJEKT Elektryczne, Gdańsk, 18
Projekt elektryczny
ak projekt, Studia, PWR, 4 semestr, Architektura komputerów 2, projekt
projekty elektryczne, Mikroprocesorowa centrala alarmowa, Mikroprocesorowa centrala alarmowa
Laboratorium projektowania w elektrotechnice, PROJEK~1, Paweł Skrzypek ED 5.4
Laboratorium urządzeń nadprzewodnikowych, Projekt elektromagnesu nadprzewodnikowego, Laboratorium ur
Elektroenegetyka PROJEKT ELEKTROENERGETYKA
projekty elektryczne, wylzm, Przedstawiony w artykule wyłącznik zmierzchowy można wykorzystać do zał

więcej podobnych podstron