Применение сплайнов для численного интегрирования

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == Введение == === Постановка математической задачи === == Изложение метода == == Анализ метода и ошибок == == Ч...)
(Добавил основную часть теории)
Строка 1: Строка 1:
== Введение ==
== Введение ==
-
=== Постановка математической задачи ===
+
 
 +
Ставится задача вычислить интеграл вида
 +
{{eqno |1}}
 +
::<tex>J=\int_a^bf(t)dt,</tex>
 +
где <tex>a</tex> и <tex>b</tex> - нижний и верхний пределы интегрирования; <tex>f(t)</tex> - непрерывная функция на отрезке <tex>[a,b]</tex>.
 +
 
 +
Введем на отрезке интегрирования равномерную сетку, определим значения функции в узлах сетки. Пусть имеется совокупность узлов
 +
<tex>\left\{{t_i}\right\}_{i = 0}^{N},\; t_i = a + i{\tau},\; {\tau}= (b - a)/{N}, \;t \in \left[{a, b}\right].</tex>
 +
Пусть также задана таблица
 +
<tex>f_i = \left\{{f(t_i)}\right\}_{i = 0}^{N}.</tex>
 +
Представим интеграл {{eqref|1}} в виде суммы интегралов по частичным отрезкам:
 +
{{eqno|2}}
 +
::<tex>\int_a^bf(t)dt=\sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}f(t)dt.</tex>
 +
 
 +
Сущность большинства методов вычисления определенных интегралов состоит в замене подынтегральной функции <tex>f(t)</tex> на отрезке <tex>[t_{i-1},\;t_i]</tex> аппроксимирующей функцией <tex>\varphi(t)</tex>, для которой можно легко записать первообразную в элементарных функциях, т.е.
 +
{{eqno |3}}
 +
::<tex>\int_{t_{i-1}}^{t_i}f(t)dt=\int_{t_{i-1}}^{t_i}\varphi(t)dt+R=S+R,</tex>
 +
где S - приближеное значение интеграла; R - погрешность вычисления интеграла. Лучше всего изучена замена <tex>f(t)</tex> алгебраическим многочленом.
 +
 
== Изложение метода ==
== Изложение метода ==
 +
 +
Возьмем в {{eqref|3}} в качестве аппроксимирующей функции кубический сплайн:
 +
{{eqno |4}}
 +
::<tex>\int_a^bf(t)dt \approx \sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}\varphi_i(t)dt,</tex> где
 +
 +
<tex>\varphi_i(t) = a_i+b_i(t-t_{i-1})+c_i(t - t_{i-1})^2 + d_i(t - t_{i-1})^3, \; t \in [t_{i-1},\;t_i]. </tex>
 +
 +
Коэффициенты вычисляются по следующим формулам:
 +
{{eqno|5}}
 +
<tex> a_i=f_{i-1}</tex>
 +
 +
<tex>b_i=\frac{f_i-f_{i-1}}{\tau}\;-\;\frac{\tau(2c_i+c_{i+1})}{3}</tex>
 +
 +
<tex>c_{i-1}+4c_i+c_{i+1}=3\left(\frac{f_i-2f_{i-1}+f_{i-2}}{\tau^2}\right); \;\;c_1=0</tex>
 +
 +
<tex>d_i=\frac{c_{i+1}-c_i}{3\tau}</tex>
 +
 +
Тогда интеграл {{eqref|4}} запишется как сумма интегралов от сплайнов:
 +
 +
::<tex>J=\int_a^bf(t)dt \approx \sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}\varphi_i(t)dt=\sum_{i=1}^N\left(a_i\tau+{b_i\over2}\tau^2+{c_i\over3}\tau^3+{d_i\over4}\tau^4\right).</tex>
 +
 +
Последняя формула упрощается при подстановке в неё выражений {{eqref|5}} для коэффициентов <tex>a_i,\;b_i, \; d_i:</tex>
 +
 +
<tex>J \;\approx \;\sum_{i=1}^n\;\frac{f_i+f_{i-1}}{2}\tau\;-\;\sum_{i=1}^n\;\frac{\tau^3(c_{i+1}+c_i)}{12}</tex>
 +
 +
 +
 +
 +
== Анализ метода и ошибок ==
== Анализ метода и ошибок ==
 +
<!--у Буслова про поправочный член в трапециях-->
== Числовой пример ==
== Числовой пример ==
== Рекомендации программисту ==
== Рекомендации программисту ==
 +
<!-- У Богдана интересная хрень про заданную точность -->
== Заключение ==
== Заключение ==
 +
<!-- В Мудрове есть че-то на 158 стр -->
 +
== Ссылки ==
 +
* [[Практикум ММП ВМК, 4й курс, осень 2008|Практикум ММП ВМК, 4й курс, осень 2008]]
== Список литературы ==
== Список литературы ==
 +
* http://www.intuit.ru/department/calculate/calcmathbase/7/1.html
 +
* http://mathalgo.blogspot.com/2007/11/blog-post.html
 +
* ''Бабенко К.И'' Основы численного анализа М.: Наука, 1986.
 +
* Мудров
 +
* Буслов
-
 
+
<!--не забыть про ссылки и норм. лит-ру -->
{{stub}}
{{stub}}
[[Категория:Численное интегрирование]]
[[Категория:Численное интегрирование]]

Версия 15:11, 16 октября 2008

Содержание

Введение

Ставится задача вычислить интеграл вида

(1)
J=\int_a^bf(t)dt,

где a и b - нижний и верхний пределы интегрирования; f(t) - непрерывная функция на отрезке [a,b].

Введем на отрезке интегрирования равномерную сетку, определим значения функции в узлах сетки. Пусть имеется совокупность узлов \left\{{t_i}\right\}_{i = 0}^{N},\; t_i = a + i{\tau},\; {\tau}= (b - a)/{N}, \;t \in \left[{a, b}\right]. Пусть также задана таблица f_i = \left\{{f(t_i)}\right\}_{i = 0}^{N}. Представим интеграл (1) в виде суммы интегралов по частичным отрезкам:

(2)
\int_a^bf(t)dt=\sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}f(t)dt.

Сущность большинства методов вычисления определенных интегралов состоит в замене подынтегральной функции f(t) на отрезке [t_{i-1},\;t_i] аппроксимирующей функцией \varphi(t), для которой можно легко записать первообразную в элементарных функциях, т.е.

(3)
\int_{t_{i-1}}^{t_i}f(t)dt=\int_{t_{i-1}}^{t_i}\varphi(t)dt+R=S+R,

где S - приближеное значение интеграла; R - погрешность вычисления интеграла. Лучше всего изучена замена f(t) алгебраическим многочленом.

Изложение метода

Возьмем в (3) в качестве аппроксимирующей функции кубический сплайн:

(4)
\int_a^bf(t)dt \approx \sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}\varphi_i(t)dt, где

\varphi_i(t) = a_i+b_i(t-t_{i-1})+c_i(t - t_{i-1})^2 + d_i(t - t_{i-1})^3, \; t \in [t_{i-1},\;t_i].

Коэффициенты вычисляются по следующим формулам:

(5)

 a_i=f_{i-1}

b_i=\frac{f_i-f_{i-1}}{\tau}\;-\;\frac{\tau(2c_i+c_{i+1})}{3}

c_{i-1}+4c_i+c_{i+1}=3\left(\frac{f_i-2f_{i-1}+f_{i-2}}{\tau^2}\right); \;\;c_1=0

d_i=\frac{c_{i+1}-c_i}{3\tau}

Тогда интеграл (4) запишется как сумма интегралов от сплайнов:

J=\int_a^bf(t)dt \approx \sum_{i=1}^N\;\int_{t_{i-1}}^{t_i}\varphi_i(t)dt=\sum_{i=1}^N\left(a_i\tau+{b_i\over2}\tau^2+{c_i\over3}\tau^3+{d_i\over4}\tau^4\right).

Последняя формула упрощается при подстановке в неё выражений (5) для коэффициентов a_i,\;b_i, \; d_i:

J \;\approx \;\sum_{i=1}^n\;\frac{f_i+f_{i-1}}{2}\tau\;-\;\sum_{i=1}^n\;\frac{\tau^3(c_{i+1}+c_i)}{12}



Анализ метода и ошибок

Числовой пример

Рекомендации программисту

Заключение

Ссылки

Список литературы