Составить программу для вычисления значения интеграла - Turbo Pascal

Формулировка задачи:

Помогите пожалуйста составить программу на языке Turbo Pascal 7.0 вычисления значения интеграла на интервале [a, b] для функции, заданной графически. Значение интеграла вычислить приближённо по итерационной формуле левых прямоугольников: где h=(b-a)/n - величина шага между двумя соседними точками разбиения интервала интегрирования; fi = f(xi) - значение функции в точке xi = a+h(i-1); i = 1, 2, ..., n. Вычисления закончить при выполнении условия |In-I2n| < z, где z>0 - достаточно малое значение, задаваемое пользователем (точность вычислений). Здесь In, I2n - значения интеграла, вычисленные по (1) при количестве интервалов разбиения n и 2n соответственно. Функция:

Код к задаче: «Составить программу для вычисления значения интеграла - Turbo Pascal»

textual
uses crt;
var r,a,b,z,h,xi,fi,s1,s2:real;
    n,i:integer;
begin
repeat
write('Введите радиус R>0 R=');
readln(r);
until r>0;
repeat
write('Введите левый край интервала a>=',-2*r:0:1,' a=');
readln(a);
until a>=-2*r;
repeat
write('Введите правый край интервала b>',a:0:1,' b=');
readln(b);
until b>a;
repeat
write('Введите число разбиений n>1 n=');
readln(n);
until n>1;
repeat
write('Введите точность 0<z<1 e=');
readln(z);
until (z>0)and(z<1);
s1:=0;
s2:=2*z;
repeat
s1:=s2;
h:=(b-a)/n;
s2:=0;
for i:=1 to n do
 begin
  xi:=a+(i-1)*h;
  if xi<=-r then fi:=xi+r
  else if xi<=r then fi:=sqrt(r*r-xi*xi)
  else if xi<=0 then fi:=sqrt(r*r-sqr(xi+r))
  else fi:=0.5*xi-2*r;
  s2:=s2+fi*h;
 end;
n:=n*2;
until abs(s1-s2)<z;
writeln('Интеграл на отрезке [',a:0:1,';',b:0:1,']=',s2:0:4);
end.

8   голосов, оценка 4.125 из 5


СОХРАНИТЬ ССЫЛКУ