Пользователь
Регистрация: 05.04.2009
Сообщений: 78
|
Интеграл
Здравствуйте Господа программисты! Возникли сложности с решением следующей задачи: вычислить интеграл для функции заданной графически. График во вложении. Вот мои наработки:
Код:
{$N+}
program task1;
uses crt;
procedure InputData(var a,b,c,d,fd,Eps:extended);
begin
write('Введите точность вычислений Eps=');
readln(Eps);
write('Введите c=');
readln(c);
repeat
write('Введите d=');
readln(d);
if (d<=c) then
writeln('Значение d должно быть больше значения c');
until (d>c);
write('Введите значение функции в точке d=');
readln(fd);
write('Введите нижний предел интегрирования a=');
readln(a);
write('Введите верхний предел интегрирования b=');
readln(b);
end;
procedure ChangeBordersByPlaces(a,b:extended; var a1,b1:extended);
begin
if b>a then
begin
a1:=a;
b1:=b;
end
else
begin
a1:=b;
b1:=a;
end;
end;
function F(x,c,d,fd:extended):extended;
var res:extended;
begin
if (x>=-c) and (x<=c) then
res:=0
else
if (x>=d) then
res:=fd
else
if (x<=-d) then
res:=(-1)*fd
else
if (x>c) and(x<d) then
res:=fd*(x-c)/(d-c)
else
res:=(-1)*fd*(abs(x)-c)/(d-c);
F:=res;
end;
procedure Splittings(I1,I2,b1,a1:extended; var n:longint; var h:extended);
begin
n:=1;
I1:=0; I2:=0;
I1:=I2; I2:=0;
n:=2*n;
h:=(b1-a1)/n;
end;
function CalculationIntegral(n:longint; I1,Eps,c,d,fd,h,a,b,a1:extended; var x:extended):extended;
var i:longint;
I2:extended;
begin
repeat
for i:=1 to n do
x:=a1+h*i;
if a>b then
I2:=I2+F(x,c,d,fd)*(-h)
else
I2:=I2+F(x,c,d,fd)*h;
until (abs(I2-I1)<Eps);
CalculationIntegral:=I2;
end;
procedure OutputData(n:longint; I1,h,a,b,x,Eps,c,d,fd,a1:extended);
begin
writeln('Значение интеграла равно ',CalculationIntegral(n,I1,Eps,c,d,fd,h,a,b,x,a1));
end;
var n:longint;
a,b,a1,b1,c,d,Eps,x,fd,I1,h,I2:extended;
begin
clrscr;
InputData(a,b,c,d,fd,Eps);
ChangeBordersByPlaces(a1,b1,a,b);
F(x,c,d,fd);
Splittings(I1,I2,b1,a1,n,h);
OutputData(n,I1,h,a1,b1,x,Eps,c,d,fd,a1);
readln;
end.
Программа при запуске запрашивает все входные значения, а после этого выскакивает ошибка 207 (Invalid Floating point operation) Я не знаю с чем это связано.. Помогите плз. Заранее спасибо!!!
Последний раз редактировалось StudeHt; 21.04.2009 в 14:42.
|