Aptarimas:Racionaliųjų funkcijų integravimas (pilniau)
Pridėti temąIšvaizda
Ostrogradskio metodo pavyzdžio patikrinimas
[keisti]- Ostrogradskio metodo pavyzdyje gavome, kad
- Apskaičiuosime kam lygus šitas apibrėžtinis integralas, kai x kinta nuo 0 iki 0.5. Taigi,
- = 5.33333333333333 - 3 - 1.15470053837925*arctg(-0.577350269) =
- = 2.33333333333333 - 1.15470053837925*(-0.523598775598) =
- = 2.(3) + 0.60459978807807261686469275254739 =
- = 2.9379331214114059501980260858807.
- Toks Free Pascal kodas:
var a:longint; b,c:real; begin for a:=1 to 1000 do c:=c+0.0005*(6-7*a*0.0005-sqr(a*0.0005))/( sqr(sqr(a*0.0005))-2*a*0.0005*sqr(a*0.0005)+3*sqr(a*0.0005)-2*a*0.0005+1 ); writeln(c); readln; end.
- duoda atsakymą "2.9374327209484177E+000" (tai reiškia 2.9374327209484177) iš karto momentaliai su 4.16 GHz dažniu veikiančiu procesorium.
- Kodas plotą po funkcija padalina į 1000 siaurų stačiakampių (kai x yra nuo 0 iki 0.5) ir tų stačiakampių plotus sudeda. Padalinus į daugiau dalių, gautume atsakymą panašesnį į integravimo budu gautą atsakymą. Bet ir taip gavome pirmus 4 teisingus skaitmenis, skaičiuojant su Free Pascal programa.
- Toks Free Pascal kodas:
var a:longint; b,c:real; begin for a:=1 to 100000000 do c:=c+0.000000005*(6-7*a*0.000000005-sqr(a*0.000000005))/ ( sqr(sqr(a*0.000000005))-2*a*0.000000005*sqr(a*0.000000005)+3*sqr(a*0.000000005)-2*a*0.000000005+1 ); writeln(c); readln; end.
- duoda atsakymą "2.9379331164122386E+000". Pirmą kartą paleidus, duoda atsakymą po 9 sekundžių, o paskesnius kartus paleidus duoda atsakymą po 3 sekundžių su 4.16 GHz procesorium. Kodas plotą po integruojama funkcija su x reikšmėm nuo 0 iki 0.5 padalina į 100 milijonų siaurų stačiakampių ir jų plotus sudeda. Gavome pirmus 8 teisingus skaitmenis.
Ostrogradskio metodo pavyzdžio patikrinimas (2)
[keisti]- Ostrogradskio metodo pavyzdyje gavome, kad
- Apskaičiuosime kam lygus šitas apibrėžtinis integralas, kai x kinta nuo 0 iki 5. Taigi,
- = 13/21 + 1.15470053837925*1.38067072344842986149 - 3 - 1.15470053837925*(-0.523598775598) =
- = 13/21 + 1.59426122769037 - 3 + 0.604599788078 =
- = 0.619047619047619 + 1.59426122769037 - 3 + 0.604599788078 =
- = -0.182091365184.
- Toks Free Pascal kodas:
var a:longint; b,c:real; begin for a:=1 to 10000 do c:=c+0.0005*(6-7*a*0.0005-sqr(a*0.0005))/( sqr(sqr(a*0.0005))-2*a*0.0005*sqr(a*0.0005)+3*sqr(a*0.0005)-2*a*0.0005+1 ); writeln(c); readln; end.
- duoda atsakymą "-1.8362208021202053E-001", kuris reiškia "-0.18362208021202053". Atsakymas gaunamas momentaliai. Nors šitame kode padalinome plotą po funkcija į 10000 dalių, bet atsakymas gavosi mažiau tikslus nei praeitame skaičiavime. Dabar gavome tik 2 pirmus teisingus skaitmenis. Reikia pastebėti, kad funkcija keičia ženklą vienoje ar keliose vietose pereidama per tam tikras argumento x reikšmes iš intervalo [0; 5]. Gal dėl to gavosi atsakymas mažiau tikslus skaičiuojant su Free Pascal programa. Arba tiesiog funkcija intervale [0; 5] kinta labiau drastiškai, nei intervale [0; 0.5].
- Toks Free Pascal kodas:
var a:longint; b,c:real; begin for a:=1 to 1000000 do c:=c+0.000005*(6-7*a*0.000005-sqr(a*0.000005))/ ( sqr(sqr(a*0.000005))-2*a*0.000005*sqr(a*0.000005)+3*sqr(a*0.000005)-2*a*0.000005+1 ); writeln(c); readln; end.
- duoda atsakymą "-1.8210667131654901E-001" (tai reiškia "-0.18210667131654901"). Atsakymas gaunamas momentaliai, tik pirmą kartą paleidus atsakymas gaunamas po 6 sekundžių su 4.16 GHz dažniu veikiančiu procesorium. Free Pascal kodas plotą po integruojama funkcija padalina į milijoną stačiakampių. Gavome tik 3 pirmus teisingus skaitmenis.
- Toks Free Pascal kodas:
var a:longint; b,c:real; begin for a:=1 to 100000000 do c:=c+0.00000005*(6-7*a*0.00000005-sqr(a*0.00000005))/ ( sqr(sqr(a*0.00000005))-2*a*0.00000005*sqr(a*0.00000005)+3*sqr(a*0.00000005)-2*a*0.00000005+1 ); writeln(c); readln; end.
- duoda aysakymą "-1.8209151824459774E-001" (tai reiškia "-0.18209151824459774"). Pirmą kartą paleidus, atsakymas gaunamas po 9 sekundžių, o vėlesnius kitus kartus - po 3 sekundžių su 4.16 GHz procesorium. Šitas Free Pascal kodas padalina plotą po funkcija į 100 milijonų labai siaurų stačiakampių. Šįkart gavome 6 pirmus teisingus skaitmenis (t. y. -0.182091........).
- Jeigu padalinti plotą (kai x kinta nuo 0 iki 5) po integruojama funkcija su Free Pascal programa į milijardą stačiakampių, tai gaunama klaida ir negaunamas joks atsakymas (turbūt dėl to, kad per ilgas ir per sudėtingas kodas).