F1:=2^x+1
F2:=x^5
F3:=(1-x)/3
Задание:
1. решить уравнения методом деления отрезка пополам(короч найти границы интегрирования)
2. найти интеграл полученной фигуры методом прямоугольников
p.s. в чем ошибка не знаю. компилировать не хочет, находит только границы интегрирования, помогите исправить!!! нужна помощь!!!
Код:
{$N+}
program integral;
uses crt;
type
  func=function (x:Real):Real;
function F12(x:real):real;far;
  begin
    F12:=exp(ln(2)*x)-x*x*x*x*x+1;
  end;
function F13(x:real):real;far;
  begin
    F13:=exp(ln(2)*x)+1-(1-x)/3;
  end;
function F23(x:real):real;far;
  begin
    F23:=x*x*x*x*x-(1-x)/3;
  end;
function root(F:func; x, y: Real): Real;
  const
      eps = 0.001;
  var
    mid, fx, fy, fm: Real;
  begin
    fx := F(x);
    fy := F(y); 
    if fx * fy > 0.0 then Halt;
    repeat
      if Abs(fx) < eps then 
        begin
          root:=x; 
          Exit; 
        end
      else if Abs(fy) < eps then 
             begin
               root:=y; 
               Exit; 
             end 
                            else begin
                                   mid := 0.5 * (x + y); 
                                   fm := F(mid);
                                   if fx*fm <= 0 then
                                     begin
                                       у := mid; 
                                       fy := fm; 
                                     end   
                                                 else begin
                                                        x := mid; 
                                                        fx := fm; 
                                                      end; 
                                 end 
    until false; 
  end;
function F1(x:real):real;far;
  begin
    F1:=exp(ln(2)*x)+1;
  end;
function F2(x:real):real;far;
  begin
    F2:=x*x*x*x*x;
  end;
function F3(x:real):real;far;
  begin
    F3:=(1-x)/3;
  end;
function solution(f:Func; a,b:Real; n:integer):Real; 
  var
    h,g,sum,x,y:Real; 
    i:integer; 
  begin 
    h:=(b-a)/n; 
    sum:=0; 
    x:=a; 
    for i:= 1 to n do 
       begin 
         y:=x; 
         x:=x+h; 
         G:=f((x+y)/2); 
         sum:=sum+G; 
       end; 
    solution:=sum*h; 
  end; 
function accuracy(f:Func; a,b:Real; var n:integer):Real; 
  const
    eps=0.001;
  var 
    i1,i2:real; 
  begin 
    i1:=solution(f,a,b,n); 
    n:=n+n; 
    i2:=solution(f,a,b,n); 
    while abs(i1-i2)>2*eps do 
         begin 
           if n>=16383 then break; 
           i1:=i2; 
           n:=n+n; 
           i2:=solution(f,a,b,n); 
         end; 
    accuracy:=i2; 
  end; 
var 
  a,b,c,I,I1,I2,I3,x,y:real;  
  n:integer;  
begin
  clrscr;
  x:=-3;
  y:=2;
  writeln('Point of intersection of graphs');
  WriteLn('F12= ', root(F12,x,y):10:10);
  WriteLn('F13= ', root(F13,x,y):10:10);
  WriteLn('F23= ', root(F23,x,y):10:10);
  ReadLn;
  a:=root(F13,x,y);
  b:=root(F12,x,y);
  c:=root(F23,x,y);
  I1:=accuracy(F1,a,b,n);
  I2:=accuracy(F2,a,c,n);  
  I3:=accuracy(F3,c,b,n);
  I:=I1-I2-I3;
  writeln('Required integral:= ',I);
end.