Laboratorijas darbs #2



( 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

             b = x
n
 ó
 ô 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), … , y
n-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 (x
j; 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

             b = x
n
 ó
 ô 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 (x
j; 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 = x
n
 ó
 ô 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:

                                     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 ).


Rezultāti.

1. Daļa.

                a)
                                            1
                    F1(x)  =   ¾¾¾¾¾   , xÎ [p/8; p/4]
                                   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