Gryno formulė

Iš testwiki.
Pereiti į navigaciją Jump to search

Gryno formulė nustato ryšį tarp dvilypio integralo ir kreivinio integralo antrojo tipo.

D(Q(x,y)xP(x,y)y)𝐝x𝐝y=LP(x,y)𝐝x+Q(x,y)𝐝y.

Pavyzdžiai

  • Su Gryno formule apskaičiuosime kreivinį integralą L(xy)dx+(x+y)dy, kur L - apskritimas x2+y2=R2.
Funkcijos P(x,y)=xy,Q(x,y)=x+y ir Py=1,Qx=1 netrūkios uždarame rate x2+y2=R2. Todėl pagal Gryno teoremą turime (ρ2=R2, ρ=R):

L(xy)dx+(x+y)dy=D[1(1)]dxdy=2Ddxdy=2s=202πdϕ0Rρdρ= =02πρ2|0Rdϕ=R202πdϕ=R2ϕ|02π=2πR2.

Patikrinimas. Iš apskritimo lygties x2+y2=R2 gauname:
y=R2x2,
x=R2y2.
Todėl
P(x,y)=xy=xR2x2,
Q(x,y)=x+y=R2y2+y.
Pasinaudodami internetiniu integratoriumi, gauname, kad
L(xy)dx+(x+y)dy=RR(xR2x2)dx+RR(R2y2+y)dy=
(12xR2x2+12R2arctanxR2x2x2R2+x22)|RR+12(y(R2y2+y)+R2arctanyR2y2)|RR=
(12RR2R2+12R2arctanRR2R2R2R2+R22)(12(R)R2(R)2+12R2arctanRR2(R)2(R)2R2+(R)22)+
+12(R(R2R2+R)+R2arctanRR2R2)12(R(R2(R)2R)+R2arctanRR2(R)2)=
(12R2arctan()+R22)(12R2arctan()+R22)+
+12(R(0+R)+R2arctan())12(R(0R)+R2arctan())=
=(12R2π/2+R22)(12R2(π/2)+R22)+
+12(R2+R2π/2)12(R2+R2(π/2))=
=R2π/2+R2π/2=πR2.
Riba limxRarctanxR2x2x2R2=limxRarctanxx2R2=limz0arctanRz=arctan()=π/2. Beje, arctan(0)=0;arctan()=π/2.
Patikrinimo atsakymas gautas du kartus mažesnis, todėl kyla abejonių dėl Gryno formulės prasmės.
Kitoks patikrinimas. Iš apskritimo lygties x2+y2=R2 gauname:
y=Rsin(t),
x=Rcos(t);
dy=Rcos(t)dt,
dx=Rsin(t)dt.
Todėl
P(x,y)=xy=Rcos(t)Rsin(t),
Q(x,y)=x+y=Rcos(t)+Rsin(t).
Pasinaudodami internetiniu integratoriumi, gauname, kad
L(xy)dx+(x+y)dy=R202π(cos(t)sin(t))sin(t)dt+R202π(cos(t)+sin(t))cos(t)dt=
R24(2xsin(2x)+cos(2x)+1)|02π+R24(2x+sin(2x)cos2(2x))|02π=
R24(22πsin(22π)+cos(22π)+1)R24(20sin(20)+cos(20)+1)+R24(22π+sin(22π)cos2(22π))R24(20+sin(20)cos2(20))=
R24(4πsin(4π)+cos(4π)+1)R24(0sin(0)+cos(0)+1)+R24(4π+sin(4π)cos2(4π))R24(0+sin(0)cos2(0))=
=R24(4π0+1+1)R24(00+1+1)+R24(4π+012)R24(0+012)=
=R24(4π+2)R242+R24(4π1)+R24=
=R2(π+1212+π14+14)=
=2πR2.


  • Taikydami Gryno formulę, apskaičiuokime kreivinį integralą

Lxydx+(x2+y2)dy, kai L - apskritimas x2+y2=ax (a>0), apeinamas teigiama kryptimi. Kadangi skritulyje x2+y2ax funkcijos P(x,y)=xy ir Q(x,y)=x2+y2 bei jų dalinės išvestinės Py=x ir Qx=2x yra tolydžios, tai duotajam kreiviniam integralui galima taikyti Gryno formulę. Turime: Lxydx+(x2+y2)dy=D(2xx)dxdy=Dxdxdy. Dvilypį integralą pakeisime kartotiniu polinėje koordinačių sistemoje, turėdami galvoje, kad apskritimas apeinamas teigiama kryptimi (prieš laikrodžio rodykle). Tuomet kampas ϕ kinta nuo π2 iki π2. Vadinasi (x=ρcosϕ, ρ2=aρcosϕ, ρ=acosϕ), Dxdxdy=Dρ2cosϕdρdϕ=π2π2cosϕdϕ0acosϕρ2dρ=π2π2cosϕρ33|0acosϕdϕ= =a33π2π2cos4ϕdϕ=2a330π2cos4ϕdϕ=2a333!!4!!π2=πa38, kur pasinaudojome dvigubu faktorialu.


  • Taikydami Gryno formulę, apskaičiuokime kreivinį integralą

Lxy𝐝x+(x2+y2)𝐝y, kai L - apskritimas x2+y2=ax (a>0), apeinamas teigiama kryptimi (prieš laikrodžio rodyklę).

Kadangi skritulyje x2+y2ax funkcijos P(x,y)=xy ir Q(x,y)=x2+y2 bei jų dalinės išvestinės Py=x ir Qx=2x yra tolydžios, tai duotajam kreiviniam integralui galima taikyti Gryno formulę.
Turime:
Lxydx+(x2+y2)dy=D(2xx)dxdy=Dxdxdy.
Randame apskritimo y išraišką:
x2+y2=ax,
y2=axx2,
y=axx2.
Randame y išvestinę, o paskui ir dy:
y=dydx=(axx2)=(axx2)2axx2=a2x2axx2;
dy=a2x2axx2dx.
Apskritimo spindulys R=a2, nes pavyzdžiui, kai a=3, tai x2+y2=3x. Žinome, kad šis apskritimas liečiasi koordinačių pradžios taške O(0; 0) ir kad ašis Ox dalina apskritimą pusiau. Vadinasi, kai x=0 ir y=0, tai gauname teisingą lygybę 02+02=30. Vadinasi taškas (0; 0) priklauso apskritimui x2+y2=3x. Kitas apskritimo taškas yra (3; 0), kuris yra ant Ox ašies. Įstačius taško (3; 0) koordinates į apskritimo lygtį x2+y2=3x gauname 32+02=33. Žinome, kad taškas (3; 0) yra toliausias taškas ant Ox ašies. Todėl apskritimo x2+y2=3x spindulys yra R=32=a2.
Kadangi apskritimo x2+y2=ax spindulys yra R=a2 ir Ox ašis dalina apskritimą per pusę, tai didžiausia y reikšmė gali būti R=a2. Vadinasi integravimas vyksta pirmame ir ketvirtame ketvirčiuose. Bet, kadangi, skritulio x2+y2ax plotas yra vienodas ketvirtame ketviryje kaip ir pirmame, tai užtenka apskaičiuoti skritulio plotą tik pirmame ketvirtyje, o paskui gautą plotą padauginti iš dviejų. Kad apskaičiuoti skritulio x2+y2ax plotą pirmame ketvirtyje, turime žinoti integravimo ribas. Nustatome, kad x kinta nuo 0 iki a, o y kinta nuo 0 iki R=a2.
Taikydami Gryno formulę, integruojame (pasinaudodami internetiniu integratoriumi):
Dxdxdy=20ax(0axx2dy)dx=20ax(y|0axx2)dx=20axaxx2dx=
=2x(xa)(3a3arctan(xax)+xax(3a22ax+8x2))24xax|0a=
=3a3arctan(xax)+xax(3a22ax+8x2)12|0a=
=3a3arctan(aaa)+aaa(3a22aa+8a2)123a3arctan(0a0)+0a0(3a22a0+802)12=
=3a3arctana0123a3arctan0a12=3a3arctan(error)123a3arctan(0)12=
=3a3arctan()123a3012=3a3π2120=3a3π24=a3π8.
Pasitikriname (įstatydami y ir dy ir pasinaudodami internetiniu integratoriumi):
Lxydx+(x2+y2)dy=Lxaxx2dx+(x2+(axx2)2)a2x2axx2dx=
=20a(xaxx2+(x2+(axx2)2)a2x2axx2)dx=
=20a(xaxx2+(x2+axx2)a2x2axx2)dx=
=20a(xaxx2+ax(a2x)2axx2)dx=
=20a(xaxx2+a2x2ax22axx2)dx=
=20a2x(axx2)+a2x2ax22axx2dx=
=20a2ax22x3+a2x2ax22axx2dx=
=0a2x3+a2xaxx2dx=0ax(a22x2)axx2dx=
=13axx2(3a2+4ax+2x2)|0a=
=13aaa2(3a2+4aa+2a2)13a002(3a2+4a0+202)=
=130(3a2+4a2+2a2)130(3a2+0+0)=00=0.
Pastaba, kad taip gauname dalyba iš nulio ir neįmanoma vietomis išintegruoti įstatant a arba 0. Bet gauname kažką panašesnio į teisingą atsakymą:
=0a2x3+a2xaxx2dx=
=x(3a3+7a2x2ax28x3)3a3xaxarctanxax12x(xa)|0a=
=(x(3a3+7a2x2ax28x3)12x(ax)3a3x(ax)arctanxax12x(ax))|0a=
=(x(3a3+7a2x2ax28x3)12x(ax)3a3arctanxax12)|0a=
=(x(3a3+7a2x2ax28x3)12axa3arctanxax4)|0a.
Toliau pasinaudojame internetiniu polinomų dalikliu parinkę a=3 gauname (3a3+7a2x2ax28x3)/(ax)=(8x36x2+63x+81)/(x+3)=8x2+30x+27. Toliau integruojame:
(x(3a3+7a2x2ax28x3)ax12(ax)a3arctanxax4)|0a=
=(x(333+732x23x28x3)3x12(3x)33arctanx3x4)|03=
=((8x36x2+63x+81)x(3x)12(x+3)27arctanx3x4)|03=
=((8x2+30x+27)x(3x)1227arctanx3x4)|03=
=((832+303+27)3(33)1227arctan3334)((802+300+27)0(30)1227arctan0304)=
=((72+90+27)301227arctan304)(027arctan(0)4)=
=(027arctan()4)(2704)=
=(27π24)0=27π8.
Kadangi a3=33=27, tai seniau gautas atsakymas a3π8 įstačius a=3 atitinka ir iš to darome išvada, kad Gryno formulė veikia teisingai (išskyrus minusiuką).

Ploto apskaičiavimas

Plotui apskaičiuoti ploksčios srities naudojamos tokios formulės: D=Lydx=Lxdy=12Lxdyydx. Jos išvedamos šitaip:

D(QxPy)dxdy=LPdx+Qdy.
  • Pritaikysim Gryno formulę apskaičiavimui srities D (ploksčios figūros ploto). Jei P(x,y)=y, Q(x,y)=0. Tada Py=1,Qx=0. Pagal formulę turime:

D(0+1)dxdy=Lydx+0dy. Integralas Ddxdy lygus paaviršiui srities D , todėl, D=Ddxdy=Lydx.

  • Sakykime P(x,y)=0, Q(x,y)=x, analoginiu budu randame, kad

D=Lxdy.

  • Ir, pagaliau, paėmę funkcijas P(x,y)=12y,Q(x,y)=12x, gauname formulę

D=D(12+12)dxdy=Ddxdy=12Lxdyydx.


Pavyzdžiai

  • Apskaičiuosime plotą apribotą elipse x2a2+y2b2=1, pagal formulę D=Lxdy. Panaudoję parametrinę lygtį elipsės: x=acost, y=bsint, 0t2π, dy=bcost, gauname:

D=Lxdy=02πacostbcostdt=ab202π(1+cos(2t))dt=ab2(2π+sin(2t)2|02π)=πab.


  • Apskaičiuosime plotą figuros apribotos elipse pagal formulę s=Ddxdy=12Lxdyydx.
Sprendimas. Pasinaudoję parametrinėmis elipsės lygtimis x=acost, y=bsint, 0t2π, turime: dx=asintdt, dy=bcostdt, ir pagal formulę gauname
s=12Lxdyydx=
=1202π(acostbcostbsint(asint))dt=ab202π(cos2t+sin2t)dt=ab202πdt=ab22π=πab.

Jėgos darbas

Jėgos darbas padarytas judant kreive plokštumoje apskaičiuojamas pagal formulę A=BCPdx+Qdy. Jėgos darbas padarytas judant erdvine kreive apskaičiuojamas taip: A=BCPdx+Qdy+Rdz.

  • Apskaičiuosime darbą jėgos F(x,y) persikeliant materialiam taškui elipse teigiama kryptimi, jeigu jėga kiekviename taške (x; y) elipsės nukreipta į elipsės centrą ir pagal dydį lygi atstumui nuo taško (x; y) iki elipsės centro.
Pagal sąlyga, |F(x,y)|=x2+y2; Jėgos F(x, y) koordinatės tokios: P=x, Q=y [ženklas "" paaiškinamas tuo, kad jėga nukreipta į tašką (0; 0)]. Pagal formulę turime A=Lxdx+ydy, kur L - elipsė x=acost,y=bsint, 0t2π. Todėl

A=02πacost(asint)dt+bsin(t)bcos(t)dt=02π(b2a2)sin(t)costdt= =a2b2202πsin(2t)dt=a2b24(cos(2t))|02π=0.

Jei t keistusi nuo 0 iki π2, integralas butu lygus
a2b24(cos(2t))|0π2=a2b24(cos(2π2))a2b24(cos(20))=
=a2b24(cosπ+cos(0))=a2b24((1)+1)=a2b22.
Tarkime, jei a=5,b=3, tai padarytas darbas pirmame ketvirtyje yra A=a2b22=52322=2592=162=8.
Kad patikrinti ar apskaičiuota teisingai reikia sudėti visas x reikšmes ant elipsės linijos pirmame ketvirtyje. Taip pat reikia sudėti visas y reikšmes ant elipsės linijos pirmame ketvirtyje. Galiausiai reikia sudėti sumas x ir y reikšmių, kad gauti darbą A pirmame ketvirtyje.
Arba tiesiog darbas yra lygus A=1100n=1100xn2+yn2; čia xn yra visos x reikšmės ant elipsės linijos pirmame ketvirtyje nuo 0 iki a; analogiškai yn yra visos y reikšmės ant elipsės linijos pirmame ketvirtyje nuo 0 iki b.
Kuris iš šių variantų yra darbas A, paaiškės pasumavus ir paskaičiavus. Sutapimas ar ne, bet A=3+5=8 pagal pirmą variantą. Na, o pagal antrą variantą turime:
A=510n=110(n(3/10))2+((10n)(5/10))2=
A=(0.32+52+0.62+4.52+0.92+42+1.22+3.52+1.52+32+
+1.82+2.52+2.12+22+2.42+1.52+2.72+12+32+0.52)/10=
=5(5.0089919+4.539823785+4.1+3.7+3.354101966+
+3.08058436+2.9+2.83019434+2.879236+3.041381265)/10=
=535.43431361/10=17.717156805.
Iš tikro, ko gero, mes apskaičiuojame tokiu budu ne darbą atlikta apeinant elipsės liniją pirmame ketvirtyje, o darbą atlikta apeinant tiesę pirmame ketvirtyje. Štai kodas programos "Free Pascal" (FreePascal IDE for Win32 for i386; Target CPU: i386; Version 1.0.12 2011/04/23; <Compiler Version 2.4.4>; <Debugger GDB 7.2>; Copyright <C> 1998-2009):
    var
    a:longint;
    c:real;
    begin
      for a:=1 to 10
      do
      c:=c+0.5*sqrt(sqr(a*0.3)+sqr((11-a)*0.5));
      writeln(c);
    readln;
    end.
gauname A=17.7171568203085.
Panaudojus šį kodą:
   var
   a:longint;
   c:real;
   begin
   for a:=1 to 1000000000  do
   c:=c+0.000000005*sqrt(sqr(a*0.000000003)+sqr((1000000001-a)*0.000000005));
   writeln(c);
   readln;
   end.
gauname atsakymą A=16.4328975236327 po 22 sekundžių ant 2.6 GHz procesoriaus.
Panaudojus šį (teisingesnį) kodą:
   var
   a:longint;
   c:real;
   begin
   for a:=0 to 1000000000  do
   c:=c+sqrt(sqr(a*0.000000003)+sqr((1000000000-a)*0.000000005))/1000000001;
   writeln(5*c);
   readln;
   end.
gauname atsakymą A=16.4328975142850 po 25 sekundžių ant 2.6 GHz procesoriaus.
Integruojant gauname:
A=05x2+(33x5)2dx=
=1340(34x45)34x290x+2251125arcsinh(3534x75)6834|05=
=345453403452905+2251125arcsinh(3534575)6834(340453403402900+2251125arcsinh(3534075)6834)=
=17045340850450+2251125arcsinh(3517075)6834(453402251125arcsinh(35)6834)=
=1253406251125arcsinh(3751705575)6834(968151125arcsinh(0.6)396.50472884948)=
=2568251125arcsinh(225850375)396.50472884948(1356811250.5688248987396.50472884948)=
=625681125arcsinh(625375)396.50472884948(13568639.928011396.50472884948)=
=9.191176471125arcsinh(53)396.50472884948(1.985294121.613922772)=
=9.191176471125(1.283795663)396.50472884948(3.599216892)=
=9.19117647+3.642504151+3.599216892=16.43289751.
Apskaičiuojame viską nepriekaištingai tiksliai su kompiuterio kalkuliatoriumi:
A=625681125arcsinh(5/3)6834(135681125arcsinh(3/5)6834)=
=12.833680621236990323769396193322(3.5992168895913637545005254840611)=16.432897510828354078269921677383.
Toliau bandome rasti atlikta darbą apeita tiese y=33x5 integruojant A=Lxdx+ydy. Randame dy=35dx. Turime, kad x integravimo ribos yra 0 iki 5, o y integravimo ribos yra nuo 0 iki 3. Gauname:
A=Lxdx+ydy=(05xdx35(33x5)dx)=05(x35(33x5))dx=
=05(x95+9x25)dx=05(95+25x+9x25)dx=05(34x2595)dx=
=(34x225295x)|05=[(175225955)(170225950)]=(179)=8.
Pastebime, kad jeigu elipsė būtų apskritimas tai pirmame ketvirtyje atliktas darbas A=0. Taip yra todėl, kad kai x didėja, tada y reikšmės mažėja. Todėl skaičiuoti darbą, ko gero, galėtų būti teisingiau A=Lxdxydy arba A=Lxdx+ydy. Tuomet akivaizdu, kad A=a2+b22=52+322=17.
Tą patį darba gauname ir apeinant tiese:
A=Lxdxydy=05xdx35(33x5)dx=05(x+35(33x5))dx=
=05(x+959x25)dx=05(95+25x9x25)dx=05(16x25+95)dx=
=(16x2252+95x)|05=(85225+955)(170225+950)=8+9=17.
Lygiai tą patį darbą gausime ir integruojant taip:
A=Lxdxydy=05xdx+03ydy=x22|05+y22|03=252+92=17.
Tą patį gausime ir taip integruojant nuo 0 iki 5:
A=F𝐝F=05x2+(33x5)2𝐝(x2+(33x5)2)=
=05x2+(33x5)20.5(x2+(33x/5)2)0.5(2x+2(33x/5)(0.6))dx=
=05x2+(33x5)2(x2+(33x/5)2)0.5(x0.6(33x/5)dx=
=05x2+(33x5)2(x1.8+0.36x)x2+(33x/5)2dx=
=05(1.36x1.8)dx=(1.36x221.8x)|05=
=[(0.68x1.8)x]|05=(0.6851.8)5=(3.41.8)5=1.65=8.


  • Nustatyti tiesės y=33x5 masę tik pirmame ketvirtyje. Tiesės tankis γ tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja proporcingai, t. y. γ=x2+y2.
Sprendimas. Pasinaudosime masės skaičiavimo formule
m=Lγ1+[y]2dx=05x2+y21+[y]2dx=
=05x2+(33x5)21+(35)2dx=
=05x2+918x5+9x2251+925dx=
=05918x5+34x2253425dx=
=345053425x2185x+9dx=
=345051.36x23.6x+9dx=
=345(3.6+21.36x41.361.36x23.6x+9+41.369(3.6)281.363/2ln|21.36x3.6+21.36(1.36x23.6x+9)|)|05=
=345(3.6+2.72x5.441.36x23.6x+9+48.9612.9682.5154561/2ln|2.72x3.6+21.36(1.36x23.6x+9)|)|05=
=345(3.6+2.72x5.441.36x23.6x+9+3612.68815132ln|2.72x3.6+21.36(1.36x23.6x+9)|)|05=
=345(3.6+2.7255.441.36253.65+9+2.8372927689ln|2.7253.6+21.36(1.36253.65+9)|)
345(3.6+2.7205.441.36023.60+9+2.8372927689ln|2.7203.6+21.36(1.36023.60+9)|)=
=345(105.443418+9+2.8372927689ln|13.63.6+21.36(3418+9)|)
345(3.65.449+2.8372927689ln|3.6+21.369|)=
=345(105.4425+2.8372927689ln|10+21.3625|)345(3.65.443+2.8372927689ln|3.6+212.24|)=
=345(505.44+2.8372927689ln|10+234|)345(10.85.44+2.8372927689ln|3.6+212.24|)=
=345(9.191176471+2.8372927689ln|21.66190379|)345(10.85.44+2.8372927689ln|3.6+212.24|)=
=345(9.191176471+8.726250336)345(1.985294118+3.469823414)=
=34517.917426813451.484529296=16.43289751345=19.16388698.
Kad tą patį apskaičiuoti su programa "Free Pascal" reikia surasti tiesės ilgį, kai x kinta nuo 0 iki 5 (tai yra tiesės ilgis tik pirmame ketviryje):
l=52+32=25+9=34=5.830951895.
Todėl "Free Pascal" kodas yra toks:
  var
  a:longint;
  c:real;
  begin
  for a:=1 to 1000000000  do
  c:=c+sqrt(sqr(a*0.000000003)+sqr((1000000001-a)*0.000000005));
  writeln(sqrt(sqr(3)+sqr(5))*c/1000000000);
  readln;
  end.
duodantis rezultatą 19,163886990613093 po 18 sekundžių su 2,6 GHz procesoriumi.


  • Nustatyti parabolės y=x2 masę pirmame ketvirtyje, kai x kinta nuo 0 iki 10. Tiesės tankis γ tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja proporcingai, t. y. γ=x2+y2.
Sprendimas.
Integruojame (pasinaudodami integralų lentelės (31) formule):
p=010(x)2+(x2)2dx=010x2+x4dx=010x1+x2dx=
=13(x2+1)3/2|010=13(102+1)3/213(02+1)3/2=
=13(101)3/213=13103030113=
=338,01247924440330576404858539624.
Toliau, kad surasti kreivės masę (kai kiekviename kreivės taške tankis priklauso nuo tam tikros funkcijos), skaičiuojame:
m=010γ1+[y]2dx=010x2+y21+[(x2)]2dx=010x2+(x2)21+[2x]2dx=
=010x2+x41+4x2dx=010x1+x21+4x2dx=010x4x4+5x2+1dx.
Toliau integruodami taip arba taip ir įstačius x=1 gauname 1,0565457675431157081260089778614 ir 0,95907194527687339898921071078133 atitinkamai. Kita vertus, integruojant taip ir taip gauname tą patį rezultatą 112x2(8x4+15x2+6). Todėl šį rezultatą ir panaudojame toliau integruodami:
010x4x4+5x2+1dx=112x2(8x4+15x2+6)|010=
=112102(8104+15102+6)0=
=112100(80000+1500+6)=
=11210081506=679216.6667.
Nepriekaištingai tikslus atsakymas yra:
679216,66666666666666666666666667.
Todėl belieka patikrinti ar Wolframo internetinio integratoriaus atsakymas teisingas paėmus išvėstinę ir paskui įstačius x=1 bei palyginti su neišintegruotu reiškiniu:
(112x2(8x4+15x2+6))=(112(8x6+15x4+6x2))=112(48x5+60x3+12x)=4x5+5x3+x=4+5+1=10;
x4x4+5x2+1=4x6+5x4+1=4+5+1=10.
Pasirodo, kad nepridėta šaknis įvedimo formoje į integratorių, bet integruojant taip ir taip gauname tokį patį rezultatą, kuris yra labai sudetingas ir ilgas. Net didžiausioje integralų lentelėje nėra kaip išintegruoti x1+x21+4x2dx. Yra tik a+bxc+pxdx, bet ir tai integravimas gaunasi su dar dviais pažiūrėjimais į integralų lentelę. Todėl pasinaudojame Free Pascal kodu:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+(sqrt(sqr(a*0.00000001)+sqr(sqr(a*0.00000001)))-sqrt(sqr((a-1.0)*0.00000001)+sqr(sqr((a-1.0)*0.00000001))))*sqrt(sqr(a*0.00000001)+sqr(sqr(a*0.00000001)));
writeln(c);
readln;
end.
kuris duoda atsakymą m=5050,00000667382 po 53 sekundžių su 2,6 GHz procesoriumi.
Kai x kinta 0 iki 5, tai integruojant gauname
p=05(x)2+(x2)2dx=05x2+x4dx=010x1+x2dx=
=13(x2+1)3/2|05=13(52+1)3/213(02+1)3/2=
=13(26)3/213=1757613=
=43,858169117804135193577942278197.
Tą patį atsakymą (43,8581691815329) gauname ir pasinaudodami Free Pascal kodu:
 var
 a:longint;
 c:real;
 begin
 for a:=1 to 1000000000  do
 c:=c+sqrt(sqr(5.0*a/1000000000)+sqr(sqr(5.0*a/1000000000)))/1000000000;
 writeln(c*5);
 readln;
 end.
Kad rasti masę, kai x kinta 0 iki 5, pasinaudojame Free Pascal kodu:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+(sqrt(sqr(5.0*a/1000000000)+sqr(sqr(5.0*a/1000000000)))-sqrt(sqr(5.0*(a-1.0)*0.000000001)+sqr(sqr(5.0*(a-1.0)*0.000000001))))*sqrt(sqr(5.0*a/1000000000)+sqr(sqr(5.0*a/1000000000)));
writeln(c);
readln;
end.
kuris duoda atsakymą m=325.000000425112 po 73 sekundžių su 2,6 GHz procesoriumi.
Alternatyvus Free Pascal kodas, kuris skaičiuoja pagal formulę m=05x2+y21+[y]2dx=05x2+(x2)21+(2x)2dx, yra toks:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(1+sqr(2*5.0*a/1000000000))*sqrt(sqr(5.0*a/1000000000)+sqr(sqr(5.0*a/1000000000)));
writeln(5*c/1000000000);
readln;
end
ir duoda atsakymą m=327.860390075605 po 48 sekundžių su 2,6 GHz procesoriumi. Optimizuotas šito kodo variantas:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(1+sqr(0.00000001*a))*sqrt(sqr(0.000000005*a)+sqr(sqr(0.000000005*a)));
writeln(0.000000005*c);
readln;
end.
duoda atsakymą m=327.86039007560539 po 33 sekundžių su 2,6 GHz procesoriumi.
Kitoks kreivės masės apskaičiavimo Free Pascal kodas yra:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(sqr(0.000000005*a-0.000000005*(a-1))+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*sqrt(sqr(0.000000005*a)+sqr(sqr(0.000000005*a)));
writeln(c);
readln;
end.
kuris duoda atsakymą m=327.860389859764 po 41 sekundės su 2,6 GHz procesoriumi. Optimizuotas šito kodo variantas yra kodas:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(sqr(0.000000005)+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*sqrt(sqr(0.000000005*a)+sqr(sqr(0.000000005*a)));
writeln(c);
readln;
end
kuris duoda atsakymą m=327.860389859763 po 38 sekundžių su 2,6 GHz procesoriumi. Dar labiau optimizuotas šito kodo variantas yra:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(0.000000000000000025+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*sqrt(sqr(0.000000005*a)+sqr(sqr(0.000000005*a)));
writeln(c);
readln;
end.
kuris duoda atsakymą m=327.860389859763 po 38 sekundžių su 2,6 GHz procesoriumi (vadinasi, Free Pascal automatiškai optimizuoja kodą pakeldamas konstantą 0,000000005 kvadratu ir visoms iteracijoms naudodamas gautą 0,000000000000000025 reikšmę).


  • Nustatyti parabolės y=x2 masę pirmame ketvirtyje, kai x kinta nuo 0 iki 10. Tiesės tankis γ tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja proporcingai tik Ox kryptimi, t. y. γ=x.
Sprendimas. Greičiausias būdas apskaičiuoti, tai ko reikalauja sąlyga (uždavinys) yra toks:
m=010xdx=x22|010=1022022=50.
Kitas būdas yra toks:
m=010γ1+[y]2dx=010x1+(2x)2dx=010x1+4x2dx=
=0102x14+x2dx=23(x2+14)3/2|010=
=23(102+14)3/223(02+14)3/2=
=23100.253/223(12)3=
=669,16822851623458973388183928978 - (2/3)*(1/8)=
=669,16822851623458973388183928978 - 1/12=
=669,08489518290125640054850595645;
čia pasinaudojome integralų lentele xx2±a2dx=13(x2±a2)3/2.
Tuo atveju, jeigu x kinta nuo 0 iki 5 tada:
m=05γ1+[y]2dx=05x1+4x2dx=205x14+x2dx=
=23(52+14)3/223(02+14)3/2=
=2325.253/223(12)3=
=84,586453144434159774345479682393-1/12=
=84,50311981110082644101214634906.
Free Pascal kodas duodą tokį patį rezultatą (kai x kinta nuo 0 iki 5):
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(sqr(0.000000005)+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*0.000000005*a;
writeln(c);
readln;
end.
m=84,5031198757743 po 25 sekundžių su 2,6 GHz procesoriumi.
Alternatyvus Free Pascal kodas, skaičiuojantis pagal formulę m=05γ1+[y]2dx=05x1+4x2dx yra šitas:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(1+4*sqr(5.0*a/1000000000))*a*5/1000000000;
writeln(c*5/1000000000);
readln;
end.
duodantis atsakymą m=84,5031199367086 po 25 sekundžių su 2,6 GHz procesoriumi. Optimizuotas jo variantas:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(1+4*sqr(5.0*a/1000000000))*a;
writeln(c*sqr(5/1000000000));
readln;
end.
duoda atsakymą m=84,503119936731021 po 23 sekundžių su 2,6 GHz procesoriumi. Dar labiau optimizuotas jo variantas:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+sqrt(1+4*sqr(0.000000005*a))*a;
writeln(c*sqr(5/1000000000));
readln;
end.
duoda atsakymą m=84,503119936731021 po 17 sekundžių su 2,6 GHz procesoriumi (vadinasi, 1000000000 dalybos operacijų padaroma per 23-17=6 sekundes su 2,6 GHz procesoriumi; tačiau panaudojus šį kodą:
var
a:longint;
c:real;
begin
for a:=1 to 1000000000  do
c:=c+1/a;
writeln(c);
readln;
end.
gauname atsakymą 21,3004815025070 po 8 sekundžių su 2,6 GHz procesoriumi (beje, 11091xdx=ln(109)ln(1)=9ln(10)0=20.7232658369464)).


  • Nustatyti parabolės y=x2 masę pirmame ketvirtyje, kai x kinta nuo 0 iki 5. Tiesės tankis γ tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja proporcingai Ox kryptimi ir Oy kryptimi, t. y. γ=x+y.
Sprendimas.
y=(x2)=2x;
m=05γ1+[y]2dx=05(x+y)1+[y]2dx=05(x+x2)1+4x2dx=205x(1+x)14+x2dx;
Toliau pasinaudodami Wolframo internetiniu integratoriumi gauname, kad:
m=05(x+x2)1+4x2dx=(1964x2+1(24x3+32x2+3x+8)164arcsinh(2x))|05=
=(196452+1(2453+3252+35+8)164arcsinh(25))(196402+1(2403+3202+30+8)164arcsinh(20))=
=(196101(24125+3225+15+8)164arcsinh(10))(19618164arcsinh(0))=
=(196101(3000+800+15+8)164arcsinh(10))(112164arcsinh(0))=
=(382396101164arcsinh(10))(112164arcsinh(0))=
=(400,21535937026211982341926834875-0,04684723359840577716947805527494)-(0,08333333333333333333333333333333-0)=
=400,16851213666371404624979029348-0,08333333333333333333333333333333=400,08517880333038071291645696014.
Free Pascal kodas:
 var
 a:longint;
 c:real;
 begin
 for a:=1 to 1000000000  do
 c:=c+sqrt(sqr(0.000000005)+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*(0.000000005*a+sqr(0.000000005*a));
 writeln(c);
 readln;
 end.
duoda atsakymą m=400,085179290551 po 27 sekundžių su 2,6 GHz procesoriumi.


  • Nustatyti parabolės y=x2 masę pirmame ketvirtyje, kai x kinta nuo 0 iki 5. Tiesės tankis γ tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja pagal formulę γ=(x+y)2.
Sprendimas. Pasinaudodami internetiniu integratoriumi, gauname:
m=05γ1+[y]2dx=05(x+y)21+[y]2dx=05(x+x2)21+4x2dx=
=17680(24x2+1(640x5+1536x4+1000x3+128x2+105x64)105arcsinh(2x))|05=

=17680(2101(6403125+1536625+1000125+12825+105564)105arcsinh(10))17680(21(64)105arcsinh(0))=

=17680(2101(2000000+960000+125000+3200+52564)105arcsinh(10))17680(1280)=
=17680(21013088661105arcsinh(10))+1287680=
=17680(62081317,771613740125811409969418314,81340978128682257889253144763)+1287680=
=(62081002,958203958838988831076887+128)/7680=8083,4805935161404738266707131363.
Panaudojus Free Pascal kodą:
 var
 a:longint;
 c:real;
 begin
 for a:=1 to 1000000000  do
 c:=c+sqrt(sqr(0.000000005*a-0.000000005*(a-1))+sqr(sqr(0.000000005*a)-sqr(0.000000005*(a-1))))*sqr(0.000000005*a+sqr(0.000000005*a));
 writeln(c);
 readln;
 end.
gauname atsakymą m=8083,48061127561 po 30 sekundžių su 2,6 GHz procesoriumi.
Alternatyvus Free Pascal kodas, skaičiuojantis pagal formulę m=05γ1+[y]2dx=05(x+x2)21+4x2dx yra toks:
 var
 a:longint;
 c:real;
 begin
 for a:=1 to 1000000000  do
 c:=c+sqrt(1+sqr(2*0.000000005*a))*sqr(0.000000005*a+sqr(0.000000005*a));
 writeln(c*0.000000005);
 readln;
 end.
ir duoda atsakymą m=8083,4806161241980 po 22 sekundžių su 2,6 GHz procesoriumi.

Taip pat skaitykite