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.
Сообщение отредактировано: Boxer -