Matematika/Integravimas dalimis

Iš testwiki.
10:51, 19 vasario 2024 versija, sukurta imported>Paraboloid (Rekurentinė formulė (profesionalams))
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
Pereiti į navigaciją Jump to search

Integravimas dalimis

Tarkime, kad funkcijos u(x) ir v(x) turi tolydžias išvestines. Tada:

u(x)v(x)𝖽x=u(x)v(x)v(x)u(x)𝖽x.

Lygtis nesunkiai įrodoma prisiminus sandaugos diferenciavimo taisyklę:

𝖽(uv)=uv,
u𝖽v+v𝖽u=uv,
u𝖽v=uvv𝖽u.

Pavyzdžiai

  • x𝖾x𝖽x=x𝖾x𝖾x𝖽x=x𝖾x𝖾x+C.

Čia u(x)=x, o v(x)=ex.

  • xnlnx𝖽x.

u = ln x, u'=(ln x)'=1/x, v=xn𝖽x=xn+1n+1, v=(xn+1n+1)=xn.

ln(x)xn𝖽x=lnxxn+1n+1xn+1n+11x𝖽x=lnxxn+1n+11n+1xn𝖽x=xn+1n+1(lnx1n+1)+C.
  • xsinxdx.

u=x, dv=sin(x) dx, du=dx, v=sinxdx=cosx.

udv=uvvdu=xcosxcosxdx=xcosx+sinx+C.
  • arcsinxdx.

u=arcsin(x); dv=dx; du=dx1x2; v=x.

xarcsinxxdx1x2=xarcsinx+d(1x2)21x2=xarcsinx+1x2+C.

Patikriname

(xarcsinx+1x2+C)=arcsin(x)+x/(1x2)0.5+0.5(2x)/(1x2)0.5=arcsinx.
  • xlnxdx=x22lnxx221xdx=x22lnxx24+C,

kur u=ln(x); dv=x dx; du=1/x dx; v=xdx=x22.

  • lnxdx=xlnxxdxx=xlnxx+C,

kur u=ln(x); dv=dx; du=1/x dx; v=x.

  • arctanxdx=xarctanxxdx1+x2=xarctanx12d(1+x2)1+x2=xarctanx12ln(1+x2)+C

kur u=arctg(x); dv=dx; du=11+x2dx; v=x.

  • x2exdx=x2ex2xexdx=x2ex2(x1)ex+2C1=ex(x22x+2)+2C1,

kur u=x2; dv=exdx; du=2x dx; v=ex; xexdx=xexxexdx=xexex+C1.

  • I=exsinxdx.

u=ex, dv=sin(x)dx; du=exdx, v=sinxdx=cosx;

I=excosx+excosxdx.

Dar kartą integruojame dalimis. u=ex, dv=cos(x)dx; du=exdx, v=cosxdx=sinx;

I=excosx+exsinxexsinxdx.

Turime, kad I=ex(sinxcosx)I. Vadinasi 2I=ex(sinxcosx), tai I=12ex(sinxcosx)+C.

  • 8x3lnxdx=8(x44lnxx441xdx)=x4(2lnx12)+C, kur u=lnx; v=x3; u=1x; v=x44.
  • x5cosx3dx, kur dt=d(x3)=3x2dx; dx=dt3x2;

x5cosx3dx=x5cosx3d(x3)3x2=13x3cosx3d(x3)=13tcostdt=13(tsintsintdt)= =13(tsint+cost)+C=13(x3sinx3+cosx3)+C, kur v=cost; u=t; v=sint; u=1.

  • arctanxdx=xarctanxxdx1+x2=xarctanx12d(1+x2)1+x2=

=xarctanx12ln|1+x2|+C, kur u=arctanx; dv=dx; du=dx1+x2; v=x; d(1+x2)=2xdx.


  • Apskaičiuosime integralą I=xarctanxdx. Jei u=arctanx,dv=xdx, tai du=dx1+x2,v=x22. Todėl pagal formulę (u𝖽v=uvv𝖽u)
I=x22arctanx12x21+x2dx=x22arctanx12(1+x2)11+x2dx=
=x22arctanx12dx+12dx1+x2=x22arctanxx2+arctanx2+C=x2+12arctanxx2+C.


  • Apskaičiuosime integralą I=x2cosxdx. Jei u=x2,dv=cosxdx, tai du=2xdx,v=sinx. Tada, remiantis formule,
I=x2sinx2xsinxdx.
Paskutinį integralą vėl skaičiuosime pagal u𝖽v=uvv𝖽u formulę. Jei šį kartą u=x,dv=sinxdx, tai du=dx,v=cosx; todėl
I=x2sinx2(xcosxcosxdx)=
=x2sinx+2xcosx2cosxdx=(x22)sinx+2xcosx+C.
Vadinasi, integralą x2cosxdx apskaičiavome, du kartus pritaikę dalinio integravimo metodą. Nesunku suvokti, kad integralą xncosxdx (n - natūrinis skaičius) galima apskaičiuoti analogiškai, taikant dalinio integravimo formulę n kartų.


  • Dabar apskaičiuosime integralą I=eaxcos(bx)dx (a=const, b=const). Iš pradžių pritaikysime formulę, tarę, kad u=eax,dv=cosbxdx. Gausime du=aeaxdx,v=sinbxb,
I=eaxsinbxbabeaxsin(bx)dx.
Paskutinį integralą skaičiuojame vėl pagal integravimo dalimis formulę, tik šį kartą u=eax,dv=sinbxdx. Gausime du=aeaxdx,v=cosbxb,
I=eaxsinbxb+ab2eaxcos(bx)a2b2eaxcos(bx)dx,
I=eaxsinbxb+ab2eaxcos(bx)a2b2I,(6.11)
I+a2b2I=eaxsinbxb+ab2eaxcos(bx),
Ib2+Ia2b2=beaxsinbx+aeaxcos(bx)b2,
b2+a2b2I=bsinbx+acosbxb2eax,
I=acosbx+bsinbxa2+b2eax.
Vadinasi, du kartus pritaikę dalinio integravimo formulę, gavome pirmojo laipsnio (6.11) lygtį integralo I atžvilgiu. Iš tos lygties radome I.


  • Apskaičiuosime integralą I=xdxcos2x. Jis apskaičiuojamas pagal u𝖽v=uvv𝖽u formulę, tarus, kad u=x,dv=dxcos2x. Tada du=dx, v=tg x,
I=xtanxtanxdx=xtanxsinxdxcosx=xtanx+d(cosx)cosx=xtanx+ln|cosx|+C.


  • I=x2+a2dx. Tada u=x2+a2,du=xx2+a2dx,dv=dx,v=dx=x;
I=x2+a2dx=uvvdu=xx2+a2x2x2+a2dx=xx2+a2(x2+a2)a2x2+a2dx=
=xx2+a2x2+a2dx+a2dxx2+a2=xx2+a2x2+a2dx+a2ln(x+x2+a2).
I=xx2+a2I+a2ln(x+x2+a2).
Taigi dešinėje pusėje gavome pradinį integralą, kurį perkėlę į kairiąją pusę, turėsime:
2I=xx2+a2+a2ln(x+x2+a2).
Todėl x2+a2dx=x2x2+a2+a22ln(x+x2+a2)+C.
Analogiškai gautume:
x2a2dx=x2x2a2a22ln(x+x2a2)+C.


  • xlnxdx. Darome keitinį t=x. Tada t2=x,2tdt=dx. Tuomet turime:
xlnxdx=tln(t2)2tdt=2t2ln(t2)dt=4t2lntdt.
Tokį integralą integruoti dalimis jau mokame. Pažymime u=lnt,dv=t2dt,du=dtt,v=t2dt=t33. Tada
4t2lntdt=4(uvvdu)=4(t33lntt33dtt)=4(t33lnt13t2dt)=
=4(t33lntt39)+C=4x323lnx4x329+C=2x323lnx4x329+C.


  • xlnxdx. Išintegruosime tokį integralą dalimis iš karto.
Pažymime u=lnx,dv=xdx,du=dxx,v=x1/2dx=x3/23/2=23x3/2. Tada
xlnxdx=(uvvdu)=23x3/2lnx23x3/2dxx=23x3/2lnx23x1/2dx=
=23x3/2lnx23x3/23/2+C=23x3/2lnx49x3/2+C.

Rekurentinė formulė (neprofesionalams)

Mums prireiks tokio integralo
xdx(x2+1)n,n1
išintegravimas (integruojant keičiant kintamąjį).
Sprendimas. Pažymėję x2+1=t,2xdx=dt; tada
xdx(x2+1)n=12dttn=12(n1)1tn1+C=12(n1)1(x2+1)n1+C.(1.1)
Kai n = 1, analogiškai gauname
xdxx2+1=12dtt=12ln(x2+1)+C.(1.2)


Apskaičiuosime integralą
In=dx(x2+1)n
(n - sveikasis teigiamas skaičius), kuris prireikia Racionaliųjų funkcijų integravime. Kai n = 1, turime integralų lentelės integralą
I1=arctanx+C.
Tegu n > 1. Išreiškę 1 skaitiklyje kaip skirtumą (x2+1)x2, gausime
In=dx(x2+1)n1x2dx(x2+1)n.
Antrame integrale taikysime integravimo dalimis metodą:
u=x,du=dx,dv=xdx(x2+1)n,v=xdx(x2+1)n=1(2n2)(x2+1)n1
(v radome pagal (1.1) integravimą).
Tada (pagal u𝖽v=uvv𝖽u)
x2dx(x2+1)n=x(2n2)(x2+1)n1+dx(2n2)(x2+1)n1,
toliau,
In=In1+x(2n2)(x2+1)n112n2In1,
iš čia
In=x(2n2)(x2+1)n1+2n32n2In1.
Tokiu budu, integralas In išreikštas per In1:
dx(x2+1)n=x(2n2)(x2+1)n1+2n32n2dx(x2+1)n1(n>1).(3)
Formulės tipo (3) vadinasi rekurentinėmis formulėmis.


  • Pavyzdys. Apskaičiuoti dx(x2+1)3.
Sprendimas. Pagal rekurentinę formulę (3) turime
dx(x2+1)3=x(232)(x2+1)2+233232dx(x2+1)2=x4(x2+1)2+34dx(x2+1)2,
dx(x2+1)2=x(222)(x2+1)+223222dxx2+1=x2(x2+1)+12dxx2+1,
o
I1=dxx2+1=arctanx,
todėl galutinai turime
dx(x2+1)3=x4(x2+1)2+3x8(x2+1)+38arctanx+C.

Rekurentinė formulė (profesionalams)

Apskaičiuosime labai svarbų tolesniam dėstymui (racionaliųjų funkcijų integravimui) integralą Kλ=dt(t2+a2)λ, kai a=const,λ=1,2,3,...
Išvesime rekurentinę formulę, pagal kurią integralo Kλ skaičiavimas pakeičiamas Kλ1 skaičiavimu.
Galima rašyti (kai λ1)
Kλ=1a2a2dt(t2+a2)λ=1a2[(t2+a2)t2]dt(t2+a2)λ=
=1a2dt(t2+a2)λ112a2t2tdt(t2+a2)λ=1a2Kλ112a2td(t2+a2)(t2+a2)λ.
Paskutinį integralą apskaičiuosime pagal dalinio integravimo formulę, tarę, kad u=t,dv=d(t2+a2)(t2+a2)λ. Gausime du=dt,v=1(λ1)(t2+a2)λ1,
td(t2+a2)(t2+a2)λ=t(λ1)(t2+a2)λ1dt(λ1)(t2+a2)λ1=t(λ1)(t2+a2)λ1+1λ1dt(t2+a2)λ1,
Kλ=1a2Kλ1+t2a2(λ1)(t2+a2)λ112a2(λ1)Kλ1.
Iš šios lygybės gauname rekurentinę formulę
Kλ=t2a2(λ1)(t2+a2)λ1+1a22λ32λ2Kλ1.(6.12)
Įsitikinsime, kad pagal (6.12) rekurentinę formulę galima apskaičiuoti integralą Kλ su bet kokiu λ=2,3,... Iš tikrųjų integralas K1 apskaičiuojamas paprastai:
K1=dtt2+a2=1a2dtt2a2+1=1ad(ta)(ta)2+1=1aarctanta+C,
kur d(ta)=dta,ad(ta)=dt.
Apskaičiavę integralą K1, (6.12) formulėje rašome λ=2 ir nesunkiai apskaičiuojame K2. Savo ruožtu, žinodami K2, (6.12) formulėje rašome λ=3 ir apskaičiuojame K3. Taip tęsdami, apskaičiuosime integralą Kλ su bet kokiu natūriniu λ.


  • Pavyzdys 1. Apskaičiuoti K3=dt(t2+a2)3.
Sprendimas. Pagal rekurentinę formulę (6.12) turime
K3=t2a2(31)(t2+a2)31+1a2233232K2=t4a2(t2+a2)2+1a234K2,
K2=t2a2(21)(t2+a2)21+1a2223222K1=t2a2(t2+a2)+1a212K1,
K1=1aarctanta.
Tada
K3=t4a2(t2+a2)2+1a234(t2a2(t2+a2)+1a2121aarctanta)+C=
=t4a2(t2+a2)2+34a2(t2a2(t2+a2)+12a3arctanta)+C=
=t4a2(t2+a2)2+3t8a4(t2+a2)+38a5arctanta+C.


  • Pavyzdys 2. Apskaičiuoti K4=dt(t2+a2)4.
Sprendimas. Pagal rekurentinę formulę (6.12) gauname
K4=t2a2(41)(t2+a2)41+1a2243242K3=t6a2(t2+a2)3+1a256K3=
=t6a2(t2+a2)3+56a2(t4a2(t2+a2)2+3t8a4(t2+a2)+38a5arctanta)+C=
=t6a2(t2+a2)3+5t24a4(t2+a2)2+15t48a6(t2+a2)+1548a7arctanta+C=
=t6a2(t2+a2)3+5t24a4(t2+a2)2+5t16a6(t2+a2)+516a7arctanta+C.
Čia K3 integralo reikšmę paėmėme iš pirmo pavyzdžio.


  • Pavyzdys 3. Apskaičiuosime integralą dt(t2+a2)4, kai t kinta nuo 0 iki 6, o a=8. Pasinaudosime antru pavyzdžiu.
S=06dt(t2+a2)4=[t6a2(t2+a2)3+5t24a4(t2+a2)2+5t16a6(t2+a2)+516a7arctanta]06=
=[6682(62+82)3+562484(62+82)2+561686(62+82)+51687arctan68][0+51687arctan0]=
=[164(36+64)3+544096(36+64)2+538262144(36+64)+5162097152arctan34]0=
=1641003+5163841002+152097152100+533554432arctan(0.75)=
=164000000+5163840000+15209715200+50.643501108793284386833554432=
=0.00000011766815185546875+50.643501108793284386833554432=
=0.00000011766815185546875+9.5889137505484281108=
=2.1355728936095303100389379690846e-7=
=2.13557289360953031107.
Toks Free Pascal kodas:
  var a:longint; c:real;
  begin
  for a:=1 to 1000000000  do
  c:=c+0.000000006/(sqr(sqr(sqr(a*0.000000006)+64)));
  writeln(c);
  readln;
  end.
Duoda rezultatą "2.1355728921217064E-007" (kas reiškia 2.1355728921217064107) po 14 sekundžių su 4.16 GHz dažniu veikiančiu procesoriumi (kažkaip pirmus 2 kartus paleidus, duoda rezultatą po 29 sekundžių, o kai trečią ir daugiau kartų leidi FP šitą kodą, tai duoda po 14 sekundžių atsakymą). Kode sqr(x) reiškia x2. Kad išeiti iš Free Pascal juodo lango (su atsakymu), reikia du kartus paspausti klaviaturos klavišą "Enter" (tada sugrįštama į kodo mėlyną ekraną-langą).
Pažiūrėjau, kad ir kitus kodus pirmus 2 kartus ilgiau skaičiuoja, o trečią, ketvirtą ir t. t. greičiau skaičiuoja. Pavyzdžiui, pusę rutulio su spinduliu R=6 tūrio kodą skaičiuoja pirmus du kartus 20 sekundžių, o trečią ir velesnius kartus skaičiuoja per 7-8 sekundes (anksčiau pasirodė, kad tik pirmą kartą ilgiau, nes, kad compile'ina galvojau pirmą kartą ilgiau, o čia pasirodo ir antrą kartą ilgiau...).
Update 1. Paskui vėl pradėjo Free Pascal skaičiuoti visus kodus tik pirmą kartą ilgiau. Bet va dabar pirmą kartą šitą kodą skaičiavo maždaug 1 minutę ir 55 sekundes. O antrą ir trečią kartą skaičiavo per tą patį laiką - per 14 sekundžių. Gal dabar interneto naršyklė (Opera) apkrauta dėl to pirmą kartą taip ilgai skaičiuoja...
Toks Free Pascal kodas:
  var a:longint; c:real;
  begin
  for a:=1 to 100000000  do
  c:=c+0.00000006/sqr(sqr(sqr(a*0.00000006)+64));
  writeln(c);
  readln;
  end.
Duoda rezultatą "2.1355728787276117E-007" po maždaug 17 sekundžių per pirmus 2 kartus ir po 2 sekundžių trečią, ketvirtą ir velesnius kartus (paleidus) su 4.16 GHz dažniu veikiančiu procesoriumi. Šitame kode procesoriui reikia skaičiuoti 10 kartų mažiau (nei ankstesneme kode) ir gaunamas truputi mažiau tikslus atsakymas (vienu teisingu skaitmeniu mažiau). Tai galima daryti išvada, kad pirmus du kartus (paleidus šitą kodą) "Free Pascal" programa kažką neadekvačiai daro ir/ar skaičiuoja.

Taip pat skaitykite