Главная > Методы обработки сигналов > Численные методы
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

§ 7. Интегрирование быстро осциллирующих функций

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

где — гладкая функция. Функции

имеют на рассматриваемом отрезке примерно нулей. Поскольку многочлен степени имеет не более нулей, то такие функции могут быть хорошо приближены многочленами степени лишь при .

Поэтому для непосредственного вычисления интегралов от таких функций потребуется применение квадратур, точных для многочленов высокой степени.

Более выгодным может оказаться путь рассмотрения функции как весовой.

Как и в § 1, зададимся узлами интерполирования

и заменим исходный интеграл на , где интерполяционный многочлен с узлами . Последний интеграл может быть вычислен в явном виде

где

Получилась квадратурная формула

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

В соответствии с (3.1)

Вычисление интегралов такого рода является типичной задачей, встречающейся при разложении функций в ряды Фурье, при построении диаграмм направленности антенн и т.д.

В стандартных программах вычисления интегралов от быстро осциллирующих функций используются формулы (1), (2), соответствующие случаям: (эту формулу называют формулой Филона) или .

Если формулы (1), (2) использовать для вычисления интегралов от функций, не являющихся быстро осциллирующими, то может возникнуть следующая неприятность, которую мы проиллюстрируем для .

В этом случае

При имеем

Таким образом, при .

Пусть — малое число. Функции sinp и pcosp вычисляются в машине с погрешностями и соответственно. Вследствие этого коэффициенты приобретают погрешность . При оказывается, что погрешность коэффициентов , вычисляемых по формулам (1), может оказаться величиной порядка . Например, при такая погрешность уже недопустима. Поэтому стандартные программы вычисления интегралов от быстро осциллирующих функций должны иметь специальный блок, предусматривающий изменение расчетных формул при малых с тем, чтобы избежать существенного влияния вычислительной погрешности.

Если не очень велико, например , то можно пойти по следующему пути: при , где некоторое подбираем экспериментально, вычисления производим по формулам (1), (2); если , то вычисляем исходный интеграл по формуле трапеций (3.7), рассматривая всю функцию как подынтегральную. В рассматриваемом случае формула (3.7) приобретает вид

Формулы (1), (3) можно объединить в одну формулу

где

В стандартных программах вычисления интегралов рассматриваемого типа применяются квадратуры вида (4), (5). Возникает вопрос: зачем усложнять стандартную программу?

Может быть, проще написать стандартную программу вычисления по формуле (2), стандартную программу вычисления по формуле трапеций и дать инструкцию: при больших обращаться к первой из стандартных программ, при малых — ко второй? Обсудим целесообразность такого подхода. Нашей целью является создание максимальных удобств пользователю ЭВМ. Если в описании правил использования стандартной программы написано слишком много, то пользователь может не понять того, что написано, и

1) обратиться к другой программе, худшей по качеству, но имеющей лучшее описание или более простое обращение;

2) воспользоваться программой неправильно и не получить результатов; например, в рассматриваемом случае, применив метод расчета по формулам (1), (2) при он получит аварийную остановку ЭВМ;

3) воспользоваться программой неправильно и получить неверный результат, предполагая, что он верный; например, так случится, если он воспользуется формулами (1), (2) при порядка 1.

Очевидно, что последний случай влечет за собой наиболее неприятные для пользователя последствия.

При выборе метода для стандартной программы надо стремиться к тому, чтобы описание программы, составляемой на базе этого метода, было по возможности простым и кратким. Надо иметь в виду, что всякое дополнительное высказывание может быть истолковано неправильно в ущерб для области применения программы.

Приведем один поучительный реальный пример. В описании одной из стандартных программ вычисления кратных интегралов было написано: «Применение настоящей программы нецелесообразно, если число узлов берется большим 100 000». Спустя короткое время программа была практически изъята из употребления. Оказалось, что среди первых пользователей программы подавляющее большинство сразу задавались числом узлов 100000, при этом на вычисление простого интеграла уходило слишком много машинного времени. Весть об этом распространилась повсюду, и вскоре к программе перестали обращаться. На самом деле при ее использовании большинство реальных интегралов вычислялось с приемлемой точностью при числе узлов порядка 1000. Число 100 000 было указано лишь как ориентировочная верхняя граница значений, при которых вычислительная погрешность еще не оказывает катастрофического влияния на результат.

<< Предыдущий параграф Следующий параграф >>
Оглавление