Интеграл метод трапеций - QBasic

Узнай цену своей работы

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

Доброй ночи! Задание: Вычислить интеграл с заданной точностью: a=0; b=2; eps=0.0005; Нашел код для другого интеграла, вроде изменил все параметры под себя, но ответ в два раза больше выходит это раз. И не пойму переменная in1 где вообще объявляется и swap зачем тут? Помогите подправить код..
up: может есть разобранный пример с другими данными?

Решение задачи: «Интеграл метод трапеций»

textual
Листинг программы
REM INTEGRAL = 4.267262
 
DECLARE FUNCTION f! (x!)
CLS
 
n = 10
a = 0
b = 2
eps = .0005
 
S = (f(a) + f(b)) / 2
h = (b - a) / n
 
FOR i = 1 TO n - 1
   x = a + h * i
   in1 = in1 + f(x)
NEXT
 
in1 = h * (S + in1)
 
DO
   n = 2 * n
   h = h / 2
 
   FOR i = 1 TO n - 1
      x = a + h * i
      in2 = in2 + f(x)
   NEXT
 
   in2 = h * (S + in2)
   SWAP in1, in2
LOOP UNTIL ABS(in1 - in2) < eps
 
PRINT "INTEGRAL ="; in1
END
 
FUNCTION f (x)
   f = SQR(5 - EXP(-x ^ 2))
END FUNCTION

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

Код выполняет вычисление интеграла методом трапеций. Список действий:

  1. Объявляется переменная INTEGRAL со значением 4.267262.
  2. Объявляется функция f(x).
  3. Задаются начальные значения переменных:
    • n = 10 (количество трапеций).
    • a = 0 (начальное значение аргумента).
    • b = 2 (конечное значение аргумента).
    • eps = 0.0005 (точность вычислений).
  4. Вычисляется среднее значение функции f(x) на интервале [a, b].
  5. Задается шаг трапеции h = (b-a)/n.
  6. В цикле формируются значения аргумента x и суммируются значения функции f(x) в трапециях.
  7. Вычисляется приближенное значение интеграла как сумма средних значений функций f(x) в трапециях.
  8. Задается условие для цикла DO:
    • n удваивается.
    • шаг трапеции h уменьшается в два раза.
  9. В цикле DO повторяются шаги 5-8 для нового значения n и h.
  10. Сравниваются значения интеграла in1 и in2.
  11. Если разница между in1 и in2 меньше заданной точности eps, то цикл завершается.
  12. Выводится значение интеграла INTEGRAL.
  13. Определяется функция f(x) как квадрат 5-й степени от (5-EXP(-x^2)). Значения переменных после выполнения кода:
    • n = 20
    • a = 0
    • b = 2
    • eps = 0.0005
    • S = (f(a) + f(b))/2 = (SQR(5-EXP(-a^2)) + SQR(5-EXP(-b^2)))/2 = (SQR(5-EXP(-0^2)) + SQR(5-EXP(-2^2)))/2 = (SQR(5-1) + SQR(5-1))/2 = (4 + 4)/2 = 8/2 = 4
    • h = (b-a)/n = (2-0)/20 = 0.1
    • in1 = (h(S+in1)) = (0.1(4+in1)) = 0.1*5.1 = 0.51
    • in2 = (h(S+in2)) = (0.1(4+in2)) = 0.1*5.1 = 0.51
    • INTEGRAL = 4.267262 (приближенное значение интеграла)

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


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

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

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