Raksti

6.6: Skaitliskās integrācijas metodes


5.2. Sadaļā parādīts, kā iegūt precīzas vērtības dažu vienkāršu funkciju noteiktiem integrāļiem (zemas pakāpes polinomiem), izmantojot taisnstūra laukumus. Funkcijām, kurām nav slēgtas formas antivīzu, taisnstūra metode parasti rada aptuveno noteiktā integrāla vērtību - jo vairāk taisnstūru, jo labāka ir aptuvenā vērtība.

Piemēram, pieņemsim, ka vēlaties novērtēt

[ int_0 ^ { sqrt { pi}} sin , (x ^ 2) ~ dx ] ar taisnstūra metodi. Tas nozīmē, ka labajā pusē esošajā attēlā jāatrod ēnotā reģiona laukums. Datori ir atcēluši nepieciešamību veikt šāda veida aprēķinus ar rokām. Lai gan taisnstūra metodi ir vienkārši ieviest tradicionālajā programmēšanas valodā (piemēram, izmantojot looping konstrukciju), ir vienkāršāki veidi domēna valodai (DSL), kas orientēta uz zinātnisko skaitļošanu. Viens no šādiem DSL ir MATLAB vai tā bezmaksas atvērtā koda klons Octave.10

Taisnstūra metodes ieviešana no nekā oktavā ir viena līnijpārvadātāja. Piemēram, pieņemsim, ka intervālu ( ival {0} { sqrt { pi}} ) dalāt 100 000 ( (10 ​​^ 5 )) vienāda garuma apakšintervālos, iegūstot 100 001 (1 + 1e5 zinātniskajā apzīmējumā) ) vienādi izvietoti punkti ( ival {0} { sqrt { pi}} ) (ieskaitot (0 ) un ( sqrt { pi} , )). Vispirms izmantojiet apakšintervālu (10 ​​^ 5 ) kreiso galapunktu:

oktāvs> summa (sin (linspace (0, sqrt (pi), 1 + 1e5) (1: end-1). ^ 2) * sqrt (pi) / 1e5) ans = 0,8948314693913354

Tagad izmantojiet pareizos galapunktus:

oktāvs> summa (sin (linspace (0, sqrt (pi), 1 + 1e5) (2: beigas). ^ 2) * sqrt (pi) / 1e5) ans = 0,8948314693913354

Visbeidzot, izmantojiet apakšintervālu viduspunktus:

oktava> summa (sin ((linspace (0, sqrt (pi), 1 + 1e5) (1: end-1) + sqrt (pi) / 2e5). ^ 2) * sqrt (pi) / 1e5) ans = 0,8948314695305527

Patiesā integrāļa vērtība līdz 15 zīmēm aiz komata ir 0,894831469484145, tāpēc visi trīs tuvinājumi ir precīzi līdz 9 zīmēm aiz komata. Iepriekš minēto komandu sintaksi var izskaidrot ar dažiem piemēriem. Ar šo komandu intervālā ( ival {1} ​​{7} ) tiek izveidoti 4 vienādi izvietoti punkti (ieskaitot (x = 1 ) un (x = 7 )), tādējādi dalot ( ival {1 } {7} ) 3 apakšintervālos katra garumā ((7-1) / 3 = 2 ):

oktāvs> linspace (1,7,4) ans = 1 3 5 7

Iegūstiet visu, izņemot pēdējo numuru iepriekš minētajā sarakstā:11

oktāvs> linspace (1,7,4) (1: end-1) ans = 1 3 5

Tagad kvadrātiet katru numuru šajā numuru sarakstā (punkts pirms eksponācijas operatora piemēro kvadrātāšanas darbību2elementiem sarakstā):

oktāvs> linspace (1,7,4) (1: end-1). ^ 2ans = 1 9 25

Tagad ņem katra no šiem kvadrātiem (mērot radiānos) sinusu:

oktāvs> grēks (linspace (1,7,4) (1: end-1). ^ 2) ans = 0.8414709848078965 0.4121184852417566 -0.132351750097773

Tagad reiziniet katru no šiem skaitļiem (taisnstūru augstumus) ar katra taisnstūra platumu (2), pēc tam summējiet šos apgabalus:

oktāvs> summa (grēks (linspace (1,7,4) (1: end-1). ^ 2) * 2) ans = 2,24247543990376

Pirms mūsdienu skaitļošanas parādīšanās taisnstūra metode tika uzskatīta par neefektīvu, tāpēc tika izveidotas alternatīvas metodes. Divas šādas metodes ir trapecveida likums un Simpsona likums. Abu metožu ideja ir izmantot nelineārās funkcijas mainīgā slīpuma priekšrocības, izmantojot netaisnstūrveida reģionus. Trapecveida kārtulai šie reģioni ir trapeces, savukārt Simpsona likums izmanto gandrīz taisnstūrveida reģionus, kuru augšējās malas ir parabolas, kā parādīts attēlā [att .: nummetodes]:

Sadalījumam (P = lbrace a = x_0

Simpsona likums ir atkarīgs no kaimiņu apakšintervālu pāriem: ( ival {x_0} {x_1} ) un ( ival {x_1} {x_2} ), ( ival {x_2} {x_3} ) un ( ival {x_3} {x_4} ), ( ldots ), ( ival {x_ {n-2}} {x_ {n-1}} ) un ( ival {x_ {n- 1}} {x_n} ). Tādējādi (n ge 2 ) jābūt vienmērīgam. Reģiona augšējā mala pār katru pāri ( ival {x_ {i}} {x_ {i + 1}} ) un ( ival {x_ {i + 1}} {x_ {i + 2}} ) ir unikālā parabola, kas savieno 3 punktus ((x_i, y_i) ), ((x_ {i + 1}, y_ {i + 1}) ) un ((x_ {i + 2} , y_ {i + 2}) ). Tuvināšanas formula ir šāda:12

Piemērs ( PageIndex {1} ): trapsimp

Pievienojiet tekstu šeit.

Risinājums

Aptuveni (~ displaystyle int_0 ^ { sqrt { pi}} sin , (x ^ 2) ~ dx ~ ) vērtību, izmantojot trapecveida likumu un Simpsona likumu ar (n = 10 ^ 5 ) apakšintervali.

Risinājums: Tā kā (x_0 = 0 ) un (x_n = sqrt { pi} ), tad (y_0 = grēks , (x_0 ^ 2) = sin , 0 = 0 ) un (y_n = grēks, (x_n ^ 2) = grēks , pi = 0 ). Tādējādi (y_0 ) un (y_n ) neko neveicina abu likumu summēšanas formulu veidošanā. Jo īpaši trapecveida noteikuma tuvināšana kļūst

[ int_0 ^ { sqrt { pi}} grēks, (x ^ 2) ~ dx ~ aptuveni ~ frac {h} {2} , (0 ~ + ~ 2y_1 ~ + ~ 2y_2 ~ + ~ cdots ~ + ~ 2y_ {n-1} ~ + ~ 0) ~ = ~ h , cdot , left ( sum_ {k = 1} ^ {n-1} y_k right) ] ko ir viegli ieviest oktāvā:

oktāvs> x = linspace (0, sqrt (pi), 1 + 1e5); oktāvs> h = sqrt (pi) / 1e5; oktāvs> h * summa (sin (x (2: end-1). ^ 2)) ans = 0,8948314693913405

Tāpat kļūst simpsona likumu tuvināšana

[ int_0 ^ { sqrt { pi}} grēks, (x ^ 2) ~ dx ~ aptuveni ~ frac {h} {3} , (4y_1 ~ + ~ 2y_2 ~ + ~ 4y_3 ~ + ~ 2y_4 ~ + ~ cdots ~ + ~ ~ + ~ 2y_ {n-2} ~ + ~ 4y_ {n-1}) ], kurus var viegli ieviest, izmantojot Octave jaudīgās indeksēšanas funkcijas:

oktāvs> (h / 3) * (4 * summa (grēks (x (2: 2: beigas-1). ^ 2)) + 2 * summa (grēks (x (3: 2: beigas-1)). ^ 2 ))) ans = 0,8948314694841457

Iepriekš minētajā komandā paziņojumsx (3: 2: 1. beigas)ļauj izlaist visus citus saraksta elementusxpēc 3. pozīcijas, pakāpjoties sarakstā augšup pa 2 pozīcijām līdz nākamajai līdz pēdējai pozīcijai sarakstā (1. beigas). Līdzīgi parx (2: 2: 1. beigas), kas sākas 2. pozīcijā un pēc tam virzās uz augšu ar soli 2.

Ņemiet vērā, ka Simpsona likums šajā gadījumā būtībā piešķir patieso vērtību, un trapecveida noteikuma vērtība faktiski ir tāda pati kā iebūvētātrapzfunkcija oktāvā / MATLAB:

oktāvs> trapz (x, sin (x. ^ 2)) ans = 0,8948314693913402

Parasti jums ir labāk izmantot šāda veida iebūvētās funkcijas, nevis ieviest savas.

Parasti Simpsona likums ir nedaudz efektīvāks nekā trapecveida noteikums, kas ir nedaudz efektīvāks nekā taisnstūra metode. Tomēr iepriekš minētajos piemēros visi aprēķini bija precīzi vismaz līdz 9 zīmēm aiz komata (ekvivalents tam, lai attālums starp Detroitu un Čikāgu būtu pareizs zobu bakstāmais biezumā). Katra aprēķina darbības laiks bija tikai dažas sekundes tūkstošdaļas. Mūsdienu skaitļošana parasti ir padarījusi nenozīmīgas efektivitātes atšķirības. Ievērojiet, ka taisnstūra metodes, trapeces un Simpsona kārtulas tuvinājumus var rakstīt kā funkciju vērtību (f (a_i) ) lineāras kombinācijas, reizinot ar “svariem” (w_i ):

[ int_a ^ bf (x) ~ dx ~ apm ~ sum_ {i = 0} ^ {n} w_i , f (a_i) ] Piemēram, Simpsona kārtulas svari ir (w_i = frac {h} {3} ), ( frac {2h} {3} ) vai ( frac {4h} {3} ), atkarībā no punktiem (a_i ) intervālā ( ival {a} {b} ). Metode Gausa kvadrātā pārveido integrālu jebkurā intervālā ( ival {a} {b} ) par integrālu noteiktā intervālā ( ival {-1} {1} ) un pēc tam izmanto standarta punktu kopa ( ival {-1} {1} ) un zināmais šo punktu svars:13

[tbl: gaussquad]

Piemērs ( PageIndex {1} ): gaussquad

Pievienojiet tekstu šeit.

Risinājums

Aptuveni (~ displaystyle int_0 ^ 2 dfrac { dx} {1 + x ^ 3} ~ ) vērtību, izmantojot Gausa kvadrātu ar (n = 4 ) punktiem.

Risinājums: (A = 0 ) un (b = 2 ) izmantojiet aizstāšanu (u = frac {1} {ba} (2x - a - b) = x-1 ), lai ( x = u + 1 ) un ( dx = du ). Tādējādi (g (u) = f (u + 1) = frac {1} {1 + (u + 1) ^ 3} ). Izmantojot tabulā [tbl: gaussquad] (n = 4 ), punkti (a_i ) un svari (w_i ) ir

[ sākas {izlīdzināts} {3} a_1 ~ & = ~ -0.339981 quad quad & w_1 ~ & = ~ 0.652145 a_2 ~ & = ~ 0.339981 quad quad & w_2 ~ & = ~ 0.652145 a_3 ~ & = ~ -0.861136 quad quad & w_3 ~ & = ~ 0.347855 a_4 ~ & = ~ 0.861136 quad quad & w_4 ~ & = ~ 0.347855 end {aligned} ] un tā

[ sākas {izlīdzināts} int_0 ^ 2 frac { dx} {1 + x ^ 3} ~ & = ~ frac {2-0} {2} , int _ {- 1} ^ 1 g ( u) ~ du ~ = ~ int _ {- 1} ^ 1 frac { du} {1 + (u + 1) ^ 3} ~ aptuveni ~ sum_ {i = 1} ^ 4 w_i , g (a_i) ~ = ~ sum_ {i = 1} ^ 4 w_i , cdot , frac {1} {1 + (a_i + 1) ^ 3}

[6pt] & apm ~ frac {0.652145} {1 + (-0.339981 + 1) ^ 3} ~ + ~ frac {0.652145} {1 + (0.339981 + 1) ^ 3} ~ + ~ frac { 0,3447855} {1 + (-0,861136 + 1) ^ 3} ~ + ~ frac {0,3447855} {1 + (0,861136 + 1) ^ 3}

[4pt] & apm ~ 1.091621 end {aligned} ] Integrāļa patiesā vērtība līdz sešām zīmēm aiz komata ir 1.090002.
Izmantojot vairāk punktus (piemēram, (n = 7 )), ir viegli ieviest Octave, izmantojot elementu darbības ar masīviem:

oktāvs> a = [0 -0,405845 0,405845 -0,741531 0,741531 -0,949108 0,949108]; oktāvs> w = [0,417959 0,381830 0,381830 0,279705 0,2779705 0,129485 0,129485]; oktava> summa (w +/ + 1 (a + 3) ) ans = 1.090016688064804

Nepareiziem integrāļiem var piemērot Gausa kvadrātiju. Piemēram,

[ int_0 ^ { infty} f (x) , e ^ {- x} , dx ~ approx ~ sum_ {i = 1} ^ n w_i , f (a_i) ], izmantojot punktus (a_i ) un svari (w_i ) tabulā [tbl: gaussquadimp]14 par (n = 3, 4 ) vai 5 punktiem ( lival {0} { infty} ):

[tbl: gaussquadimp]

Piemērs ( PageIndex {1} ): gqinf

Pievienojiet tekstu šeit.

Risinājums

Aptuveni (~ displaystyle int_0 ^ { infty} x ^ 5 , e ^ {- x} , dx ~ ) vērtību, izmantojot Gausa kvadrātu ar (n = 3 ) punktiem tabulā [ tbl: gaussquadimp].

Risinājums: Attiecībā uz (n = 3 ) tabula [tbl: gaussquadimp] dod (a_1 = 0.415775 ), (a_2 = 2.294280 ), (a_3 = 6.289945 ) un (w_1 = 0.711093 ), (w_2 = 0,278518 ), (w_3 = 0,010389 ). Pēc tam (f (x) = x ^ 5 ),

[ sākas {izlīdzināts} int_0 ^ { infty} x ^ 5 , e ^ {- x} , dx ~ & apm ~ sum_ {i = 1} ^ n w_i , f (a_i) ~ = ~ sum_ {i = 1} ^ n w_i , a_i ^ 5

[4pt] un aptuveni ~ 0.711093 , (0.415775) ^ 5 ~ + ~ 0.278518 , (2.294280) ^ 5 ~ + ~ 0.010389 , (6.289945) ^ 5 & apm ~ 119.9974709727211 beigas {izlīdzinātas} ] Patiesā vērtība ir ( Gamma , (6) = 5! = 120 ).
Piezīme: Tabulas [tbl: gaussquadimp] punkti (a_i ) ir saknes Lagerras polinomi grāda (n ).

[sec6dot6]

[exer: pendper] Vienkārša svārsta garums (l ) šūpojas pa (90 grādi ) leņķi abās vertikālās puses pusēs ar punktu (P ), ko

[P ~ = ~ 4 , sqrt { dfrac {l} {g}} , int_0 ^ { pi / 2} frac { dtheta} { sqrt {1 ; - ; 0,5 , sin ^ 2 theta}} ] kur (g = 9,8 ) m / s2 ir paātrinājums gravitācijas dēļ. Izmantojiet taisnstūra metodi (ar kreisajiem gala punktiem), trapecveida likumu un Simpsona likumu, lai rakstītu (P ) kā konstanta ( sqrt {l / g} ) reizinājumu. Vēlams izmantot datoru un (n = 10 ^ 5 ) vienāda platuma apakšintervālus (vai (n = 10 ) apakšintervālus, ja aprēķina ar roku).

Atkārtojiet vingrinājumu [exer: pendper], izmantojot Gausa kvadrātu ar (n = 5 ) punktiem.

[exer: gqsinx2] Aptuveni norādiet (~ displaystyle int_0 ^ { sqrt { pi}} sin , (x ^ 2) ~ dx ~ ) vērtību, izmantojot Gausa kvadrātu ar (n = 7 ) punkti.

2

Atkārtojiet vingrinājumu [exer: gqsinx2] ar (n = 9 ) punktiem.

Atkārtojiet vingrinājumu [exer: gqsinx2] ar (n = 10 ) punktiem.

Gausa kvadrātā tabulas [tbl: gaussquad] punkti (a_i ) ir saknes Legendre polinomi (P_n (x) ), ar (P_0 (x) = 1 ), (P_1 (x) = x ) un (P_n (x) ), kas definēti veseliem skaitļiem (n ge 2 ) pēc rekursijas formulas

[n , P_ {n} (x) ~ = ~ (2n-1) , x , P_ {n-1} (x) ~ - ~ (n-1) , P_ {n-2} , (x) ]

  1. Uzrakstiet (P_n (x) ) skaidri standarta polinoma formā (n = 2, 3, 4, 5 ).
  2. Pārbaudiet, vai saknes (P_n (x) ) sakrīt ar (n ) punktiem (a_1 ), ( ldots ), (a_n ) tabulā [tbl: gaussquad] par (n = 2, 3, 4, 5 ).
  3. Bez aprēķiniem paskaidrojiet, kāpēc (~ int _ {- 1} ^ 1 P_2 (x) , P_3 (x) , dx = int _ {- 1} ^ 1 P_3 (x) , P_4 (x) , dx = int _ {- 1} ^ 1 P_4 (x) , P_5 (x) , dx = 0 ).
  4. Par (n = 0, 1, 2, 3 ) pārbaudiet to

    [ int _ {- 1} ^ 1 P_n ^ 2 (x) ~ dx ~ = ~ frac {2} {2n + 1} ~. ]

Atkārtojiet piemēru

Piemērs ( PageIndex {1} ): gqinf

Pievienojiet tekstu šeit.

Risinājums

ar (n = 4 ) punktiem.

Atkārtojiet piemēru

Piemērs ( PageIndex {1} ): gqinf

Pievienojiet tekstu šeit.

Risinājums

ar (n = 5 ) punktiem.

Izmantojiet tabulu [tbl: gaussquadimp], lai tuvinātu (~ displaystyle int_0 ^ { infty} ln , (1 + x) , e ^ {- x} , dx ~ ) vērtību ar (n = 5 ) punkti.


Skatīties video: Increasing Crop Diversity and Production (Novembris 2021).