Интеграл метод трапеций - 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
Объяснение кода листинга программы
Код выполняет вычисление интеграла методом трапеций. Список действий:
- Объявляется переменная INTEGRAL со значением 4.267262.
- Объявляется функция f(x).
- Задаются начальные значения переменных:
- n = 10 (количество трапеций).
- a = 0 (начальное значение аргумента).
- b = 2 (конечное значение аргумента).
- eps = 0.0005 (точность вычислений).
- Вычисляется среднее значение функции f(x) на интервале [a, b].
- Задается шаг трапеции h = (b-a)/n.
- В цикле формируются значения аргумента x и суммируются значения функции f(x) в трапециях.
- Вычисляется приближенное значение интеграла как сумма средних значений функций f(x) в трапециях.
- Задается условие для цикла DO:
- n удваивается.
- шаг трапеции h уменьшается в два раза.
- В цикле DO повторяются шаги 5-8 для нового значения n и h.
- Сравниваются значения интеграла in1 и in2.
- Если разница между in1 и in2 меньше заданной точности eps, то цикл завершается.
- Выводится значение интеграла INTEGRAL.
- Определяется функция 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 (приближенное значение интеграла)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д