Введение в численные методы обработки данных - Сысоев

81
И. В. Сысоев ВВЕДЕНИЕ В ЧИСЛЕННЫЕ МЕТОДЫ ОБРАБОТКИ ДАННЫХ Учебно-методическое пособие

Upload: madnessspirit

Post on 29-Jul-2015

401 views

Category:

Documents


20 download

TRANSCRIPT

Page 1: Введение в численные методы обработки данных - Сысоев

И.В. Сысоев

ВВЕДЕНИЕ В ЧИСЛЕННЫЕ МЕТОДЫ

ОБРАБОТКИ ДАННЫХ

Учебно-методическое пособие

Page 2: Введение в численные методы обработки данных - Сысоев

Оглавление

Предисловие 4

I Численные методы решения математических задач 6

1 Численное решение нелинейных алгебраических уравнений 71.1 История вопроса и постановка задачи . . . . . . . . . . . . . . . . . . 71.2 Метод половинного деления . . . . . . . . . . . . . . . . . . . . . . . 91.3 Метод простой итерации . . . . . . . . . . . . . . . . . . . . . . . . . 111.4 Метод Ньютона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Решение систем линейных уравнений. Метод Гаусса 152.1 Постановка задачи и идея метода . . . . . . . . . . . . . . . . . . . . 152.2 Алгоритм реализации — считывание и хранение данных . . . . . . . 172.3 Подсчёт определителя . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 Преобразование матрицы . . . . . . . . . . . . . . . . . . . . . . . . . 192.5 Решение систем уравнений, имеющих трёхдиагональную матрицу.

Метод прогонки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Аппроксимация, интерполяция и экстраполяция 243.1 Интерполирование и приближение функций . . . . . . . . . . . . . . 25

3.1.1 Интерполирование алгебраическими многочленами Лагранжа 253.1.2 Реализация интерполяции по Лагранжу на ЭВМ . . . . . . . 26

3.2 Интерполирование сплайнами . . . . . . . . . . . . . . . . . . . . . . 283.3 Аппроксимация методом наименьших квадратов . . . . . . . . . . . 32

4 Численное дифференцирование 374.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2 Дифференцирование со сглаживанием прямою . . . . . . . . . . . . 394.3 Дифференцирование со сглаживанием параболою . . . . . . . . . . . 41

1

Page 3: Введение в численные методы обработки данных - Сысоев

4.4 Дифференцирование со сглаживанием полиномом произвольного по-рядка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4.1 Вывод формулы . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4.2 Рекомендации по реализации . . . . . . . . . . . . . . . . . . . 46

5 Численное интегрирование 495.1 Метод прямоугольников и метод трапеций . . . . . . . . . . . . . . . 49

5.1.1 Метод прямоугольников . . . . . . . . . . . . . . . . . . . . . 505.1.2 Метод трапеций . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2 Метод Симпсона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.3 Отыскание первообразной . . . . . . . . . . . . . . . . . . . . . . . . 52

6 Численное интегрирование дифференциальных уравнений 556.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.2 Метод Эйлера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

II Статистические методы анализа сигналов 60

7 Свойства одномерных случайных величин 617.1 Функция распределения, плотность распределения . . . . . . . . . . 617.2 Основные законы распределения . . . . . . . . . . . . . . . . . . . . 637.3 Рекомендации по выполнению практических заданий . . . . . . . . . 64

8 Многомерные случайные величины 668.1 Функция распределения и плотность распределения многомерной

случайной величины . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668.2 Условные распределения . . . . . . . . . . . . . . . . . . . . . . . . . 68

9 Математические моменты 709.1 Общее определение математических моментов . . . . . . . . . . . . . 709.2 Эмпирические моменты . . . . . . . . . . . . . . . . . . . . . . . . . . 719.3 Многомерные моменты . . . . . . . . . . . . . . . . . . . . . . . . . . 72

10 Предварительная обработка сигнала 7410.1 Устранение трендов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7410.2 Устранение сезонных компонент . . . . . . . . . . . . . . . . . . . . . 77

2

Page 4: Введение в численные методы обработки данных - Сысоев

Литература 79

3

Page 5: Введение в численные методы обработки данных - Сысоев

Предисловие

В наше время бурного развития вычислительной и цифровой измерительнойтехники большое значение приобретает вопрос практического обучения молодыхспециалистов методам обработки полученных данных. Для студентов биомеди-цинских, биофизических и биоинженерных специальностей это тем более акту-ально, поскольку им предстоит иметь дело с многочисленными и различными поприроде сигналами, такими как электро- и магнитоэнцефалограммы, электромио-граммы, электрокардиограммы, пульсограммы и др., общим свойством которых внастоящее время является то, что они оцифровываются и в оцифрованном видепередаются в компьютер или на микроконтроллер, где и обрабатываются. Такимобразом, успешное освоение численных методов анализа данных с использованиемсовременных языков программирования и стандартных пакетов программ можетсущественно повысить конкурентоспособность выпускников на рынке труда.

Предлагаемое учебно-методическое пособие является результатом чтения ав-тором учебных курсов «Современные компьютерные технологии» и «Анализ дан-ных для решения социально-экономических задач» студентам направления 200300«биомедицинская инженерия» на факультете нано- и биомединцинских техноло-гий Саратовского государственного университета им. Н. Г. Чернышевского. Одна-ко общность изложенных методов и подходов позволяет надеяться на то, что оностанет полезно всякому, кто обладает азами знаний программирования и интере-суется численными методами математики.

Цель пособия — развитие у студентов навыков работы с экспериментальнымиданными средствами современных языков программирования и пакетов программ.Это означает, что оно изначально ориентировано на получение практических уме-ний и их конкретное приложение для решения важных задач.

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

1. непосредственно теоретический материал, содержащий основные понятия и

4

Page 6: Введение в численные методы обработки данных - Сысоев

алгоритм, с выводом необходимых формул;2. алгоритм численной реализации или подробные рекомендации по програм-

мированию с указанием, насколько возможно, узких мест;3. задания, одно или несколько, позволяющие протестировать написанную про-

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

Пособие включает две части. Первая — «Численные методы решения матема-тических задач» посвящена реализации на компьютере ряда базовых математиче-ских алгоритмов таких, как численное решение нелинейных уравнений и системлинейных уравнений, численное интегрирование и дифференцирование. Она рас-считана на то, что студент уже обладает базовыми навыками программирования,но ещё не в полной мере ориентируется в составлении структуры программы ивыборе оптимальных путей реализации того или иного алгоритма, и потому со-держит большое количество инструкций по программированию. Вторая часть —«Статистические методы анализа сигналов» содержит материал в основном постатистической обработке временных рядов, включая элементы теории случай-ных процессов. Эта часть ориентирована уже на более подготовленного студентаи содержит в первую очередь конкретные рекомендации по описанным методам,частично в виде примечаний, оставляя действия чисто программистского харак-тера на усмотрения читателя.

В принципе, первую часть пособия можно читать и использовать по лекци-ям независимо, не соблюдая строго порядка, предусмотренного пособием. Однакоследует помнить, что, во-первых, лекции построены примерно по порядку услож-нения используемых в них алгоритмов как с математической, так и с программнойточки зрения, во-вторых, некоторые из них связаны, например, для освоения мето-да численного дифференцирования, описанного в разделе 4.4 необходимо освоитькакой-либо метод решения систем линейных уравнений, например, описанный влекции 2 метод Гаусса. Часть «Статистические методы анализа сигналов» постро-ена более жёстко и редко допускает свободный порядок освоения.

Автор выражает искреннюю благодарность профессору Борису ПетровичуБезручко, который вложил немало своих сил, чтобы подвигнуть его на эту ра-боту, а также всем коллегам по кафедре динамического моделирования и биоме-дицинской инженерии Саратовского государственного университета и по лабо-ратории СФ-6 Саратовского филиала Института радиотехники и электроникиРАН за их всемерные помощь и содействие.

5

Page 7: Введение в численные методы обработки данных - Сысоев

Часть I

Численные методы решенияматематических задач

6

Page 8: Введение в численные методы обработки данных - Сысоев

Лекция 1

Численное решение нелинейныхалгебраических уравнений

1.1 История вопроса и постановка задачи

Пусть на интервале (xinit, xfin) задана некоторая функция действительного пе-ременного f(x). Требуется найти все корни уравнения

f(x) = 0. (1.1)

Так обычно ставится в математике задача поиска корней нелинейного алгеб-раического уравнения. Этой задаче не одна сотня лет (гораздо больше на самомделе, чем тем математическим обозначениям, которые применены при её форму-лировке в (1.1)) и за прошедшее время человечество выработало богатый арсеналметодов решения. Впрочем, хотя существует множество алгоритмов, направлен-ных на решение уравнений определённого класса, в общем виде задача (1.1) неимеет до сих пор решения и вряд ли когда-либо получит его1.

Невозможность решить (1.1) для произвольного вида f(x) аналитически, т. е.выразить решение в формулах, породила интерес к разного рода приближённымподходам. Их можно наиболее общо разделить на два класса: асимптотическиеметоды и численные методы. Известно, что любую достаточно гладкую функциюможно разложить в ряд, а, значит, это при определённых ограничениях это при-менимо и к f(x). Таким образом можно свести произвольную, в принципе, скольугодно сложную функцию к заранее заданному базису, например, полиномиаль-

1Строго доказано, что если f(x) представляет собою алгебраический полином порядка 5 иливыше, то при произвольных коэффициентах его корни не могут быть выражены в радикалах. Аполиномы считаются одним из самых «простых» видов функций. Говорить об общем решениитрансцендентных уравнений в радикалах, следовательно, не приходится.

7

Page 9: Введение в численные методы обработки данных - Сысоев

ному или тригонометрическому (разложение в ряды Тейлора и ряды Фурье), азатем применить методы, разработанные для этого базиса. Недостатком такогоподхода является то, что даже для таких сравнительно простых базисов не най-дено методов решения в общем виде, что ограничивает точность, а, кроме того,часто разложение приходится производить на всём промежутке (xinit, xfin), а вокрестности некоторой точки xprim, которую выбирают из дополнительных сооб-ражений.

Альтернатива асимптотическим методам — численные алгоритмы. Они тожеимеют достаточно давнюю историю и известны ещё как минимум со времён Нью-тона. Любой численный метод предполагает два этапа:

1. выделение промежутков (xinit,i, xfin,i), на которых существует корень xnul,i иэтот корень единственен на этом промежутке;

2. построение итеративного процесса, который сходится к искомому корню xnul,i.

Основная проблема здесь та же, что в асимптотических методах с выбором xprim:как выбрать промежутки, где есть корни и они единственны? Собственно, дляпроизвольной f(x) нельзя ответить даже на вопрос: сколько корней имеет (1.1)?Вообще говоря, даже на конечном промежутке f(x) может иметь бесконечное чис-ло корней, так что задача их численного нахождения будет нерешаема.

Обыкновенно подзадачу 1 решают с привлечением дополнительных сведений,проистекающих из истории данной задачи. Бывает, что достаточно найти какой-тоодин корень, всё равно какой. Иногда информацию о количестве и расположениикорней можно почерпнуть из свойств f(x), например, полином порядка n всегдаимеет не более n корней, но действительных некратных может иметь и меньше(может не иметь вовсе). Тригонометрическая функция f(x) периодична и, следо-вательно, необходимо искать корни только на одном периоде. Полезно также ис-следовать f(x) на непрерывность, поскольку наличие на промежутке (xinit,i, xfin,i)

разрывов первого, а тем более второго рода, часто (но не всегда) приводит к некор-ректности применения численной процедуры. В любом случае, поскольку вырабо-тать общие средства решения подзадачи 1 невозможно, приходится полагаться наопыт и искусство исследователя и, следовательно, она не может являться пред-метом регулярной теории. Потому перейдём собственно к итерационным методам,позволяющим найти корень xnul на промежутке (xinit, xfin), если известно, что онтам есть и единственен.

8

Page 10: Введение в численные методы обработки данных - Сысоев

1.2 Метод половинного деления

Пусть на (xinit, xfin) имеется единственный корень уравнения (1.1) xnul. Значит,f(xinit) и f(xfin) имеют различные знаки. Используем этот факт. Найдём f(xmed),xmed = 1

2(xinit + xfin). Если f(xmed) того же знака, что и f(xinit), значит корень

расположен между xmed и xfin, иначе — между xinit и xmed. Пусть теперь начало но-вого интервала (будь то xinit или xmed в зависимости от того, где находится корень)обозначается x1

init (что означает после первой итерации), а конец соответственноx1

fin, исходные начало и конец также будем обозначать x0init и x0

fin для общности.В результате нам удалось снизить неопределённость того, где находится корень,в два раза.

Примечание 1.1 Надобно сразу отметить, что метод в некотором смысле будет рабо-тать и тогда, когда на исходном интервале (xinit, xfin) оказалось несколько (нечётноеколичество, иначе f(xinit) и f(xfin) будут одного знака) корней. При этом на некоторойитерации произойдёт их разделение. Так, если их было три, то два окажутся с однойстороны, а один — с другой. Его-то и отыщет процедура. Правда, заметить это будетбез привлечения дополнительных знаний и методов невозможно и мы будем пребыватьв уверенности, что обнаружили единственный корень. Гарантировать, какой именно ко-рень будет найден, естественно, тоже невозможно.

Такой процесс можно повторять сколько угодно раз (при расчёте на компью-тере столько, сколько позволяет точность представления данных ЭВМ), последо-вательно заужая интервал, в котором находится корень. Обычно процесс закан-чивают по достижении на n-ной итерации интервалом (xn

init, xnfin) величины менее

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

Задание 1.1 Реализуйте метод половинного деления в виде процедуры, ко-торая на входе получает отрезок, на котором нужно искать корень, точ-ность ε и имя функции f , а на выходе выдаёт корень. Сама функция зада-ётся отдельно (в той же программе или в другом модуле).

Внутри процедуры следует ввести две переменные xinit и xfin, отве-чающие за текущие края промежутка, и переменную xmed, которая будетхранить середину промежутка; далее организовать цикл с условием (типаwhile), в котором будет происходить проверка, в какую половину текущегопромежутка попадает корень. Условие имеет вид: пока (xfin−xinit) > ε. Ес-ли f(xinit) и f(xmed) разных знаков, значит нужно выбрать первую половину

9

Page 11: Введение в численные методы обработки данных - Сысоев

Рис. 1.1. Графическая интерпретация итерационнойпроцедуры отыскания корней нелинейного уравне-ния. На графике показана функция f(x) и линияf(x) = 0 — чёрным. Вертикальные серые линии —результаты деления исходного интервала пополам с

номером итерации.

10

Page 12: Введение в численные методы обработки данных - Сысоев

промежутка и присвоить xfin значение xmed, иначе — выбрать вторую по-ловину и присвоить xinit значение xmed.

Решите численно следующие уравнения (найдите хотя бы один корень):

• линейные kx + b = 0, при (k = 1, b = 3), (k = 5, b = −10), (k = −1, b = 0);• квадратные и биквадратные x2+4x+4 = 0, 3x2−6x+1 = 0, 2x4−2x2+1

2= 0,

x4 − 18x4 − 3 = 0;• тригонометрические sin(x) =

√3

2, cos(2x) = − sin2(x) + 1

9.

При решении отметьте себе, сколько шагов n понадобилось методудля нахождения корня с точностью ε. Величину ε задайте на уровне∼ 10−6 − 10−8. Вычисления производите с двойною точностью (тип пере-менных с плавающею запятой double в Pascal и Delphi или real(8) вFortran).

Если на рассматриваемом промежутке f(x) заведомо имеет несколько корней исколько не ясно, а преодолеть эту трудность иными средствами невозможно, мож-но воспользоваться приёмом, который в литературе получил название выделениекорней. После того как один из корней — xnul,1 — найден, рассмотрим функциюf1(x) = f(x)

x−xnul,1. f1(x) будет по построению иметь все те же корни, что и f(x) за

исключением xnul,1.

1.3 Метод простой итерации

Метод половинного деления, рассмотренный в предыдущем разделе, далеко неединственный возможный. Рассмотрим метод, получивший в литературе названиеметода простой итерации.

Метод простой итерации состоит в том, что уравнение (1.1) заменяется урав-нением (1.2):

x = s(x), (1.2)

затем выбирается некоторое начальное приближение x0 для искомого корня иследующее приближение вычисляется по правилу:

xn+1 = s(xn), n = 0, 1, 2 . . . . (1.3)

Естественно, что для сходимости метода к правильному результату большое зна-чение имеет выбор функции s(x). Известно несколько способов выбора s(x), ноодним из наиболее популярных является выбор в виде (1.4):

s(x) = x + τ(x)f(x), (1.4)

11

Page 13: Введение в численные методы обработки данных - Сысоев

где τ(x) произвольная, не меняющая своего знака на интересующем нас проме-жутке (xinit, xfin) функция.

В случае выбора τ(x) ≡ const, подставив такое τ(x) в (1.4), а затем s(x) в (1.3),получим отображение последования

xn+1 − xn

τ= f(xn), n = 0, 1, . . . (1.5)

и метод сходится при выполнении условия

−2 < τf ′ (xnul) < 0, (1.6)

где f ′ (xnul) — значение производной в корне [1].Поскольку значение производной в точке xnul подсчитать нельзя, так как сама

эта точка и является предметом поиска, величину τ приходится подбирать экспе-риментально. Для этого есть два ориентира:

1. Чтобы выбрать правильно знак τ , воспользуемся предположением, что напромежутке [xinit; xfin] имеется единственный корень. Это означает, что еслифункция f(x) в среднем возрастает на промежутке, то и в точке корня значе-ние производной будет положительно и наоборот. Для того, чтобы оценить,возрастает ли функция в среднем, можно просто посмотреть, справедливоли предположение

f (xinit) < f (xfin) . (1.7)

Если (1.7) выполняется, значит, чтобы не нарушить условие (1.6), следуетбрать τ < 0, иначе — τ > 0.

2. Чтобы приблизительно выбрать абсолютное значение τ , можно оценить сред-нюю скорость спадания функции f(x) на интересующем нас промежутке.Для этого достаточно подсчитать величину:

f ′(x)∣∣∣x∈[xinit;xfin]

=

∣∣∣∣f (xfin)− f (xinit)

xfin − xinit

∣∣∣∣ . (1.8)

τ следует выбрать много меньше этой величины, но во сколько конкретнораз: 10, 100, тысячу — решать приходится в каждой конкретной ситуации от-дельно2. Следует только помнить, что чем больше по модулю τ , тем скореебудет достигнута сходимость и, значит, слишком занижать его не рекомен-дуется.

2Следует отметить, что метод может работать и если выбрать τ больше, чем (1.8), посколькускорость спадания производной в точке корня может быть как больше, так и меньше средней.Но рассчитывать на это нельзя.

12

Page 14: Введение в численные методы обработки данных - Сысоев

Примечание 1.2 При реализации метода простой итерации следует сразу учесть сле-дующие различия с методом половинного деления. Хотя по прежнему стоит задача отыс-кания корня на промежутке (xinit, xfin) и процедура строится итерационно, теперь мыоперируем не с границами интервала, где лежит корень, а непосредственно с n-ным при-ближением для данного корня. В этой связи, взяв за основу процедуру, описанную взадании 1.1, нужно её модифицировать следующим образом.

• Внутри цикла не нужно больше сравнивать знаки f(x) на концах и в середине про-межутка. Вместо этого необходимо организовать вычисление последующего при-ближения xn+1 по предшествующему xn с помощью формулы (1.3). При этом, вы-числив xn+1 необходимо в отдельную переменную запомнить предыдущее значение(более ранние xn−1, xn−2 и т. д. сохранять нет необходимости).

• Следует изменить критерий останова процедуры, т. е. способ оценки точности —величины ε (смысл ε как точности расчётов сохраняется). Раньше условие про-должения работы в цикле имело смысл: длина промежутка, на котором находитсякорень больше наперёд заданного ε. Теперь мы должны проверять разницу меж-ду двумя последовательными приближениями: если (xn+1 − xn) < ε, т. е. значениекорня на (n + 1)-ом шаге уточняется очень незначительно, тогда следует выйти изцикла.

Задание 1.2 Для тех же уравнений, что и в задании 1.1, найдите решениес помощью метода простой итерации. Сравните число шагов n, необходи-мых для нахождения корня в обоих случаях при одинаковой точности ε.

1.4 Метод Ньютона

Метод Ньютона также, как и рассмотренные выше метод половинного деле-ния и метод простой итерации, относится к числу итерационных. Он сочетает всебе асимптотический подход, когда интересующая нас функция f(x) заменяетсявозле начальной догадки для корня x0 приближением на основе ряда Тейлора, ичисленный алгоритм нахождения следующего приближения xn+1 по предыдущемуxn.

Итак, пусть мы знаем начальное приближение xn для корня xnul уравнения(1.1). Аппроксимируем f(x) в окрестности xn рядом Тейлора, ограничившись ну-левым и первым членами:

f(x) ≈ H1(x) = f (xn) + (x− xn) f ′ (xn) (1.9)

и за следующее приближение xn+1 возьмём корень уравнения H1(x) = 0, т. е.

xn+1 = xn − f (xn)

f ′ (xn), n = 0, 1, 2, . . . (1.10)

13

Page 15: Введение в численные методы обработки данных - Сысоев

Метод Ньютона также часто называют методом касательных, так как новоеприближение для xnul xn+1 является абсциссою точки пересечения касательной,проведённой в точке

(xn, f (xn)

)к графику функции f(x), с осью Ox.

Сходимость метода Ньютона, как и большинства итерационных алгоритмов,зависит от выбора начального приближения x0. Подробно вопрос о сходимостиисследован в литературе (см. [1]), но можно подчеркнуть, что в отличие от методапростой итерации он имеет квадратичную сходимость, т. е. погрешность нахож-дения корня на n-ном шаге εn = (xnul − xn) убывает пропорционально квадратучисла шагов n, в то время как для метода простой итерации εn убывает пропор-ционально только первой степени n.

Чтобы увеличить область сходимости метода Ньютона, т. е. диапазон значенийначальных приближений x0 для искомого корня xnul, из которых метод сходитсяв пределе к x0, можно использовать модифицированный метод Ньютона, которыйзаключается в замене производной в точке n-ного приближения производною вточке первого приближения. Тогда (1.10) преобразуется к виду (1.11):

xn+1 = xn − f (xn)

f ′ (x0), n = 0, 1, 2, . . . (1.11)

Такой способ также позволяет обойтись без необходимости искать значение f ′ (xn)

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

Задание 1.3 Для тех же уравнений, что и в заданиях 1.1 и 1.2, найдитерешение с помощью метода Ньютона и модифицированного метода Нью-тона. Сравните число шагов n, необходимых для нахождения корня в каж-дом из случаев, построив график зависимости εn(n).

14

Page 16: Введение в численные методы обработки данных - Сысоев

Лекция 2

Решение систем линейныхуравнений. Метод Гаусса

2.1 Постановка задачи и идея метода

В задачах численной обработки данных часто возникает необходимость реше-ния систем большого числа линейных алгебраических уравнений. В частности, ктакой задаче сводятся многие распространённые методы оптимизации (нахожде-ния минимума или максимума) функции многих переменных, например, методГаусса–Ньютона и его модификация — метод Левенберга–Маркварта; решение си-стем линейных уравнений используется при сглаживании и численном дифферен-цировании, при построении эмпирических прогностических моделей и т. д.

Сформулируем задачу. Пусть имеется система L линейных алгебраическихуравнений вида:

a1,1x1 + a1,2x2 + . . . a1,LxL = b1

a2,1x1 + a2,2x2 + . . . a2,LxL = b2

· · · · · · . . . · · · · · ·aL,1x1 + aL,2x2 + . . . aL,LxL = bL,

(2.1)

где xi, i = 1, . . . , L суть неизвестные, ai,j, i, j = 1, . . . , L — коэффициенты при них,bi, i = 1, . . . , L — свободные члены. Требуется найти значения всех xi, удовлетво-ряющие уравнению (2.1).

В дальнейшем удобнее рассматривать задачу в матричном виде: пусть A =

{ai,j}Li,j=1 — матрица коэффициентов, b = {bi}L

i=1 — столбец (вектор) свободныхчленов, x = {xi}L

i=1 — столбец (вектор) неизвестных. Это тем полезнее, что напрактике реализация численного алгоритма всё равно предполагает, что Тогдасистема уравнений (2.1) преобразуется к виду:

15

Page 17: Введение в численные методы обработки данных - Сысоев

Ax = b (2.2)

Из общих соображений известно, что поставленная задача имеет решение, при-чём оно единственно, если определитель матрицы A отличен от нуля, иначе онаназывается некорректною1.

Наиболее очевидный алгоритм решения системы дифференциальных уравне-ний известен как метод Гаусса. Он состоит в последовательном исключении пере-менных. Так, в простейшем случае, из первого уравнения системы (2.1) выразимпеременную x1 через другие переменные и коэффициенты системы и полученноевыражение подставим в остальные уравнения. Затем из второго уравнения вы-ражаем x2 через переменные x3, x4, . . . , xL и подставляем в уравнения с третьегопо L-тое и т. д. С точки зрения записи задачи в матричной форме это означает,что мы эквивалентными преобразованиями приводим матрицу A к треугольнойформе с единичною главною диагональю, при этом задача принимает вид (2.3).

1 a11,2 a1

1,3 . . . a11,L

0 1 a22,3 . . . a2

2,L

· · · · · · · · · . . . · · ·0 0 0 . . . aL−1

L−1,L

0 0 0 . . . 1

x1

x2

· · ·xL−1

xL

=

b11

b22

· · ·bL−1L−1

bLL

(2.3)

Здесь дополнительные верхние индексы указывают на то, что коэффициенты мат-рицы изменились в результате ряда эквивалентных преобразований.

После того, как задача (2.1) сведена к форме (2.3), можно переходить непо-средственно к вычислению значений неизвестных xi. Очевидно, что из последнегоуравнения xL = bL

L, подставим это значение в предпоследнее уравнение, после чеготам останется только одна неизвестная — xL−1. Выразим её и из этого уравненияи подставим xi и xL−1 в третье с конца. Действуя далее аналогично, получимзначения всех переменных.

1Следует отметить, что при численном подсчёте имеет значение не просто отличие от нуля,а отличие от нуля с некоторою наперёд заданною точностью, характеризующею погрешностьрасчётов. Задачу, когда определитель матрицы A отличен от нуля, но это отличие мало по срав-нению с точностью расчёта, которая может задаваться, например, точностью представленияданных в компьютере, называют плохо определённою. На практике при численных расчётах, втом числе с использованием ЭВМ, плохо определённая задача ничем не отличается от некор-ректной.

16

Page 18: Введение в численные методы обработки данных - Сысоев

2.2 Алгоритм реализации — считывание и хране-

ние данных

Численная реализация метода Гаусса предполагает, что количество уравнений(а, следовательно, и неизвестных xi), а также коэффициенты матрицы A и векто-ра свободных коэффициентов b являются входными данными и могут менятьсяот случая к случаю. Эти данные лучше разместить во входном текстовом файле2,который можно структурировать следующим образом3. В первой строчке разме-стить целое число — количество уравнений L. Затем в один столбец (это позволитизбежать ошибок, связанных с анализом строки, без чего невозможно чтение дан-ных, записанных в несколько столбцов) коэффициенты матрицы A и вектора b

построчно, т. е. последовательно a1,1, a1,2, . . . , a1,L, b1, a2,1 и т. д.Сам алгоритм расчётов лучше организовать в виде отдельной подпрограммы

(обычно — процедуры), у которой входными параметрами являются матрица A ивектор b, а выходным — вектор x. При этом считывание данных следует вынестиза пределы алгоритма.

Открыв файл с данными и считав из него первую строку, получим число урав-нений L. Теперь необходимо создать три массива для хранения A, b и x соот-ветственно, причём объявлять эти массивы следует как массивы с динамическизадаваемой длиной4. Задав длину массивов: L для b и x и L × L для A (разме-стив их), можно переходить к считыванию данных из файла в массивы A и b, приэтом следует помнить, что в ряде языков программирования нумерация элемен-тов в динамических массивах всегда начинается с нуля (в Delphi и C), а в других(Fortran) — с единицы. Во всех матрицах в целях единообразия в дальнейшемпервый индекс будем всегда считать номером строки, второй — столбца.

Полученный в результате вычислений массив x следует передать из реали-зующей метод Гаусса процедуры в головную программу и, например, вывести вотдельный файл.

2Можно использовать и типизированный файл, но для его редактирования придётся приме-нять специализированные программы, что не всегда удобно.

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

4Приведённое название распространено, например, в Delphi. В других языках программи-рования может использоваться другой термин. Так, в Фортране употребляется наименованиеразмещаемые массивы (allocatable), что подчёркивает другое их свойство: память компьютерапод них может быть выделена в любой момент исполнения программы, а не только при её старте.

17

Page 19: Введение в численные методы обработки данных - Сысоев

2.3 Подсчёт определителя

Подсчёт определителя можно организовать в виде рекурсивной процедуры, хо-тя существуют и иные способы. Для определителей квадратных матриц второгои третьего ранга существуют (см., например, [2]) явно выписанные формулы под-счёта детерминантов (2.4) и (2.5):

D2 =

∣∣∣∣∣a1,1 a1,2

a2,1 a2,2

∣∣∣∣∣ = a1,1a2,2 − a1,2a2,1 (2.4)

и

D3 =

∣∣∣∣∣∣∣

a1,1 a1,2 a1,3

a2,1 a2,2 a2,3

a3,1 a3,2 a3,3

∣∣∣∣∣∣∣= a1,1a2,2a3,3 + a1,2a2,3a3,1+

+ a2,1a3,2a1,3 − a1,3a2,2a3,1 − a2,1a1,2a3,3 − a1,1a2,3a3,2.

(2.5)

Для определителей более высокого порядка такие формулы тоже могут быть вы-писаны, но они будут очень громоздки и пользоваться ими неудобно. Поэтомуиспользуют свойство определителя ранга r, по которому его можно разложить наr миноров, т. е. на определители на единицу меньшего ранга (например, был 4×4,разложили на четыре определителя 3× 3).

Известно, что определитель можно разложить на миноры по одной из строкили по одному из столбцов. Таким образом, задача подсчёта определителя про-извольного ранга сводится к подсчёту определителя второго или первого ранга.Мы будем раскладывать по первой строке во избежание путаницы, хотя читательможет реализовать разложение по любой другой понравившейся ему строке илистолбцу.

Минор Mi,j определителя D ранга r представляет собою определитель, из ко-торого удалены i-тая строка и j-тый столбец. Для разложения по i-той строкесправедлива формула:

D =r∑

j=1

δi,jai,jMi,j, (2.6)

где δi,j = 1, если сумма (i + j) чётна и δi,j = −1, если (i + j) нечётна.Итак, процедура получает на входе массив r× r элементов, а возвращает одно

значение — величину детерминанта (поскольку возвращается единственное значе-ние, вместо процедуры можно организовать рекурсивную функцию, если таковаяподдерживается стандартами языка). Основной элемент процедуры — цикл по j

(номер столбца), реализующий формулу 2.6. В качестве служебных переменныхкроме j необходимо также предусмотреть скалярную переменную Det для накоп-ления суммы членов типа δ1,ja1,jM1,j, вычисляемых в теле цикла, а также матрицу

18

Page 20: Введение в численные методы обработки данных - Сысоев

DM размером (r−1)× (r−1) элементов, которая будет подаваться при вызове про-цедуры самой из себя для нахождения миноров M1,j.

Задача цикла по j — заполнить массив DM, рекурсивно вызвать процедуру вы-числения минора и прибавить получившееся значение δ1,ja1,jM1,j к Det. Заполне-ние матрицы DM можно провести с помощью двух вложенных циклов, а можно —сечением массива, если эта операция доступна. Элементы αi1,j1 минора M1,j по-лучаются из элементов исходной матрицы по следующему правилу: при j1 < j

αi1,j1 = ai1+1,j1 , при j1 > j αi1,j1 = ai1+1,j1+1.Перед циклом по j необходимо организовать проверку условия r > 1, поскольку

если входная матрица представляет собою единственное значение (её ранг равен1), её определитель равен этому значению. Можно также вместо этого предусмот-реть проверку r > 2 и в случае r = 2 вычислить результат по формуле (2.4).Такой подход позволит сократить вычисления, уменьшив глубину рекурсии наодин уровень. Цикл по j, содержание которого описано выше, следует запускатьтолько в случае, если поставленное условие r > 1 (либо r > 2, если вычислениепроизводится по формуле (2.4)) выполняется.

Задание 2.1 Реализуйте процедуру вычисления детерминанта матрицы,описанную в данном разделе. Протестируйте процедуру на примерах мат-риц 2, 3, 4, 5 и 6-го порядков. При этом используйте как матрицы с нену-левым детерминантом, так и специально подобранные матрицы, определи-тель которых равен нулю. В виде отдельной процедуры реализуйте такжеподсчёт определителей третьего порядка по формуле (2.5). Сравните ре-зультаты подсчёта обоими методами.

2.4 Преобразование матрицы

После того, как определитель подсчитан и мы убедились в том, что он су-щественно отличен от нуля, можно переходить к преобразованию матрицы A ивектора свободных коэффициентов b. Для этого нужно организовать нескольковложенных циклов.

Внешний цикл по k (уровень вложенности 0) ставит целью преобразованиеk-той строки и k-того столбца матрицы A и k-того элемента вектора b такимобразом, что в столбце все элементы, начиная с (k+1) стали бы нулевыми, а k-тый — единичным. При этом элементы предыдущих строк и столбцов не меняются.Переменную k нужно менять от 1 до L.

Внутри большого цикла сперва необходимо сначала проверить, не является ли

19

Page 21: Введение в численные методы обработки данных - Сысоев

элемент akk нулевым и если является, то произвести перестановку строк (строкивыше k-той не трогать). Для этого организуется while-цикл с счётчиком i и сусловием (присваеваем его в начале значение k), является ли элемент aki нулевыми если является, то увеличиваем i на единицу. Так мы получаем номер первойстроки с ненулевым элементом k-того столбца. В случае, если эта строка не k-тая,нужно поменять местами элементы k-той и i-той строк и элементы bk и bi.

Затем, используя, например, цикл, следует разделить все элементы k-той стро-ки и bk на ak−1

kk (для ускорения расчётов можно оперировать только с элементамистолбцов начиная с k, поскольку предущие к этому моменту должны быть ужеравны нулю), получая элементы ak

k,i5. В Фортране и некоторых других языках это

же можно сделать без цикла, используя сечение массива.Теперь можно переходить к преобразованию строк ниже k-той. Создаём цикл

уровня вложенности 1 (по i) в котором i — номер преобразуемой строки (начиная сi = k+1). Внутри него создаём цикл уровня вложенности 2 по j (в Фортране опятьже можно обойтись сечением массива), в котором преобразуем j-тый элемент i-тойстроки (начиная с j = k) по формуле ak

i,j = ak−1i,j −ai,k ·ak, j. Словами это означает,

что мы вычитаем из i-той строки k-тую, умноженную на k-тый элемент i-той,чтобы ai,k стал равен нулю. По завершении цикла по j преобразуем аналогичноэлементам строки свободный член bk

i = bk−1i − ai,k · bk

k.На этом большой цикл по k заканчивается, матрица преобразована, осталось

вычислить коэффициенты.Для этого организуем снова цикл уровня вложенности 0 по k. В нём вычисляем

m = (L − k + 1)-тую компоненту вектора x (такая странная нумерация связанас тем, что подсчитывать неизвестные приходится начиная с последней; в Delphi

есть возможность организовать цикл downto с k по 1, тогда номер вычисляемогокоэффициента совпадёт со значением счётчика — k = m). Внутри него организуемцикл по i с индексацией от (m + 1) до L, который суммирует значения am

m,ixi,результат накапливается в промежуточную сумму Xi.

Ξ =L∑

i=m+1

amm,ixi (2.7)

Теперь, по выходе из цикла по i, значение xm вычисляется как xm = bmm − Ξ.

5Верхний индекс здесь и далее нужен только чтобы различать номер преобразования, напрактике же (в программе) результат записывается непосредственно на место старого элементас теми же нижними индексами, хотя и, скорее всего, отличается от него. То есть для программыне нужно создавать трёхмерный масив, достаточно обойтись двумерным, элементы которогобудут меняться в процессе преобразования. Хранить «старые» элементы нет нужды.

20

Page 22: Введение в численные методы обработки данных - Сысоев

Задание 2.2 Реализуйте описанный в данном разделе алгоритм преобразо-вания матрицы и вычисления коэффициентов. При этом, чтобы избежатьошибок по существу алгоритма, реализуйте сначала преобразование толькодля k = 1. Полезно реализовать вывод результатов преобразования матри-цы, чтобы можно было убедиться, что вы всё сделали правильно. Проте-стируйте эту версию алгоритма на нескольких примерах матриц разногоразмера (например, 3×3, 5×5, 11×11). Для матрицы размером 3×3 проверь-те результаты программы аналитически. Только после этого переходитек программированию полного алгоритма, реализовав вывод преобразованнойматрицы на экран или в файл. Протестируйте полный алгоритм на техже примерах, что и его первую итерацию ранее. Для системы уравнений3×3 сравните полученное решение с аналитическим. Оцените погрешностьполученных значений xi.

2.5 Решение систем уравнений, имеющих трёхдиа-

гональную матрицу. Метод прогонки

Метод Гаусса представляется универсальным алгоритмом решения систем ли-нейных уравнений, но плата за универсальность — невысокая скорость работы.В некоторых задачах, например, при построении интерполяции с помощью ку-бических сплайнов (см. 3.2), матрица коэффициентов A имеет специальный вид.Для ряда классов таких матриц разработаны узко ориентированные методы реше-ния уравнений, основанные на использовании их специфики и позволяющие полу-чить более точный результат при существенно меньших затратах вычислительныхмощностей, чем при использовании универсального метода Гаусса. В данном раз-деле рассмотрим один из таких методов — алгоритм прогонки для преобразованиятрёхдиагональных матриц.

Итак, мы по прежнему имеем задачу (2.1), но теперь дополнительно на коэф-фициенты наложено условие:

∀j > i + 1 ∧ j < i− 1 ai,j = 0. (2.8)

Это значит, что только главная диагональ матрицы A и две прилегающие к нейдлиннейшие побочные имеют в своём составе ненулевые элементы; т. е. можно

21

Page 23: Введение в численные методы обработки данных - Сысоев

переписать задачу (2.1) к виду (2.9):

a1,1x1 + a1,2x2 = b1

a2,1x1 + a2,2x2 + a2,3x3 = b2

a3,2x2 + a3,3x3 + a3,4x4 = b3

· · ·aL−1,L−2xL−2 + aL−1,L−1xL−1 + aL−1,LxL = bL−1

aL,L−1xL−1 + aL,LxL = bL,

(2.9)

Наиболее простым методом, реализующим решение такой системы уравнений,является алгоритм Томаса, или метод прогонки. Метод прогонки можно интер-претировать двояко: как итерационный метод с явно выписанными формуламидля подсчёта коэффициентов, такой подход использован, например, в [1], либос точки преобразования матрицы A специального вида. Второй подход являетсяболее очевидным с точки зрения механизма расчётов и требует меньшего коли-чества переобозначений, к тому же читателю, знакомому с методом Гаусса, он,скорее всего, покажется более понятным.

По сравнению с методом Гаусса всё, что нужно сделать, это переписать в сторо-ну существенного упрощения алгоритм преобразования матрицы. Для начала намнеобходимо эквивалентными преобразованиями избавиться от нижней диагонали.В первой строке такого элемента нет, потому начнём со второй: если a2,1 6= 0, умно-жаем первую строку на величину a2,1

/a1,1 и вычитаем из второй. В результате во

второй строке остаются только два ненулевых элемента: a12,2 = a2,2 − a1,2a2,1

/a1,1

6

и a12,3 = a2,3, который не изменился, поскольку в первой строке нет отличных от

нуля элементов с индексом столбца старше 2. На языке программирования опи-санные действия означают одно: не следует умножать и вычитать целую строку,нужно только обнулить a2,1 и преобразовать элемент a2,2 по приведённой форму-ле, а также элемент вектора свободных членов b1

2 = b2 − b1a2,1

/a1,1. Все прочие

элементы строки не имеет смысла трогать, поскольку в первой строке напротивних стоят нули и вычитать из них нечего.

Далее аналогичную процедуру необходимо проделать с третьею строкою, вы-чтя из неё уже преобразованную вторую. При этом преобразованию подвергнетсяэлемент a3,3, элемент a3,2 обнулится, а элемент a3,4 останется без изменения, всепрочие элементы как были нулями, так ими и останутся. Выпишем итерационную

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

22

Page 24: Введение в численные методы обработки данных - Сысоев

формулу для преобразования i-той строки через уже преобразованную (i−1)-вую:

ai,i−1 = 0,

a1i,i = ai,i − ai−1,iai,i−1

/ai−1,i−1,

b1i = bi − b1ai,i−1

/ai−1,i−1,

i = 2, 3, . . . , L.

(2.10)

Повторив преобразование (2.10) в цикле со всеми строками, начиная со второй,мы получим систему без нижней диагонали, имеющую в последней строке толькоодин ненулевой элемент aL,L. Устранение нижней диагонали получило названиепрямой прогонки.

В результате прямой прогонки последнее уравнение оказалось независимымото всех переменных, кроме одной — последней. Следовательно, можно разрешитьего:

xN = b1N

/a1

N,N . (2.11)

Теперь можно произвести «обратную прогонку» — из каждого i-того уравнениявыражать i-тую переменную через (i + 1)-вую:

xi =(b1i − ai,i+1xi+1

)/a1

i,i, i = L− 1, L− 2, . . . , 1 (2.12)

Примечание 2.1 В формуле (2.12), как и в реализующем её алгоритме, индекс меня-ется от большого к малому. В Pascal и Delphi можно воспользоваться циклом downto,в Fortran и некоторых других языках либо придётся использовать в качестве счётчикацикла дополнительную переменную j = 1, 2, . . . , L− 1, через которую i выражается какi = L− j, либо вводить это преобразование непосредственно в (2.12).

Совокупность уравнений (2.10, 2.11, 2.12) фактически и составляет метод про-гонки.

Задание 2.3 Запрограммируйте метод прогонки в виде отдельной процеду-ры. При этом в качестве основы можно использовать ту же программу,что была написана для реализации метода Гаусса, заменив один её компо-нент — метод преобразования матрицы, описанный в разделе (2.4) описан-ным в текущем разделе алгоритмом.

Испытайте метод прогонки на матрицах размером 3 × 3, 5 × 5, 11 × 11

элементов (матрицы прилагаются). Для этих же систем уравнений про-изведите решение методом Гаусса. Замерьте затраченное тем и другимметодами время. Сравните его. Сравните точность подсчётов в обоих слу-чаях с аналитическими результатами.

23

Page 25: Введение в численные методы обработки данных - Сысоев

Лекция 3

Аппроксимация, интерполяция иэкстраполяция

При рассмотрении и изучении объектов реальной природы часто возникаетнеобходимость с разными целями заменить непосредственно рассматриваемый объ-ект некоторым его приближением. При этом одни свойства объекта, наиболее важ-ные для целей данного исследования, выпячиваются, другие, менее существенные— нивелируются или вовсе игнорируются. Фактически, имеет место переход отобъекта к модели или переход от одной, более общей модели, к другой.

Следует отметить, что такой этап является неизбежным почти всегда, когдаречь идёт о изучении объекта, предполагающем расчёт и использование его чис-ловых характеристик, поскольку объекты реальной природы всегда очень сложныи связаны друг с другом, а учесть в модели все свойства и связи невозможно.

Аппроксимация1 — это замена одного объекта другим, в некоторым смыслеблизким к исходному. В каком смысле — решает сам исследователь в зависимостиот того, какие свойства он хочет сохранить. Необходимо помнить, что аппроксима-ция — это не просто упрощение; часто целью аппроксимации является замена типаобъекта на другой, имеющий дополнительные свойства. Так, если у нас имеетсяпоследовательность пар значений — точек с координатами {xn, yn}N

n=1, мы можемзаменить её на функцию y = f(x), проходящую через эти точки или в некоторомсмысле близко к ним, т. е аппроксимировать набор точек функцией. Функцияимеет новые свойства, например, её можно аналитически дифференцировать иинтегрировать, в то время как к исходному ряду {xn, yn}N

n=1 такие действия былинеприменимы.

1От латинского “approximatio”, что означает «приближение», от сочетания “ad proximum”, “ad”— к, “proximus” — ближний. Русскоязычный термин приближение тоже иногда используется влитературе.

24

Page 26: Введение в численные методы обработки данных - Сысоев

3.1 Интерполирование и приближение функций

Задача интерполирования функции в точках состоит в том, чтобы по зна-чениям f(x), измеренным в точках x0, x1, . . . , xN , восстановить её значения навсём отрезке [x0; xN ]. Будем обозначать экспериментальные значения f(x) как yi,i = 0, 1, . . . , N . Естественно, в зависимости от наших дополнительных соображе-ний (или отсутствия таковых) и от средств, которыми мы воспользуемся, такаязадача может иметь различные, вообще говоря, сколько угодно решений. Интерпо-лирование само по себе используется, например, при обработке результатов экспе-римента, полученных в виде таблицы значений с фиксированным разрешением, ночаще интерполирование — только подзадача при решении других, более сложныхчисленных задач.

Как правило, интерполирование проводят либо с помощью некоторой наперёдвыбранной функции f(x, c), где c — вектор параметров, либо с помощью разло-жения по базисным функциям ϕi(x):

f(x) =P−1∑i=0

ciϕi(x) (3.1)

В первом случае форма функции f(x, c) задаётся из некоторых априорных сообра-жений (например, есть теоретическая кривая, параметры которой необходимо из-мерить на основе эксперимента), либо подбирается по виду экспериментальной за-висимости, скажем, зависимость может быть похожа на параболу, экспоненту, си-нусоиду и т. п. Во втором случае выбирается некоторый полный функциональныйбазис {ϕi}P−1

i=0 , который более по некоторым соображениям подходит для даннойзадачи, чем иные, либо его проще использовать. К наиболее распространённымотносятся полиномиальный и тригонометрический базисы, сравнительно часто впоследнее время также используются вейвлеты.

3.1.1 Интерполирование алгебраическими многочленами Лагран-

жа

Наиболее простой из известных базисов — полиномиальный, потому рассмот-рим сначала его. Итак необходимо построить полином вида:

L(x) = c0 + c1x + c2x2 + . . . + cP−1x

P−1, (3.2)

который проходил бы через все точки xi, i = 0, 1, . . . , N , в которых проводилисьизмерения. Эти точки в теории приближения принято называть узлами интерпо-ляции. Для этого, как правило, необходимо взять P = N + 1, т. е. число точек

25

Page 27: Введение в численные методы обработки данных - Сысоев

(N + 1), через которые следует провести полином L(x) должно равняться числукоэффициентов P , иначе поставленная задача не будет иметь решения2.

Для решения поставленной задачи запишем условие того, что наш искомыймногочлен L(x) проходит через экспериментальные точки (xi, yi):

L(xi) = yi, i = 0, 1, . . . , N. (3.3)

один из способов отыскать L(x), удовлетворяющий условию (3.3) — восполь-зоваться интерполяционною формулою Лагранжа. Так, многочлен L(x) представ-ляется в виде линейной комбинации других многочленов с коэффициентами, рав-ными yi:

L(x) =N∑

i=0

ϕi(x)yi (3.4)

Из условий (3.3) и (3.4) можно найти формулу для определения ϕi(x) (подробнеесм. в [1]):

ϕi(x) =

∏j 6=i

(x− xj)

∏j 6=i

(xi − xj). (3.5)

Таким образом, формула для интерполяционного многочлена Лагранже принима-ет вид:

L(x) =N∑

i=0

∏j 6=i

(x− xj)

∏j 6=i

(xi − xj)yi. (3.6)

3.1.2 Реализация интерполяции по Лагранжу на ЭВМ

Численная реализация интерполяции с помощью полиномов Лагранже требуетнекоторых дополнительных действий. Это связано с тем, что формула (3.6) не да-ёт непосредственного ответа на вопрос о коэффициентах в форме (3.2), посколькукаждая из функций (3.5) является в свою очередь полиномом N -ного порядка с(N + 1) коэффициентом. Следовательно, необходимо представить ϕi(x) в виде по-линомов стандартного вида (3.2), а затем получить коэффициенты L(x) в форме(3.2) каждый как сумму соответствующих коэффициентов по всем ϕi(x). Обозна-чим коэффициенты ϕi(x) как ci,k, k = 0, 1, . . . , N , где первый индекс есть номер

2Задача может иметь решение и при меньшем P , но такой случай следует считать вырожден-ным, поскольку экспериментально он, как правило, недостижим, и возникает либо вследствиесильного загрубления данных, либо в численном эксперименте. Так, если взять квадратичнуюфункцию и выбрать на ней, скажем, 10 точек, то через них можно, очевидно, провести поли-ном с тремя коэффициентами, т. е. P < (N + 1). Но в эксперименте, даже если точки согласнотеории должны лежать на параболе, из-за различных погрешностей они отклонятся от неё, и врезультате провести квадратичную кривую точно через экспериментальные точки не удастся.

26

Page 28: Введение в численные методы обработки данных - Сысоев

функции, а второй — коэффициента. Подсчёт ci,k для каждого i можно оформитьв виде процедуры, входным параметром будет номер i, а выходными — массив ci,k,в то время как массивы xi и yi можно задать глобально.

Во-первых, множитель Πi =yi∏

j 6=i

(xi − xj)является общим для всех ci,k. Подсчи-

тать его несложно, задача сводится к подсчёту произведения с накоплением, длячего достаточно организовать цикл по j с условным оператором внутри, проверя-ющим условие i 6= j. Если условие выполняется, вычисляем очередной множитель(xi − xj) и домножаем на него произведение. После вычисления всего произведе-ния (завершения цикла), делим на него yi и результат записываем в какую-нибудьвнутреннюю переменную процедуры.

Во-вторых, необходимо организовать вычисление коэффициентов при различ-ных степенях x для произведения

∏j 6=i

(x− xj). Эти коэффициенты можно выписать

в явном виде, но при подсчёте на ЭВМ разумнее организовать итерационный про-цесс, оформив его в виде отдельной процедуры. Все произведения приведённоготипа отличаются друг от друга только отсутствием определённого сомножителяс индексом i, следовательно входящий параметр процедуры единственный: i. Навыходе получается массив из N +1 коэффициента ciout. Ещё два служебных мас-сива такой же длины ci1 и ci23 имеет смысл создать для удобства вычислений.Договоримся далее, что нумерация массивов начинается с 1 (это не принципиаль-но, но необходимо для непротиворечивости дальнейшего изложения) и элемент стаким номером соответствует коэффициенту при x0.

Коэффициенты будем вычислять, последовательно домножая на очередноймножитель типа (x− xj) в простом цикле с перебором (for-цикл в Pascal и Delphi,do-цикл в Fortran) по j. Дополнительно проверяем перед домножением, не сов-падают ли i и j, и если да, то пропускаем такое слагаемое. Текущий результатхранится в массиве ci1 В начале всем элементам ci1 присваиваем значение 0 кро-ме первого, ему присваиваем значение 1. На каждом шаге ci1 преобразуются в триэтапа. Сначала вычисляется массив ci2, получаемый из ci1 сдвигом на 1 номеров,т. е. ci2[m+1]=ci1[m]. Это соответствует домножению на x. Затем сам массив ci1(т. е. все его элементы) умножается на xj. После этого ci1 и ci2 складываются,результат записывается в ci1. В Delphi для каждой из этих трёх операций при-дётся организовать отдельный вложенный цикл по m, в Fortran можно и нужноиспользовать сечение массива.

3Здесь и далее мы будем иногда в явном виде записывать названия переменных, если этоспособствует лучшему пониманию алгоритма. Естественно, читатель не обязан следовать приве-дённым здесь обозначениям и вправе ввести свои, более удобные и «родные» ему. Только нужнодержать в уме или записать взаимное соответствие между ними, чтобы не запутаться.

27

Page 29: Введение в численные методы обработки данных - Сысоев

Теперь, по выходе из цикла по j, осталось поделить все ci1 на Πi и процедуруможно завершать, присвоив ciout значения ci1.

Описанную процедуру вычисления ci,k применим для всех i (организуем цикл вголовной программы, откуда станем вызывать процедуру) и получим в результате(N+1) штуку многочленов ϕi(x), вернее, их коэффициенты. Для их хранения мож-но создать двумерный массив, а можно и не хранить их, так как нам требуются, в

сущности, не сами ci,k, а ck =N∑

i=0

ci,k. ck можно вычислить как просуммировав все

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

Задание 3.1 Реализуйте метод интерполяции с помощью полиномов Лагран-жа. В качестве исходных данных используйте функцию f1(x) = sin(x), сге-нерировав набор точек (xn, f1,n) при xi равномерно меняющемся от x0 = 0

до xN = 10 с шагом ∆x, т. е. возьмите xn+1 = xn + ∆x, начиная с x0 и приn в диапазоне от 0 до N =

xN − x0

∆xи для каждого из таких xn вычислите

f1,n = f1(xn). Возьмите три различных ∆x: 2.0, 0.5, 0.2.Для каждого случая подсчитайте значение интерполирующего полино-

ма в точке x = 5.1 (т. е. в точке, где нет экспериментальных данных) исравните с истинным значением f1(x) в этой точке, вычисленным отдель-но.

3.2 Интерполирование сплайнами

Интерполирование с помощью полиномов Лагранжа при большом N часто при-водит к большим ошибкам, так как необходимость возводить аргумент в высокиестепени ведёт к несоразмерности величин и, как следствие, плохой определённо-сти задачи. Поэтому для длинных рядов на практике чаще используютсплайны4

— кусочно полиномиальные функции, имеющие ограниченное количество непре-рывных производных.

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

Пусть на отрезке [t0; tN ] имеется равномерное разбиение (сетка) такое, чтоtn = n∆t + t0, и на этом отрезке в точках tn (узлах сетки) произведены измерениянекоторой функции f(t), измеренные значения обозначим xn = f (tn). Тогда куби-ческим сплайном на отрезке [t0; tN ] называется функция s(t), удовлетворяющая

4Слово сплайн английского происхождения, одно из его значений — гибкая линейка, исполь-зуемая для графической интерполяции нанесённых на бумагу точек кривою.

28

Page 30: Введение в численные методы обработки данных - Сысоев

следующим условиям:

1. на каждом сегменте [tn−1; tn], n = 1, 2, . . . , N функция s(t) является кубиче-ским полиномом;

2. функция s(t), а также её первая и вторая производные непрерывны на (t0; tN);3. s (tn) = f (tn) ∀tn, n = 0, 2, . . . , N .

На каждом из отрезков [tn−1; tn] будем строить кубический полином sn(t) вида:

sn(t) = an + bn (t− tn) +cn

2(t− tn)2 +

dn

6(t− tn)3 , (3.7)

где an, bn, cn и dn суть коэффициенты, подлежащие определению. Из формулы(3.7) легко получить первую, вторую и третью производные, которые выпишемявно, поскольку нам потребуется наложить на них условие непрерывности в уз-ловых точках:

dsn

dt= bn + cn (t− tn) +

dn

2(t− tn)2 ,

d2sn

dt2= cn + dn (t− tn) ,

d3sn

dt3= dn.

(3.8)

Из (3.8) следует, что неизвестные коэффициенты an, bn, cn и dn представляютсобою на самом деле значения самой функции sn(t) и её первых трёх производныхв точке tn:

an = sn (tn) , bn =dsn

dt

∣∣∣∣t=tn

, cn =d2sn

dt2

∣∣∣∣t=tn

, dn =d3sn

dt3

∣∣∣∣t=tn

. (3.9)

Теперь рассмотрим самый важный вопрос, а именно, каким способом получитьнеизвестные коэффициенты. Из пункта (3) условий интерполирования получаемзначения всех an:

an = sn (tn) = f (tn) = xn, n = 1, . . . , N (3.10)

Доопределим также по аналогии, что a0 = f (t0).Теперь запишем условие непрерывности сплайн-функции s(t) в узлах (т. е., что

sn (tn) = sn+1 (tn) при n = 1, . . . , N − 1):

an = an+1 + bn+1 (tn − tn+1) +cn+1

2(tn − tn+1)

2 +dn+1

6(tn − tn+1)

3 (3.11)

Введём обозначение hn = tn − tn−1 и с использованием (3.10) получим из (3.11)следующий набор уравнений:

hnbn − h2n

2cn +

h3n

6dn = xn − xn−1, n = 2, . . . , N. (3.12)

29

Page 31: Введение в численные методы обработки данных - Сысоев

Чтобы получить значения искомых коэффициентов необходимо также восполь-зоваться условиями непрерывности первой и второй производных в узлах интер-поляции. Во введённых обозначениях они приводят к выражениям:

cnhn − dn

2h2

n = bn − bn−1, n = 2, . . . , N ; (3.13)

dnhn = cn − cn−1, n = 2, . . . , N. (3.14)

Поскольку необходимо отыскать 3n неизвестных коэффициента bn, cn и dn, усло-вий (3.12), (3.13) и (3.14) ещё недостаточно, так как они содержат лишь (3n − 3)

условия. Дополнить их можно, наложив некоторое произвольное условие на коэф-фициенты, не противоречащее здравому смыслу, например, положив d2sn

dt2

∣∣∣t=t0

= 0

и d2sn

dt2

∣∣∣t=tN

= 0, что приводит к условиям c1 − d1h1 = 0 и cN = 0. Если заметить,

что условие c1 − d1h1 = 0 совпадает с (3.14) при c0 = 0 (этот коэффициент явля-ется «мнимым», поскольку не входит ни в одну функцию sn, а введён просто дляобщности записи и простоты дальнейших расчётов), n = 1, получаем и послед-нее необходимое условие. В результате получаем систему (3.15), которая имеетединственное решение:

dnhn = cn − cn−1, n = 1, . . . , N, c0 = cN = 0,

cnhn − dn

2h2

n = bn − bn−1, n = 2, . . . , N,

bnhn − h2n

2cn +

h3n

6dn = xn − xn−1, n = 2, . . . , N.

(3.15)

Решение системы (3.15) достаточно подробно рассмотрено в [1] и содержит зна-чительный набор выкладок, которые нам повторять не имеет смысла. Достаточнозаписать итоговые формулы, по которым производится расчёт. Коэффициенты cn

рассчитываются из системы (3.16)

hncn−1 + 2 (hn + hn+1) cn + hn+1cn+1 = 6

(xn+1 − xn

hn+1

− xn − xn−1

hn

),

n = 1, . . . , N − 1, c0 = cN = 0.

(3.16)

Эту систему линейных уравнений можно решать численно. Целесообразно исполь-зовать метод, специально заточенный под решение систем с трёхдиагональноюматрицею (см. 2.5). Однако можно применить и обычный метод Гаусса (см. 2).Выпишем в явном виде как выглядят коэффициенты матрицы A и вектора сво-

30

Page 32: Введение в численные методы обработки данных - Сысоев

бодных членов b из (2.2):

an,n−1 = hn, n = 2, . . . , N − 1;

an,n = 2 (hn + hn+1) , n = 1, . . . , N − 1;

an,n+1 = hn+1, n = 1, . . . , N − 2;

bn = 6(

xn+1−xn

hn+1− xn−xn−1

hn

), n = 1, . . . , N − 1.

(3.17)

Все прочие коэффициенты ai,j системы (e:spline-cfinal), для которых |i − j| > 1,равны нулю.

Примечание 3.1 Будьте внимательны! Система (3.16) имеет (N − 1) уравнение, т. е. внашем случае L = N − 1. Но при этом массив коэффициентов c имеет (N + 1) коэф-фициент, включая c0 и cN , тождественно равные нулю. При решении системы (2.2) имиможно пренебречь, если задать её коэффициенты, как показано в (3.17), но далее в (3.18)при вычислении прочих коэффициентов они вам понадобятся.

По нахождении коэффициентов cn коэффициенты bn и dn находятся по явнымформулам:

bn =hn

2cn − h2

n

6dn +

xn − xn−1

hn

,

dn =cn − cn−1

hn

,

n = 1, . . . , N.

(3.18)

Итак, сплайн, полностью определяемый своими коэффициентами, построен.Осталось рассмотреть вопрос, как его использовать. Выводить все коэффициентысплайн-аппроксимации как правило нет необходимости, поскольку сами они нетребуются. Вместо этого обычно по построенному сплайну нужно найти значенияxk интерполяции в некоторых точках с номерами tk, частично или полностью несовпадающих с tn, значения xn в которых использовались для построения сплайна.

Таким образом, после вычисления коэффициентов сплайна необходимо орга-низовать ввод в программу значений tk, k = 1, Nk, в которых вычислить сплайн.Затем следует реализовать отдельную процедуру, по определённым уже коэффи-циентам сплайна и заданному tk совершает два последовательных действия. Сна-чала определяет n такое что, tn−1 < tk < tn. Если при этом оказывается tk = tn, вкачестве ответа процедура выводит xk = xn. Иначе по формуле (3.7) она вычисля-ет xk = sn (tk). Вызываемая в цикле по k, такая процедура выдаст интерполиро-ванные значения. Результат интерполирования сплайном показан на рис. 3.1, гдемежду каждыми двумя исходными токами сплайном интерполированы значенияещё в 9-ти промежуточных, так что в результате создаётся видимость гладкойкривой.

31

Page 33: Введение в численные методы обработки данных - Сысоев

0 0.02 0.04 0.06

t

0.6

0.8

1

1.2

xn,

s(t

n)

Рис. 3.1. Исходный ряд значений {tn, xn} — чёрными точками и егосплайн-аппроксимация — серою линией. Видно, что линия проходит

между точками довольно гладко.

Задание 3.2 Реализуйте процедуру подсчёта коэффициентов сплайна ап-проксиманта, изложенную в данном разделе. В качестве исходных данныхвозьмите функцию sin(t) с теми же параметрами, что и в задании (3.1). Вкачестве точек tk, в которых необходимо вычислить интерполяцию, возь-мите точки посредине между момнтами измерения, т. е. tk = 1

2

(tn−1 + tn

),

n = 0, . . . , N , k = 1, . . . , N , Nk = N . Выведете полученные значения интерпо-ляций. Подсчитайте значения исходной функции в tk и сравните с резуль-татами интерполяции.

3.3 Аппроксимация методом наименьших квадра-

тов

В разделах 3.1.1 и 3.2 рассматривалась задача интерполяции с целью прове-сти функцию точно через экспериментальные точки, чтобы использовать такоеприближение, например, для вычисления значений измеряемой величины междуточками измерения. В данном разделе рассмотрим иную постановку задачи ап-проксимации: по прежнему будем считать, что нам нужно построить функциюf(t) по экспериментальным данным {tn, xn}N

n=0, но теперь не требуется точного

32

Page 34: Введение в численные методы обработки данных - Сысоев

прохождения через все точки, достаточно просто, чтобы f(t) была в некоторомсмысле максимально близка к экспериментальным значениям. Ставя такую за-дачу мы стараемся учесть два важных момента: во-первых, если в экспериментеприсутствуют шумы, точное прохождение f(t) через все точки (tn, xn) ничего недаёт, поскольку сами эти точки не совсем точны, следовательно, от этого требо-вания следует отказаться, во-вторых, при большом N интерполяционные функ-ции будут иметь очень большое (порядка N же) количество коэффициентов, чтонеудобно, в то время как отказавшись от точного прохождения f(t) через точки(tn, xn) можно получить сравнительно компактную функцию.

Чтобы подогнать функцию f(t) её сначала необходимо параметризовать, по-скольку всегда проще рассчитывать некоторые числа, чем иметь дело с «функциейвообще». То есть мы должны представить искомую f(t) в виде некоторой извест-ной функции f(c, t) с неизвестными параметрами c = (c1, c2, . . . , cP ). Функцияf(c, t) может быть выбрана из общих соображений, если имеется дополнительнаяинформация о предполагаемой зависимости x(t), а если нет — выбрана в видеразложения по базису:

f(c, t) =P∑

k=1

ckϕk(t), (3.19)

где ϕk(t) суть известные базисные функции, например, полиномиальные одночле-ны.

В выбранной нами постановке задачи важнейшим является вопрос о выбореколичественного критерия по которому наша подгоняемая функция будет близ-ка к {tn, xn}N

n=0. Наиболее распространённым и одним самых простых в реализа-ции является критерий наименьших квадратов. Согласно критерию наименьшихквадратов необходимо так подобрать параметры c функции f(c, t), чтобы мини-мизировать сумму квадратов отклонений этой функции в точках с абсциссамиt = tn, n = 0, 2, . . . , N от экспериментально измеренных в этих точках значенийxn. Математически это сводится к минимизации следующей функции параметров:

S(c) =N∑

n=0

[xn − f(c, tn)

]2= min . (3.20)

В общем виде минимум S(c) искать достаточно сложно, поскольку это ведёт кзадаче глобальной оптимизации нелинейной функции многих переменных, длячего используется целый ряд различных подходов: метод градиентного спуска,метод Левенберга–Маркварта и др. Мы ограничимся рассмотрением ситуации,когда функция S(c) зависит ото всех ck линейно, что эквивалентно тому, что имеетместо разложение f(c, t) по некоторому базису.

33

Page 35: Введение в численные методы обработки данных - Сысоев

Для функции f(c, t) в виде (3.19) формула (3.20) преобразуется к виду (3.21):

S(c) =N∑

n=0

[xn −

P∑

k=1

ckϕk (tn)

]2

= min . (3.21)

Поиск квадратичного многомерного экстремума — несложная задача, если толькомы уже умеем решать системы линейных уравнений. Для её решения необходимопродифференцировать (3.21) по каждому ck и таким образом получить P линей-ных уравнений с P неизвестными ck:

N∑n=0

ϕq (tn)

[xn −

P∑

k=1

ckϕk (tn)

]= 0, q = 1, 2, . . . , P. (3.22)

Полученную систему уравнений можно решать, например, методом Гаусса, какпредложено в 2. Для этого её лучше привести к виду (3.23), изменив порядоксуммирования, что всегда можно сделать, поскольку сумма — линейная операция.

P∑

k=1

ck

N∑n=1

ϕq (tn) ϕk (tn) =N∑

n=1

ϕq (tn) xn, q = 1, 2, . . . , P. (3.23)

Отсюда легко записать значения для элементов матрицы коэффициентов ai,j иэлементов вектора свободных членов bi, которые понадобятся для реализации ал-горитма раздела 2:

ai,j =N∑

n=1

ϕi (tn) ϕj (tn) ,

bi =N∑

n=1

ϕi (tn) xn.

(3.24)

Результат применения аппроксимирующего полинома 2-го порядка к экспери-ментальным данным показан на рис. 3.2. Из рисунка видно, как аппроксимиру-ющая кривая сглаживает случайные колебания экспериментальной зависимости.

Задание 3.3 Запрограммируйте процедуру, рассчитывающую методом наи-меньших квадратов аппроксимацию экспериментальных значений полино-мом. На выходе процедуры выдавайте массив коэффициентов полинома.

С помощью генератора случайных чисел сгенерируйте последователь-ность значений ξn, n = 0, 1, . . . , N при N = 10, N = 100, N = 1000. Постройтеих аппроксимацию в виде прямой (полинома первого порядка). Убедитесь,что при увеличении N получается прямая, всё более близкая к горизон-тальной.

Сгенерируйте значения функции f1(t) = t2 на отрезке t ∈ [−2; 2], с шагом∆t = 0.001. Прибавьте к ним шум, полученный генератором случайных чи-сел с амплитудою 0.05. Постройте по таким данным аппроксимирующие

34

Page 36: Введение в численные методы обработки данных - Сысоев

0 0.04 0.08 0.12 0.16 0.2

t

0.2

0.4

0.6

0.8

1

1.2

xn,

f(c,t

n)

Рис. 3.2. Исходный ряд значений {tn, xn} — чёрными точками и егоаппроксимация методом наименьших квадратов полиномом второгопорядка (квадратичною параболою) — серою линией. Видно, как ап-проксимирующая кривая сглаживает случайные колебания экспери-

ментальной зависимости.

35

Page 37: Введение в численные методы обработки данных - Сысоев

полиномы 2-го, 3-го и 4-го методом наименьших квадратов. Убедитесь, чтокоэффициенты этих полиномов близки к исходным.

36

Page 38: Введение в численные методы обработки данных - Сысоев

Лекция 4

Численное дифференцирование

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

Численное дифференцирование относится к одной из наиболее распростра-нённых задач вычислительных методов. Формализуется она следующим образом:имеется временной ряд (если мы рассматриваем зависимость некоторой измеря-емой величины x от времени t), т. е. набор последовательных значений {xn}N

n=1.Предположим, что этот ряд представляет собою регистрацию значений некото-рой достаточно гладкой функции с аддитивно добавленным шумом через равныепромежутки времени ∆t = tn+1 − tn

1: x(t) = f(t) + ξ(t), xn = x(tn) (если мыпредполагаем, что действительно имели место измерения, естественно считать,что присутствуют некоторые измерительные погрешности). Необходимо найти,вернее оценить, так как точные значения невозможно получить из-за наличияизмерительного шума, значения функции g(t) = df

dtв моменты времени t = tn.

Временной ряд оценок g(tn) обозначим как yn.Простейший способ получить такую оценку заключается в следующем. Будем

считать, что за время порядка ∆t значение функции f меняются незначитель-но, и потому её можно аппроксимировать прямою. Тогда производную в моментвремени t = tn можно оценить как (4.1):

yn =xn+1 − xn−1

2∆t(4.1)

Недостатков такого подхода два. во-первых, если частота выборки не оченьвысока, за время 2∆t функция может измениться уже заметно, линейная аппрок-

1В принципе, предположение об эквидистантности не является обязательным, но все совре-менные приборы, использующие АЦП, как правило, имеют постоянную (в пределах точности)частоту выборки. К тому же такое предположение существенно упрощает реализацию алгорит-ма.

37

Page 39: Введение в численные методы обработки данных - Сысоев

симация станет неадекватна и полученная оценка, вследствие этого, будет содер-жать ошибку. Во-вторых, что более существенно, если измеренный ряд, как ипредполагалось изначально, содержит аддитивный шум измерений ξ(t), то придифференцировании появится большая ошибка, вызванная шумом: если за 2∆t

изменение самой функции f сравнимо или меньше, чем стандартное отклонение(т. е., фактически, «амплитуда») шума, мы продифференцируем не f(t), а шум,что не будет иметь никакого смысла.

Примечание 4.1 При практической реализации этого подхода, как и многих других,небольшая часть данных как бы будет потеряна: в самом деле для точек с номерами 1 и N

нет необходимых для расчёта по формуле (4.1) значений слева и справа соответственно.Потому ряд производных получится короче ряда исходных значений и будет сдвинутотносительно него, что следует помнить.

Задание 4.1 Сгенерируйте временные ряды по формулам:

• x1(t) = kt + b при различных k и b, например, (k = 0, b = 1), (k = 1, b = 3),(k = 1, b = −7), (k = −2, b = 4), на промежутке t ∈ [0, 10] с интерваломвыборки ∆t = 0.01;

• x2(t) = A sin(2πft), где f есть частота, A — амплитуда, например, при(A = 1, f = 1), (A = 5, f = 1), (A = 1, f = 1

2π), (A = −1, f = 1), (A = 3, f =

5), на промежутке t ∈ [0, 10] с интервалом выборки ∆t = 0.01.

Для этих рядов рассчитайте ряды производных с помощью формулы (4.1).

Задание 4.2 Оцените точность расчётов, проведённых в задании (4.1). Дляэтого рассчитайте для одного из рассмотренных случаев аналитическипроизводную (получите формулу) и сгенерируйте соответствующий (эта-лонный) временной ряд {zn}N

n=1. Теперь с помощью подпрограммы сравнитеего с рядом {yn}N

n=1, рассчитанным по формуле (4.1), вычислив среднеквад-ратичную разницу по формуле:

ε2err =

1

N − 2

N−1∑i=2

(yi − zi)2 (4.2)

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

38

Page 40: Введение в численные методы обработки данных - Сысоев

4.2 Дифференцирование со сглаживанием прямою

Чтобы решить проблему влияния шумов, применяют дифференцирование сосглаживанием. Это означает, что по нескольким m точкам вблизи той, в которойнеобходимо вычислить производную, строят некоторую сглаживающую кривуюϕ(t), являющуюся, фактически, аппроксимацией f(t), а затем дифференцируютуже её. При этом которая ϕ(t) может, и даже почти наверняка не будет, прохо-дить непосредственно через точки ряда с координатами {tn, xn}, что естественно,поскольку эти точки сдвинуты относительно «истинных» значений из-за наличияшума, влияние которого, вследствие усреднения при построении ϕ(t) заметно сни-зится.

Простейшим вариантом сглаживающей кривой является прямая (4.3)

ϕn(t) = knt + bn, (4.3)

где индекс n означает, что коэффициенты kn и bn и, следовательно, сама функцияϕ(t) подбирается заново для каждой точки tn.

Для такой простой аппроксимации формулу легко можно вывести аналитиче-ски. Пусть мы собираемся провести сглаживание по m точкам, где m есть нечётноецелое число, т. е. мы примем в рассмотрение точки с индексами с n−m−1

2по n+m−1

2.

Прямую будем подгонять методом наименьших квадратов, то есть из условия (4.4)

n+m−12∑

i=n−m−12

(xi − ϕn(ti))2 = min, (4.4)

или, переписав функцию ϕ(t) в явном виде, из условия (4.5):

S(kn, bn) =

n+m−12∑

i=n−m−12

(xi − (knti + bn))2 = min . (4.5)

Рассматривая (4.5) как функцию от kn и bn, можно найти её минимум, длячего необходимо найти производные ∂S

∂knи ∂S

∂bnи приравнять их к нулю:

n+m−12∑

i=n−m−12

(xi − ϕn(ti)) ti = 0,

n+m−12∑

i=n−m−12

(xi − ϕn(ti)) = 0.

(4.6)

Эту систему линейных уравнений можно решать численно, например, как это по-казано в лекции (2), однако, поскольку уравнений всего два, решение несложно

39

Page 41: Введение в численные методы обработки данных - Сысоев

получить аналитически. Для этого, помня о линейности операции суммирования,раскроем скобки и из второго уравнения выразим bn:

bn =1

m

n+m−12∑

i=n−m−12

xi − kn

n+m−12∑

i=n−m−12

ti

(4.7)

Теперь подставим результат в первое уравнение и выразим оттуда коэффициентkn:

kn =

n+m−12∑

i=n−m−12

xiti − 1m

n+m−12∑

i=n−m−12

xi

n+m−12∑

i=n−m−12

t2i − 1m

n+m−12∑

i=n−m−12

ti

(4.8)

По смыслу kn есть угол наклона прямой, аппроксимирующей данные вблизи точки{tn, xn}, т. е. искомая оценка производной, поэтому подсчитывать bn не нужно.

Задание 4.3 Проведите расчёт производной по формуле (4.8) по тем жерядам, что и в задании (4.1), при значении параметра m = 3. Сравнитерезультаты с полученными в задании (4.2), подсчитав для новых резуль-татов среднеквадратичную ошибку.

Задание 4.4 Теперь к одному из ранее использованных рядов добавьте шумнаблюдений. Для этого используйте стандартный генератор случайныхчисел. Теперь вычислите производную по формуле (4.1) и по формуле (4.8),варьируя величину m в диапазоне от 3 до 25 с шагом 2 (берите тольконечётные значения). Рассчитайте ошибку оценки, для чего в качестве эта-лонного ряда {zn}N

n=1 возьмите ряд, где шума не было. Постройте зависи-мость εerr(m) в случае дифференцирования со сглаживанием. Сравните зна-чения кривой εerr(m) и значение εerr, полученное при дифференцировании безсглаживания.

Примечание 4.2 Известно несколько способов генерации так называемых псевдослу-чайных чисел с помощью компьютера. Всякий такой алгоритм выдаёт на самом делене чисто случайные величины, а периодическую последовательность с очень большимпериодом: порядка миллиардов или десятков миллиардов значений. При этом последо-вательность является детерминированной, т. е. при одном и том же начальном значениився последовательность будет всегда повторятся. Для того, чтобы получить различныепоследовательности используют разные начальные значения, которые берут из систем-ного времени. В (4.4) нужно использовать генератор случайных чисел, выдающий дей-ствительные числа, например, от 0 до 1.

40

Page 42: Введение в численные методы обработки данных - Сысоев

Большинство генераторов случайных чисел базового модуля языка программиро-вания, будь то Pascal, Fortran, Delphi и т. п., генерируют псевдослучайную последо-вательность с равномерным распределением. Зачастую, такой вариант является вполнеприемлемым на практике. В ряде языков, если подключить специализированный модуль,можно получить и случайную последовательность с нормальным (гауссовым) закономраспределения. Такую процедуру можно сделать и самому. Чтобы получить распреде-лённую по Гауссу величину необходимо сложить некоторое, достаточно большое числоравномерно распределённых величин и отнормировать их дисперсию.

При дифференцировании со сглаживанием прямою необходимо тщательно вы-бирать параметр m. Слишком малые m плохи, поскольку проводимое усредне-ние может оказаться недостаточно и шум будет иметь существенное влияние нарезультат. Слишком большие значения m, с другой стороны, приводят к избы-точному сглаживанию и искажают форму сигнала. При сглаживании с помощьюпрямой рекомендуют брать m не более 1/8 характерного периода колебаний (еслитаковой вообще можно оценить).

4.3 Дифференцирование со сглаживанием парабо-

лою

Если есть основания полагать, что при сглаживании с помощью прямой вносят-ся слишком большие искажения, можно провести сглаживание полиномом болеевысокого порядка не, например, параболою (4.9)

ϕn(t) = cn,0 + cn,1t + cn,2t2, (4.9)

где cn,j, j = 0, 1, 2 — искомые коэффициенты аппроксимирующей функции в точкеtn. Для построения параболы снова используем m точек поровну справа и слеваот интересующей нас.

Подогнать параболу по экспериментальным данным можно также методомнаименьших квадратов. Для этого необходимо удовлетворить условию (4.4), кото-рое в нашем случае переписывается к виду:

S(cn,0, cn,1, cn,2) =

n+m−12∑

i=n−m−12

(xi − (cn,0 + cn,1t + cn,2))2 = min . (4.10)

41

Page 43: Введение в численные методы обработки данных - Сысоев

Дифференцируя (4.10) по всем трём параметрам, получаем:

n+m−12∑

i=n−m−12

(xi − (cn,0 + cn,1t + cn,2)) t2i = 0,

n+m−12∑

i=n−m−12

(xi − (cn,0 + cn,1t + cn,2)) ti = 0,

n+m−12∑

i=n−m−12

(xi − (cn,0 + cn,1t + cn,2)) = 0.

(4.11)

Аналогично тому, как это было сделано в разделе (4.2) для коэффициента bn,выражаем из последнего уравнения системы (4.11) cn,0 и подставляем во второе:

bn =1

m

n+m−12∑

i=n−m−12

xi − cn,1

n+m−12∑

i=n−m−12

ti − cn,2

n+m−12∑

i=n−m−12

t2i

, (4.12)

далее оттуда выразим cn,1 и подставим их в первое, откуда находится cn,2.

cn,1 =

n+ m−12∑

i=n−m−12

xiti− 1m

n+ m−12∑

i=n−m−12

ti

n+ m−12∑

i=n−m−12

xi

n+ m−12∑

i=n−m−12

t2i− 1m

n+ m−12∑

i=n−m−12

ti

2 +

+ cn,2

1m

n+ m−12∑

i=n−m−12

ti

n+ m−12∑

i=n−m−12

t2i−n+ m−1

2∑i=n−m−1

2

t3i

n+ m−12∑

i=n−m−12

t2i− 1m

n+ m−12∑

i=n−m−12

ti

2

(4.13)

42

Page 44: Введение в численные методы обработки данных - Сысоев

и

cn,2 = Csuper /Cinfer , где Csuper и Cinfer определяются как:

Csuper =n+m−1

2∑i=n−m−1

2

xit2i − 1

m

n+m−12∑

i=n−m−12

xi

n+m−12∑

i=n−m−12

t2i +

+

(1m

n+m−12∑

i=n−m−12

ti

n+m−12∑

i=n−m−12

t2i −n+m−1

2∑i=n−m−1

2

t3i

×

n+ m−12∑

i=n−m−12

xiti− 1m

n+ m−12∑

i=n−m−12

xi

n+ m−12∑

i=n−m−12

ti

n+ m−12∑

i=n−m−12

t2i− 1m

n+ m−12∑

i=n−m−12

ti

2

Cinfer =n+m−1

2∑i=n−m−1

2

t4i + 1m

(n+m−1

2∑i=n−m−1

2

t2i

)2

+

+

(1m

n+m−12∑

i=n−m−12

ti

n+m−12∑

i=n−m−12

t2i +n+m−1

2∑i=n−m−1

2

t3i

×1m

n+ m−12∑

i=n−m−12

ti

n+ m−12∑

i=n−m−12

t2i−n+ m−1

2∑i=n−m−1

2

t3i

n+ m−12∑

i=n−m−12

t2i− 1m

n+ m−12∑

i=n−m−12

ti

2

(4.14)

По cn,2 и cn,1 искомая производная рассчитывается как:

yn =dϕn(t)

dt

∣∣∣∣t=tn

= 2cn,2tn + cn,1. (4.15)

Аппроксимация параболою позволяет найти сразу не только первую, но и вто-рую производную, не проводя дополнительных расчётов:

zn =d2ϕn(t)

dt2

∣∣∣∣t=tn

= 2cn,2. (4.16)

Полученные формулы (4.13) и, особенно, (4.14), довольно сложны по сравне-

нию с (4.8). К тому же они содержат элементы типаn+m−1

2∑i=n−m−1

2

t4i , которые при ма-

шинном счёте могут создать проблемы, если в исходном ряде t меняется в широкихпределах. Поэтому на практике для нахождения производной полиномы порядкавыше двух, если и используются, то формулы для их коэффициентов не нахо-дятся непосредственно. Система уравнений, подобная (4.11) решается численно.При этом, как правило, переходят к новым координатам в окрестности tn, чтобыматрица системы была лучше определена.

43

Page 45: Введение в численные методы обработки данных - Сысоев

Задание 4.5 С помощью формулы (4.15) рассчитайте численно производ-ную для тех же рядов, что и в заданиях 4.1 и 4.3. Численно оцените точ-ность методом наименьших квадратов, как это предложено в задании 4.2,для всех трёх методов и сравните их.

Задание 4.6 По рядам производных, посчитанным в 4.1 и 4.3, подсчитайтевторую производную исходного сигнала. Для аппроксимации параболою рас-считайте вторую производную с помощью формулы (4.16). Оцените точ-ность вычислений методом наименьших квадратов и сравните полученныетремя методами результаты по точности.

Примечание 4.3 Формулы (4.13) и (4.14) содержат много одинаковых компонентов,

сложенных и перемноженных в различных сочетаниях, таких как например,n+m−1

2∑i=n−m−1

2

ti.

При этом под знаком суммы всегда стоят величины типа td1i xd2

i , где d1 и d2 суть целыечисла. Для оптимизации вычислений как с точки зрения простоты программирования,так и скорости выполнения программы, лучше организовать функцию для подсчёта та-ких величин. В качестве входных параметров функции передаются номер текущей цен-

тральной точки n и две степени: d1 и d2, а она вычисляет величинуn+m−1

2∑i=n−m−1

2

td1i xd2

i . Эле-

менты массивов ti и xi, а также число точек для сглаживания m при этом должны бытьзаданы глобально.

4.4 Дифференцирование со сглаживанием полино-

мом произвольного порядка

4.4.1 Вывод формулы

Описанный в разделах 4.2 и 4.3 метод можно обобщить на случай сглаживанияполиномом произвольного порядка P по m точкам, P < m, далее будем рассмат-ривать только случай нечётного m. Для этого функция (4.3) переписывается ввиде:

ϕn,P (t) =P∑

p=0

cp,ntp, (4.17)

где cp,n, номера p неизвестных коэффициентов cp,n для данной точки n принимаютзначения: p = 0, . . . , P , номера точек принимают значения n = m−1

2, . . . ,

(N − m−1

2

),

где N по прежнему общее число точек в ряде.

44

Page 46: Введение в численные методы обработки данных - Сысоев

Из формулы (4.17) можно найти оценки любой производной до P -той вклю-чительно (следовательно при P = 1, то есть в случае, подробно рассмотренномв разделе 4.2, — только первой, а в случае P = 2, как в разделе 4.3, первой ивторой). Для этого необходимо продифференцировать непосредственно (4.17), по-скольку ϕn,P (t) является сглаживающею аппроксимацией исходной зависимости.Таким образом, задача сводится к нахождению коэффициентов cp,n.

Аппроксимацию можно проводить непосредственно в виде (4.17), но полиномвысокого порядка при этом снизит точность расчётов, так как придётся опери-ровать с высокими степенями t, что при большом разбросе по времени, как ужеотмечалось в разделе 4.3, приведёт к большим погрешностям. Поэтому перейдём кновому времени: сместим начало координат в точку с номером n. Дополнительнотакже перенормируем время так, что между двумя последовательными отсчёта-ми теперь будет не ∆t, а 1, что поможет в расчётах производных более высокихпорядков. Делать это придётся динамическим образом, т. е. для каждой последу-ющей точки преобразовывать ось абсцисс. Однако преимущества такого подходаперевесят дополнительные сложности в его реализации, как мы увидим далее.

После замены времени формула для аппроксимирующей функции приводитсяк виду:

ϕn,P (τ) =P∑

p=0

cp,nτp,

τ = (t− tn)/ ∆t

(4.18)

где коэффициенты cp,n имеют уже несколько иной смысл, чем в (4.17), но обозна-чение во избежание увеличения количества индексов мы менять не стали.

Коэффициенты cp,n, как и в разделах 4.2, 4.3 станем искать исходя из критериянаименьших квадратов, но выписывать решение в явном виде не станем, а соот-ветствующую линейную задачу решим численно. Задача на метод наименьшихквадратов формулируется в нашем случае теперь как:

S(cn) =

m−12∑

i=−m−12

(P∑

p=0

cp,nip − xi+n

)2

= min (4.19)

Чтобы свести задачу к решению системы линейных уравнений, необходимопродифференцировать (4.19) по всем cp,n и приравнять производные нулю (условиена минимум функции многих переменных):

∂S(c)

∂cq,n

= 2

m−12∑

i=−m−12

iq

(P∑

p=0

cp,nip − xi+n

)= 0, q = 0, . . . , P (4.20)

45

Page 47: Введение в численные методы обработки данных - Сысоев

Система (4.20) решается численно, например, методом Гаусса, описанным влекции 2. Для того, чтобы проще определить коэффициенты в системе (2.1) пере-пишем (4.20), использовав свойство линейности операции суммирования, к виду:

P∑p=0

cp,n

m−12∑

i=−m−12

iqip =

m−12∑

i=−m−12

iqxi+n, q = 0, . . . , P (4.21)

Из (4.21) легко выразить коэффициенты матрицы A и вектора свободных чле-нов b задачи (2.2):

aq,p =

m−12∑

i=−m−12

iqip

bq =

m−12∑

i=−m−12

iqxi+n.

(4.22)

Заметим, что роль вектора переменных, обозначенного в лекции 2 как x, в нашемслучае играет вектор коэффициентов cn.

Решив систему линейных уравнений (4.21) методом Гаусса или как-либо иначе,необходимо выразить величину производной и произвести обратное преобразова-ние координат. Оценка первой производной f(t) может быть получена из аппрок-симации (4.18) просто дифференцированием сложной функции2:

df(t)

dt

∣∣∣∣t=tn

≈ dϕn,P

∣∣∣∣τ=0

dt= c1,n

/∆t. (4.23)

Из наших преобразований очевидно, что dτdt

= 1/∆t есть константа, таким образом

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

djf(t)

dtj

∣∣∣∣t=tn

≈ j! c1,n

/(∆t)j , j = 0, . . . , P (4.24)

Отметим, что из формулы (4.24) получается оценка для всех P первых производ-ных, а кроме того, аппроксимация исходного ряда со сглаживанием при j = 0.

4.4.2 Рекомендации по реализации

Весь метод рекомендуется оформить в виде процедуры. Её входящие парамет-ры: исходный временной ряд {xn}N

n=0, его длина N , количество точек, использу-емых для сглаживания m, степень полинома P , время выборки ∆t. На выходе

2При этом очень удобно, что в наших новых переменных по времени точка, в которой надовычислить производную имеет координату 0, следовательно при отыскании j-той производнойвсе слагаемые полинома (4.18) с номерами больше j обнулятся, а с номерами меньше j исчезнутвследствии дифференцирования. Таким образом, остаётся только j-тый член с коэффициентом.

46

Page 48: Введение в численные методы обработки данных - Сысоев

получается двумерный массив dif, содержащий значения оценок всех производ-ных, имеющий N − m + 2 строк и P + 1 столбец. Номер строки соответствуетотсчёту по времени, учитывая, сто первые и последние m−1

2точек в исходном ряде

xi не имеют соответствующих им значений в dif; номер столбца соответствует но-меру производной: 1-ый столбец содержит сглаженные значения самого ряда (ну-левая производная), 2-ой значения первой производной и т. д., (P + 1)-ый столбецсодержит значения старшей P -той производной. Все вычисления рекомендуетсяпроизводить с двойною точностью (типы double в Delphi, real(8) в Fortran).

Внутри процедуры создаём общий цикл по n от m−12

до(N − m−1

2

). Результат

работы операторов внутри этого цикла на каждой его итерации — вычисление зна-чений всех P производных в точке с номером n. Последовательность оператороввнутри большого цикла разобьём на три группы:

1. вычисление по экспериментальным данным коэффициентов матрицы A ивектора свободных членов b для данной точки n по формулам (4.22);

2. решение задачи по отысканию cp,n, т. е. решение системы линейных уравне-ний, например, методом Гаусса;

3. вычисление производных по формуле (4.24) из найденных коэффициентовcp,n.

Метод Гаусса также должен быть оформлен в виде отдельной процедуры и вызы-ваться из цикла, а не быть встроенным в цикл.

Задание 4.7 Реализуйте метод дифференцирования с помощью аппрокси-мации полиномом произвольного порядка, описанный в данном разделе.

Рассчитайте численно производную для тех же рядов, что и в заданиях4.1, 4.3 и 4.5 отдельно используя аппроксимацию полиномами 1 и 2 поряд-ка. Численно оцените точность методом наименьших квадратов, как этопредложено в задании 4.2, для нового метода. Сравните результаты рас-чёта с использованием полинома первого порядка с результатами задания4.3, а результаты полинома второго порядка с результатами задания 4.5.

Задание 4.8 Сравните результаты вычисления первой и второй производ-ных по ряду, соответствующему периодической функции с шумом, с ис-пользованием полиномов различного порядка: от 1 (только для первой про-изводной) до 4 при одном и том же числе точек для сглаживания m. На-пример, возьмите ряд, представляющий собою реализацию функции sin t наотрезке t ∈ [0; 100] с временем выборки ∆t = 0.1, добавьте равномерный шум,сгенерированный генератором случайных чисел с амплитудою 0.1 и нулевымсредним и используйте m = 7, m = 9 или m = 11.

47

Page 49: Введение в численные методы обработки данных - Сысоев

Задание 4.9 По ряду, сгенерированному в задании 4.8, подсчитайте тре-тью производную с помощью аппроксимации полиномом третьего порядка(используйте довольно большое количество точек для сглаживания, напри-мер, m = 11 или m = 15). Также подсчитайте третью производную ите-рационно, трижды применив аппроксимацию полиномом первого порядка:сначала продифференцируйте исходный ряд, затем его производную и, на-конец, производную производной. Проделайте эту процедуру дважды: дляменьшего, чем при отыскании третьей производной m (скажем, там ис-пользовали m = 15, здесь — m = 7), а также с применением такого же m.Сравните результаты между собою и с аналитическою оценкою, наложивтри кривые: аналитическую, полученную прямым вычислением третьейпроизводной и итерационным способом на одном графике.

48

Page 50: Введение в численные методы обработки данных - Сысоев

Лекция 5

Численное интегрирование

Как и в разделе 4, пусть экспериментальные данные представляют собою вре-менной ряд {xn}N

n=0, т. е. набор значений некоторой величины X — xn, измерен-ных в последовательные моменты времени tn. Здесь и далее будем также считать,что временной ряд эквидистантный, т. е. ∆t = tn+1 − tn = const. Аналогично 4полагаем, что измеренный ряд представляет собою регистрацию некоторой экспе-риментальной зависимости f(t). При этом необязательно, чтобы f(t) могла бытьзаписана в явном виде, так, например, если f(t) представляет собою траекториюхаотической динамической системы, она не может быть выражена в явном видев принципе. Более того, численное интегрирование, как и дифференцирование,нередко используется именно потому, что наблюдаемый временной ряд невозмож-но с достаточною степенью точности аппроксимировать явною функцией времени.

Задача численного интегрирования фактически представляет собою две раз-личные задачи: задачу нахождения определённого интеграла S (t0, tN) функцииf(t) на отрезке [t0, tN ] и задачу нахождения первообразной g(t) функции f(t), ко-торые, однако, решаются сходными приёмами.

5.1 Метод прямоугольников и метод трапеций

Методы прямоугольников и трапеций позволяют оценить значение определён-ного интеграла S (t0, tN) функции f(t) на отрезке [t0, tN ] простейшим способом.Для этого необходимо вспомнить, что геометрический смысл определённого ин-теграла есть площадь под кривою. При этом площадь, оказавшаяся между осьюабсцисс сверху и отрицательными значениями f(x) берётся с минусом, а междуосью абсцисс снизу и положительными значениями — сверху. Необходимо такжесделать предположение, что функция f(t) мало меняется на промежутке междуtn и tn+1.

49

Page 51: Введение в численные методы обработки данных - Сысоев

Рис. 5.1. Иллюстрация к методам численного интегрирования: (a) — метод пря-моугольников, (b) — метод трапеций. Заштрихованная площадь под графикамив обоих случаях соответствует оценке интеграла S (t0, tN+1) по формулам (5.1)

и (5.2) соответственно.

5.1.1 Метод прямоугольников

Считая, что f(t) меняется на каждом промежутке S (tn, tn+1), n = 0, . . . , (N−1)

несущественно, проведём интерполяцию значений f(t), заменив её ∀t ∈ (tn, tn+1)

на константу f (tn) = xn. Тогда для подсчёта интеграла получаем формулу (5.1)

S (t0, tN+1) = ∆t

N−1∑n=0

xn (5.1)

Чтобы проиллюстрировать формулу (5.1), мы привели картинку (см. рис. 5.1a),на которой заштрихованная область и есть подсчитанный методом трапеций ин-теграл. Видно, что такое приближение является довольно грубым. Метод прямо-угольников относится к методам первого порядка точности, что значит, что приуменьшении ∆t (т. е. при увеличении числа точек на интервале, в которых проведе-ны измерения) погрешность метода уменьшается пропорционально второй степени∆t.

Задание 5.1 Запрограммируйте метод прямоугольников. В качестве вре-менных рядов при тестировании программы используйте те же ряды, чтобыли сгенерированы в задании 4.1. Для функции f(t) = sin(t), t ∈ [0; 10] оце-ните погрешности подсчёта интеграла ε0, вычислив его аналитически исравнив с оценкою методом прямоугольников. Оценку погрешностей прове-дите при различных значениях ∆t: например, возьмите значения ∆t = 0.1,∆t = 0.03, ∆t = 0.01, ∆t = 0.003, ∆t = 0.001. Постройте график зависимостиε0(∆t). Покажите, что погрешность спадает квадратично с уменьшением∆t.

50

Page 52: Введение в численные методы обработки данных - Сысоев

5.1.2 Метод трапеций

Метод трапеций является развитием идеи метода прямоугольников и отлича-ется от него тем, что интерполяция значений f(t) в интервалах между точками

измерения проводится по линейному закону: f(t) = f(tn)+(t−tn)f(tn+1)− f(tn)

tn+1 − tn, в

то время как в методе прямоугольников использовалась интерполяция в виде кон-станты. При такой интерполяции формула для подсчёта интеграла, аналогичная(5.1) принимает вид:

S (t0, tN+1) =1

2∆t

N−1∑n=0

(xn + xn+1) (5.2)

Для иллюстрации формулы (5.2) приведён рис. 5.1b, на котором площадь за-штрихованного участка соответствует величине интеграла. Из сравнения рис. 5.1aи рис. 5.1b можно видеть разницу между методами прямоугольников и трапеций.

Как и метод прямоугольников, метод трапеций является методом первого по-рядка точности, однако, обычно полученные этим методом результаты более точ-ны.

Задание 5.2 Запрограммируйте метод трапеций. При этом не нужно уни-чтожать программу с методом прямоугольников, просто сделайте новую.Подсчитайте интегралы по тем же рядам, что и методом прямоугольни-ков и сравните точность полученных результатов. Как это было продела-но в задании 5.1 для функции f(t) = sin(t), t ∈ [0; 10] оцените погрешностиподсчёта интеграла ε0, вычислив его аналитически и сравнив с оценкоюметодом трапеций, а также значениями, полученными методов прямо-угольников. Оценку погрешностей проведите при различных значениях ∆t:например, возьмите значения ∆t = 0.1, ∆t = 0.03, ∆t = 0.01, ∆t = 0.003,∆t = 0.001. Постройте график зависимости ε0(∆t) рядом с таким же гра-фиком для метода прямоугольников. Покажите, что погрешность спадаетлинейно с уменьшением ∆t.

5.2 Метод Симпсона

Метод Симпсона представляет собою дальнейшее развитие идеи, заложенной вметодах прямоугольников и трапеций. Интерполирование значений f(t) проводит-ся с помощью параболы. Из-за этого для интерполяции необходимо задействоватьсразу три точки: на краях промежутка и одну в середине. Поэтому при интегриро-

51

Page 53: Введение в численные методы обработки данных - Сысоев

вании методом Симпсона ряд делят на промежутки по 2∆t1. Для удобства будемсчитать, что N чётное, т. евсё время наблюдения разбивается на целое число про-межутков по 2∆t. Если это не так, можно сократить ряд на один промежуток, аесли пожертвовать им по какой-либо причине нельзя, можно вычислить интегрална нём методом трапеций.

Выводить соответствующую формулу мы не станем, поскольку это довольнотрудоёмкая процедура, желающие могут обратиться, например, к [1]. Формуладля интегрирования принимает вид:

S (t0, tN+1) =1

3∆t

N/2∑n=1

(x2n−2 + 4x2n−1 + x2n) (5.3)

Метод Симпсона имеет гораздо лучшие, чем ранее рассмотренные методы ха-рактеристики по точности. Он относится к методам третьего порядка точности,таким образом, погрешность составляет ∼ ∆t−4.

Задание 5.3 Проведите интегрирование для тех же рядов, что и мето-дами прямоугольников и трапеций в заданиях 5.1 и 5.2. Оцените порядокточности. Сравните точность методов, построив в одних осях на одномграфике кривые ε(∆t) для sin(x), проинтегрированном на отрезке t ∈ [0; 10].Для простоты восприятия по обоим осям используйте логарифмическуюшкалу. В такой шкале угол наклона графика соответствует степени, есликривая спадает по степенному закону. Таким образом, можно легко заме-тить, что у методов прямоугольников и трапеций примерно один угол, ау метода Симпсона кривая идёт заметно круче.

5.3 Отыскание первообразной

В разделах 5.1 и 5.2 рассматривалась задача нахождения определённого инте-грала на отрезке. Однако нередко необходимо подсчитать не определённый инте-грал, а первообразную. Конечно, получить первообразную в виде аналитическойфункции h(t) =

∫f(t)dt по наблюдаемому временному ряду не удастся, если толь-

ко этот ряд не аппроксимировать функцией в свою очередь. Но можно получить

1В ряде работ, в частности, в [1], встречается иная трактовка интервала ∆t не как временивыборки, т. е. времени между двумя последовательными измеренными значениями f(t), а какинтервала, на котором проводится интерполяция. Это, несомненно, удобнее при выводе фор-мул и аналитической оценке свойств методов, но при практической реализации вызывает толькодополнительные проблемы для алгоритмов высоких порядков, так как оказывается необходи-мым номинально менять частоту оцифровки, поскольку нужно откуда-то «достать» значения впромежуточных точках, которых, естественно, при стандартной процедуре съёма нет.

52

Page 54: Введение в численные методы обработки данных - Сысоев

(далее будем говорить оценить, поскольку в ряде могут присутствовать шумы, ктому же оценка производится с точностью до константы) временной ряд первооб-разной. Для этого вспомним, что первообразная функции эквивалентна интегралус верхним переменным пределом:

h(t) =

∫f(t)dt =

t∫

−∞

f(ϑ)dϑ (5.4)

Поскольку первообразная всё равно определена с точностью до константы, еслимы ищем её оценку на отрезке t ∈ (t0, tN), мы можем разделить интеграл в правойчасти (5.4) на два:

∫ t

−∞f(ϑ)dϑ =

∫ t0

−∞f(ϑ)dϑ +

∫ t

t0

f(ϑ)dϑ

∫ t0

−∞f(ϑ)dϑ = C0

(5.5)

Далее, так как C0 в выражении (5.5) является константою и не может быть под-считано на основании наблюдаемых данных вследствие отсутствия наблюдения завремя до t0, величиною C0 пренебрежём.

Таким образом, для оценки величины первообразной h(t) функции f(t), значе-ния которой измерены экспериментально на отрезке [t0, tN ], в точке tn необходиморассчитать определённый интеграл (5.6) любым из изложенных в разделах 5.1.2,5.1.1 или 5.2 способом.

h(t) ≈tn∫

t0

f(ϑ)dϑ (5.6)

Примечание 5.1 Из сказанного выше следует, что программу для отыскания первооб-разной можно легко сделать из программы для нахождения определённого интеграла.Для этого процедуру, предназначенную для оценки определённого интеграла следует по-местить в цикл по всем n. На каждом шаге цикла следует искать только интеграл от tn−1

до tn (при использовании метода Симпсона следует разделить чётные и нечётные точки,поскольку оперировать придётся интервалами по 2∆t). Полученную величину прибав-ляем к оценке h(t) в предыдущей точке tn−1 и получаем оценку первообразной в моментtn.

Поскольку всё равно первообразная определяется по формуле (5.6) с точностью доконстанты, обычно из получившегося ряда вычитают его среднее. При однократном ин-тегрировании это не существенно, но если искать первообразную второго и более высокихпорядков, ненулевое среднее внесёт искажение: у второго интеграла появится линейныйтренд, у третьего — параболический и т. д. Среднее следует вычитать при интегрирова-нии каждый раз при взятии очередного неопределённого интеграла.

53

Page 55: Введение в численные методы обработки данных - Сысоев

Кроме того, среднее обязательно необходимо вычесть из исходного ряда перед первыминтегрированием.

Задание 5.4 Найдите первообразные следующих функций, используя методтрапеций:

1. f(t) = sin(t), t ∈ [0, 100], ∆t = 0.1;2. f(t) = sin(2πt), t ∈ [0, 10], ∆t = 0.01;

3. f(t) =1

t, t ∈ [1, 10], ∆t = 0.01;

4. f(t) = t, t = [−5; 5], ∆t = 0.1.

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

Задание 5.5 Найдите неопределённый интеграл от тех же функций, чтои в задании 5.4, но используя метод Симпсона. Для этого в процессе ин-тегрирования разделите все точки на нечётные и чётные. Для интерва-ла [t0; t1] найдите интеграл методом трапеций. Далее для чётных n ин-теграл находится интегрированием на отрезке [tn−2, tn] и прибавлением кранее найденному интегралу на отрезке [t0, tn−2], начальное значение от-сутствует (начинаем на отрезке [t0, t2], результат прибавляем к нулю).Для нечётных n всё аналогично, только начальное значение — результатинтегрирования методом трапеций на отрезке [t0; t1].

Сравните результаты, полученные методом трапеций и методом Симп-сона, построив их рядом на одном графике.

Задание 5.6 Найдите второй интеграл от функций из задания 5.4 и 5.5,используя метод Симпсона дважды: сначала к исходному ряду, затем куже проинтегрированному одни раз. После первого интегрирования не за-будьте вычесть среднее.

54

Page 56: Введение в численные методы обработки данных - Сысоев

Лекция 6

Численное интегрированиедифференциальных уравнений

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

Необходимость решать дифференциальные уравнения являлась одною из ос-новных причин развития как самих численных методов, так и использующих ихЭВМ. И по сей день основная нагрузка на используемые для научных и инженер-ных расчётов ЭВМ всех типов, как правило, это нагрузка по численному решениюдифференциальных уравнений1. Цель данной лекции, последней в первой частикниги — дать ряд базовых навыков по численному решению задачи Коши дляобыкновенных дифференциальных уравнений (ОДУ), достаточные для большойчасти прикладных задач, встретящихся читателю в будущем. Более детальноезнакомство с методами численного интегрирования как ОДУ, так и уравнений вчастных производных он может отыскать, например, в [10].

Общая задача решения ОДУ на ЭВМ может быть сформулирована следующимобразом. Существует векторное дифференциальное уравнение первого порядка(6.1)

dx

dt= f(x, t), (6.1)

где x есть вектор, который в дальнейшем, используя терминологию из теорииколебаний и нелинейной динамики, мы станем называть вектором состояния,состоящий из компонентов (x1, x2, . . . , xD), D — его размерность, t — скалярнаянезависимая переменная, f — векторная функция той же размерности D, что ивектор состояния x, состоящая из компонентов fi (x1, x2, . . . , xD), i = 1, 2, . . . , D.

1Может быть, только различные методы многомерной оптимизации занимают вычислитель-ные мощности сходного объёма.

55

Page 57: Введение в численные методы обработки данных - Сысоев

Векторное уравнение (6.1) может быть рассмотрено как система из D скалярныхсвязанных дифференциальных уравнений (6.2) либо, в некоторых случаях, пере-писана к виду одного уравнения D-того порядка (6.3).

dx1

dt= f1 (x1, x2, . . . , xD, t) ,

dx2

dt= f2 (x1, x2, . . . , xD, t) ,

. . .dxD

dt= fD (x1, x2, . . . , xD, t) .

(6.2)

dDy

dtD= g

(y,

dy

dt,d2y

dt2, . . . ,

dD−1y

dtD−1, t

). (6.3)

Аналогично можно преобразовать систему связанных дифференциальных урав-нений (6.2) в одно векторное либо перейти от уравнения порядка D (6.3) к си-стеме уравнений первого порядка. Таким образом, будем всегда далее рассматри-вать задачу в виде (6.1), поскольку к задаче такого вида сводится подавляющеебольшинство интересующих на практике ситуаций. Как поступать, если просты-ми преобразованиями свести вашу задачу к (6.1) не удаётся, можно посмотреть,например, в [10].

Кроме самого уравнения (6.1) заданы также начальные условия (6.4), в такомслучае принято говорить о решении задачи Коши.

x (t0) = x0. (6.4)

Требуется найти значения вектора x при t ∈ [t0; tfin], или, как принято говоритьв теории колебаний, необходимо найти траекторию системы на временном проме-жутке t ∈ [t0; tfin], если t рассматривать как время.

Для некоторых классов уравнений вида (6.1) поставленную задачу можно ре-шить аналитически. Этим занимается теория дифференциальных уравнений. Од-нако для большинства имеющих практический интерес систем найти такое реше-ние либо крайне затруднительно, либо невозможно принципиально, что, в частно-сти, справедливо для систем, реализующих хаотическую динамику. Поэтому оченьчасто прибегают численным методам решения задачи (6.1, 6.4).

Любой численный метод ограничен и, как следствие, не позволит решить за-дачу (6.1, 6.4) в полной мере. Первое ограничение заключается в том, что нельзяполучить значения x(t) во всех точках отрезка [t0; tfin], так как таковых точек бес-конечно много. Вместо этого можно задать на отрезке сетку и получить значенияx(t) при некоторых фиксированных t = t1, t2, . . . , tN . При необходимости получить

56

Page 58: Введение в численные методы обработки данных - Сысоев

значения в каких-то промежуточных точках потом можно произвести интерполи-рование полученного ряда значений {x (tn)}N

n=0 с помощью, скажем, кубическихсплайнов, как это описано в разделе 3.2 либо изменить разбиение таким образом,чтобы в него вошли интересующие нас моменты времени. Второе важное ограни-чение заключается в том, что даже значения {x (tn)}N

n=0 не могут быть полученыабсолютно точно, поскольку как сам метод, так и реализующая его ЭВМ имеютопределённый порядок точности.

Мы будем рассматривать только равномерную сетку такую, что tn = t0 + nh,где h = (tfin−t0)

/N . Точки tn, как это обычно принято, называются узлами сетки,

величина h называется шагом интегрирования.

6.2 Метод Эйлера

Метод Эйлера (также называемый методом Рунге-Кутты первого порядка) —простейший алгоритм численного решения дифференцирования. Идея метода Эй-лера — переход от бесконечно малых разностей в (6.1) к конечным малым разно-стям следующим способом:

x(tn+1)− x(tn)

tn+1 − tn≈ f(xn, tn). (6.5)

Такое приближение справедливо, если величина шага интегрирования ∆t = tn+1−tn = h достаточно мала. Что означает «достаточно» — необходимо выяснять вкаждом конкретном случае (для каждой системы уравнений) отдельно, общегоправила на этот счёт не существует. Однако можно рекомендовать брать ∆t мно-го меньше характерного временного масштаба изменений x (иногда такой масштаблегко оценить аналитически или из дополнительных соображений), либо наимень-шего из таких масштабов, если их несколько. Вопрос адекватности аппроксимации

Из формулы (6.5) легко получить рекурентное соотношение для расчёта x(tn+1)

через x(tn):x(tn+1) = f(xn, tn)∆t + x(tn). (6.6)

Фактически, численное решение дифференциальных уравнений методом Эйлерасводится к замене системы (6.1) соотношением (6.6). Вы подставляете ваши на-чальные условия (6.4) в (6.6) и получаете траекторию системы, т. е. значения x вовсе последующие моменты времени с шагом h.

Задание 6.1 Реализуйте метод Эйлера для случая скалярного дифференци-ального уравнения, т. е. при D = 1. В качестве тестовых, используйте

57

Page 59: Введение в численные методы обработки данных - Сысоев

следующие уравнения:

dx

dt= −x, (6.7)

dx

dt= sin(t) (6.8)

Решите эти уравнения аналитически и наложите траекторию, рассчи-танную численно методом Эйлера, на аналитическую кривую, оцифрован-ную с тою же частотою выборки. Проведите сравнение при различных ве-личинах шага интегрирования ∆t

При решении системы дифференциальных уравнений, или векторного уравне-ния при D > 1 алгоритм аналогичен скалярному случаю с тою только разницею,что одновременно необходимо вычислять не одну величину x (tn+1) по x (tn), асразу несколько xd (tn+1), d = 1, 2, . . . , D, каждая из которых зависит ото всех илитолько от некоторых xd (tn) в зависимости от конкретного вида уравнений. Ни-какой зависимости от одновременных значений других компонент вектора x приэтом нет.

Задание 6.2 Запрограммируйте метод Эйлера для векторного уравнения(системы дифференциальных уравнений) порядка D. Для этого используй-те построенный для скалярного случая алгоритм и модифицируйте его.В качестве тестовых используйте классические системы теории колеба-ний и нелинейной динамики: уравнения линейного осциллятора с затухани-ем (6.9), нелинейного осциллятора Ван-дер-Поля (6.10) и системы Рёсслера(6.11). Кроме предложенных параметров и начальных условий попробуйтедругие комбинации.

dx1

dt= x2,

dx2

dt= −2γx2 − ω2x1,

x1(t0) = 1.0, x2(t0) = 1.0,

γ = 0.1, ω = 1.0.

(6.9)

dx1

dt= x2,

dx2

dt= − (x2

1 − r) x2 − ω2x1,

x1(t0) = 0.1, x2(t0) = 0.1,

r = 1.0, ω = 1.0.

(6.10)

58

Page 60: Введение в численные методы обработки данных - Сысоев

dx1

dt= −x2 − x3,

dx2

dt= x1 + c1x2,

dx3

dt= c2 + x3 (x1 − c3) ,

x1(t0) = 0.1, x2(t0) = 0.1, x3(t0) = 0.0,

c1 = 0.2, c2 = 0.15, c3 = 10.

(6.11)

Пронаблюдайте, что линейный осциллятор демонстрирует затухающиеколебания при γ > 0. Осциллятор Ван-дер-Поля также может демонстри-ровать затухающие колебания при r 6 0, но при r > 0 возникает устойчи-вый цикл, то есть появляются периодические колебания, размах и формакоторых не зависят от начальных условий на больших временах (доста-точно только подождать t À 1); причём при больших r форма колебанийначинает существенно отличаться от синусоидальной. Система Рёссле-ра при предложенных параметрах демонстрирует хаотические колебания.Плавным уменьшением параметра c3 добейтесь, чтобы она перешла в пе-риодический режим.

59

Page 61: Введение в численные методы обработки данных - Сысоев

Часть II

Статистические методы анализасигналов

60

Page 62: Введение в численные методы обработки данных - Сысоев

Лекция 7

Свойства одномерных случайныхвеличин

7.1 Функция распределения, плотность распреде-

ления

Действительное переменное, которое в зависимости от исхода опыта, т. е. в за-висимости о случая принимает различные значения, называется случайною вели-чиною.

Пусть некоторая случайная величина X принимает любое значение меньшееили равное x с вероятностью y. Тогда зависимость F (x) = y называется закономраспределения или функцией распределения случайной величины X. в теории веро-ятностей случайная величина полностью характеризуется своею функцией распре-деления, так что задать функцию распределения означает полностью определитьслучайную величину.

Основные свойства функции распределения: F (x) монотонная, т.е. ∀x2 > x1

F (x2) > F (x1), F (+∞) = 1, F (−∞) = 0, откуда следует ∀x 0 6 F (x) 6 1.Дискретные случайные величины — это такие, которые могут принимать ко-

нечное или счётное количество значений xi с вероятностью pi. Например, при бро-сании игрального кубика может выпасть только одно из шести значений от 1 до 6с равною вероятностью 1/6. другой пример: при игре на тотализаторе результатфутбольного матча рассматривается как совокупность двух дискретных случай-ных величин, поскольку очевидно, что каждая команда может забить только целоечисло голов. Однако различные значения здесь не равновероятны: в среднем, чембольше голов нужно забить, тем меньше вероятность.

Непрерывные случайные величины могут принимать любое значение из неко-

61

Page 63: Введение в численные методы обработки данных - Сысоев

Рис. 7.1. Функция распределения F (x) (a) и плотность распределенияϕ(x) (b) для нормального (гауссового) закона с параметрами σ = 1,

a = 0, т. е. с нулевым средним и единичною дисперсией.

торого интервала, в общем случае — любое значение от −∞ до +∞. Подавляющеечисло результатов всевозможных измерений и наблюдений: температура в комна-те, давление атмосферы, частота сокращений сердца, потенциалы головного мозгачеловека и т. п. представляют собою непрерывные случайные величины, посколь-ку предполагается, что кроме известных факторов, обусловивших тот или инойрезультат, всегда действуют ещё и различные помехи, шумы, неучтённые фак-торы. При этом точность представления этих величин на практике ограниченавозможностью аппаратуры регистрации и хранения данных. Так, хотя температу-ра в комнате меняется непрерывно, измерить её бытовым термометром вы можететолько с точностью не выше 1℃.

Геометрический смысл F (x) довольно очевиден.Работать с функцией F (x) не всегда удобно. Поэтому часто используют её

первую производную ϕ(x) =dF (x)

dx, называемую функцией плотности распреде-

ления случайной величины X.Геометрический смысл плотности распределения прост — площадь под графи-

ком ϕ(x) соответствует вероятности того, что некоторая случайная величина при-мет значение в промежутке от x1 до x2. Основные свойства плотности распределе-ния непосредственно вытекают из свойств функции распределения: ∀ x ϕ(x) > 0,+∞∫−∞

ϕ(x) = 1.

Задание 7.1

Чтобы получить представление о случайных величинах, каждый день втечении недели в одно и то же время суток (скажем, в 20.00) измеряйтетемпературу в комнате. Сравните полученные значения с результатамидругих студентов.

62

Page 64: Введение в численные методы обработки данных - Сысоев

7.2 Основные законы распределения

В природе существуют бесконечно много законов распределения. Описать каж-дый из них нет никаких возможностей, да это и не нужно как правило. И вот поче-му. Хотя реальный закон может быть неизвестен, на основании правдоподобныхпредположений его часто можно аппроксимировать некоторым эталонным рас-пределением из сравнительно небольшого набора. По сути, конечно, уже на этомэтапе мы совершаем подмену реальности моделью, но надо помнить, что и всё на-ше знание по сути модельно. Зато, немного проигрывая в точности описания, мыполучаем доступ к уже развитому аппарату методов и подходов,разработанныхдля эталонного распределения. Вот почему мы, следуя многим другим работам, идалее будем употреблять по отношению к реальным процессам выражения вроде«гауссов шум», хотя, конечно, реальный шум несколько отличается от гауссова.

Целесообразно кратко охарактеризовать некоторые наиболее распространён-ные законы распределения.

• Равномерное распределение на участке x ∈ [a, b]: ϕ(x) =

0, x < a;1

b−a, 0 6 x 6 b;

0, x > b.

• Гауссово распределение с параметрами a, σ: ϕ(x) = 1√2πσ

e−(x−a)2/2σ2 .

• Экспоненциальное распределение с параметром λ: ϕ(x) =

{0, x < 0;

λe−λx, x > 0.

Случайная величина с равномерным распределением, благодаря его просто-те, является популярною моделью случайных величин вообще. Это связано, во-первых, с тем, что для равномерного распределения различные меры и стати-стики1 вычисляются сравнительно просто. Кроме того, большинство генераторовслучайных чисел способны выдавать только числа, распределённые равномерно.Числа с другими законами распределения обычно получаются из равномерно рас-пределённых величин различными математическими преобразованиями.

Случайная величина с нормальным (гауссовым) распределением представляетсобою наиболее популярную модель в математической статистике и статистиче-ской физике. Это связано с действием так называемой центральной предельнойтеоремы. Центральная предельная теорема гласит: сумма бесконечного количе-ства случайных величин с произвольным законом распределения распределена по

1Статистикою называется, вообще говоря, любая функция случайной величины. Подробнееоб этом речь пойдёт в лекции II.3.

63

Page 65: Введение в численные методы обработки данных - Сысоев

нормальному закону. Таким образом, если во время некоторого эксперимента дей-ствует большое число разных мелких возмущений, влияние каждого из которыхв отдельности невозможно учесть, полагают, что суммарное искажение, вносимоевсеми этими факторами, представляет собою гауссову случайную величину.

Второе важнейшее свойство нормального закона распределения — это то, чтодва его параметра представляют собою непосредственно два первых момента этогораспределения2.

Экспоненциальное распределение часто встречается при описании срока служ-бы приборов. Так, например, примерно по экспоненциальному закону распределёнсрок службы электрических лампочек накаливания.

Задание 7.2

Сгенерируйте с помощью компьютера массив равномерно распределённыхв промежутке от 0 до 1 случайных величин. Постройте для них графикифункции распределения и плотности распределения. Сравните полученныекривые с теоретическими. Проследите, как изменяются графики плотно-сти распределения и функции распределения при увеличении массива дан-ных.

Сгенерируйте массив случайных величин, равномерно распределённых наотрезке [a; b]. Постройте для них плотность и функцию распределения.

Сгенерируйте случайную величину с законом распределения, близким к нор-мальному, просуммировав большое число равномерно распределённых слу-чайных величин (начните с 5 и увеличивайте число суммируемых до 500–1000). Постройте плотность и функцию распределения. Проследите, какменяются их графики с ростом числа суммируемых величин.

7.3 Рекомендации по выполнению практических за-

даний

При построении функций распределения полезно сначала отсортировать мас-сив данных по убыванию или по возрастанию. Обозначим элементы отсортиро-ванного по возрастанию массива ξn. После этого полезно представить себе, что мыперешли от непрерывных случайных величин к дискретным, каждому значениюможно присвоить вероятность 1/N , где N — общее число элементов массива. То-гда функция распределения может приближённо быть оценена для произвольного

2Подробнее о моментах распределения см. лекцию II.3.

64

Page 66: Введение в численные методы обработки данных - Сысоев

x, для чего надо найти ближайшее к нему меньшее него ξn, после чего вычислитьF (x) = F (ξn) = n

N. Более гладкая зависимость получится, если провести линейную

интерполяцию F (x) между ξn и ξn+1.При построении плотности распределения весь объём данных нужно разбить

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

√N бинов (ближайшее целое, конечно). Массив данных, опять же, следует

отсортировать, после чего весь промежуток от ξ1 до ξN поделить на равные про-межутки общим числом L, подсчитать, сколько элементов попало в каждый бин.Функция распределения постоянна на всём промежутке и подсчитывается как от-ношение вероятности попадания в бин к его длине. Полученную зависимость при-нято назвать гистограммою.

Для получения равномерно распределённых на произвольном отрезке [a; b] ве-личин нужно сначала сгенерировать величины, распределённые на отрезке [0; 1],а затем отмасштабировать их с помощью преобразования (7.1):

yn = (b− a)xn + a (7.1)

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

65

Page 67: Введение в численные методы обработки данных - Сысоев

Лекция 8

Многомерные случайные величины

8.1 Функция распределения и плотность распреде-

ления многомерной случайной величины

Упорядоченная совокупность из n случайных величин {X1, X2, . . . , Xn} назы-вается n-мерным случайным вектором. Он характеризуется n-мерным закономраспределения F (x1, x2, . . . , xn). F (x1, x2, . . . , xn) есть вероятность того, что од-новременно все компоненты случайного вектора примут значения не больше за-данных: X1 < x1, X2 < x2, . . . , Xn < xn. Многомерная функция распределе-ния является неубывающею по каждой из компонент, т. е. при фиксированныхxj, j = 1, . . . , n, j 6= k справедливо соотношение F (x1, x2, . . . , xk,1, . . . , xn) 6F (x1, x2, . . . , xk,2, . . . , xn) ∀xk,1 6 xk,2.

Аналогично многомерному закону распределения вводится многомерная плот-ность распределения, подчиняющаяся правилу

F (x1, x2, . . . , xn) =

x1∫

−∞

. . .

xn∫

−∞

ϕ(x1, . . . , xn)dx1 · . . . · dxn. (8.1)

введённая таким образом плотность (8.1) называется совместною плотностью рас-пределения вероятностей.

Как и в одномерном случае, справедливо тождество

∞∫

−∞

. . .

∞∫

−∞

ϕ(x1, . . . , xn)dx1 · . . . · dxn = 1.

Кроме совместной плотности распределения используют граничные плотностираспределения. Выберем изо всех компонент случайного вектора X компоненты

66

Page 68: Введение в численные методы обработки данных - Сысоев

с номерами k1, k2, . . . , km, тогда граничная плотность распределения этих компо-нент определяется интегрированием совместной плотности распределения (8.1) повсем компонентам с индексами, не совпадающими с k1, k2, . . . , km (обозначим этииндексы как km+1, km+2, . . . , kn) в пределах (−∞, +∞):

ϕ (xk1 , xk2 , . . . , xkm) =

+∞∫

−∞

. . .

+∞∫

−∞

ϕ(x1, . . . , xn)dxkm+1 · . . . · dxkn (8.2)

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

• Случайный вектор называется равномерно распределённым, если его плот-ность распределения ϕx1, . . . , xn принимает постоянные значения в некото-рой области G и равна 0 вне этой области. Внимание! По этому определениюобласть G может иметь произвольную форму, хотя обычно предполагают,что G — связное множество.

• Вектор {X1, . . . , Xn} называется нормально распределённым, если имеет плот-ность вида

ϕx1, . . . , xn = Ce−Q(x1,...,xn).

Здесь Q есть некоторая положительно определённая квадратичная формаот (x1 − a1), . . . ,(xn − an), где ai суть константы. В случае n = 2 плотностьнормального распределения может быть приведена к виду:

ϕ(x1, . . . , xn) = 1

2πσ1σ2

√1−ρ2

×

× exp(− 1

2(1−ρ2)

[(x1−a1)2

σ21

− 2ρ (x1−a1)(x2−a2)σ1σ2

+ (x2−a2)2

σ22

]) (8.3)

Задание 8.1 Сгенерируйте двумерную случайную величину, каждая компо-нента которой распределена по равномерному закону в пределах x1 ∈ [a1, b1],x2 ∈ [a2, b2] при следующих значениях параметров распределения:

1. a1 = −0.5, a2 = −0.5, b1 = 0.5, b2 = 0.5;2. a1 = −15, a2 = −0.5, b1 = −5, b2 = 0.5;3. a1 = 5, a2 = 1, b1 = 10, b2 = 2.

Для этого необходимо создать набор пар случайных величин, причём лучше,чтобы первая и вторая компонента не выдавались генератором случайных

67

Page 69: Введение в численные методы обработки данных - Сысоев

чисел последовательно, а были сгенерированы независимо из различных на-чальных сидов. Постройте графики двумерной плотности распределения.Если в вашем распоряжении имеется программа трёхмерной графики иливы можете реализовать её самостоятельно, воспользуйтесь ими. Можнотакже использовать трёхмерные компоненты Delphi. Если это недоступ-но, можно отобразить плотность в двумере, отложив по осям значенияx1 и x2, а величину плотности вероятности обозначить интенсивностьюцвета (например, оттенками серого).

Сгенерируйте двумерную нормально распределённую случайную величи-ну, как и при создании одномерного аналога, использовав суммирование боль-шого количества равномерно распределённых величин, но для каждой изкомпонент отдельно. Поэкспериментируйте с параметрами генерации. Экс-периментально определите параметры получившегося закона распределе-ния: a1, a2, σ1, σ2 и ρ.

8.2 Условные распределения

Пусть (X, Y ) — непрерывный случайный вектор, а F (x, y) — его функция рас-пределения. Тогда можно ввести функцию распределения x при условии y и функ-цию распределения y при условии x (условные функции распределения):

ϕ(x|y) =ϕ(x, y)∫ +∞

−∞ ϕ(x, y)dy(8.4a)

ϕ(y|x) =ϕ(x, y)∫ +∞

−∞ ϕ(x, y)dx(8.4b)

Обозначения y и x введены в (8.4), чтобы различать x и y, при условии которыхвычисляется плотность вероятности, и «текущие» значения при интегрировании.

Смысл условной плотности вероятности в том, что мы как бы фиксируем неко-торое значение y или x и в зависимости уже от конкретного выпавшего x вычис-ляем вероятность выпадения x.

Случайные величины X1, . . . , Xn (или компоненты случайного вектора{X1, X2, . . . , Xn}) называются независимыми, если выполняется условие:

F (x1, x2, . . . , xn) = F (x1) · . . . · F (xn) (8.5)

Задание 8.2 Для сгенерированных в задании (8.1) реализаций случайных ве-личин постройте условные плотности распределения: для распределённыхпо равномерному закону на середине промежутка, т. е. рассчитайте ϕ(x|y)

68

Page 70: Введение в численные методы обработки данных - Сысоев

при y = 12(a2 + b2) и ϕ(y|x) при x = 1

2(a1 + b1), а также где-нибудь на границе

промежутка, например, при y = (0.9a2 + 0.1b2) и y = (0.1a2 + 0.9b2) соответ-ственно.

Для величин, распределённых по нормальному закону, постройте услов-ные распределения x2 при x1 = a1 и на большом удалении от центра распре-деления, например, при x1 = a1 + 10σ1. Аналогичные условные распределенияпостройте для x1 при фиксированном x2.

69

Page 71: Введение в численные методы обработки данных - Сысоев

Лекция 9

Математические моменты

9.1 Общее определение математических моментов

Пусть X — непрерывная случайная величина с плотностью вероятности ϕ(x).Тогда

νi =

∞∫

−∞

xiϕ(x)dx, X = 1, 2, 3 . . .

называется i-тым начальным моментом случайной величины. Первый началь-ный момент называется математическим ожиданием случайной величины X иобозначается MX .

Величина

µi =

∞∫

−∞

(x−MX)iϕ(x)dx, x = 2, 3, 4 . . .

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

нию, всегда равен нулю. Второй центральный момент µ2 называется дисперсиейслучайной величины и обозначается DX . Корень из дисперсии σ =

√DX назы-

вается разбросом, или среднеквадратичным отклонением, или стандартным от-клонением случайной величины.

Третий центральный момент называется асимметрией или коэффициентомасимметрии1, поскольку с его помощью удобно характеризовать отклонение рас-пределения случайной величины от симметричного относительно математическогоожидания. У симметричного распределения не только третий, но и все нечётные

1Часто коэффициентом асимметрии называют нормированный на куб среднеквадратичногоотклонения третий центральный момент: AX = µ3/σ3. В удущем станем придерживаться именнотакого обозначения, а ненормированный момент обозначать просто µ3.

70

Page 72: Введение в численные методы обработки данных - Сысоев

центральные моменты равны нулю, однако на практике оценка моментов пятогои более высоких порядков затруднено вследствие недостатка экспериментальныхданных.

Четвёртый центральный момент называют эксцессом. Эксцессом принято так-же называть нормированной четвёртый центральный момент, вычисляемый поформуле:

EX =µ4

σ4− 3 (9.1)

Такая нормировка обусловлена тем, что для нормального распределения µ4/σ4 = 3,

таким образом формула (9.1) позволяет определить степень отличности данногораспределения от нормального. Эксцесс характеризует как бы степень остростипика распределения: чем больше эксцесс (при EX > 0), тем острее пик по сравне-нию с пиком нормального распределения с тою же дисперсией.

Рассмотрим математические моменты для двух распространённых законов рас-пределения, описанных в разделе II.1.

Для равномерно распределённой случайной величины математическое ожида-

ние равно MX =a + b

2. Её дисперсия вычисляется по формуле DX =

(a− b)2

12.

Равномерное распределение является симметричным, поэтому для него AX = 0.

Четвёртый центральный момент равномерного распределения равен µ4 =(a− b)4

160,

следовательно эксцесс определяется как

EX =(b− a)4

160

/(b− a)4

144− 3 =

144

160− 3 = −2.1

То есть равномерное распределение является всегда более «плоским», чем нор-мальное.

Для случайной величины с нормальным законом математическое ожиданиеравно MX = a, а DX = σ2, т. е. параметры функции распределения имеют яр-ко выраженный смысл. Это делает нормальное распределение уникальным средивсех законов распределения, поскольку достаточно оценить всего два его момен-та: математическое ожидание и дисперсию, чтобы полностью знать весь законраспределения.

9.2 Эмпирические моменты

Пусть у нас имеется выборка значений случайной величины X {xn}Nn=1, по-

лученная в результате N независимых испытаний. Тогда любая функция выбор-ки f

({xn}N

n=1

)называется статистикою случайной величины X. Очевидно, что

71

Page 73: Введение в численные методы обработки данных - Сысоев

конкретное значение статистики будет зависеть от данной выборки, т. е. являетсяслучайною величиной и называется её оценкою.

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

Эмпирическим средним называют функцию выборки такую, что

〈x〉 =1

N

N∑n=1

xn (9.2)

Фактически, это определение среднего арифметического. Эмпирическое среднееявляется оценкою математического ожидания и стремится к нему при N →∞.

Задание 9.1

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

Эмпирическая дисперсия — это оценка второго центрального момента, она рас-считывается по формуле:

⟨(x− 〈x〉)2

⟩=

1

N

N∑n=1

(xn − 〈x〉

)2 (9.3)

Как и среднее, эмпирическая дисперсия сходится к теоретической при N →∞.Аналогично можно рассчитать эмпирические моменты более высоких поряд-

ков.

Задание 9.2

Для случайных величин, сгенерированных в заданиях к лекции II.1, подсчи-тайте эмпирическую дисперсию, асимметрию и эксцесс. Постройте зави-симость оценки дисперсии от длины выборки N .

9.3 Многомерные моменты

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

Покомпонентные математические ожидания задаются формулою:

Mj =

∞∫

−∞

. . .

∞∫

−∞

xjϕ(x1, . . . , xn)dx1 · . . . · dxn, j = 1, . . . , n. (9.4)

72

Page 74: Введение в численные методы обработки данных - Сысоев

Покомпонентная дисперсия задаётся формулою:

Djk =

∞∫

−∞

. . .

∞∫

−∞

(xj −Mj)(xk −Mk)ϕ(x1, . . . , xn)dx1 · . . . · dxn, j = 1, . . . , n. (9.5)

73

Page 75: Введение в численные методы обработки данных - Сысоев

Лекция 10

Предварительная обработка сигнала

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

10.1 Устранение трендов

Одна из наиболее распространённых проблем при анализе экспериментальныхсигналов — это наличие в них различных трендов. Под трендом, как правило,подразумевается непериодическое изменение среднего, например, его линейныйрост. Таким образом, детрендирование (т. е. удаление тренда) — это приведениесигнала к стационарному в смысле среднего виду (при этом сигнал может остатьсянестационарным относительно моментов высших порядков).

Наиболее простым является линейный тренд (рис. !!!a). Сигнал с линейнымтрендом легко представить себе, если рассмотреть функцию

f(t) = t + sin(ωt), (10.1)

где частота ω À 1. Если теперь принять, что компонента sin(ωt) есть информаци-онная составляющая, то мы заметим, что наш синус будет медленно по сравнениюс основным периодом колебаний равномерно «ползти» вверх. За этот эффект бу-дет ответственно линейное слагаемое t. Это и есть линейный тренд. Конечно, на

74

Page 76: Введение в численные методы обработки данных - Сысоев

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

Чтобы устранить линейный тренд, от экспериментального сигнала {ηn} берутпервую разность, т. е. составляют новый сигнал {ζn}, где ζn = ηn − ηn−1. Такуюоперацию иногда также называют «дифференцированием». В самом деле, еслиинтервал выборки ∆t достаточно мал (что довольно типично) и в сигнале нет вы-сокочастотных помех, данное преобразование действительно представляет собоючисленное дифференцирование с масштабированием производной на ∆t.

Показать, что такой приём на самом деле приводит к исчезновению тренда,можно, обратившись к приведённому примеру сигналом, порождённым функци-ей (10.1). В этом случае необходимо, чтобы выполнялось условие на интервалвыборки ∆t ¿ ω−1. Тогда взятие первой разности будет эквивалентно преоб-

разованию: ζ(t) = ∆tdη(t)

dt. Выполнив такое преобразование над 10.1, получим

g(t) = ∆t + ∆t cos(ωt). В отличает от f(t) g(t) линейной компоненты уже не со-держит.

Задание 10.1

Сгенерируйте несколько временных рядов по закону f1(t) = t + sin(ωt) приразличных ω (например, ω = 20, ω = 50, ω = 100). Постройте график. При-мените к сгенерированным рядам операцию взятия первой разности. По-стройте графики полученных сигналов, чтобы убедиться, что линейныйтренд пропал.

Хотя линейный тренд и встречается на практике, часто дрейф среднего носитболее замысловатый характер. Если тренд не является линейным, но при этомвсё же есть основания полагать, что он может быть описан какою-либо детер-минированной функцией, можно применить операцию взятия разности несколькораз. Легко убедиться, что для тренда, который можно описать полиномом n-ногопорядка, достаточно взять n последовательных разностей, или, говорят, простоn-ную разность.

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

Задание 10.2

Сгенерируйте несколько временных рядов по закону f2(t) = t2 + sin(ωt) приразличных ω как в предыдущем задании. Постройте графики. Примените ксгенерированным рядам операцию взятия первой разности. Убедитесь, что

75

Page 77: Введение в численные методы обработки данных - Сысоев

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

Кроме того, что не ясно до конца, сколько разностей необходимо взять, устра-нять тренд дифференцированием плохо ещё по одной причине: наличие высоко-частотных шумов быстро приводит к столь существенным искажениям сигнала,что уже после второй–третей разности использовать полученный ряд невозмож-но. Поэтому довольно часто для устранения полиномиального тренда используютиной подход — аппроксимируют весь временной ряд некоторою гладкою функци-ей, моделирующей изменение среднего, которую затем вычитают.

Аппроксимацию можно осуществить с помощью глобальной функции µ(t), т. е.функции, общей для всего ряда. Чаще всего в качестве µ(t) пользуются полино-мом невысокого порядка и затем этот полином вычитают из наблюдаемого ряда.Такой подход достаточно хорош, если тренд действительно медленный и на време-ни наблюдения укладывается много характерных периодов колебаний. Его глав-ным недостатком является то, что некоторые функции плохо аппроксимируютсяполиномом (необходим полином высокого порядка), а использование полиномоввысоких порядков в свою очередь может привести к нежелательным осцилляци-ям и краевым эффектам. Чтобы избежать этого, используют локальные различ-ные аппроксимации, т. е. аппроксимирующие функции, определённые отдельно накаждом сегменте рассматриваемой реализации. Рассмотрим простейший вид ло-кальной аппроксимации — скользящее среднего.

Чтобы построить такую аппроксимацию для экспериментального сигнала {η(t)},необходимо выбрать размер Tm временного окна для усреднения. Требования кразмеру окна таковы: с одной стороны Tm должно быть много больше характер-ного периода колебаний, чтобы не исказить полезный сигнал, с другой стороны,Tm должно быть достаточно невелико по сравнению с общею длиною ряда, что-бы эффективно устранить тренд. Новый сигнал ζ строится путём вычитания изстарого η скользящего среднего, построенного на промежутке

[t− T

2; t + T

2

]:

ζ(t) = η(t)− 〈η(τ)〉τ∈[t−T2

;t+T2 ] (10.2)

В дискретном случае формула (10.2) преобразуется к виду:

ζn = ηn − 1

L + 1

n+L/2∑

i=n−L/2

ηi (10.3)

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

76

Page 78: Введение в численные методы обработки данных - Сысоев

Основное преимущество любой локальной аппроксимации в её универсально-сти: не нужно подбирать свою аппроксимирующую функцию в соответствии сособенностями ряда.

Задание 10.3

Для рядов, сгенерированных в предыдущих заданиях к данной лекции по фор-мулам f1(t) и f2(t), устраните тренд с помощью скользящего среднего, вос-пользовавшись формулою (10.3). Сравните результаты с полученными ра-нее путём взятия первой и второй разностей.

10.2 Устранение сезонных компонент

Кроме трендов в сигнале могут присутствовать и другие искажения или простоособенности, которые в целях повышения качества дальнейшего анализа следуетустранить. Одна такая особенность, весьма распространённая в сигналах самойразличной природы от экономических и климатических данных и до биосигналовносит название сезонности. Сезонность — наличие в полезном информационномсигнале чётко выраженной периодической компоненты. Сезонность следует отде-лять от разного рода узкочастотных наводок, например весьма распространённойсетевой наводки с частотою 50Гц.

Как правило, сезонность (в противоположность наводкам, которые суть след-ствие несовершенства измерительной аппаратуры или методики измерения) — этонеотъемлемое свойство сигнала, присущее ему по природе. Например, многие эко-номические и климатические ряды имеют сезонную компоненту с периодом 12месяцев (нетрудно догадаться, что именно такие сигналы и породили само назва-ние сезонность), обусловленную природным годичным циклом. Биологическиесигналы, такие как электрокардиограммы, снимаемые, например, носимым при-бором длительной записи (Холтеровский измеритель), как и многие биологическиепроцессы, имеют суточную компоненту. В популяционной динамике сезонная ком-понента может быть обусловлена характерным временем одного поколения (длячеловека в среднем, как правило, принимают цифру в 20–25 лет).

Сама по себе сезонная периодическая динамика или её вариабельность можетиметь существенный интерес для исследователя. Однако в случае, когда важноисследовать другую компоненту наблюдаемого процесса, например, нас интере-суют суточные колебания температуры и давления, вне зависимости от временигода, сезонная составляющая может только помешать.

77

Page 79: Введение в численные методы обработки данных - Сысоев

Хотя обусловленный сезонностью пик нередко бывает довольно чётко выра-жен в спектре, он всё же имеет довольно широкий пьедестал, способный исказитьблизлежащие частотные компоненты иной природы. Поэтому простая фильтрацияпрямоугольным полосовым фильтром, скорее всего, приведёт к нежелательнымискажениям.

Для устранения сезонности наиболее часто используют разность с лагом, со-ответствующим периоду сезонной компоненты Ts:

ζ(t) = η(t)− eta(t− Ts) (10.4)

В дискретном случае данное соотношение преобразуется к виду

ζn = ηn − ηn−l, (10.5)

где l = Ts/∆t. Ясно, что при таком подходе теряется часть информации, посколь-ку временной ряд сокращается на l точек. Иногда одной разности не хватает инеобходимо взять несколько разностей с различными лагами l1, l2 и т. д.

Другой способ бороться с сезонными компонентами — фильтрация. Посколькусезонная компонента представляет собою периодическое или почти периодическоеискажение сигнала, её можно попробовать отфильтровать, при этом не забыв прогармоники главной частоты.

Задание 10.4 Обработайте предоставленный экспериментальный времен-ной ряд, соответствующий колебаниям цен на акции IBM, с целью устра-нения сезонной компоненты двумя способами: сначала с помощью взятияразности по формуле (10.5), затем с помощью фильтрации на основнойчастоте и на кратных частотах. Пики для фильтрации и ширину окнавыберите исходя из вида спектра мощности. Сравните полученные резуль-таты.

78

Page 80: Введение в численные методы обработки данных - Сысоев

Литература

[1] Самарский А.А., Гулин А.В. Численные методы: Учеб. пособие для ВУЗов.— М.: Наука. Гл. ред. физ.-мат. лит., 1989. — 432 с.

[2] Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженерови учащихся ВУЗов — М.: Наука. Гл. ред. физ.-мат. лит., 1981. — 720 с.

[3] С.А. Айвазян, И.С. Енюков, Л.Д. Мешалкин. Прикладная статистика: Иссле-дование зависимостей. Справ. изд. — М.: Финансы и статистика, 1985. — 487с., ил.

[4] Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. Численные методы. 2е изд. —М.: ФизМатЛит, 2001. — 630 с.

[5] Н.Н. Калиткин. Численные методы. — М.: Наука, 1978. — 512 с.

[6] Н.А. Хованова, И.А. Хованов. Методы анализа временных рядов. — Саратов:изд-во гос. УНЦ «Колледж», 2001. — 120 с.

[7] Г.И. Марчук. Методы вычислительной математики: Учеб. пособие. — 3-е изд.,перераб. и доп. — М.: Наука. Гл. ред. физ.-мат. лит., 1989. — 608 с.

[8] В.П. Дьяконов, И.В. Абраменкова. Mathcad 7 в математике, физике, Internet.— М.: изд-во «Нолидж», 1998. — 346 с.

[9] Исаков В.Б. Элементы численных методов. — М.: Академия, 2003. — 189 с.

[10] Ортега Дж., Пул У. Введение в численные методы решения дифференциаль-ных уравнений. — М.: Наука, 1986. — 288 с.

[11] Волков Е.А. Численные методы. 2е изд. — М.: Наука, 1987. — 247 с.

[12] Зверев В.А., Стромков А.А. Выделение сигналов из помех численными мето-дами. — Н. Новгород, 2001. — 187 с.

79

Page 81: Введение в численные методы обработки данных - Сысоев

[13] Турчак Л.И., Плотников П.В. Основы численных методов: учебное пособие.2е изд. — М.: Физматлит, 2003. — 304 с.

[14] Петунин Ю.И. Приложение теории случайных процессов в биологии и меди-цине. — Киев, 1981. — 320 с.

[15] Тутубалин В.Н. Теория вероятности и случайных процессов. М.: Изд-во МГУ,1992. — 398 с.

[16] Волков И.К., Зуев С.М., Цветкова Г.М. Случайные процессы. — М.: Изд-воМГТУ, 1999. — 446 с.

[17] Миллер Б.М., Панков А.Р. Теория случайных процессов в примерах и задачах.М.: ФизМатЛит, 2002. — 318 с.

[18] Булинский А.В., Ширяев А.Н. Теория случайных процессов. — М.: ФизМат-Лит, 2005. — 402 с.

[19] Боровков А.А. Математическая статистика. Оценка параметров. Проверкагипотез. — М.: Наука, 1984. — 237 с.

[20] Гмурман В.Е. Теория вероятностей и математическая статистика. 9е изд. —М.: Высшая школа, 2003. — 480 с.

[21] Тюрин Ю.Н., Макаров А.А. Статистический анализ данных на компьютере.— М.: ИНФРА-М, 1998. — 529 с.

[22] Баврин И.И., Матросов В.Л. Краткий курс теории вероятностей и математи-ческая статистика. — М.: изд-во МГПИ, 1989. — 136 с.

[23] Дащенко А.Ф., и др. МАТЛАБ в инженерных и научных расчетах. — Одесса,2003. — 216 с.

[24] В.П. Дьяконов. Mathematica 4: учебный курс. — М., 2004. — 656 с.

80