Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 582 / 64 | Длительность: 20:55:00
Лекция 8:

Интегрирование и дифференцирование

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

8.3.2 Интегрирование по методу Симпсона

Изложим идею интегрирования по методу Симпсона. Пусть n = 2m — чётное число, а y_i=f(x_i)(i=0,1,...,n) — значения функции y = f (x) для равноотстоящих точек a=x_0,x_1,x_2,...,x_n =b с шагом h=\frac{b-a}{n}=\frac{b-a}{2m}. На паре соседних участков (рис. 8.6) кривая y = f (x) заменяется параболой y = L(x), коэффициенты которой подобраны так, что она проходит через точки Y_0,Y_1,Y_2

Площадь криволинейной трапеции, ограниченной сверху параболой, составит: S_i=\frac{h}{3}(y_{i-1}+4y_i+y_{i+1})

Суммируя площади всех криволинейных трапеций, получим:

 Геометрическая интерпретация интегрирования по методу Симпсона

Рис. 8.6. Геометрическая интерпретация интегрирования по методу Симпсона
S=\int\limits_{a}^bf(x)dx=\frac{h}{3}(y_0+4y_1+2y_2+4y_3+\cdot\cdot\cdot+2y_{2m-2}+4y_{2m-1}+y_{2m})=\frac{h}{3}\left(y_0+y_{2m}+\sum \limits_{i=1}^{2m-1}py_i\right)

, где1Как нетрудно заметить p = 2 при чётном i и p = 4 при нечётном i. p=3-(-1)^i

Следовательно, формула Симпсона для численного интегрирования имеет вид:

I=\int\limits_{a}^bf(x)dx=\frac{h}{3}\left(f(a)+f(b)+\sum \limits_{i=1}^{2m-1}py_i\right)

Методы трапеций и Симпсона являются частными случаями квадратурных формул Ньютона–Котеса, которые, вообще говоря, имеют вид,

\int\limits_{a}^bydx=(b-a)\sum \limits_{i=0}^nH_iy_i

где H_i — это некоторые константы называемые постоянными Ньютона–Котеса.

Если для квадратурных формул Ньютона-Котеса принять n = 1, то получим метод трапеций, а при n = 2 — метод Симпсона. Поэтому эти методы называют квадратурными методами низших порядков. Для n > 2 получают квадратурные формулы Ньютона–Котеса высших порядков.

В Octave реализован вычислительный алгоритм метода Симпсона с автоматическим выбором шага. Автоматический выбор шага интегрирования заключается в том, что интервал интегрирования разбивают на n отрезков и вычисляют значение интеграла, если полученное значение не удовлетворяет заданной точности вычислений, то n увеличивают вдвое и вновь вычисляют значение интеграла, так повторяют до тех пор пока не будет достигнута заданная точность. Итак, вычисление интеграла по методу Симпсона обеспечивает функция [F, K] = quadv(name, a, b[, tol, trace]), где:

name — имя функции, задающей подынтегральное выражение;

a, b — пределы интегрирования;

tol — точность вычислений;

trace — параметр позволяющий получить информацию о ходе вычислений в виде таблицы, в столбцах которой представлены: значение количества вычислений, начальная точка текущего промежутка интегрирования, его длина и значение интеграла;

F — значение интеграла;

K — количество итераций.

Пример 8.13. Вычислить интеграл \int\limits_{0}^1\sqrt{4-x^2}dx

Решение примера с применением функции quadv приведено влистинге 8.15.

	
% Подынтегральная функция
function y=G(x)
	y=(4-x^2).^(1/2);
end;
>>> format long
% Вычисление интеграла по методу Симпсона
% Точность установлена по умолчанию 1.0e-06
>>> [F1, K1]=quadv(’G’, 0, 1)
% Результат — значение интеграла и количество итераций
F1 = 1.91322288999134
K1 = 17
% Точность установлена пользователем 1.0e-07
>>> [F2, K2]=quadv(’G’, 0, 1, 1.0 e-07)
% Результат — значение интеграла и количество итераций
F2 = 1.91322295090669
K2 = 33
>>> format short
% Вызов функций с заданной степенью точности
% Вывод дополнительной информации о вычислениях
>>> quadv (’G’, 0, 1, 1.0 e-05,5)
	5.00000 0.00000 1.00000 1.91321
	7.00000 0.00000 0.50000 0.98948
	9.00000 0.50000 0.50000 0.92374
	11.0000 0.50000 0.25000 0.47458
	13.0000 0.75000 0.25000 0.44916
ans = 1.9132
Листинг 8.15. Вычисление интеграла через quadv (пример 8.13).
< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?