Исходный код
uses crt,graph;
const
{ OPTIONS }
shag=0.0001;
lgr = 3;
pgr = 10;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;
Var grDriver : Integer;
grMode : Integer;
x,y,dx,x1,x2,e,i : extended;
L : integer;
f : Text;
function Fx(x:real):real;
begin
Fx:=(exp(3*ln(x))+2*x+3)/(x+sqrt(x)); {Zdes' podintegralnoe virajenie.}
end;
procedure CountViaBar;
var
xx1,xx2:real;
c:longint;
begin
writeln('------------------------------------------------');
writeln('-->Metod srednih pramougolnikov.');
writeln('Vsego iteracii : ',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do begin
write('iteraciaя ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
i:=i+abs(xx1+xx2)/2*e;
end;
writeln('------------------------------------------------');
writeln('Integral=',i:3:6);
end;
procedure CountViaTrap;
var
xx1,xx2,xx3:real;
c:longint;
begin
writeln('------------------------------------------------');
writeln('-->Metod trapecii.');
writeln('Vsego iteracii:',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do begin
write('Iteraciaя ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
if xx2>xx1 then xx3:=xx1 else xx3:=xx2;
i:=i+abs(xx2-xx1)*e+abs(xx3)*e;
end;
writeln('------------------------------------------------');
writeln('Integral=',i:3:5);
end;
begin
clrscr;
writeln('------------------------------------------------');
writeln('-=Programma vi4islenia opredelennogo integrala=-');
writeln('Vvedite ishodnie zna4eniyaя:');
write('Na4alnoe zna4enie x (x1)=');Readln(x1);
write('Konexnoe zna4enie x (x2)=');Readln(x2);
write('To4nost vi4isleniyaя (e)=');Readln(e);
CountViaBar;
CountViaTrap;
writeln('------------------------------------------------');
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for L:=OXYminX to OXYmaxX do putpixel(zcrtX+L,zcrty,colorOXY);
for L:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-L,colorOXY);
x:=lgr;
assign(f,'OutFile');
{*} rewrite(f);
while x<=pgr do
begin
y:=(x*x*x+2*x+3)/(x+sqrt(x));
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg);
x:=x+shag;
writeln(f,'x=',x:1:2,' y=',y:1:2);
end;
close(f);
readkey;
closegraph;
END.
const
{ OPTIONS }
shag=0.0001;
lgr = 3;
pgr = 10;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;
Var grDriver : Integer;
grMode : Integer;
x,y,dx,x1,x2,e,i : extended;
L : integer;
f : Text;
function Fx(x:real):real;
begin
Fx:=(exp(3*ln(x))+2*x+3)/(x+sqrt(x)); {Zdes' podintegralnoe virajenie.}
end;
procedure CountViaBar;
var
xx1,xx2:real;
c:longint;
begin
writeln('------------------------------------------------');
writeln('-->Metod srednih pramougolnikov.');
writeln('Vsego iteracii : ',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do begin
write('iteraciaя ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
i:=i+abs(xx1+xx2)/2*e;
end;
writeln('------------------------------------------------');
writeln('Integral=',i:3:6);
end;
procedure CountViaTrap;
var
xx1,xx2,xx3:real;
c:longint;
begin
writeln('------------------------------------------------');
writeln('-->Metod trapecii.');
writeln('Vsego iteracii:',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do begin
write('Iteraciaя ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
if xx2>xx1 then xx3:=xx1 else xx3:=xx2;
i:=i+abs(xx2-xx1)*e+abs(xx3)*e;
end;
writeln('------------------------------------------------');
writeln('Integral=',i:3:5);
end;
begin
clrscr;
writeln('------------------------------------------------');
writeln('-=Programma vi4islenia opredelennogo integrala=-');
writeln('Vvedite ishodnie zna4eniyaя:');
write('Na4alnoe zna4enie x (x1)=');Readln(x1);
write('Konexnoe zna4enie x (x2)=');Readln(x2);
write('To4nost vi4isleniyaя (e)=');Readln(e);
CountViaBar;
CountViaTrap;
writeln('------------------------------------------------');
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for L:=OXYminX to OXYmaxX do putpixel(zcrtX+L,zcrty,colorOXY);
for L:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-L,colorOXY);
x:=lgr;
assign(f,'OutFile');
{*} rewrite(f);
while x<=pgr do
begin
y:=(x*x*x+2*x+3)/(x+sqrt(x));
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg);
x:=x+shag;
writeln(f,'x=',x:1:2,' y=',y:1:2);
end;
close(f);
readkey;
closegraph;
END.
заранее спасибо.