Matematika/Kreiviniai integralai

Šis straipsnis yra apie pirmojo ir antrojo tipo kreivinius integralus.

Pirmojo tipo kreivinis integralasKeisti

Pirmojo tipo kreivinis integralas naudojamas dvimačio ar trimačio lanko masės apskaičiavimui. Galima apskaičiuoti masę, kai ji pastovi ar kai kinta pagal tam tikrą funkciją. Jeigu masė pastovi, tai jos skaičiavimas sutampa su lanko ilgio skaičiavimu.

  •   kai kreivė L apibrėžta lygtimi y=y(x), o  
 
  • Kai kreivė L apibrėžta parametrinėmis lygtimis       tai   todėl
 
  • Kai prametrinėmis lygtimis         apibrėžta erdvinė kreivė L, tai
 
  • Kai kreivė L polinėje koordinačių sistemoje apibrėžta lygtimi     tai   ir
 

PavyzdžiaiKeisti

  • Apskaičiuokime integralą   kai L - prabolės   lankas nuo taško (0; 0) iki taško (1; 1/2).
Remdamiesi sąlyga   randame y'=x,   Pritaikę pirmą formulę, gauname

   

kur    


  • Apskaičiuosime kreivinį integralą   kur AB - parabolės   lankas nuo taško (0; 0) iki taško (2; 2).
Turime

  Pagal pirmą formulę gauname  


  • Apskaičiuokime kreivės     lanko L masę, kai tankis kreivės taške yra tiesiog proporcingas to taško ordinatei (y) ir atvirkščiai proporcingas kvadratinei šakniai iš to taško abscisės ( ), be to, taške   jo (tankio) reikšmė lygi 8 g/cm.
Kreivės lanko masę, kai to lanko tankis lygus  , apskaičiuosime pagal formulę  

Pagal uždavinio sąlyga, tankis lygus   čia k - proporcingumo koeficientas. Kadangi  , kai    tai iš lygybės   gauname: k=3. Tuomet, pagal formule,   Norėdami apskaičiuoti šį integralą, taikysime pirmą formulę. Iš sąlygos   turime   ir   Tuomet     kur             Arba galėjome apskaičiuoti integruodami dalimis:       kur        

 
cikloidė
  • Apskaičiuokime integralą   kai L - pirmoji cikloidės     arka.

Taikome antrą formulę. Randame:         Tuomet  

Pirmąjį integralą integruojame dalimis, pažymėdami         gauname

 

Antrąjį integralą apskaičiuojame taikydami formulę     reiškia

 

Todėl bendras integralas lygus:
 


  • Reikia apskaičiuoti integralą   pagal vieną viją susuktos linijos:        

Pagal trečią formulę gauname:    


  • Apskaičiuosime integralą   kur AB - dalis logoritminės kreivės   nuo   iki  

Pagal pirmą formulę     kur  


  • Apskaičiuosime kreivinį integralą   kur AB - dalis apskritimo      
Kadangi

    tai pagal antrą formulę gauname  


  • Apskaičiuokime   kai L - apskritimas    
Integralą apskaičiuokime, Dekatro koordinates pakeitę polinėmis. Kreivės L lygtis šioje koordinačių sistemoje yra     Randame    

Tuomet    

Kreivės lanko ilgisKeisti

Kreivės lanko ilgis randamas pagal šitas formules:

  •   kai kreivė L apibrėžta lygtimi y=y(x), o  
 
  • Kai kreivė L apibrėžta parametrinėmis lygtimis       tai   todėl
 
Elementariausias pavyzdis, kai reikia perrašyti funkcija   parametrinėmis lygtimis. Tuomet pasirenkame (suteikiame parametrus iksui ir igrikui)  . Gauname išvestines  . Vadinasi integralas atrodys taip:
 
  • Kai prametrinėmis lygtimis         apibrėžta erdvinė kreivė L, tai
 
  • Kai kreivė L polinėje koordinačių sistemoje apibrėžta lygtimi     tai   ir
 
Polinėse koordinatėse taikoma ta pati pitagoro teorema. Geresniam išaiškiniui, tegu   (tai spiralės funkcija). Tegu   kinta nuo 0 iki   Kai x kinta pastoviu greičiu, o y kitimo greitis kinta pagal tam tikrą funkciją, tada turime formulę   Polinėse koordinatėse   pakeičiame   Pagal Pitagoro teoremą Dekarto koordinačių sistemoje sudedame pakelta kvadratu x pastovų pakitimą su y nepastoviu pakitimu (y') pakeltu kvadratu ir paskui traukiame šaknį. Polinėse koordinatėse apskritimo ilgis   Vadinasi [spiralės] lanko dalies ilgis yra   Mes   pridedame prie   ir iš sumos ištraukę šaknį gauname kiekvienos lanko atkarpos ilgį. Bet, kadangi mes viską užrašome per   o integruojame apskritimu (reikšme   didesne), tai viską padaliname iš   ir gauname   Apėjimas prieš laikrodžio rodyklę nuo 0 iki   kinta pastoviu greičiu, tačiau lanko ilgiai   priklauso nuo   Todėl formulėje   ir yra   kuris priklauso nuo   o kad tenkinti Pitagoro teoremą jis pakeltas kvadratu. Vietoje   bus įstatyta   o vietoje   bus įstatyta   ir gausime, kad kiekvienos mažos dalies   ilgis yra   Čia n (pavyzdžiui,  ) nusako į kiek dalių daliname parametrinę reikšmę   kuri simbolizuoja lanką ir pastovų apėjimą prieš laikrodžio rodyklę pastoviu greičiu. Todėl   Kai mes skaičiuojame kreivės ilgį pagal šitą formulę   tai mes pasirenkame, kad arba x arba y kistu pastoviu greičiu (didėtų linijiniai). Taigi, x didėja linijiniai, o y lyginamas su x greičio kitimu ir y didėja arba mažėja ne linijiniai, kai x didėja linijiniai. Taigi,   Spindulio dalies ilgis yra   Mes galime užrašyti   ir   Todėl gauname   Šiuo atveju   didėja linijiniai, o v nelinijiniai, bet pagal tam tikrą funkciją. Kad viskas būtų palyginta per   - t. y. per lanko apeimą prieš laikrodžio rodykle, kiekvieną kartą didinant i (i naturalus skaičius), mes turime, kad po kiekvieno i padidėjimo apėjimas vyksta greičiu   Todėl, kad   prilygtų   apėjimo tempui, mes   daliname iš   ir gauname   Tuomet viskas yra suderinta ir kreivės lanko ilgis yra   Padalinti    reikia visų pirma todėl, kad mes apeiname prieš laikrodžio rodyklę greičiu konstanta   didesniu, negu didėja spindulio   ilgis.
Baigdami išspręsime pavyzdį, kai   surasdami spiralės lanko ilgį:
 
 
 
 
 
 
 
 
 
=95,562904188437929879480297191115-2,6(6)=92,896237521771263212813630524448;
čia   ir   arba  
Va čia "Free Pascal" kodas:
   var
   a:longint;
   c:real;
   begin
   for a:=1 to 628318531  do
   c:=c+0.00000001*sqrt(sqr(sqr(a*0.00000001))+sqr(a*2.0/100000000));
   writeln(c);
   readln;
   end.
kuris duoda atsakymą 92,8962378457359 po 16 sekundžių su 2,6 GHz procesoriumi. Optimizuotas šio kodo variantas:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 628318531  do
   c:=c+sqrt(sqr(sqr(a*0.00000001))+sqr(a*0.00000002));
   b:=c*0.00000001;
   writeln(b);
   readln;
   end.
duoda atsakymą 92,8962378457489 po 11 sekundžių su 2,6 GHz procesoriumi.
Šis kodas:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 62831853  do
   c:=c+sqrt(sqr(sqr(a*0.0000001))+sqr((sqr(a*0.0000001)-sqr((a-1)*0.0000001))/0.0000001));
   b:=c*0.0000001;
   writeln(b);
   readln;
   end.
duoda atsakymą 92,8962389233553 po dviejų sekundžių. Tikslesnė (ne daug tikslesnė, nes kaip tik   ir kur reikia apvalint ten 0) šio kodo versija:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 628318531  do
   c:=c+sqrt(sqr(sqr(a*0.00000001))+sqr((sqr(a*0.00000001)-sqr((a-1)*0.00000001))*100000000));
   b:=c*0.00000001;
   writeln(b);
   readln;
   end.
duoda atsakymą 92,8962378085099 po 15 sekundžių su 2,6 GHz procesoriumi.
Labiausiai teoriją atitinkantis kodas yra šis:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 1000000000  do
   c:=c+sqrt(sqr(sqr(a*0.0000000062831853))+sqr((sqr(a*0.0000000062831853)-sqr((a-1)*0.0000000062831853))/0.0000000062831853));
   b:=c*0.0000000062831853;
   writeln(b);
   readln;
   end.
duodantis atsakymą 92,8962373310520 po 30 sekundžių su 2,6 GHz procesoriumi. Su patikslinta   reikšme panaudojus kodą:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 1000000000  do
   c:=c+sqrt(sqr(sqr(a*0.000000006283185307179586))+sqr((sqr(a*0.000000006283185307179586)-sqr((a-1)*0.000000006283185307179586))/0.000000006283185307179586));
   b:=c*0.000000006283185307179586;
   writeln(b);
   readln;
   end
gauname atsakymą 92,8962376285006 po 31 sekundės su 2,6 GHz procesoriumi.
Panaudojus vietoje dalybos daugybą ( ) šiame kode:
   var
   a:longint;
   c,b:real;
   begin
   for a:=1 to 1000000000  do
   c:=c+sqrt(sqr(sqr(a*0.0000000062831853))+sqr((sqr(a*0.0000000062831853)-sqr((a-1)*0.0000000062831853))*159154943.0918953));
   b:=c*0.0000000062831853;
   writeln(b);
   readln;
   end.
gauname atsakymą 92,8962373100457 po 24 sekundžių su 2,6 GHz procesoriumi. Pastebime, kad kodas (dviem kodais aukščiau ir duodantis atsakymą 92,8962378085099), kuris skaičiavo 15 sekundžių turi tokį ryši su šiuo kodu: 24/15=1.6 ir 1000000000/628318531=1.59154943.

PavyzdžiaiKeisti

  • Apskaičiuokime kreivės   lanko ilgį.
Randame   Tuomet

  Palyginimui, atkarpos ilgis iš taško (0; 0) iki taško (4;  ) yra pagal pitagoro teoremą:  

  • Apskaičiuosime lanko ilgį pusiaukūbinės parabolės   jei   Iš lygties   randame:   Iš pirmos formulės gausime

 

 

kur  ;  . Palyginimui, atkarpos ilgis nuo taško (0; 0) iki taško (5;  ) yra:  

  • Apskaičiuosime lanko ilgį pusiaukūbinės parabolės   jei   Iš lygties   randame:   Gausime

 

 
 

kur  ;  . Palyginimui, linijos ilgis nuo taško (1; 1) iki taško (5;  ) yra  

 
  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame  . Gauname

 
 
 
 
 
 

čia  

 
Iš kompiuterio kalkuliatoriaus reikšmės (hiperbolinio arksinuso):
 
 
Palyginimui, linijos ilgis nuo taško (0; 0) iki taško (5; 25) yra:

 

  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame  . Gauname  

 
 
 
 
 
 
 

čia  

Iš kompiuterio kalkuliatoriaus reikšmės (hiperbolinio arksinuso):
 
 

Palyginimui, tiesės ilgis nuo taško (1; 1) iki taško (5; 25) yra:   Čia taip išintegravo Wolfram Research integratorius, kad  . Štai nuoroda: http://integrals.wolfram.com/index.jsp?expr=%281%2B4x%5E2%29%5E%281%2F2%29&random=false .

Toks būdas neteisingas:

 

 
 
 

 

 
 
Patikriname atsakymą kitu budu:
 
 

     

 
 
  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame  . Gauname

 
 
 
 
 

čia  

 
Iš kompiuterio kalkuliatoriaus reikšmės (hiperbolinio arksinuso):
 
 


  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame  . Pasinaudodami integralų lentele  , gauname

 
 

 

 
 
 
 

Palyginimui, linijos ilgis nuo taško (0; 0) iki taško (4; 16) yra  

Patikrinsime parbolės lanko ilgį padalindami parabolės šaką į 10 atkarpų-tiesių, kai 0<x<4. Kiekvienos atkarpos projekcijos į Ox ašį ilgis yra 0,4. Todėl reikiau gauti visas x reikšmes:
 
 
 
 
 
 
 
 
 
 
 

Dabar toliau reikia surasti visas y reikšmes, įstačius x reikšmes:

 
 
 
 
 
 
 
 
 
 
 

Dabar belieka surasti atkarpu ilgius kaip nuo taško (0; 0) iki taško (0,4; 0,16); nuo taško (0,4; 0,16) iki (0,8; 0,64) ir taip toliau:

 
 
 
 
 
 
 
 
 
 

Toliau reikia sudėti visų atkarpų ilgį, kad gauti parabolės šakos ilgį, kai x kinta nuo 0 iki 4. Gauname:

 
 
Padalinus į daugiau dalių atsakymas taptų panašesnis į atsakymą gautą integravimo budu.


  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame  . Pasinaudodami integralų lentele gauname

 
 

 

 

 

 
 

Palyginimui, linijos ilgis nuo taško (1; 1) iki taško (4; 16) yra  

  • Apskaičiuosime parabolės   lanko ilgį, kai  

Randame   Tada iš integralų lentelės         Palyginimui, atkrapos ilgis nuo taško (4;  ) iki taško (12;  ) yra  

 
  • Apskaičiuosime kreivės   lanko ilgį, kai  

Randame   Gauname

 
 
 
 
 
 
 

Palyginimui, tiesės ilgis nuo taško (1; 1) iki taško (16; 4) yra  


  • Apskaičiuosime kreivės lanko ilgį , kai     Randame funkcijos išvestinę   Randame kreivės lanko ilgį:

 


  • Apskaičiuokime cikloidės       pirmosios arkos ilgį.
Pirmoji cikloidės arka gaunama, kai parametras t kinta nuo 0 iki   Randame:

        nes   kai   Tuomet  


  • Rasime lanko AB ilgį susuktos linijos

        Pagal trečią formulę:  


  • Rasime lanko ilgį kardiodės     Pagal ketvirtą formulę turime:

     

  • Rasime kreivės lanko ilgį, kai   Pagal ketvirtą formulę:

   


 
Archimedo spiralė.
  • Apskaičiuosime ilgį pirmos vijos Archimedo spiralės:  
Pirma vija spiralės pasidaro, keičiantis poliariniui kampui   nuo 0 iki   Todėl pagal ketvirtą formulę ieškomas ilgis lanko yra

   

 


  • Apskaičiuosime vienos vijos linijos ilgį:         Tai yra linija apsukta vieną kartą aplink cilindrą, kurio aukštis yra t.

Gauname:

   ,  ,  
 

Randame vienos vijos ilgį:

 

Kreivės masėKeisti

Kreivės masė nustatoma pagal formulę
 
čia   kokia nors funkcija.

PavyzdžiaiKeisti

  • 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 5. Tiesės tankis   tolstant tiesės taškams nuo centro (koordinačių pradžios taško O) didėja proporcingai, t. y.  
Sprendimas.
Pasirodo, 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. 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: