background image

Ćw. 11 - Równania cząstkowe różniczkowe

Demski Łukasz, Duchnowski Mateusz

AiR sem. 4

gr. 2, sekcja 1

29.05.2009

background image

Listing 1: Równania różniczkowe cząstkowe typu parabolicznego

1

#include <

i o s t r e a m>

2

#include <

cmath>

3

using namespace

s t d ;

4

5

double

e p s i l o n ( double t , double x ) {

6

return

7 . 0 ∗ M PI ∗ s i n ( M PI∗x ) ∗ s i n ( 7 . 0 ∗ M PI∗ t ) ∗ exp(M PI∗M PI∗ t ) ;

7

}

8

double

f y ( double t , double x ) {

9

return

s i n ( M PI∗x ) ∗ exp(M PI∗M PI∗ t ) ∗ (1− c o s ( 7 ∗ M PI∗ t ) ) ;

10

}

11

12

i n t

main ( ) {

13

const i n t

k = 1 0 0 , l = 1 0 0 ;

14

const double

h = 1 . 0 / ( k 1) ,

15

g = 1 . 0 / ( l 1) ,

16

d e l t a = 0 . 5 − ( g ∗ g ) / ( 1 2 . 0 ∗ h ) ,

17

A = d e l t a / ( g∗ g ) ,

18

B = ( 2 . 0 ∗ d e l t a ) / ( g∗ g ) + 1 . 0 / h ,

19

C = d e l t a / ( g∗ g ) ;

20

double

F [ k + 1 ] [ l + 1 ] ,

21

y [ k + 1 ] [ l + 1 ] ,

22

a l f a [ l + 1 ] ,

23

beta [ l + 1 ] ;

24

25

a l f a [ 2 ] = beta [ 2 ] = 0 ;

26

f o r

i nt j =1; j<=l ; j ++)

27

y [ 1 ] [ j ] = 0 ;

28

f o r

i nt i =1; i<=k ; i ++) {

29

y [ i ] [ 1 ] = 0 ;

30

y [ i ] [ l ] = 0 ;

31

}

32

33

f o r

i nt i =1; i <k ; i ++) {

34

f o r

i nt j =2; j <l ; j ++) {

35

F [ i ] [ j ] = − e p s i l o n ( ( i 1)∗h , ( j 1)∗g ) − (1.0 − d e l t a ) / ( g ∗g )

36

∗ ( y [ i ] [ j +1]+y [ i ] [ j − 1 ])

37

+ ( ( 2 ∗ ( 1 . 0 − d e l t a ) ) / ( g ∗ g ) 1.0/h ) ∗ y [ i ] [ j ] ;

38

a l f a [ j +1] = (C)/( Ba l f a [ j ] ∗A ) ;

39

beta [ j +1] = (A∗ beta [ j ]+F [ i ] [ j ])/ ( Ba l f a [ j ] ∗A ) ;

40

}

41

f o r

i nt j=l 1; j >0; j −−)

42

y [ i + 1 ] [ j ] = a l f a [ j +1] ∗ y [ i + 1 ] [ j +1] + beta [ j + 1 ] ;

43

}

44

45

double

suma = 0 ;

46

f o r

i nt i =1; i <k ; i ++)

47

f o r

i nt j =1; j <l ; j ++)

48

suma += pow ( y [ i ] [ j ] − f y ( ( i 1)∗h , ( j 1)∗g ) , 2 ) ;

49

50

double

bla d = s q r t ( suma ) / ( k∗ l ) ;

51

co ut << bla d << e n d l ;

52

53

return

0 ;

54

}

1

background image

1

Wstęp

Celem ćwiczenia było numeryczne rozwiązanie równania

δy

(t, x)

δt

δ

2

y

(t, x)

δx

2

η (t, x)

dla x, t ∈ h0; 1) i

η

(t, x) = 7π sin (πx) sin (7πxe

−π

2

t

Jest to równanie różniczkowe cząstkowe typu parabolicznego. Można rozwiązać je analitycznie
uzyskując w wyniku szukaną funkcję

y

(t, x) = sin (πxe

−π

2

t

(1 − cos (7πt))

2

Wyniki działania programu, wykresy

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 1 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0

0.1

0.2

0.3

0.4

0.5

0.6

Analitycznie

Rysunek 1: Funkcja obliczona analitycznie

2.1

Wpływ rozmiaru siatki na dokładność obliczeń

Wykresy wykonano dla następujących rozmiarów siatek: 10x10, 10x20, 10x50, 50x50 oraz 100x100.
Wykorzystano δ obliczoną ze wzoru δ = 0.

g

2

12h

.

Rozmiar

Błąd

10x10

0.0137368

10x20

0.00996236

10x50

0.00639677

50x50

0.000409789

100x100

9.67617e-05

Tabela 1: Tabela zbiorcza dla różnych wielkości siatek

2

background image

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Siatka 10x10

Rysunek 2: Mała rozdzielczość siatki

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Siatka 10x20

Rysunek 3: Mała rozdzielczość siatki

3

background image

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Siatka 10x50

Rysunek 4: Duża rozdzielczość siatki

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 1 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

Siatka 50x50

Rysunek 5: Duża rozdzielczość siatki

4

background image

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 1 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

Siatka 100x100

Rysunek 6: Duża rozdzielczość siatki

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 1 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.12

-0.1

-0.08

-0.06

-0.04

-0.02

0

0.02

0.04

0.06

Błąd dla siatki 50x50

Rysunek 7: Błąd dla stosunkowo dużej rozdzielczości siatki

5

background image

0 0.1 0.2

0.3 0.4 0.5

0.6 0.7 0.8

0.9 1 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

δ

= 0.4

Rysunek 8: Wynik działania programu dla zbyt małej wartości δ

2.2

Wpływ wartości δ na dokładność obliczeń

W pomiarach wykorzystano siatkę o wymiarach 100x100. Wartość delty wyznaczonej ze wzoru
δ

= 0.

g

2

12h

wynosi δ = 0.499158.

δ

Błąd

0.1

1.65177e+69

0.2

1.07884e+36

0.3

9.08774e+13

0.4

0.000166118

0.5

9.67928e-05

0.6

0.000100744

0.7

0.000105153

0.8

0.000109940

0.9

0.000115037

Tabela 2: Porównanie błędów w zależności od wartości δ

3

Wnioski

• Rozmiar siatki ma pewne znaczenie dla dokładności obliczeń. Dla bardzo rzadkich siatek

jak 10x10 lub 10x20 błąd jest około 10

4

raza większy niż dla siatek o wymiarach 100x100.

Jednak nie jest on na tyle duży by funkcja przybliżona przestała przypominać tą obliczoną
analitycznie.

• W przypadku wartości parametru δ sprawa wygląda zupełnie inaczej. Dla zbyt małych δ

błąd średni osiąga ogromne wartości. Dodatkowo na brzegach badanego obszaru zaczynają
pojawiać się dziwne kształty zupełnie nie pasujące do kształtu obliczonej analitycznie funkcji.
Natomiast gdy δ jest większa od swojej nominalnej wartości błąd rośnie tylko nieznacznie
oraz nie pojawiają się wspomniane wyżej zakłócenia kształtu funkcji.

6