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.
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).