Całkowanie numeryczne - Mathcad

Transkrypt

Całkowanie numeryczne - Mathcad
trapez.xmcd
Całkowanie numeryczne metodą trapezów
Wzór trapezów
b
1 
⌠
1
 f ( x) dx = h ⋅  ⋅ y0 + y1 + ... + yn−1 + yn
2 
⌡a
2
Funkcja całkowana
3
2 ⋅x + 3
ϕ ( x) :=
sin ( x)
Funkcja trapez obliczająca całkę z funkcji f(x) w przedziale a, b z podziałem
przedziału całkowania na n części.
trapez ( f , a , b , n) :=
s←
f ( a) + f ( b)
2
h←
b−a
n
for i ∈ 1 .. n − 1 if n > 1
xi ← a + i ⋅h
yi ← f ( xi)
s ← s + yi
s ← h ⋅s
trapez ( ϕ , 1 , 3 , 450) = 102.024
całka z funkcji φ(x)
3
⌠
 ϕ ( x) dx = 102.018
⌡1
całka obliczona metodą Romberga
2006-12-09 13:38
simpson.xmcd
Całkowanie numeryczne metodą Simpsona
Wzór Simpsona
b
h
⌠
 f ( x) dx = ⋅ ( y0 + 4 ⋅y1 + 2 ⋅y2 + 4 ⋅y3 + ... + 4 ⋅ y2n−1 + y2n)
3
⌡a
Funkcja całkowana
3
2 ⋅x + 3
ϕ ( x) :=
sin ( x)
Funkcja Simpson obliczająca całkę z funkcji f(x) w przedziale a, b z podziałem
przedziału całkowania na n części (n musi być parzyste i nie mniejsze niż 4).
Simpson ( f , a , b , n) :=
n ← 4 if n < 4
n ← n + 1 if mod ( n , 2) > 0
s ← f ( a) + f ( b )
h←
b−a
n
for i ∈ 1 , 3 .. n − 1
xi ← a + i ⋅h
yi ← 4 ⋅f ( xi)
s ← s + yi
for i ∈ 2 , 4 .. n − 2
xi ← a + i ⋅h
yi ← 2 ⋅f ( xi)
s ← s + yi
s←
h
⋅s
3
Simpson ( ϕ , 1 , 3 , 60) = 102.024
całka z funkcji φ(x)
3
⌠
 ϕ ( x) dx = 102.018
⌡1
całka obliczona metodą Romberga
2006-12-09 13:39
richardson-01.xmcd
Ekstrapoplacja Richardsona
Całkowana funkcja
3
2 ⋅x + 3
ϕ ( x) :=
1 + sin ( x)
Funkcja trapez obliczająca całkę z funkcji f(x) w przedziale a, b z podziałem
przedziału całkowania na n części.
trapez ( f , a , b , n) :=
s←
f ( a) + f ( b)
2
h←
b−a
n
for i ∈ 1 .. n − 1 if n > 1
xi ← a + i ⋅h
yi ← f ( xi)
s ← s + yi
 s ← h ⋅s 


 h 
Całka obliczona metodą Romberga
3
⌠
IR :=  ϕ ( x) dx
⌡1
IR = 29.5
Błąd przybliżenia całki
∆I ( I) :=
I − IR
IR
1/2
2006-12-10 16:11
richardson-01.xmcd
 I1 
:= trapez ( ϕ , 1 , 3 , 4)
 h1 
 
I1 = 31.3
h1 = 0.5
∆I I1 = 6.090 %
 I2 
:= trapez ( ϕ , 1 , 3 , 8)
 h2 
 
I2 = 29.96
h2 = 0.25
∆I I2 = 1.548 %
 In 
:= trapez ( ϕ , 1 , 3 , 54)
 hn 
 
In = 29.51
hn = 0.037
∆I In = 0.034 %
( )
( )
( )
Ekstrapolacja Richardsona
I := I2 +
I2 − I1
∆I ( I) = 0.034 %
I = 29.51
2
 h1 
  −1
 h2 
∆I ( n) := trapez ( ϕ , 1 , 3 , n) 0 − IR
n := 3 .. 100
4
blad przyblizenia calki
3
2
∆I ( n)
1
0
−1
0
0
10
20
30
40
50
60
70
80
90
100
n
liczba podprzedzialów
2/2
2006-12-10 16:11
romberg-2.xmcd
Całkowanie numeryczne metodą Romberga (2)
Funkcja całkowana
3
2 ⋅x + 3
ϕ ( x) :=
1 + sin ( x)
Funkcja trapez obliczająca całkę z funkcji f(x) w przedziale a, b z podziałem
przedziału całkowania na n części.
trapez ( f , a , b , n) :=
h←
b−a
n
s ← h⋅
f ( a) + f ( b)
2
n− 1
s ← s + h⋅
∑
f ( a + i ⋅h) if n > 1
i=1
s
romberg ( f , a , b , n) :=
I0 , 0 ← trapez ( f , a , b , 1)
I1 , 0 ← trapez ( f , a , b , 2)
"ekstrapolacja Richardsona"
I0 , 1 ←
4 ⋅I1 , 0 − I0 , 0
3
for k ∈ 2 .. n
k
m← 2
Ik , 0 ← trapez ( f , a , b , m)
for j ∈ 1 .. k
c← 4
j
"ekstrapolacja Richardsona"
I k− j , j ←
c ⋅ Ik−j +1 , j−1 − Ik−j , j −1
c−1
 I0 , n 


 I 
1/2
2008-11-20 12:37
romberg-2.xmcd
n
W funkcji romberg 2 jest maksymalną liczbą podprzedziałów dla metody
trapezów.
trapez ( ϕ , 1 , 3 , 500) = 29.49981
trapez ( ϕ , 1 , 3 , 1000) = 29.49973
trapez ( ϕ , 1 , 3 , 1500) = 29.49971
romberg ( ϕ , 1 , 3 , 4) 0 = 29.49970
 52.66615
 36.28438

romberg ( ϕ , 1 , 3 , 4) 1 =  31.29610
 29.95637

 29.61437
4
30.82379 29.55398 29.50072 29.49970 

29.63334 29.50155 29.49971 0.00000
29.50979 29.49974 0.00000
29.50037 0.00000
0.00000
0.00000
0.00000
0.00000

0.00000 
0.00000 

0.00000 
2 = 16
Całka obliczona metodą Romberga zaimplementowaną w programie MathCad
3
⌠
I :=  ϕ ( x) dx
⌡1
I = 29.49970
2/2
2008-11-20 12:37

Podobne dokumenty