(
Jevgenijs Rogovs, 2 Dz 3
)
Uzdevums.
1. Daļa.
Dotas divas funkcijas:
a)
1
F1(x) = ¾¾¾¾¾ , xÎ[p/8; p/4] Þ a = p/8 un
b = p/4
sin x × cos 2 x
b)
1
F2(x) = ¾¾¾¾¾ , xÎ[0; p] Þ a = 0 un b = p
(2 + cos x) ½
Sastādīt tabulu no 11 punktiem
(t.i. sadalīt dotus intervālus 10 vienādās daļās) yi = F (xi), xi
= a + i ×
h, kur h = (b-a) / 10 – intervāla garums. Pie tam i mainās no 0 līdz 10. Tad
pamatojoties tikai uz šo tabulu, jāatrod
F(a + h/2), pielietojot vismaz divas dažādas interpolācijas metodes. Pēc
tam, zinot abu funkciju analitisko veidu, aprēķināt F(a + h/2) precīzi un
izrēķināt kļūdu.
2. Daļa.
Skaitliski (tuvināti) aprēķināt
divus noteiktos integrāļus (pielietojot
vismaz divas metodes):
a) p/4 b) p
ó dx ó dx
ô ¾¾¾¾¾
ô
¾¾¾¾¾
õ sin x × cos 2 x õ (2 + cos x) ½
p/8
0
Precizitātei ir jābūt e = 0.00001 = 10-5.
Teorija.
Risinot uzdevumu tika izmantotas sekojošās teorijas
daļas:
1. Taisnstūru integrēšanas metode ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Pieņemsim, ka ir jāizrēķina noteiktais integrālis
Pieņemsim, ka ir jāizrēķina noteiktais integrālis
b = xn
ó
ô F(x) × dx
õ
a = x0 ,
kur F(x) ir funkcija, kas nepārtraukta
intervālā [a; b]. Šo intervālu sadala n vienādās daļās (katra ir ar garumu h =
(b-a) / n) un dalījuma punktus apzīmē ar a = x0 , x1 , …
, xn-1 , xn = b. Tad izrēķina zemintegrāļa funkcijas vērtības dalījuma punktos
(izņemot pēdējo punktu xn = b): y0 =
F(x0),
y1 = F(x1), … , yn-1 = F(xn-1). Dotā integrāļa tuvināta vērtība izsakās tā:
y1 = F(x1), … , yn-1 = F(xn-1). Dotā integrāļa tuvināta vērtība izsakās tā:
b
ó n-1
ô F(x) × dx » h × S yj = h × (y0 + y1 + … +
yn-1)
õ j = 0
a
|
Tas nozīmē, ka ir jāsummē visu to tasnstūru, kam viena mala ir nogrieznis (xj; 0) – (xj+1; 0) ar garumu h un otrā mala - nogrieznis (xj; 0) – (xj; yj) ar garumu yj , laukumi, un skaidrs, ka katram tādam tasnstūrim ir laukums Lj = h × yj .
Jāatzīmē, ka jo lielāks ir skaitlis n (t.i.
apakšintervālu skaits), jo precīzāk ir tuvinātā vērtība. Ja n tiecas uz
bezgalību, tad tuvinātā vērtība sakrīt ar precīzo.
2. Trapeču integrēšanas metode ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Pieņemsim, ka ir jāizrēķina noteiktais integrālis
Pieņemsim, ka ir jāizrēķina noteiktais integrālis
b = xn
ó
ô F(x) × dx
õ
a = x0 ,
kur F(x) ir funkcija, kas nepārtraukta
intervālā [a; b]. Šo intervālu sadala n vienādās daļās (katra ir ar garumu h =
(b-a) / n) un dalījuma punktus apzīmē ar a = x0 , x1 , …
, xn-1 , xn = b. Tad izrēķina zemintegrāļa funkcijas vērtības dalījuma punktos:
y0 = F(x0), y1 = F(x1), … , yn = F(xn). Dotā integrāļa
tuvināta vērtība izsakās tā:
b
ó
n-1
ô F(x) × dx » (h / 2) × (y0
+ 2 × S yj + yn) = (h / 2) × (y0
+ 2y1 + 2y2 + … + 2yn-1 + yn)
õ j = 1
a
|
Tas nozīmē, ka ir jāsummē visu to trapeču, kam viena augstums ir nogrieznis (xj; 0) – (xj+1; 0) ar garumu h un pamati - nogriežņi (xj; 0) – (xj; yj) ar garumu yj un (xj+1; 0) – (xj+1; yj+1) ar garumu yj+1, laukumus, un skaidrs, ka katrai tādai trapecei ir laukums Lj = (h / 2) × (yj + yj+1) .
Jāatzīmē, ka jo lielāks ir skaitlis n (t.i. apakšintervālu skaits), jo precīzāk ir tuvinātā vērtība. Ja n tiecas uz bezgalību, tad tuvinātā vērtība sakrīt ar precīzo. Pie vienādiem n šī metode ir precīzāka par taisnstūru metodi.
3. Simpsona integrēšanas
metode ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Pieņemsim, ka ir jāizrēķina
noteiktais integrālis
b = xn
ó
ô F(x) × dx
õ
a = x0 ,
kur F(x) ir funkcija, kas nepārtraukta
intervālā [a; b]. Šo intervālu sadala n vienādās daļās (katra ir ar garumu h =
(b-a) / n) un dalījuma punktus apzīmē ar a = x0 , x1 , …
, xn-1 , xn = b. Tad izrēķina zemintegrāļa funkcijas vērtības dalījuma punktos:
y0 = F(x0), y1
= F(x1), … , yn = F(xn). Dotā integrāļa
tuvināta vērtība izsakās tā:
b
ó
ô F(x) × dx » (h / 3) × (y0 + 4y1 + 2y2 + 4y3 + … + 2yn-2 + 4yn-1 + yn)
õ
a
|
Piezīme:
vēlams lai n būtu pārskaitlis. T.n. ka to rindu tabulās, kura attiecas uz
Simpsona metodes pielietošanu pie n=1, var vispār neivērot – tāpēc tā ir
rakstīta iekavās.
Šī formula, ko arī bieži vien devē par parabolu formulu, ir Ņutona-Kotesa formulas speciālgadījums, tāpat kā arī iepriekš minētā trapeču formula. Abas var tikt iegūtas integrējot polinomu, kas iet caur mezglu punktiem.
Jāatzīmē, ka jo lielāks ir skaitlis n (t.i. apakšintervālu skaits), jo precīzāk ir tuvinātā vērtība. Ja n tiecas uz bezgalību, tad tuvinātā vērtība sakrīt ar precīzo. Pie vienādiem n šī metode ir precīzāka par trapeču metodi.
4. Lagranža interpolācija ¾¾ ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Pieņem, ka funkcija F(x) ir uzdota ar
tabulu, kurā ir n+1 mezglu punkti: (x0, y0), (x1,
y1), … , (xn, yn). Ja priekš šīs funkcijas nav zināma analitiskā izteiksme, tās
vietā var pētīt (t.i., piemēram, mēģināt atrast funkcijas vērtību kādā punktā,
kas nesakrīt ne ar vienu mezglu punktu) attiecīgo Lagranža interpolācijas
polinomu, kas ir buvēts izmantojot tikai dotus punktus. Vispārīga izteiksme
priekš šāda polinoma ir:
n
PN(x)
= S yj × Lj (x) , kur
J=0
(x-x0) × (x-x1) × … × (x-xj-1) × (x-xj+1) × … × (x-xn)
Lj (x) =
¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
(xj-x0) × (xj-x1) × … × (xj-xj-1) × (xj-xj+1) × … × (xj-xn)
|
Redzams, ka šādi pierakstīts polinoms
apmierina n+1 interpolāciju nosacījumu:
PN(x0)
= y0
PN(x1)
= y1
…
PN(xN) = yN ,
jo Lj (x) = 1 tad un tikai tad, ja x = xj , un Lj (x) = 0 tad un tikai
tad, ja x = xi , i¹j.
5.
Ņutona interpolācija ¾¾ ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Ņutona interpolācijas polinoms ir tikai
cits Lagranža interpolācijas polinoma pieraksta veids. Bet reizēm izrādās, ka
lietot Ņutona polinomu ir ērtāk, nekā attiecīgo Lagranža polinomu; piemēram,
pielikt jauno dalījuma punktu Ņutona metodē ir ievērojami vieglāk.
Pieņem, ka funkcija F(x) ir uzdota ar
tabulu, kurā ir n+1 mezglu punkti: (x0, y0), (x1,
y1), … , (xn, yn) – lai yi : = F(xi).
Ja dalījuma punkti ir x0, x1,
… , xn , tad par 1.-ās kārtas dalīto diferenci
sauc
F(xk) – F(xk-1)
F(xk-1 , xk) : = ¾¾ ¾¾¾¾ .
xk – xk-1
Analoģiski definē n-tās kārtas dalīto
diferenci – piemēram, izteiksme priekš otrās kārtas dalītās diferences izskatas
šādi:
F(xk , xk+1) – F(xk-1 , xk)
F(xk-1 , xk , xk+1) : = ¾¾ ¾¾¾¾¾¾¾ .
xk+1 – xk-1
Dotai dalījuma punktu sistēmai var sastādīt
trijstūrveida dalīto diferenču tabulu:
x0 F(x0)
F(x0, x1)
x1 F(x1) F(x0, x1, x2)
F(x1, x2) …
x2 F(x2) …
… … F(x0,
x1, … , xn) – n-tās kārtas dalītā diference
…
…
…
…
xn-1 F(xn-1) …
F(xn-1, xn)
xn F(xn)
Izmantojot dalītās diferences definiciju,
var funkcijas vērtības dalījuma punktos izteikt ar dalītām diferencēm (pie tam
tiek izmantotas tās dalītās differences, kas iezīmētas tabulā; tas nozīmē, ka
piliekot jaunu dalījuma punktu xn+1 , nav jāpārrēķina visa tabula – tā ir šī metodes priekšrocība):
F(x1) = F(x0) + (x1
– x0) × F(x0 , x1)
F(x2) = F(x0) + (x2
– x0) × F(x0 , x1) + (x2
– x0) × (x2 – x1) × F(x0 , x1 , x2)
…
F(xk) = F(x0) + (xk – x0) × F(x0
, x1) + (xk – x0) × (xk – x1) × F(x0 , x1 , x2) + … +
+ (xk – x0) × (xk – x1) × … × (xk – xk-1) × F(x0 , x1 , … , xk) , kur kÎ [1; n] (*)
Lai iegūtu izteiksmi priekš F(x), ņem k := n+1 un šo vērtību ieliek formulā (*) :
F(x) = F (xn+1) = [ F(x0) + (x – x0) × F(x0 , x1) + (x – x0) × (x – x1) × F(x0
, x1 , x2) + … +
+ (x – x0) × (x – x1)
× … × (x – xn-1) × F(x0 , x1 , … , xn) ] + wn+1(x) × F(x0 , x1 , … , xn , x)
No šī izriet sekojošā izteiksme priekš
Ņutona interpolācijas polinoma un atlikuma locekļa:
Pn (x) = F(x0) + (x – x0) × F(x0 , x1) + (x – x0) × (x – x1) × F(x0
, x1 , x2) + … +
+ (x – x0) × (x – x1) × … × (x – xn-1) × F(x0 , x1 , … , xn)
[ Rn (x) = wn+1(x) × F(x0 , x1 , … , xn , x) ]
|
6. Interpolācija ar kubiskiem splainiem ¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾
Par m-tās kārtas splaini sauc gabaliem
gludu polinomu sistēmu
Sm = {Pi, m (x) = a0i × xm + a1i × xm + … + ami , xÎ (xi-1 , xi) , iÎ [1; n]} ,
Kurai izpildās sekojošie nosacījumi:
0)
Pi, m (xi-1) = yi-1 un Pi, m (xi) = yi
1)
P/i, m (xi) = P/ i+1, m (xi) , iÎ [1; n-1]
…
m-1) P(m-1)i, m (xi) = P(m-1) i+1, m (xi) , iÎ [1; n-1].
Šeit 0-tais nosacījums saucas
interpolācijas nosacījums, bet pārējie m-1 – gluduma nosacījumi, ka arī var
pierakstīt tā:
Sm (x) Î Cm-1 [a; b], kur a=x0 un b=xn .
Par kubisko splaini sauc splaini pie m=3,
kura vispārīgā forma pierakstāma šādi:
S3
(x) = { Pi, 3 (x) = a0i × x3 + a1i × x2 + a2i × x + a3i } . (1)
Izteiksme (1) satur 4n nezināmo, bet nosacījumi 0), 1), 2) no splaiņu
definīcijas dod tikai 2n + (n-1) + (n-1) = 4n-2 nosacījumus. Tas nozīmē, ka lai
izrēķinātu visus koeficientus, jāieved papildus divus nosacījumus. Piemēram,
var uzdot funkcijas F(x) momentus intervāla [a; b] galapunktos:
M0 = F// (x0) = P//1,
3 (x0) un
Mn = F// (xn) = P//n, 3 (x0) ,
bet citus momentus M1 , … , Mn-1 var nofiksēt: S// (xi) := Mi . Tā kā šī funkcija
ir lineāra
( S3 (x) = C2 [a; b] ), varam uzrakstīt sekojošo sakarību:
( S3 (x) = C2 [a; b] ), varam uzrakstīt sekojošo sakarību:
x - xi-1 xi - x
P//i, 3 (x) = S//3 (x)
= ¾¾¾¾ × Mi + ¾¾¾ × Mi-1 ,
h h
kuru divreiz diferencējot iegūst:
(x - xi-1)3 ( xi – x)3
Pi, 3 (x) = ¾¾¾¾ × Mi + ¾¾¾ × Mi-1 + Ci × x + Di (2)
6h 6h
|
Izteiksme (2) jau ir izteiksme priekš i-tā polinoma splainī, tikai jāatrod
koeficienti (h ir attālums starp dalījuma punktiem, kas šinī uzdevumā ir visur
viens un tas pats).
Zinot visus koeficientus Mi , var viegli atrast arī visus Ci un Di , jo
h2
yi = ¾ × Mi-1 + Ci × xi
+ Di
6
(3)
h2
yi-1 = ¾ × Mi-1 + Ci × xi-1 + Di
6
Lai atrastu koeficientus Mi , jāizmanto saskaņotības (gluduma) nosacījumu
P/i, 3 (xi) = P/ i+1, 3 (xi) , iÎ [1; n-1] .
Galarezultātā iegūst
h 2h h yi+1 - 2 yi + yi+1
¾ × Mi-1 + ¾¾ × Mi
+ ¾ × Mi+1 = ¾¾¾¾¾¾¾ , iÎ [1;
n-1]. (4)
6 3 6 h
Lineāro vienādojumu sistēma (4) satur n-1 vienādojumu ar n-1
nezināmajiem. Tas nozīmē, ka sistēma (4)
var tikt viennozīmīgi atrisināta, izmantojot uzdotus M0 un Mn vērtības. Pēc tam ir jāatrisina sistēma (3), kur ir 2 lineārvienādojumi un 2 nezināmie. No (3) iegūst visas Ci un Di vērtības. Tad jau šādi iegūtus Mi , Ci un Di ieliek formulā (2) un
līdz ar to dabū visu polinomu sistēmu, kas sastāda kubisko splaini.
Izpildīšanas kārta.
1. Daļa.
Izmantojot Borland Turbo Pascal v7.0 programmēšanas vidi tika uzrakstīta programma paskālā (sk. “Pielikums 1”), kas realizē Lagranža, Ņutona polinomiālās interpolācijas metodes, kā arī interpolāciju ar kubiskiem splainiem. Vispirms tiek sastādīta tabula no 11 funkciju vērtībām (t.i. dotais intervāls tika sadalīts 10 daļās) – ar proceduras Tabula palīdzību. Pēc tam tika pēc kārtas pielietotas visas trīs iepriekš minētās metodes, katra no kurām ir realizēta kā atsevišķa autonoma apakšprogramma. Tā kā izmantojot kubiskos splaiņus ir nepieciešami divi papildnosācījumi, tad šinī programmā tika papildus izrēķinātas abu funkciju otrās kārtas atvasinājumu vērtības intervāla galapunktos. Šīs vērtības (momenti) ir apzimēti ar M[0] un M[n], bet izteiksmes priekš abu funkciju otrās kārtas atvasinājumiem (attiecīgi funkcijas F1_otrais_atv un F2_otrais_ atv) tika iegūtas, lietojot paketi Mathematica v2.20.
Rezultātā programmas izvads saturēja katrai
no divām funkcijām precīzo vērtību punktā x = a + h/2 (t.i. pirmā
apakšintervālā vidū) un trīs tuvinātās vērtības, kā arī relatīvās kļūdas katrā
gadījumā (procentos). Visi izvadītie dati tika noapaļoti līdz 5. ciparam aiz
komata, jo prasītā precizitāte ir e = 10-5.
Pielietojot
aprakstīto programmu, tika iegūti sekojošie rezultāti:
1
F1
= ¾¾¾¾¾ , xÎ [p/8; p/4]
sin x × cos 2 x
|
|||||
|
x
= a + h/2
|
F1(x)
|
Lagranža
polinoms
|
Ņutona
polinoms
|
Kubiskie
splaini
|
Vērtība
|
0.41233
|
2.97275
|
2.97275
|
2.97275
|
2.89736
|
Kļūda,
%
|
-
|
0.00000
|
0.00000
|
0.00000
|
2.53607
|
1
F2
= ¾¾¾¾¾ , xÎ [0; p]
(2 + cos x) ½
|
|||||
|
x
= a + h/2
|
F1(x)
|
Lagranža
polinoms
|
Ņutona
polinoms
|
Kubiskie
splaini
|
Vērtība
|
0.15708
|
0.57855
|
0.57855
|
0.57855
|
0.58232
|
Kļūda,
%
|
-
|
0.00000
|
0.00175
|
0.00175
|
0.65294
|
No šiem rezultātiem redzams, piemēram, kā
Lagranža un Ņutona polinomi ir īstenībā viens un tas pats polinoms, tikai
pierakstīts divos veidos.
Otrās funkcijas gadījumā tuvinātā vērtība
interpolējot ar Lagranža un Ņutona polinomiem iznāk tāda pati, kā precīza
uzdotās precizitātes robežās, bet kļūda nav vienāda ar 0 tādēļ, ka nenoapaļotās
tuvinātās vērtības nesakrīt ar precīzo vērtību.
2. Daļa.
Izmantojot Borland Turbo Pascal v7.0 programmēšanas vidi tika uzrakstīta
programma paskālā (sk. “Pielikums 2”),
kas realizē taisnstūru, trapeču un Simpsona metodes. Dotai funkcijai tiek
izrēķinātas noteikto integrāļu vērtības pie uzdotām integrēšanas robežām.
Dalīšanas apakšintervālu skaits ir 1, 10, 100, … ,1 000 000, t.i. visas trīs
metodes tiek pielietotas 7 dažādām n vērtībām, kas ļauj salīdzināt metožu
efektivitāti.
Pielietojot šo programmu, tika iegūti sekojoši rezultāti:
p/4
ó dx
ô ¾¾¾¾¾
õ sin x × cos 2 x
p/8
|
|||
n
|
Taisnstūru
metode
|
Trapeču
metode
|
Simpsona
metode
|
1
|
1.20224
|
1.15648
|
(0.77099)
|
10
|
1.07090
|
1.06633
|
1.06534
|
100
|
1.06581
|
1.06535
|
1.06534
|
1,000
|
1.06538
|
1.06534
|
1.06534
|
10,000
|
1.06534
|
1.06534
|
1.06534
|
100,000
|
1.06534
|
1.06534
|
1.06534
|
1,000,000
|
1.06534
|
1.06534
|
1.06534
|
p
ó dx
ô ¾¾¾¾¾
õ (2 +
cos x) ½
0
|
|||
n
|
Taisnstūru
metode
|
Trapeču
metode
|
Simpsona
metode
|
1
|
1.81380
|
2.47770
|
(1.65180)
|
10
|
2.27645
|
2.34284
|
2.34284
|
100
|
2.33620
|
2.34284
|
2.34284
|
1,000
|
2.34218
|
2.34284
|
2.34284
|
10,000
|
2.34277
|
2.34284
|
2.34284
|
100,000
|
2.34283
|
2.34284
|
2.34284
|
1,000,000
|
2.34284
|
2.34284
|
2.34284
|
Tātad ir konstatēts, ka
a) p/4
ó dx
ô ¾¾¾¾¾ » 1.06534
õ sin x × cos 2 x
p/8
b) p
ó dx
ô ¾¾¾¾¾ » 2.34284
õ (2 + cos
x) ½
0
Visos gadījumos ir skaidri redzams, ka
Simpsona (parabolu) metode konverģē visātrāk un taisnstūru – vislēnāk. Simpsona
metode jau pie n=10 abos gadījumos ģenerē rezultātus ar prasīto precizitāti
(e = 10-5 ).
(e = 10-5 ).
Rezultāti.
1. Daļa.
a)
1
a)
1
F1(x) = ¾¾¾¾¾ , xÎ [p/8; p/4]
sin x × cos 2 x
sin x × cos 2 x
F1(a + h/2) = F1(0.41233)
» 2.97275 (relatīva kļūda
0.00000%)
b)
1
F2 = ¾¾¾¾¾ , xÎ [0; p]
(2 + cos x) ½
F2(a + h/2) = F2(0.15708)
» 0.57855 (relatīva kļūda
0.00175%)
2. Daļa.
a) p/4
ó dx
ô ¾¾¾¾¾ » 1.06534
õ sin x × cos 2 x
p/8
b) p
ó dx
ô ¾¾¾¾¾ » 2.34284
õ (2 + cos
x) ½
0
Literatūra.
[1] Р. В. Хемминг, Численные методы, М.: 1972
[2] Н.С. Бахвалов, Численные методы, М.: 1987
Nav komentāru:
Ierakstīt komentāru