Составить программу для вычисления значения интеграла - 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 соответственно. Функция:

Решение задачи: «Составить программу для вычисления значения интеграла»

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.

Объяснение кода листинга программы

  1. Создается переменная r, которая предназначена для хранения значения радиуса.
  2. Создается переменная a, которая предназначена для хранения значения левого края интервала.
  3. Создается переменная b, которая предназначена для хранения значения правого края интервала.
  4. Создается переменная z, которая предназначена для хранения значения точности.
  5. Выполняется цикл repeat, который предназначен для получения значения радиуса, левого и правого краев интервала, а также числа разбиений и точности.
  6. Внутри цикла repeat переменные r, a, b и z считываются из входных данных.
  7. Выполняется проверка на корректность введенных значений: радиус должен быть больше нуля, левый край интервала должен быть больше или равен минус двум радиусам, правый край интервала должен быть больше левого края, число разбиений должно быть больше единицы, а точность должна быть меньше единицы.
  8. Если все условия выполняются, то присваиваются переменным s1 и s2 начальные значения: s1 равна 0, а s2 равна 2*z.
  9. Вычисляется шаг h для разбиения интервала на отрезки.
  10. Выполняется цикл for, который предназначен для вычисления значений интеграла на каждом отрезке интервала.
  11. Внутри цикла for переменной xi присваивается значение левого края интервала, увеличенное на текущий шаг h.
  12. Вычисляется значение fi, которое является произведением числа i и шага h.
  13. Проверяется условие, при котором xi меньше или равно минус радиусу r. Если это условие выполняется, то значение fi присваивается значению xi плюс r.
  14. Если условие из предыдущего пункта не выполняется, то проверяется, находится ли xi внутри интервала от r до a. Если это условие выполняется, то значение fi вычисляется как квадратный корень из разности квадратов r и xi.
  15. Если условие из предыдущего пункта не выполняется, то проверяется, находится ли xi внутри интервала от a до 0. Если это условие выполняется, то значение fi вычисляется как половина xi минус 2*r.
  16. Значение s2 увеличивается на произведение fi и шага h.
  17. После завершения цикла for выполняется проверка на изменение значения s1 и s2. Если изменение превышает заданную точность z, то значение n удваивается.
  18. Выводится значение интеграла на отрезке интервала [a,b] с помощью функции writeln.
  19. Выполняется цикл repeat, который предназначен для повторного вычисления значения интеграла с новыми значениями r, a, b и z.
  20. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы