Участник:Валентин Голодов/Песочница

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

< Участник:Валентин Голодов(Различия между версиями)
Перейти к: навигация, поиск
Текущая версия (20:58, 14 декабря 2009) (править) (отменить)
 
(11 промежуточных версий не показаны.)
Строка 1: Строка 1:
== Введение ==
== Введение ==
-
 
+
== Постановка задачи ==
Пусть требуется вычислить интеграл
Пусть требуется вычислить интеграл
{{ eqno | 1 }}
{{ eqno | 1 }}
-
<p align="center"><tex>I=\int_a^b{f(x)exp(\imath*\omega x)dx},</tex></p>
+
<p align="center"><tex>I=\int_a^b{f(x)exp{\{\imath*\omega x\}}dx},</tex></p>
 +
где <tex>\omega(b-a)\gg 1,</tex> <tex>f(x)</tex> - гладкая на отрезке <tex>[a,b]</tex> функция.<br />
 +
Вычисление интегралов такого рода является типичной задачей, встречающейся при разложении функций в [[ряды Фурье]], при построении диаграмм направленности антенн и т.д.
 +
== Изложение метода ==
 +
=== Общий случай ===
 +
Будем рассматривать функцию <tex>\textstyle exp{\{\imath*\omega x\}}</tex> как весовую.<br />
-
где <tex>\omega(b-a)\gg 1</tex>,
+
Подобно интегрированию без этого весового множителя, зададимся некоторыми <tex>d_1,\ldots,d_n \in [-1,1]</tex> и построим
-
<tex>f(x)</tex> - гладкая на отрезке <tex>[a,b]</tex> функция.
+
[[интерполяционный многочлен Лагранжа]]<tex>L_n(x)</tex> степени <tex>n-1,</tex> совпадающий с <tex>f(x)</tex> в точках <tex>x_j=\frac{b+a}{2}+\frac{b-a}{2}d_j,</tex> <tex>j=1,\ldots,n</tex> <br /> и заменим исходный интеграл на {{ eqno | 2 }}<tex>\int_a^b{L_n(x)exp{\{\imath*\omega x\}}dx}.</tex> <br /> Последний интеграл vожет быть вычислен в явном виде
 +
::<tex>\int_a^b{L_n(x)exp{\{\imath*\omega x\}}dx}=S_n^\omega(f)=\frac{b-a}{2}exp{\left\{\imath\omega \frac{b+a}{2}\right\}}\sum_{j=0}^{n}D_j\left(\omega \frac{b-a}{2}\right)f(x_j),</tex> где
 +
<tex>D_j=\int_{-1}^{+1}{\left(\prod_{k\neq j}{\frac{\xi-d_k}{d_j-d_k}} \right)exp{\left\{\imath p\xi \right\}}d\xi}.</tex> <br />
 +
Получилась квадратурная формула
 +
::<tex>\int_a^b{f(x)exp{\{\imath*\omega x\}}dx}\approx S_n^\omega(f)</tex>
 +
с остаточным членом
 +
::<tex>R_n(f)=\int_a^b{(f(x)-L_n(x)exp{\{\imath*\omega x\}}dx}\approx S_n^\omega(f)</tex>
 +
Как и в общей формуле [[Ньютона-Котеса]] справедлива оценка
 +
::<tex>R_n(f)\leq\int_a^b{\left | (f(x)-L_n(x))\right | dx}\leq D(d_1,\ldots,d_n)\left(\max_{[a,b]}{ \left|{f^{(n)}(x)\right | \right){\left(\frac{b-a}{2}\right)}^{n+1},</tex> где
 +
::<tex>D(d_1,\ldots,d_n)=\int_{-1}^{+1}{\frac{ \left | \omega_n^0p^0(t)\right | } {n!}dt},</tex>
 +
::<tex>\omega_n^0p^0(t)=(t-d_1)\ldots(t-d_n),\ p^0(t)=p\left(\frac{b+a}{2}+\frac{b-a}{2}t \right)</tex>
 +
 
 +
=== Частные случаи для некоторых значений параметров ===
 +
Обычно в программах вычисления интегралов от быстро осциллирующих функций используются формулы {{eqref|1}} и {{eqref|2}}, соответствующие случаям: <tex>n=3,\ d_1=-1,\ d_2=0,\ d_3=1</tex>''(Формула Филона)'' или <tex>n=5,\ d_1=-1,\ d_2=-0.5,\ d_3=0,\ d_4=0.5,\ d_5=1</tex>
 +
Рассчетные коэффициенты в формуле {{eqref|2}} для ''формулы Филона'':
 +
::<tex>D_1(z)=z^{-3}\left[2z\cos(z)-\sin(z)\left(2-z^2\right)+\imath \left(z^2\cos(z)-z sin(z) \right) \right]</tex>
 +
::<tex>D_2(z)=z^{-3}\left[4\sin(z)-4z\cos(z)\right]</tex>
 +
::<tex>D_3(z)=z^{-3}\left[2z\cos(z)+sin(z) \left(z^2-2 \right )+\imath \left(z sin(z) - z^2 cos(z) \right) \right]</tex>
 +
== Недостатки метода ==
 +
Если формулы {{eqref|1}} и {{eqref|2}} использовать для вычисления интергалов от функций, не являющихся сильно осциллирующими, то может возникнуть следующая ситуация. Проиллюстрируем её для <tex>n=2,\ d_1=-1,\ d_2=1.</tex> В этом случае
 +
::<tex>D_1(p)=\int_{-1}^{+1}{ \frac{1-\xi}{2} exp{\{\imath*p \xi\}} d\xi}=\frac{\sin p}{p}+\frac{p\cos p - \sin p}{p^2} \imath,</tex>
 +
::<tex>D_2(p)=\int_{-1}^{+1}{ \frac{1+\xi}{2} exp{\{\imath*p \xi\}} d\xi}=\frac{\sin p}{p}-\frac{p\cos p - \sin p}{p^2} \imath.</tex> <br />
 +
При <tex>p\rightarrow 0</tex> имеем
 +
::<tex>\frac{p\cos p - \sin p}{p^2}= - \frac{p}{3}+O(p^3) \rightarrow 0,\ \frac{\sin p}{p} \rightarrow 1.</tex> <br />
 +
Таким образом, <tex>D_1(p),D_2(p)\rightarrow 1 при p\rightarrow 0.</tex> <br />
 +
Пусть <tex>p</tex> - малое число. Функции <tex>\sin p</tex> и <tex>p\cos p</tex> вычисляются в машине с погрешностями <tex>O(2^{-t}) и O(p2^{-t})</tex> соответственно. Вследствие этого коэффициенты <tex>D_1(p),\ D_2(p)</tex> приобритают погрешность <tex>O(2^{-t}/p))<\tex>. При <tex>n\g 2</tex> оказывается, что погрешность коэффициентов <tex>D_j(p)</tex>, вычисляемых по формулам {{eqref|1}}, может оказаться величиной порядка <tex>2^{-t}/p^{n-1}))</tex>. При <tex>t=30, \ n=5,\ p=0,01</tex> такая погрешность уже недопустима.
 +
== Пример программы ==
== Список литературы ==
== Список литературы ==
-
* ''Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков.''&nbsp; Численные методы М.
+
* ''Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков.''&nbsp; Численные методы
 +
 
 +
М.
{{stub}}
{{stub}}
-
[[Категория:Численное интегрирование]]
 
-
[[Категория:Учебные задачи]]
 

Текущая версия

Содержание

Введение

Постановка задачи

Пусть требуется вычислить интеграл

( 1 )

I=\int_a^b{f(x)exp{\{\imath*\omega x\}}dx},

где \omega(b-a)\gg 1, f(x) - гладкая на отрезке [a,b] функция.
Вычисление интегралов такого рода является типичной задачей, встречающейся при разложении функций в ряды Фурье, при построении диаграмм направленности антенн и т.д.

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

Общий случай

Будем рассматривать функцию \textstyle exp{\{\imath*\omega x\}} как весовую.

Подобно интегрированию без этого весового множителя, зададимся некоторыми d_1,\ldots,d_n  \in [-1,1] и построим

интерполяционный многочлен ЛагранжаL_n(x) степени n-1, совпадающий с f(x) в точках x_j=\frac{b+a}{2}+\frac{b-a}{2}d_j, j=1,\ldots,n
и заменим исходный интеграл на
( 2 )
\int_a^b{L_n(x)exp{\{\imath*\omega x\}}dx}.
Последний интеграл vожет быть вычислен в явном виде
\int_a^b{L_n(x)exp{\{\imath*\omega x\}}dx}=S_n^\omega(f)=\frac{b-a}{2}exp{\left\{\imath\omega \frac{b+a}{2}\right\}}\sum_{j=0}^{n}D_j\left(\omega \frac{b-a}{2}\right)f(x_j), где

D_j=\int_{-1}^{+1}{\left(\prod_{k\neq j}{\frac{\xi-d_k}{d_j-d_k}} \right)exp{\left\{\imath p\xi \right\}}d\xi}.
Получилась квадратурная формула

\int_a^b{f(x)exp{\{\imath*\omega x\}}dx}\approx S_n^\omega(f)

с остаточным членом

R_n(f)=\int_a^b{(f(x)-L_n(x)exp{\{\imath*\omega x\}}dx}\approx S_n^\omega(f)

Как и в общей формуле Ньютона-Котеса справедлива оценка

R_n(f)\leq\int_a^b{\left | (f(x)-L_n(x))\right | dx}\leq D(d_1,\ldots,d_n)\left(\max_{[a,b]}{ \left|{f^{(n)}(x)\right | \right){\left(\frac{b-a}{2}\right)}^{n+1}, где
D(d_1,\ldots,d_n)=\int_{-1}^{+1}{\frac{ \left | \omega_n^0p^0(t)\right | } {n!}dt},
\omega_n^0p^0(t)=(t-d_1)\ldots(t-d_n),\ p^0(t)=p\left(\frac{b+a}{2}+\frac{b-a}{2}t \right)

Частные случаи для некоторых значений параметров

Обычно в программах вычисления интегралов от быстро осциллирующих функций используются формулы (1) и (2), соответствующие случаям: n=3,\ d_1=-1,\ d_2=0,\ d_3=1(Формула Филона) или n=5,\ d_1=-1,\ d_2=-0.5,\ d_3=0,\ d_4=0.5,\ d_5=1 Рассчетные коэффициенты в формуле (2) для формулы Филона:

D_1(z)=z^{-3}\left[2z\cos(z)-\sin(z)\left(2-z^2\right)+\imath \left(z^2\cos(z)-z sin(z) \right) \right]
D_2(z)=z^{-3}\left[4\sin(z)-4z\cos(z)\right]
D_3(z)=z^{-3}\left[2z\cos(z)+sin(z) \left(z^2-2 \right )+\imath \left(z sin(z) - z^2 cos(z) \right) \right]

Недостатки метода

Если формулы (1) и (2) использовать для вычисления интергалов от функций, не являющихся сильно осциллирующими, то может возникнуть следующая ситуация. Проиллюстрируем её для n=2,\ d_1=-1,\ d_2=1. В этом случае

D_1(p)=\int_{-1}^{+1}{ \frac{1-\xi}{2} exp{\{\imath*p \xi\}} d\xi}=\frac{\sin p}{p}+\frac{p\cos p - \sin p}{p^2} \imath,
D_2(p)=\int_{-1}^{+1}{ \frac{1+\xi}{2} exp{\{\imath*p \xi\}} d\xi}=\frac{\sin p}{p}-\frac{p\cos p - \sin p}{p^2} \imath.

При p\rightarrow 0 имеем

\frac{p\cos p - \sin p}{p^2}= - \frac{p}{3}+O(p^3) \rightarrow 0,\  \frac{\sin p}{p} \rightarrow 1.

Таким образом, D_1(p),D_2(p)\rightarrow 1 при p\rightarrow 0.
Пусть p - малое число. Функции \sin p и p\cos p вычисляются в машине с погрешностями O(2^{-t}) и O(p2^{-t}) соответственно. Вследствие этого коэффициенты D_1(p),\ D_2(p) приобритают погрешность O(2^{-t}/p))<\tex>. При <tex>n\g 2 оказывается, что погрешность коэффициентов D_j(p), вычисляемых по формулам (1), может оказаться величиной порядка 2^{-t}/p^{n-1})). При t=30, \ n=5,\ p=0,01 такая погрешность уже недопустима.

Пример программы

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

  • Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков.  Численные методы

М.

Личные инструменты