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

Pavyzdžiai

keisti
  • Su Gryno formule apskaičiuosime kreivinį integralą   kur L - apskritimas  
Funkcijos   ir   netrūkios uždarame rate   Todėl pagal Gryno teoremą turime (   ):

   

Patikrinimas. Iš apskritimo lygties   gauname:
 
 
Todėl
 
 
Pasinaudodami internetiniu integratoriumi, gauname, kad
 
 
 
 
 
 
 
 
 
Riba   Beje,  
Patikrinimo atsakymas gautas du kartus mažesnis, todėl kyla abejonių dėl Gryno formulės prasmės.
Kitoks patikrinimas. Iš apskritimo lygties   gauname:
 
 
 
 
Todėl
 
 
Pasinaudodami internetiniu integratoriumi, gauname, kad
 
 
 
 
 
 
 
 


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

  kai L - apskritimas   (a>0), apeinamas teigiama kryptimi. Kadangi skritulyje   funkcijos   ir   bei jų dalinės išvestinės   ir   yra tolydžios, tai duotajam kreiviniam integralui galima taikyti Gryno formulę. Turime:   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   iki   Vadinasi (     ),     kur pasinaudojome dvigubu faktorialu.


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

  kai L - apskritimas   (a>0), apeinamas teigiama kryptimi (prieš laikrodžio rodyklę).

Kadangi skritulyje   funkcijos   ir   bei jų dalinės išvestinės   ir   yra tolydžios, tai duotajam kreiviniam integralui galima taikyti Gryno formulę.
Turime:
 
Randame apskritimo y išraišką:
 
 
 
Randame y išvestinę, o paskui ir dy:
 
 
Apskritimo spindulys   nes pavyzdžiui, kai   tai   Ž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   ir   tai gauname teisingą lygybę   Vadinasi taškas (0; 0) priklauso apskritimui   Kitas apskritimo taškas yra (3; 0), kuris yra ant Ox ašies. Įstačius taško (3; 0) koordinates į apskritimo lygtį   gauname   Žinome, kad taškas (3; 0) yra toliausias taškas ant Ox ašies. Todėl apskritimo   spindulys yra  
Kadangi apskritimo   spindulys yra   ir Ox ašis dalina apskritimą per pusę, tai didžiausia y reikšmė gali būti   Vadinasi integravimas vyksta pirmame ir ketvirtame ketvirčiuose. Bet, kadangi, skritulio   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   plotą pirmame ketvirtyje, turime žinoti integravimo ribas. Nustatome, kad x kinta nuo 0 iki a, o y kinta nuo 0 iki  
Taikydami Gryno formulę, integruojame (pasinaudodami internetiniu integratoriumi):
 
 
 
 
 
 
Pasitikriname (įstatydami y ir dy ir pasinaudodami internetiniu integratoriumi):
 
 
 
 
 
 
 
 
 
 
 
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ą:
 
 
 
 
 
Toliau pasinaudojame internetiniu polinomų dalikliu parinkę   gauname   Toliau integruojame:
 
 
 
 
 
 
 
 
Kadangi   tai seniau gautas atsakymas   įstačius   atitinka ir iš to darome išvada, kad Gryno formulė veikia teisingai (išskyrus minusiuką).

Ploto apskaičiavimas

keisti

Plotui apskaičiuoti ploksčios srities naudojamos tokios formulės:   Jos išvedamos šitaip:

 
  • Pritaikysim Gryno formulę apskaičiavimui srities D (ploksčios figūros ploto). Jei     Tada   Pagal formulę turime:

  Integralas   lygus paaviršiui srities D , todėl,  

  • Sakykime     analoginiu budu randame, kad

 

  • Ir, pagaliau, paėmę funkcijas   gauname formulę

 


Pavyzdžiai

  • Apskaičiuosime plotą apribotą elipse   pagal formulę   Panaudoję parametrinę lygtį elipsės:         gauname:

 


  • Apskaičiuosime plotą figuros apribotos elipse pagal formulę  
Sprendimas. Pasinaudoję parametrinėmis elipsės lygtimis       turime:     ir pagal formulę gauname
 
 

Jėgos darbas

keisti

Jėgos darbas padarytas judant kreive plokštumoje apskaičiuojamas pagal formulę   Jėgos darbas padarytas judant erdvine kreive apskaičiuojamas taip:  

  • Apskaičiuosime darbą jėgos   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,   Jėgos F(x, y) koordinatės tokios:     [ženklas " " paaiškinamas tuo, kad jėga nukreipta į tašką (0; 0)]. Pagal formulę turime   kur L - elipsė     Todėl

   

Jei t keistusi nuo 0 iki   integralas butu lygus
 
 
Tarkime, jei   tai padarytas darbas pirmame ketvirtyje yra  
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   čia   yra visos x reikšmės ant elipsės linijos pirmame ketvirtyje nuo 0 iki a; analogiškai   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   pagal pirmą variantą. Na, o pagal antrą variantą turime:
 
 
 
 
 
 
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  
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ą   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ą   po 25 sekundžių ant 2.6 GHz procesoriaus.
Integruojant gauname:
 
 
 
 
 
 
 
 
 
 
Apskaičiuojame viską nepriekaištingai tiksliai su kompiuterio kalkuliatoriumi:
 
 
Toliau bandome rasti atlikta darbą apeita tiese   integruojant   Randame   Turime, kad x integravimo ribos yra 0 iki 5, o y integravimo ribos yra nuo 0 iki 3. Gauname:
 
 
 
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   arba   Tuomet akivaizdu, kad  
Tą patį darba gauname ir apeinant tiese:
 
 
 
Lygiai tą patį darbą gausime ir integruojant taip:
 
Tą patį gausime ir taip integruojant nuo 0 iki 5:
 
 
 
 
 
 


  • Nustatyti tiesės   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.  
Sprendimas. Pasinaudosime masės skaičiavimo formule
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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):
 
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   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.  
Sprendimas.
Integruojame (pasinaudodami integralų lentelės (31) formule):
 
 
 
=338,01247924440330576404858539624.
Toliau, kad surasti kreivės masę (kai kiekviename kreivės taške tankis priklauso nuo tam tikros funkcijos), skaičiuojame:
 
 
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ą   Todėl šį rezultatą ir panaudojame toliau integruodami:
 
 
 
 
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:
 
 
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   Yra tik   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
 
 
 
=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ą   po 73 sekundžių su 2,6 GHz procesoriumi.
Alternatyvus Free Pascal kodas, kuris skaičiuoja pagal formulę   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ą   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ą   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ą   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ą   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ą   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   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.  
Sprendimas. Greičiausias būdas apskaičiuoti, tai ko reikalauja sąlyga (uždavinys) yra toks:
 
Kitas būdas yra toks:
 
 
 
 
=669,16822851623458973388183928978 - (2/3)*(1/8)=
=669,16822851623458973388183928978 - 1/12=
=669,08489518290125640054850595645;
čia pasinaudojome integralų lentele  
Tuo atveju, jeigu x kinta nuo 0 iki 5 tada:
 
 
 
=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ę   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,  )).


  • Nustatyti parabolės   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.  
Sprendimas.
 
 
Toliau pasinaudodami Wolframo internetiniu integratoriumi gauname, kad:
 
 
 
 
 
=(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   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ę  
Sprendimas. Pasinaudodami internetiniu integratoriumi, gauname:
 
 

 

 
 
 
=(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ę   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

keisti