
- •Операции со степенными полиномами
- •Аппроксимация табличных функций Общие понятия об аппроксимации и интерполяции
- •Аппроксимация табличных функций
- •Интерполирование табличных функций с помощью степенных полиномов
- •Численное интегрирование
- •Тригонометрическая интерполяция периодических функций. Гармонический анализ и синтез периодических функций
- •Нелинейный парный регрессионный анализ
- •Численное решение обыкновенных дифференциальных уравнений Общие понятия
- •Обзор численных методов решения ду
- •Методы Рунге-Кутта
- •Алгоритмы решения систем ду
- •Непосредственное численное решение систем ду с помощью стандартных функций программного пакета Matlab
- •Численное решение систем ду с помощью приложения Simulink
Численное интегрирование
Общие понятия
Основу машинных алгоритмов вычисления определенных интегралов составляет их геометрический смысл:
Большинство численных методов интегрирования заключается в том, что интервал интегрирования [a; b] разбивается на элементарные участки, на каждом из которых подынтегральная функция f(x) может быть заменена другой, гораздо более простой функцией, для которой интеграл вычисляется по достаточно простым формулам.
Заменяя подынтегральную функцию на элементарном участке интерполирующим степенным полиномом, получают так наз. квадратурные формулы численного интегрирования. При равномерном разбиении интервала интегрирования используются квадратурные формулы Ньютона – Котеса.
В зависимости от порядка интерполирующего полинома k различают следующие методы численного интегрирования:
k = 0 метод прямоугольников
k = 1 метод трапеций
k = 2 метод Симпсона (квадратичных трапеций)
Каждый из методов рассмотрим для следующих трех случаев:
1) |
Функция задана таблично |
yi=f(xi), i=0,1,2,…,n Dx=xi+1–xi=const |
|
2) |
yi=f(xi), i=0,1,2,…,n Dx=xi+1–xi=var |
||
3) |
Функция задана аналитически |
y=f(x) |
|
Метод прямоугольников (k=0)
Значение
функции на левой границе интервала
интегрирования:
Площадь i-го прямоугольника:
.
Интеграл
.
При
постоянном шаге (
):
.
При аналитическом задании функции:
.
Общая
формула при
:
.
Блок-схема алгоритма в общем случае для функции, заданной таблично, имеет вид:
Метод трапеций (k=1)
Площадь
i-й
трапеции:
.
Интеграл .
При переменном шаге:
.
При
постоянном шаге (
):
.
При аналитическом задании функции
.
Алгоритм вычисления интеграла будет отличаться от приведенного выше заменой формулы площади элементарного прямоугольника формулой площади элементарной трапеции.
Метод Симпсона (k=2)
Подынтегральная кривая на элементарном участке подлежит замене интерполирующим полиномом второго порядка. Шаг интегрирования при этом должен быть постоянным:
h = const,
а
количество элементарных участков
(интервалов разбиения) должно быть
четным:
n = 2m,
где m – количество квадратичных трапеций.
Площадь элементарной квадратичной трапеции:
.
Тогда интеграл:
.
Для
упрощения алгоритма в последней формуле
в квадратных скобках прибавим и отнимем
:
.
Для аналитической функции формула интеграла будет иметь вид:
.
Оценка точности методов и выбор шага
Погрешности рассмотренных методов сведены в таблицу:
Метод |
Погрешность |
|
Табличная функция |
Аналитическая функция |
|
прямоугольников |
|
|
трапеций |
|
|
Симпсона |
|
|
В таблице обозначено:
– максимальные
производные i-го
порядка на интервале [a;
b];
– максимальные
значения прямых разностей i-го
порядка на интервале [a;
b].
Таким образом, метод Симпсона при разбиении интервала интегрирования на n элементарных отрезков обеспечивает примерно такую же точность, что и метод трапеций при разбиении на 2n отрезков или метод прямоугольников при разбиении на 4n отрезков.
В
первом приближении для обеспечения
заданной точности интегрирования
можно выбирать шаг интегрирования по
формуле:
,
где p=1 для метода прямоугольников, p=2 для метода трапеций, p=4 для метода Симпсона.
Для более точного обеспечения заданной погрешности вычисления интеграла применяют алгоритмы с автоматическим выбором шага интегрирования (АВШ).
Численное интегрирование с автоматическим выбором шага
Смысл таких алгоритмов заключается в следующем:
1. Выбирают некоторое начальное значение количества отрезков разбиения интервала интегрирования n, которое можно принять произвольно (даже равным 1), и соответствующее ему начальное значение шага интегрирования h; вычисляют интеграл Z(h) одним из известных методов.
2. Увеличивают количество отрезков в 2 раза (n:=2n), шаг интегрирования, соответственно, уменьшается вдвое (h:=h/2); интеграл Z(h/2) вычисляют тем же самым методом.
3. Дробление шага интегрирования выполняют до тех пор, пока не будет выполняться условие
,
где
– последнее вычисленное значение
интеграла, являющееся результатом
алгоритма;
– предыдущее значение интеграла.
Окончательное значение интеграла можно уточнить по формуле Рунге, согласно которой, погрешность квадратурных формул имеет вид:
.
Тогда точное значение интеграла:
,
а при вычислении с половинным шагом:
.
Приравнивая правые части двух последних выражений:
или
,
можно вычислить погрешность:
.
С учетом этого может быть получена формула уточнения Рунге, позволяющая вычислить точное значение интеграла:
.
Рассмотрим алгоритм с АВШ на примере метода прямоугольников:
Недостатком приведенного алгоритма является то, что рассчитанные на предыдущей итерации интегральные суммы вычисляются на следующей итерации заново. Для того, чтобы избавиться от этого недостатка, нужно выразить последующую сумму (которую представляет собой интеграл) через предыдущую, т.е., найти зависимость
.
Интеграл, вычисленный по методу прямоугольников, равен
;
,
где
;
– сумма новых значений функции при
половинном шаге (приращение):
.
На основании этих формул можно составить алгоритм, представленный на рисунке ниже.
Алгоритмы вычисления определенного интеграла с АВШ, составленные по методам трапеции и Симпсона, имеют аналогичный вид. Различие заключается лишь в формулах интеграла и приращения суммы, а также в использовании соответствующей формулы уточнения Рунге.
Пример.
Вычислить
разными методами при
=1,
10-3,
сопоставить результаты вычислений.
В таблице ниже представлены результаты сопоставления разных методов интегрирования с АВШ.
-
Метод
n
Кол-во итераций
Z
прямоугольников
512
9
0,459799
трапеций
16
4
0,459697
Симпсона
2
1
0,459697
Численное интегрирование в среде Matlab
Для вычисления определенных интегралов в Matlab существуют функции quad (метод Симпсона) и quad8 (метод Ньютона-Котеса 8-го порядка). Формат их заголовков и способы обращения одинаковы:
Z=quad(‘f’, a, b)
Z=quad('f', a, b, tol)
Z=quad8(‘f’, a, b)
Z=quad8('f', a, b, tol)
– вычисление
определенного интеграла
при заданной точности расчета tol.
f – имя m-функции (определяется программистом), вычисляющей значение f(x) по заданному x.
Для функций, заданных таблично, может быть использована функция
Z=trapz(x, y),
Вычисляющая определенный интеграл методом трапеций.
Пример.
Вычислить интеграл
с точностью
методом Симпсона.
Решение. Создаем m-функцию
function y=fun(x)
y=sin(x)+cos(x)
и сохраняем ее в файле fun.m в любом доступном каталоге. Определяем значение интеграла в командной строке:
» quad('fun',0,pi,1e-4)
ans =
2.0000