Uses Graph, Crt, Dos; Const LeftAxis = 65; First = 1; Last = 7; LimEst:array[1..2,1..2] of double=((0.4,1.2), (0.8,1.6)); len : array [First .. Last] of LongInt = (2, 8, 16, 64, 512, 2048, 131072); st : array [1 .. 2] of string = ('# 1st Integral', '# 2nd Integral'); eps : double = 0.000000001; Type func=function(x:double):double; res =array [1..2,1..6] of double; part=array [1..2,1..6] of longint; Var results : res; NumbPart : part; XY : integer; f : func; left,right : double; i,j,k : byte; methodRes : res; Procedure Init; Var Driver, Mode, ErrorCode: smallint; Begin Driver:=detect; InitGraph(Driver,Mode,''); ErrorCode:=GraphResult; if ErrorCode<>grOK then begin Writeln(GraphErrorMsg(ErrorCode)); Halt(1); end; End; {Первая функция} Function F1(x:double):double; Begin F1:=cos(x)/(x+2); End; {Вторая функция} Function F2(x:double):double; Begin F2:=sqrt(0.3*x*x+2.3)/(1.8+sqrt(2*x+1.6)); End; {Метод левых прямоугольников} Procedure LeftRectangle(var a,b:double; fn:func; e:double; l:integer); Var y,y1 : double; step,sum: double; i,n,p : longint; Begin n:=1; y:=0; y1:=0; repeat {Запоминаем кол-во разбиений} NumbPart[l,j]:=n; {Вычисляем интеграл} y:=y1; step:=(b-a)/n; sum:=0; for i:=0 to n-1 do begin sum:=sum+fn(a+i*step); end; sum:=sum*step; y1:=sum; n:=2*n; {Запоминаем результат вычислений} results[l,j]:=y1; until abs(y1-y)<=e; {Вывод} if abs(e-0.0001)