Справочник от Автор24
Поделись лекцией за скидку на Автор24

Вычислительная математика

  • ⌛ 2020 год
  • 👀 539 просмотров
  • 📌 512 загрузок
  • 🏢️ МГТУ им. Н.Э. Баумана
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Вычислительная математика» pdf
Лекции по вычислительной математике (черновик) Першин А.Ю. Кафедра РК6 (Системы автоматизированного проектирования) МГТУ им. Н.Э. Баумана 9 июня 2020 г. Оглавление 1 Введение 1.1 Введение в курс . . . . . . . . . . . . . . . . . . . . . . 1.2 Моделирование объектов исследования . . . . . . . . . 1.3 Приближенный анализ . . . . . . . . . . . . . . . . . . 1.3.1 Источники погрешностей . . . . . . . . . . . . . 1.3.2 Абсолютная и относительная погрешности . . 1.3.3 Некоторые понятия функционального анализа . . . . . . 2 Интерполяция 2.1 Основные понятия теории приближений . . . . . . . . . 2.2 Приближение в линейном пространстве . . . . . . . . . 2.3 Аппроксимационная теорема Вейерштрасса . . . . . . . 2.4 Интерполяционный многочлен Лагранжа . . . . . . . . 2.5 Оценка остаточного члена многочлена Лагранжа . . . . 2.6 Интерполяция Эрмита . . . . . . . . . . . . . . . . . . . 2.7 Оптимальное распределение узлов интерполяции . . . . 2.7.1 Ортогональные функции . . . . . . . . . . . . . . 2.7.2 Многочлены Чебышева . . . . . . . . . . . . . . . 2.7.3 Минимизация ошибки интерполяции Лагранжа 2.8 Локальная интерполяция . . . . . . . . . . . . . . . . . . 2.8.1 Интерполяция кубическими сплайнами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 5 6 6 8 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 15 16 19 21 22 24 24 26 30 31 32 3 Численное дифференцирование и интегрирование 3.1 Численное дифференцирование . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Метод дифференцирования многочлена Лагранжа . . . . . . . . 3.1.2 Метод разложения функции в ряд Тейлора . . . . . . . . . . . . 3.1.3 Вычислительная неустойчивость операции дифференцирования 3.2 Численное интегрирование . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Формулы Ньютона-Котеса . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Формулы трапеций и Симпсона . . . . . . . . . . . . . . . . . . . 3.2.3 Формула средних . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Степень точности численного интегрирования . . . . . . . . . . 3.2.5 Составные формулы численного интегрирования . . . . . . . . . 3.2.6 Вычислительная устойчивость операции интегрирования . . . . 3.2.7 Квадратуры Гаусса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 37 39 40 42 42 44 46 47 48 49 50 i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.8 Ортогональные полиномы и многочлены Лежандра . . . . . . . . . . . 51 4 Наилучшее приближение 4.1 Метод наименьших квадратов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Линейная регрессия в одномерном пространстве . . . . . . . . . . . . . 4.1.2 Линейная регрессия в общем случае . . . . . . . . . . . . . . . . . . . . 4.1.3 Нелинейная регрессия . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.4 Метод наименьших квадратов для приближения к непрерывной функции 4.2 Приближение тригонометрическими полиномами . . . . . . . . . . . . . . . . . 4.2.1 Дискретное приближение тригонометрическими полиномами . . . . . 4.2.2 Дискретное преобразование Фурье . . . . . . . . . . . . . . . . . . . . . 4.2.3 Быстрое преобразование Фурье . . . . . . . . . . . . . . . . . . . . . . . 5 Численные методы линейной алгебры 5.1 Прямые методы . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Метод Гаусса (метод последовательного исключения) 5.1.2 Метод Гаусса с выбором главного элемента . . . . . . 5.1.3 LU-разложение . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Матрицы с диагональным преобладанием . . . . . . . 5.1.5 Положительно определенные матрицы . . . . . . . . . 5.1.6 Ленточные матрицы . . . . . . . . . . . . . . . . . . . 5.2 Итерационные методы . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Нормы векторов и матриц . . . . . . . . . . . . . . . . 5.2.2 Собственные числа и вектора . . . . . . . . . . . . . . 5.2.3 Сходящиеся матрицы . . . . . . . . . . . . . . . . . . . 5.2.4 Методы простой итерации . . . . . . . . . . . . . . . . 5.2.5 Метод Якоби . . . . . . . . . . . . . . . . . . . . . . . . 5.2.6 Метод Гаусса–Зейделя . . . . . . . . . . . . . . . . . . 5.2.7 Методы релаксации . . . . . . . . . . . . . . . . . . . . 5.2.8 Обусловленность матриц . . . . . . . . . . . . . . . . . 5.2.9 Метод сопряженных градиентов . . . . . . . . . . . . . 5.2.10 Предобуславливание матриц . . . . . . . . . . . . . . . 6 Численные методы нелинейной алгебры 6.1 Метод простой итерации . . . . . . . . . . 6.2 Метод Ньютона . . . . . . . . . . . . . . . 6.3 Квазиньютоновские методы . . . . . . . . 6.4 Метод градиентного спуска . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 58 59 61 63 64 66 69 71 . . . . . . . . . . . . . . . . . . 74 . 74 . 74 . 77 . 77 . 79 . 80 . 84 . 87 . 87 . 89 . 91 . 92 . 95 . 96 . 97 . 99 . 102 . 106 . . . . 108 109 111 117 120 . . . . 7 Численное решение задачи Коши для систем ОДУ 122 7.1 Метод Эйлера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.1.1 Методы решения задачи Коши, основанные на разложении в ряд Тейлора128 7.2 Методы Рунге–Кутты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.3 Многошаговые методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 ii 7.4 7.5 Методы, построенные по схеме предиктор-корректор 7.4.1 Метод Хойна . . . . . . . . . . . . . . . . . . . . 7.4.2 Метод Адамса–Башфорта–Моултона . . . . . . 7.4.3 Метод Милна–Симпсона . . . . . . . . . . . . . Устойчивость численных схем . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 137 138 138 139 Введение 1.1 Введение в курс Исторически, математика появилась в первую очередь как ответ на необходимость измерять те или иные величины окружающего мира и производить над ними вычисления. Однако оказалось, что некоторые, даже сравнительно простые вычислительные задачи, не так легко решить. Например, вавилонская глиняная табличка YBC 7289 (1800-1600 до н.э.) √ содержит в себе сравнительно точное приближение иррационального числа 2 ≈ 1.414222, которое является длиной диагонали квадрата с единичной стороной. Для нахождения этой аппроксимации вавилоняне использовали одну из вариаций численного метода решения алгебраического нелинейного уравнения x2 = 2, который сейчас известен как метод простой итерации (он будет пройдет в курсе). Таким образом уже древние вавилоняне столкнулись с фундаментальной проблемой, которая породила всё направление вычислительной математики – сформулировать математическую задачу еще не значит ее решить. Проходя сквозь века математическая наука совершенствовалась и научилась формулировать свои модели не только в виде алгебраических уравнений, но и в виде обыкновенных дифференциальных уравнений, уравнений в частных производных, интегральных уравнений и проч. Развивались и методы нахождения аналитического решения математических задач – например, Эйлер изобрел метод решения однородных линейных дифференциальных уравнений, а Фурье обнаружил, что некоторые линейные уравнений в частных производных могут быть решены с помощью бесконечных рядов косинусов и синусов. За вычетом нескольких исключительных случаев (например, корни многочленов до 4 степени включительно или уравнения Бернулли), математикам удавалось находить точные аналитические решения только для линейных уравнений. Однако, как показала практика, многие интересные физические явления описываются нелинейными уравнениями. Так, например, динамика вязкой несжимаемой жидкости описывается уравнением Навье–Стокса, которое за счет члена u · ∇u, где u – поле скоростей потока, является нелинейным уравнением в частных производных. Для этого уравнения, дополненного уравнением непрерывности, не только не найдено аналитического решения в общем виде, но даже не доказано, что оно в принципе существует и является гладким для гладких начальных условий (это доказательство является одной из «задач тысячелетия», сформулированных институтом Клэя). В таком случае ученым приходится полагаться исключительно на приближенные решения, полученные либо аналитически с помощью упрощения оригинального уравнения (такой подход используется, например, в асимптотических методах или слабонелинейном анализе), либо с помощью численных методов. Очевидно, что упрощение оригинального уравнения сильно 2 ограничивает валидность полученного решения, что и мотивирует активное использование численных методов при решении современных задач математической физики. Величайшие ученые своего времени были озадачены вопросами численного решения математических задач – по мере прохождения курса мы встретим фамилии Ньютона, Лагранжа, Эйлера, Гаусса и многих других известных математиков. Нельзя не сказать о вкладе русских ученых в развитие численных методов – полиномы Чебышёва, подпространство Крылова, метод Галеркина, метод Годунова хорошо известны современным ученым по всему миру. Глобально вычислительные методы можно разбить на три больших группы (по крайней мере в рамках нашего курса): 1. методы приближения (аппроксимации) дискретных данных, принадлежащих некоторой сложной, часто недоступной, функции, к сравнительно простым аналитическим функциям; 2. численные методы линейной и нелинейной алгебры. 3. вероятностные численные методы; Первая группа исторически развивалась раньше двух других и была нацелена на нахождение решений нелинейных уравнений с помощью аппроксимации решения набором простых функций, что сводило нелинейную задачу к более простой линейной (под «сложной» функцией подразумевается сильно нелинейная или зашумленная функция). Линейная задача чаще всего выражена с помощью СЛАУ, и подавляющая часть методов второй группы посвящена точным и приближенным методам решения СЛАУ. Приближенные методы решения СЛАУ появились вследствие того, что с каждым днем размерность вычислительных задач N увеличивалась, и решение СЛАУ, например, методом Гаусса не всегда было реализуемо ввиду его большой сложности O(N 3 ). Увеличение размерности задач так же мотивировало создание многих методов из третьей группы. Например, решение задачи многих тел в квантовой механике сводится к вычислению значения интеграла, кратность которого может достигать нескольких тысяч. В таких случаях вместо классических квадратур численного интегрирования используется метод Монте-Карло, где подынтегральная функция вычисляется в M случайных точках, сгенерированных с помощью заданного закона распределения, после чего их значения суммируются. Это позволяет уменьшить зависимость сложности от размерности задачи. В данном курсе будут изучаться базовые численные методы, знание которых необходимо, чтобы перейти к более сложным методам, так как последние почти всегда содержат в себе базовые в той или иной форме. К примеру: • в методе конечного элемента (МКЭ), используемого для численного решения уравнений в частных производных, функции формы аппроксимируют решение уравнения в элементе с помощью полиномов Лагранжа или Эрмита (классический МКЭ) или полиномов Чебышёва (метод спектральных элементов); • при обучении нейронных сетей, локальная оптимизация сильно нелинейной целевой функции ошибки происходит с помощью вариации метода градиентного спуска (стохастический градиентный спуск). 3 Для успешного прохождения курса представляется важным освежить воспоминания из прошлых курсов: • математический анализ: – понятия предела, непрерывности, производной и интеграла Римана; – теорема о среднем значении; – теорема о промежуточном значении; – теорема Ньютона-Лейбница; – ряды Тейлора; • линейная алгебра: – понятия линейного нормированного пространства, матрицы, определителя, обратной матрицы; – собственные числа и собственные вектора матрицы; – свойства положительно определенных и симметричных матриц; – простейшие методы решения систем линейных алгебраических уравнений (СЛАУ); Несмотря на то, что многие вопросы вычислительной математики удобно изъяснять в рамках функционального анализа, его знание не является обязательным, и понятия теории функциональных пространств будут даны в лекциях по необходимости. Тем, кто заинтересован в более глубоком и всестороннем изучении численных методов, к прочтению рекомендуются следующие книги: 1. Численные методы. Н.Н. Калиткин. Главная редакция физико-математической литературы изд-ва «Наука», М., 1978. • комментарий: оптимальный учебник для первого знакомства с численными методами (многие примеры и описания в курсе взяты из него). 2. Численные методы / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. – 7-е изд. – М. : БИНОМ. Лаборатория знаний, 2017. – 636 с. : ил. – (Классический университетский учебник). • комментарий: полезен для тех случаев, когда необходимо разобраться со строгим теоретическим обоснованием численных методов. 3. Элементы теории функций и функционального анализа. А.Н. Колмогоров, С.В. Фомин. Главная редакция физико-математической литературы изд-ва «Наука», М., 1976. • комментарий: удобен для подробного теоретического знакомства с функциональными пространствами, интегралом Лебега и тригонометрическими рядами. За вычетом приведенных выше книг, при подготовке лекций активно использовались следующие источники на английском языке, которые также рекомендуются к ознакомлению: 4 1. Numerical Analysis, Ninth Edition, Richard L. Burden and J. Douglas Faires. • комментарий: полный, подробный и вместе с тем доступный курс численного анализа. 2. Analysis of Numerical Methods, Eugene Isaacson and Herbert Bishop Keller (1994). • комментарий: курс численного анализа, ориентированный на строгое доказательное обоснование свойств численных методов. 3. Introductory Functional Analysis with Applications, Erwin Kreyszig. • комментарий: курс функционального анализа с подробным разбором примеров использования функциональных пространств в различных прикладных задачах. 4. The Elements of Real Analysis, Robert G Bartle. • комментарий: углубленный курс математического анализа функций вещественного переменного. 5. Essential Topology, Martin D Crossley. • комментарий: книга доступно излагает базовые понятия топологии, которая, будучи наукой о непрерывных преобразованиях, представляется полезной для освоения в контексте курса численных методов. 6. Private lecture notes by Prof Mark Kelmanson and Dr Kevin Gouder. • комментарий: эти лекции отсутствуют в открытом доступе, однако соответствующие конспекты представляются ценными и могут быть предоставлены по запросу. 1.2 Моделирование объектов исследования Конечной целью прикладной математики, а следовательно и вычислительной математики как ее подраздела, является моделирование некоторых объектов и процессов окружающего мира (далее – объектов исследования). В математике под моделированием подразумевается описание самых важных и существенных свойств объекта исследования в математических понятиях. Допустим, например, что объектом исследования является футбольный мяч. Если из всех его свойств нам больше всего интересна геометрическая форма, то его моделью будет сфера как математический объект. Однако, если нас интересует его деформация при сжатии руками (в этом случае объектом исследования формально является процесс сжатия мяча, а не сам мяч), то модель будет сформулирована как система дифференциальных и алгебраических уравнений статической задачи линейной теории упругости. В обоих случаях полученная модель называется математической моделью объекта исследования. Математические модели зачастую настолько сложны, что для них не существует способа нахождения аналитического (точного) решения (“сложными” могут быть как разрешающие уравнения, так и граничные условия). В таком случае может ли сама математическая 5 (x − x0 )2 + (y − y0 )2 + (z − z0 )2 = r2 . Геометрическая форма Упругость ∇σ = f , ˜ σ = C · ·, ˜ ˜ ˜  1 = ∇ ⊗ u + ∇ ⊗ uT , ˜ 2 + граничные условия. Рисунок 1.1 – Моделирование различных свойств мяча. Объект исследования Математическая модель Дискретная модель Компьютерная модель Рисунок 1.2 – Классические этапы моделирования некоторого объекта исследования в научных и инженерных задачах. модель быть объектом исследования? Безусловно, так как она в свою очередь тоже может быть смоделирована. К примеру, система уравнений упругости, приведенная на рисунке ??, может быть дискретизирована с помощью метода конечных элементов. Полученная модель будет представлять собой алгоритм по сборке СЛАУ и саму СЛАУ. Мы будем называть подобную модель дискретной моделью. Принципиально, точное решение такой модели может быть найдено, однако для этого потребуется неоправданно большое количество времени и людей ([TODO: ссылка на Льюиса Ричардсона]). В современном мире для нахождения решений дискретных моделей используются компьютеры, что вынуждает трансформировать дискретную модель в компьютерную программу, называемую также компьютерной моделью. Результирующая диаграмма подобного моделирования показана на рисунке ??. Заметим, что решения всех трех моделей в общем случае не равны и могут лишь сходиться друг к другу при определенных обстоятельствах. 1.3 1.3.1 Приближенный анализ Источники погрешностей Очевидно, что упрощения, осуществляемые на каждом шаге моделирования, вносят определенную неточность в решение относительно изначального объекта исследования, которую называют погрешностью. Принято выделять четыре вида погрешностей: неустра6 нимая погрешность, погрешность математической модели, погрешность метода и вычислительная погрешность. Дадим им определения. Определение 1.3.1. Неустранимой погрешностью называют неточность при задании исходных данных. Пример 1.3.1. Допустим, вы бросаете шар с Пизанской башни. В независимости от того, как вы моделируете законы природы, для того, чтобы рассчитать скорость шара в момент касания поверхности Земли, вам необходимо знать высоту, с которой вы отпускаете шар в свободное падение. В случае, если вы измеряете высоту рулеткой с миллиметровой шкалой, погрешность измерения составляет O(10−3 ) метра. Тогда, даже если вы способны идеально точно предсказывать скорость шара, погрешность в O(10−3 ) метра устранить не удастся. Определение 1.3.2. Погрешностью математической модели называют неточность при описании реального объекта математическими понятиями. Пример 1.3.2. Математическая модель, описывающая движение тела в свободном падении, выражается простым уравнением Ньютона m d2 x = −mg dt2 (1.1) где m – масса тела, g – ускорение свободного падения, x(t) – высота тела в момент времени t. Применительно к земной атмосфере, погрешность этой математической модели возникает в результате пренебрежения сопротивлением воздуха. Более точной моделью была бы:   2 d2 x dx dx m 2 = −mg − Asign (1.2) dt dt dt Очевидно, что погрешность растет пропорционально квадрату скорости, что делает уравнение (1.1) неприменимым, скажем, для моделирования движения спускаемого аппарата сквозь атмосферу. Определение 1.3.3. Погрешностью метода называют неточность при замене математической модели приближенной. Пример 1.3.3. Уравнения 1.1 и 1.2 имеют аналитические решения, однако в случае более сложной правой части нам необходимо будет использовать один из численных методов решения обыкновенных дифференциальных уравнений (ОДУ), например, метод РунгеКутта, который мы будем проходить в курсе. В таком случае погрешностью метода будет разница между точным решением и решением уравнения, дискретизированного методом Рунге-Кутта. Определение 1.3.4. Вычислительной погрешностью называют погрешность математических операций, производимых компьютером. 7 С математической точки зрения вычислительная погрешность появляется в результате того, что при программировании численного метода, алгебраические структуры которого определены для поля вещественных чисел R, мы неявно заменяем их на алгебраические структуры, определенные для поля рациональных чисел Q. Это связано с формой представления (формально, приближения) вещественных чисел в памяти компьютера. Стандарт IEEE 754-2008 гласит, что 64-битное представление вещественного числа состоит из последовательно расположенных бита знака s, 11 бит экспоненты (порядка) c и 52 бит мантиссы f , а само значение числа вычисляется как (−1)s 2c−1023 (1 + f ), где f = 52 X (1.3) 2−bi и bi ∈ {0, 1} – i-ый бит мантиссы. i=1 Возникающую погрешность при вычислительных операциях часто называют погрешностью округления. Так как процесс моделирования реального объекта является последовательным (сначала составляется математическая модель, затем дискретная модель, а после компьютерная), логично заключить, что погрешность, вносимая на очередном этапе моделирования не должна быть меньше, чем погрешность предыдущих этапов. Пример 1.3.4. Вернемся к примеру с бросанием тела с Пизанской башни. Допустим, мы используем такой численный метод для интегрирования уравнений движения тела, что погрешность вычисляемой высоты тела получилась O(10−5 ) метра. Очевидно, что при погрешности линейки, с помощью которой мы измеряли начальную высоту, равной O(10−3 ) метра эти усилия окажутся напрасными. 1.3.2 Абсолютная и относительная погрешности Определим, что мы формально называем погрешностями. Определение 1.3.5. Абсолютной погрешностью приближенного значения a∗ называют величину ∆(a∗ ), которая определена как ∆(a∗ ) = |a − a∗ |, (1.4) где a – точное значение. Число a записывают с учетом абсолютной погрешности в следующей форме: a = a∗ ± ∆(a∗ ). (1.5) Определение 1.3.6. Относительной погрешностью приближенного значения a∗ называют величину δ(a∗ ), которая определена как δ(a∗ ) = a − a∗ , a (1.6) где a – точное значение. Число a записывают с учетом относительной погрешности в следующей форме: a = a∗ (1 ± δ(a∗ )). 8 (1.7) 1.3.3 Некоторые понятия функционального анализа Понятия абсолютной и относительной погрешности определены для некоторых приближенных величин, которые неявно предполагаются принадлежащими одному из числовых множеств (чаще всего R или Q). Однако понятие близости распространяется на куда более широкий класс множеств и, в частности, на множества функций, что особенно важно при доказательстве сходимости численных методов. Соответствующей обобщенной мерой “близости” называется метрика. Определение 1.3.7. Множество X называется метрическим пространством, если на нем определена функция ρ : X × X −→ R, называемая метрикой или расстоянием, для которой выполняются следующие аксиомы: 1. ρ(x1 , x2 ) ≥ 0, 2. ρ(x1 , x2 ) = 0 ⇐⇒ x1 = x2 , 3. ρ(x1 , x2 ) = ρ(x2 , x1 ), 4. ρ(x1 , x3 ) ≤ ρ(x1 , x2 ) + ρ(x2 , x3 ) (аксиома треугольника), Ремарка 1.3.1. Метрическим пространством чаще называют пару (X, ρ). Определение 1.3.8. Последовательность {xn }∞ n=1 метрического пространства (X, ρ) называется сходящейся к элементу x ∈ X, если для нее верно n → ∞ =⇒ ρ(xn , x) → 0. Определение 1.3.9. Последовательность {xn }∞ n=1 метрического пространства (X, ρ) называется фундаментальной, если ∀n > 1,  > 0 ∃k() : ρ(xn , xm ) < , m > k Ремарка 1.3.2. Фундаментальную последовательность также называют сходящейся в себе последовательностью или последовательностью Коши. Определение 1.3.10. Метрическое пространство называется полным, если любая последовательность его элементов сходится к элементу того же пространства. Ремарка 1.3.3. Сложность при анализе вычислительной погрешности в частности возникает из-за того, что множество рациональных чисел Q является неполным. К примеру, последовательность   1 k xn = 1 + k сходится к e ∈ R. На протяжении всего курса мы практически всегда будем иметь дело с элементами линейных (векторных) пространств, т.е. множеств с определенными для них операциями сложения и умножения на число. Для линейных пространств в качестве метрики часто выбирают норму, что делает его линейным нормированным пространством. 9 Определение 1.3.11. Линейным нормированным пространством называется пара (X, || · ||), где X – линейное пространство, а ||·|| : X −→ R – норма, удовлятворяющая следующим аксиомам: 1. ||x|| ≥ 0, 2. ||x|| = 0 ⇐⇒ x = 0, 3. ||λx|| = |λ| · ||x||, 4. ||x1 + x2 || ≤ ||x1 || + ||x2 ||, где x ∈ X. Легко показать, что линейное нормированное пространство является метрическим пространством с метрикой ρ(x1 , x2 ) = ||x1 − x2 ||. Определение 1.3.12. Банаховым пространством называется полное линейное нормированное пространство. Самым очевидным примером банахова пространства является (R, | · |), где нормой является модуль числа. Так как банаховы пространства и соответствующие им нормы играют важную роль в численных методах, мы рассмотрим внимательно несколько самых важных банаховых пространств. Конечномерные нормированные пространства (n) Определение 1.3.13. Конечномерным нормированным пространством lp называется пара (X, || · ||p ), где X – множество векторов x = (x1 , ..., xn ) в n-мерном линейном пространстве и норма определена функцией n ||x||p = 1X |xi |p n !1/p . (1.8) i=1 Для простоты будем предполагать, что n-мерное линейное пространство определенно над полем вещественных или комплексных чисел. Эвклидово пространство Rn является (n) частным случаем конечномерного нормированного пространства: l2 . Если индекс нормы опущен, то предполагается, что используется классическая эвклидова норма, т.е. ||·|| = ||·||2 . Важно отметить, что сходимость в одной из норм ||·||p гарантирует сходимость во всех остальных нормах этого типа. Если последовательность векторов {xm }∞ n=1 не сходится, но сходится последовательность   xm ∞ , ||xm || n=1 то говорят о сходимости по направлению. 10 Бесконечномерные нормированные пространства Логичным расширением случая конечномерных нормированных пространств является аналогичное пространство с бесконечной размерностью. Заметим, что в таком случае множества, образуемые векторами, должны оставаться счетными. Определение 1.3.14. Бесконечномерным нормированным пространством lp называется пара (X, ||·||p ), где X – множество векторов x = (x1 , x2 , ...), каждый из которых является в свою очередь счетным множеством, и норма определена функцией n ||x||p = lim nto∞ 1X |xi |p n !1/p . (1.9) i=1 Лебегово пространство Следующий шаг состоит в переходе от счетных векторов к несчетным. Такой шаг не является излишним теоретизированием, так как функции, с которыми мы чаще всего имеет дело, являются бесконечномерными векторами с несчетным числом элементов. Это утверждение звучит контринтуитивно из-за терминологической путаницы, которая вносится понятием мерности пространства. Предположим, что у нас есть функция d(x, y, z), вычисляющая расстояние от начала координат до точки в трехмерном пространстве: p d(x, y, z) = x2 + y 2 + z 2 . (1.10) С точки зрения теории множеств, эта функция задана на трехмерном пространстве и отображает его на положительную вещественную ось: f : R3 −→ R+ . Однако если мы рассматриваем саму функцию как элемент некоторого множества, то выясняется, что она является бесконечномерным вектором с несчетным числом элементов. Действительно, рассмотрим следующий (n + 1)-мерный вектор: f = [f0 , f1 , . . . , fn ]T , (1.11) где fj = sin 2πj n и j = 0, . . . , n. При n → ∞ вектор f стремится к функции sin x на отрезке [0; 2π], что демонстрируется на рисунке 1.3. Учитывая, что отрезок [0; 2π] является несчетным множеством, соответствующий бесконечномерный вектор, восстанавливающий функцию sin x, так же будет несчетным множеством. В таком случае естественное обобщение предела суммы в норме (1.9) до интеграла приводит к лебеговым пространствам Lp . Определение 1.3.15. Лебеговым пространством Lp называется пара (F, || · ||p ), где F – множество функций x(t), p-я степень которых интегрируема на отрезке [a, b], и норма определена функционалом ˆ b 1/p p ||x(t)||p = |x(t)| dt . (1.12) a 11 Рисунок 1.3 – Иллюстрация функции f (x) = sin x как бесконечномерного вектора с несчетным числом элементов. Пространство L2 называют гильбертовым, а его норму ||·||2 среднеквадратичной. Норму ||x(t)||∞ = maxt∈[a;b] |x(t)| называют равномерной или чебышевской. Несложно доказать, что для норм верны следующие соотношения: ||x(t)||1 ≤ ||x(t)||2 ≤ ... ≤ ||x(t)||∞ , (1.13) что означает, что из равномерной сходимости (т.е. сходимости в норме ||x(t)||∞ ) следует сходимость в среднем (т.е. сходимость в норме ||x(t)||p , p < ∞), однако обратное не является в общем случае верным. На рисунке 1.4 демонстрируется сходимость последовательности функций {f1 (x), f2 (x), f3 (x), . . . } к некоторой функции f (x). На левом рисунке последовательность функций сходится равномерно и, следовательно, в среднем, в то время как на правом рисунке последовательность функций сходится только в среднем: «пик», формируемый fi (x) при i → ∞, не окажет влияния на значение интеграла в норме || · ||2 , но при этом приведет к ненулевому значению ||fi (x)||∞ = maxx∈[a;b] |fi (x)|. Вопрос равномерной и средней сходимости имеет прикладное значение, так как если некоторый численный метод сходится в среднем, но не сходится равномерно, это означает, что численное решение может включать в себя паразитное решение, например, в форме паразитных осцилляций. Сходимость в среднем гарантирует, что паразитные осцилляции имеют меру нуль (т.е. определены в одной точке и нигде больше) при бесконечно малом размере сетки. Однако, так как размер сетки всегда конечен, они появятся в численном решении задачи и могут сделать его неудовлетворительным. В курсе мы встретимся с примерами паразитных осцилляций. Пространство непрерывных функций Так как класс непрерывных функций играет важную роль в уравнениях математической физики, рассмотрим их отдельно. 12 Рисунок 1.4 – Иллюстрация равномерной сходимости (левый рисунок) и сходимости только в среднем (правый рисунок). Определение 1.3.16. Пространством непрерывных функций C[a, b] называется пара (F, ||· ||C ), где F – множество функций, непрерывных на отрезке [a, b], а ||x||C = maxt∈[a,b] |x(t)| – равномерная норма. Пространство непрерывных функций также обозначают C 0 [a, b]. В свою очередь пространство C p [a, b] называют пространство функций, p-я производная которых непрерывна. Гладкой называют функцию, имеющую непрерывные производные (порядок последней непрерывной производной часто опускают, подразумевая, что функция достаточно гладкая для решения данной задачи). Бесконечно гладкие функции называют аналитическими – такие функции можно представить в виде бесконечной суммы ряда Тейлора. Определение 1.3.17. Функция x(t) называется равномерно-непрерывной на заданном отрезке, если ∀ > 0 ∃δ = δ() : |x(t1 ) − x(t2 )| ≤ , |t1 − t2 | ≤ δ. Определение 1.3.18. Функция x(t) называется липшиц-непрерывной, если  ≤ Kδ, что эквивалентно |x(t1 ) − x(t2 )| ≤ K|t1 − t2 |, где K называется константой Липшица. Если функция имеет ограниченную производную, т.е. |x0 (t)| ≤ K, то она липщицнепрерывна, причем точная верхняя грань модуля производной равна константе Липшица K. Липшиц-непрерывные функции играют важную роль в теории дифференциальных уравнений, так как если функция f в уравнении x0 (t) = f (t, x) является липшиц-непрерывной по переменной x (т.е. имеет ограниченную частную производную по x), то из этого следует существование и единственность решения уравнения. 13 Интерполяция 2.1 Основные понятия теории приближений Предположим, что существует некоторая функция f (x), определенная на отрезке x ∈ [a; b], при том, что ее аналитическое выражение нам неизвестно. Например, f (x) может быть как гладким решением какого-то нелинейного дифференциального уравнения, так и быть кривой вариации биржевого курса. Мы также предполагаем, что нам известны значения f (x) для некоторых x: • в случае дифференциальных уравнений, мы можем разбить [a; b] на n − 1 отрезков и предположить, что нам известны значения f (x) в узлах; • в случае кривой вариации биржевого курса, этими значениями является временной ряд, предоставляемый биржей. Задача приближения или аппроксимации (эти термины синонимичны) состоит в представлении недоступной функции f (x) в виде более простой аналитической функции fe(x) по n значениям f (xi ), где xi ∈ [a; b] называются узлами. Для решения этой задачи мы задаемся некоторой параметризированной формой для fe(x; c), где c – вектор параметров, а затем подбираем c так, что отклонение ρ[f (x)− fe(x; c)] минимизировано, где ρ – некоторая метрика, определяющая оценку погрешности приближения. Частными случаями аппроксимации являются интерполяция и экстраполяция. Определение 2.1.1. Интерполяцией называется приближение, при котором требуется, чтобы fe(x) проходила через заданные узлы (xi , f (xi )) внутри отрезка x ∈ [a; b]. Определение 2.1.2. Экстраполяцией называется приближение, при котором требуется, чтобы fe(x) по заданным узлы (xi , f (xi )) предсказывала значение f (x) вне отрезка [a; b]. Рисунок 2.1 демонстрирует разницу между интерполяцией и экстраполяцией одних и тех же данных (центральный и правый графики), а также показывает приближение данных линейным полиномом (так называемая линейная регрессия). Интерполяция требует, чтобы аппроксимирующая функция fe(x) проходила через заданные узлы, что необходимо, например, при аппроксимации решения дифференциального уравнения (решение, очевидно, должно проходить через собственные узлы). Это мотивирует использование интерполяционных многочленов в самых разных численных методах решения ДУ – например, в методе конечного элемента, где решение в элементе интерполируется между узлами элемента. Отметим, что вне отрезка [a; b] поведение интерполирующей кривой уже не должно 14 1.4 1.5 1.4 1.2 1.2 1.0 1.0 1.0 0.8 0.8 0.6 0.6 0.5 0.4 0.4 0.2 0.2 0.0 0.0 0.0 f(xi ) −0.2 −0.4 −0.5 f(xi ) f(x) 0.0 0.5 1.0 f(xi ) −0.2 f(x) 1.5 −0.5 −0.2 0.0 0.2 0.4 x 0.6 0.8 1.0 1.2 −0.4 −0.5 x f(x) 0.0 0.5 1.0 1.5 x Рисунок 2.1 – Пример приближения данных линейным полиномом (левый график), их интерполяции (центральный график) и экстраполяции по линейному полиному (правый график). Сплошные линии обозначают часть кривой, представляющей главный интерес при том или ином виде приближения данных. представлять интереса и чаще всего является неудовлетворительным для экстраполяции (штриховая линия на центральном графике рисунка 2.1). С другой стороны для целей экстраполяции основной интерес представляет поведение аппроксимирующей кривой вне заданного отрезка. Анализ временных рядов биржевых курсов, очевидно, нацелен на экстраполяцию имеющихся данных временного ряда с целью предсказания их эволюции в будущем. 2.2 Приближение в линейном пространстве Наиболее распостраненным случаем приближения является приближение в линейном пространстве, где аппроксимирующая функция fe(x) представляется в виде линейной комбинации базисных функций φi (x) ∈ F , где F – некоторое линейное функциональное пространство: n X fe(x) = ci φi (x), (2.1) i=1 где ci ∈ R и n может быть бесконечностью. Задача приближения в таком случае формулируется следующим образом: необходимо найти такие ci , что аппроксимирующая функция fe(x) “приближается” к f (x) в том или ином смысле. Частным случаем является линейная интерполяция, где под приближением понимается совпадение значений f (x) и fe(x) в интерполяционных узлах (x1 , x2 , ..., xn ): f (xj ) = fe(xj ), j = 1, . . . , n. (2.2) Подставив (2.1) в уравнение (2.2), мы получаем систему линейных алгебраических уравне- 15 ний:  φ1 (x1 ) . . .  .. ..  . . φ1 (xn ) . . .     f (x1 ) φn (x1 ) c1 ..   ..  =  ..  .  .   .  φn (xn ) (2.3) f( xn ) cn Прямое определение коэффициентов ci решением системы (2.3) называется методом неопределенных коэффициентов. Обратим внимание на то, что количество узлов, равное n, не случайно совпадает с количеством базисных функций в сумме в (2.1) – это позволяет системе уравнений иметь единственное и нетривиальное решение (при условии ∀i 6= j : xi 6= xj ). Как видно из постановки задачи линейной интерполяции, основным вопросом является выбор базисных функций φi . Для начала мы рассмотрим самый разработанный случай базисных функций, а именно случай интерполяции многочленами, где φi (x) = xi−1 . Тогда система (2.3) принимает вид:      f (x1 ) c1 1 x1 . . . x1n−1  .. .. . . ..   ..  =  ..  , (2.4) . . . .  .   .  1 xn . . . xnn−1 f( xn ) cn где определитель системы является определителем Вандермонда, который при условии несовпадающих узлов всегда отличен от нуля: 1 x1 . . . .. .. . . . . . 1 xn . . . x1n−1 .. = . xnn−1 Y (xi − xj ) (2.5) 1≤j 0 и δ() являются величинами, взятыми в соотстветствии с определением равномерной непрерывности 1.3.18. Выберем такое n, что   M2 −4 (2.14) n ≥ sup δ (), 2  Рассмотрим те k-ые члены в сумме (2.13), для которых верно |x − nk | < n−1/4 ≥ δ(). Используя определение , получаем для них неравенство:   X X n n k n−k |f (x) − f (k/n)| x (1 − x) ≤ xk (1 − x)n−k k k k k n   X (2.15) n k ≤ x (1 − x)n−k k k=0 (2.9) =⇒ = Теперь рассмотрим те члены в сумме (2.13), для которых |x − nk | ≥ n−1/4 . Для них, 18 используя свойство ограниченности f (x), имеем:     X X n k n k n−k |f (x) − f (k/n)| x (1 − x) ≤ 2M x (1 − x)n−k k k k k 2   X x − nk n k x (1 − x)n−k = 2M  k 2 k x− n k     √ X k k 2 n k −1/4 x− ≥n =⇒ ≤ n 2M x − x (1 − x)n−k n n k (2.16) k (2.12) =⇒ x − x2 ≤ 1/4 на [0; 1] =⇒ (2.14) =⇒ √ 1 ≤ 2M n (x − x2 ) n M ≤ √ 2 n  ≤ 2 Таким образом обе части суммы в (2.13) ограничены  для любого x ∈ [0; 1]: 3 |f (x) − Bn (x; f )| < , 2 (2.17) что по определению означает равномерную сходимость последовательности полиномов Бернштейна к функции f (x). 2.4 Интерполяционный многочлен Лагранжа Непосредственное решение системы (2.4) с целью вычисления коэффициентов ci не является оптимальным для одномерного случая. Вместо этого мы получил явное представление интерполяционного многочлена. Можно заметить, что условие равенства значений заданной и интерполируемой функций в узлах (2.2) выполняется, если нам удастся построить такие φi (x), что φi (xj ) = δij , (2.18) где δij называется символом Кронекера и определяется как ( 1, если i = j, δij = 0, если i 6= j. (2.19) Иными словами мы хотим построить такую функцию φi (x), что она равна 1 только в узле xi и обращается в ноль во всех остальных узлах. Тогда искомый интерполяционный многочлен будет вычислятся как fen (x) = n X f (xi )φi (x). i=1 19 (2.20) Действительно, легко убедиться, что в интерполяционных узлах значения функций совпадают: n n X X fen (xj ) = f (xi )φi (xj ) = f (xi )δij = f (xi ). (2.21) i=1 i=1 Зная, что φi (xj ) = 0 при i 6= j, следующий полином удовлетворяет указанному требованию: Y φi (x) = Ci (x − xj ), (2.22) i6=j где Ci – некоторая константа. Определить неизвестную Ci можно из условия φi (xi ) = 1 Y =⇒ Ci (xi − xj ) = 1 (2.23) i6=j =⇒ Ci = Q 1 , (x i6=j i − xj ) что в результате дает многочлен, известный как интеполяционный многочлен Лагранжа: n X Y x − xj e fn (xj ) = Ln−1 (x) = f (xi ) . (2.24) xi − xj i=1 i6=j Определение 2.4.1. Пусть функция f (x) задана в n интерполяционных узлах x1 , x2 , ..., xn на отрезке [a; b], т.е. x1 = a и xn = b. Тогда интерполяционным многочленом для функции f (x) и соответствующих узлов интерполяции называется функция Ln−1 (x) = n X f (xi )li (x) = i=1 где li (x) = Q x−xj i6=j xi −xj n X i=1 f (xi ) Y x − xj , xi − xj (2.25) i6=j является базисным многочленом (n − 1)-й степени. К примеру, квадратичная интерполяция между узлами x1 , x2 и x3 : (x − x2 )(x − x3 ) (x − x1 )(x − x3 ) (x − x1 )(x − x2 ) + + f (x2 ) + f (x3 ) . (x1 − x2 )(x1 − x3 ) (x2 − x1 )(x2 − x3 ) (x3 − x1 )(x3 − x2 ) (2.26) Форма базисных многочленов (также называемые базисными полиномами Лагранжа) позволяет многое сказать о поведении интерполирующей функции. Графики на рисунке 2.2 показывают базисные полиномы для двух, трех и четырех равромерно распределенных узлов. Можно заметить, что базисные полиномы при увеличении их степени (т.е. при увеличении количества узлов) имеют тенденцию к росту амплитуды ближе к граничным узлам отрезка. Чем выше степень базисного полинома, тем более заметным становится этот эффект. Подобное поведение может привести к появлению нежелательных, паразитных осцилляций у граничных узлов. Интуитивно можно заключить, что использование неравномерно распределенных узлов, концентрирующихся у границ отрезка, потенциально могло бы решить проблему. Как мы увидим в обсуждении многочленов Чебышева, такой выбор узлов действительно является оптимальным с точки зрения минимизации ошибки интерполирования. L2 (x) = f (x1 ) 20 1.0 1.0 1.2 1.0 0.8 0.8 0.8 0.6 0.6 0.6 0.4 0.4 0.4 0.2 0.2 l1 (x) l2 (x) l3 (x) l4 (x) 0.0 0.2 l1 (x) l2 (x) l3 (x) 0.0 l1 (x) l2 (x) 0.0 x 1 −0.2 0.0 0.5 −0.2 1.0 x −0.4 0.000 0.333 x 0.667 1.000 Рисунок 2.2 – Базисные многочлены Лагранжа первой (левый график), второй (центральный график) и третьей степени (правый график), определенные на равномерно распределенных узлах на отрезке [0; 1] (сетка x-координаты соответствует интерполяционным узлам). 2.5 Оценка остаточного члена многочлена Лагранжа Определим ошибку, возникающую при аппроксимации функции f (x) интерполяционным многочленом Лагранжа. Для этого нам необходимо найти значение остаточного члена f (x) − Ln (x). Теорема 2.5.1. Пусть x1 , ..., xn ∈ [a; b] – интерполяционные узлы и f (x) ∈ C n [a; b]. Тогда ∀x ∈ [a; b] ∃ξ ∈ (a; b) такое, что n f (n) (ξ) Y f (x) − Ln−1 (x) = (x − xi ) n! (2.27) i=1 Доказательство. Случай x = xi тривиален, так что рассмотрим x 6= xi , i = 1, . . . , n. Введем функцию g(t): n Y t − xi g(t) = f (t) − Ln−1 (t) − [f (x) − Ln−1 (x)] . (2.28) x − xi i=1 Несложно проверить, что g(xi ) = 0, i = 1, . . . , n и g(x) = 0. Таким образом, функция g(t) имеет n + 1 корней. Теорема Ролля гласит, что в этом случае g 0 (t) имеет как минимум n корней. Обобщая теорему Ролля на производные высшего порядка, получаем, что g (n) (t) имеет как минимум один корень в точке ξ ∈ (a; b). Тогда, учитывая, что Ln (t) является 21 полиномом n − 1 степени, имеем  n  dn Y t − xi dtn x − xi t=ξ i=1  n  dn Y t − xi (n) = f (t) − [f (x) − Ln−1 (x)] n . dt x − xi t=ξ (n) g (n) (ξ) = 0 = f (n) (ξ) − Ln−1 (ξ) − [f (x) − Ln−1 (x)] (2.29) i=1 Заметим, что n n Y Y 1 t − xi = tn + O(tn−1 ), x − xi x − xi (2.30) i=1 i=1 и тогда мы получаем n! , i=1 (x − xi ) 0 = f (n) (ξ) − [f (x) − Ln−1 (x)] Qn (2.31) из чего следуем искомое n f (n) (ξ) Y (x − xi ). f (x) − Ln−1 (x) = n! (2.32) i=1 2.6 Интерполяция Эрмита Зачастую кроме значений функции f (x) в нескольких узлам, нам также известны ее производные в них же. В таком случае возникает желание построить полином f˜(x), который был бы одновременно согласован с f (x) и M ее производными f (m) (x), 1 ≤ m ≤ M в n узлах: f (xi ) = f˜(xi ), dm dxm f (x) = x=xi dm dxm (2.33) f˜(x) . (2.34) x=xi Это формирует n равенств для f (xi ) и nM для ее производных. Таким образом, максимальная степень полинома, удовлетворяющего этим условиям, равна n(M + 1) − 1. В случае M = 1 интерполирование полиномами производится с помощью многочленов Эрмита. Они позволяют сформировать полином 2n − 1 степени, согласующийся с f (x) и ее первой производной в n точках. Согласованность с первой производной эквивалентна согласованности с касательной к функции f (x), что продемонстрировано рисунком 2.3. Сформируем теорему о многочлене Эрмита, в которой он выражен с помощью уже знакомых нам базисных полиномов Лагранжа. Теорема 2.6.1. Пусть x1 , ..., xn ∈ [a; b] – интерполяционные узлы и f (x) ∈ C 1 [a; b]. Тогда единственный многочлен наименьшей степени согласующийся с f (xi ) и f 0 (xi ), i = 1, . . . , n является многочленом Эрмита степени (максимум) 2n − 1, заданный выражением H2n−1 (x) = n X f (xi )hi (x) + i=1 n X i=1 22 f 0 (xi )ĥi (x), (2.35) 6 4 2 −2 −4 −6 −2.0 −1.5 −1.0 −0.5 0.0 x 0.5 1.0 1.5 2.0 Рисунок 2.3 – Часть функции, интерполированной по узлам x1 = −1 и x2 = 1 (красные точки) с учетом равенства первых производных в узлах. Согласованность с первой производной удобно визуализировать касательными прямыми в узлах интерполяции (красные линии). где hi (x) и ĥi (x) заданы как   hi (x) = 1 − 2(x − xi )li0 (xi ) li2 (x), (2.36) xi )li2 (x), (2.37) ĥi (x) = (x − где li – базисные полинома Лагранжа n − 1 степени. Если f ∈ C 2n [a; b], тогда остаточный член интерполяции выражается формулой: Qn (x − xi )2 (2n) f (ξ) (2.38) f (x) − H2n−1 (x) = i=1 (2n)! для некоторого ξ ∈ (a; b). Оставив доказательство единственности и вывод формулы для остаточного члена (он аналогичен выводу для интерполяционного многочлена Лагранжа) в стороне, убедимся, что построенный многочлен действительно согласуется с f (x) и его первой производной в интерполяционных узлах xi . Так как li (xj ) = δij , мы имеем hi (xj ) = δij и ĥi (xj ) = 0, что автоматически дает согласование H2n−1 (x) с f (x) в узлах интерполяции: H2n−1 (xi ) = f (xi ). Рассмотрим производные от hi (x) и ĥi (x):   h0i (x) = 2li (x)li0 (x) 1 − 2(x − xi )li0 (xi ) − 2li0 (xi )li2 (x) ĥ0i (x) = 2li (x)li0 (x)(x − xi ) + li2 (x). 23 (2.39) (2.40) Легко заметить, что h0i (xj ) = 0 для любых i и j, в то время как ĥ0i (xj ) = δij , что результирует в H2n−1 (xi ) = f 0 (xi ) (2.41) и таким образом доказывает согласованность составленного многочлена Эрмита с первой производной f (x) в интерполяционных узлах. 2.7 Оптимальное распределение узлов интерполяции До текущего момента мы не задавались вопросом о том, каким образом должны быть распределены узлы x1 , . . . , xn в отрезке [a; b]. Самый очевидный случай, а именно случай равномерно распределенных узлов, где xi+1 − xi = h для любых i = 1, . . . n − 1, приводит к паразитным осцилляциям у границ отрезка интерполирования, что связанно с соответствующей формой базисных полиномов Лагранжа, пример которых показан на рисунке 2.2. Логично предположить, что минимизация остаточного члена, формула для которого была выведена в теореме 2.5.1, относительно значений x1 , . . . , xn могла бы дать оптимальные значения x1 , . . . , xn , которые следует использовать для интерполяции. Решение этой оптимизационной задачи связанно с многочленами Чебышева, которые теперь необходимо детально рассмотреть. 2.7.1 Ортогональные функции Перед рассмотрением многочленов Чебышева, нам предварительно необходимо ввести несколько новых понятий. Определение 2.7.1. Интегрируемая функция ω(x) называется весовой функцией, определенной на интервале [−1; 1], если ω(x) ≥ 0 для любых x ∈ [−1; 1], но при этом ω(x) 6= 0 на любом подинтервале [−1; 1]. Задача весовой функции состоит в том, чтобы сделать одни части интервала [−1; 1] более “важными”, чем другие. В частности, весовая функция ω(x) = √ 1 , 1 − x2 (2.42) изображенная на рисунке 2.4, будучи домноженной на некоторую другую функцию f (x), будет увеличивать вклад f (x) ближе к границам отрезка (−1; 1). Весовые функции необходимы для определения ортогональности функций. В конечномерных векторных пространствах, которые известны из классического курса линейной алгебры, ортогональность векторов определяется через обнуление скалярного произведения: n X ha, bi = ai bi = 0, (2.43) i=1 Rn где a, b ∈ – ортогональные вектора. Как уже отмечалось во введении, функции являются суть бесконечномерными векторами, что позволяет сформулировать ортогональность 24 ω(x) 1 −1 1 x Рисунок 2.4 – Весовая функция ω(x) = √ 1 , 1−x2 определенная на интервале [−1; 1]. функций через скалярное произведение функций: ˆ 1 hf (x), g(x)i = f (x)g(x)dx, (2.44) −1 которое порождает среднеквадратическую норму и, опуская вопросы полноты, автоматически обязывает функции f (x), g(x) принадлежать гильбертову пространству L2 [−1; 1]. В таком случае мы говорим, что функции f (x) и g(x) ортогональны, если hf (x), g(x)i = 0. Однако на практике удобным оказался несколько модифицированный вид ортогональности, называемый ортогональностью с весом. Определение 2.7.2. Множество функций {φ1 , . . . , φn } называется ортогональной системой функций с весом ω(x) на интервале [a; b], если ˆ hφi (x), φj (x)iω = b ω(x)φi (x)φj (x) = αi δij , (2.45) a где αi > 0. Если hφi (x), φj (x)iω = δij , то система называется ортонормальной. Пример 2.7.1. Тригонометрическая система функций {1, cos x, sin x, cos 2x, sin 2x, . . . } является ортогональной на отрезке [−π; π]. Действительно, для φ1 (x) = 1 и k ∈ N мы имеем: ˆ π sin kx π 1 · cos kxdx = = 0, (2.46) k −π −π ˆ π cos kx π 1 · sin kxdx = − = 0. (2.47) k −π −π 25 Затем, для k ∈ N и m ∈ N, где k 6= m получаем: ˆ π ˆ π 1 cos kx sin mxdx = [sin(k + m)x − sin(k − m)x] dx = 0, −π 2 ˆ ˆ −π π π 1 [cos(k − m)x + cos(k + m)x] dx = 0, cos kx cos mxdx = −π 2 −π ˆ π ˆ π 1 sin kx sin mxdx = [cos(k − m)x − cos(k + m)x] dx = 0. −π 2 −π И наконец для случая k = m: ˆ π ˆ π cos kx sin kxdx = −π ˆ−π ˆ π π cos2 kxdx = ˆ−ππ ˆ−π π sin2 kxdx = −π −π 1 sin 2kxdx = 0, 2 1 (1 + cos 2kx)dx = π, 2 1 (1 − cos 2kx)dx = π. 2 (2.48) (2.49) (2.50) (2.51) (2.52) (2.53) Резюмируя, для скалярного произведения тригонометрических функций имеет место равенство hφk , φm i = πδkm , в то время как для функции φ1 (x) = 1 скалярное произведение имеет вид hφ1 , φk i = 2πδ1k . Таким образом тригонометрическая система функций является ортогональной на [−π; π]. Теперь мы можем перейти к обсуждению многочленов Чебышева, которые, как будет показано ниже, составляют ортогональную систему функций. 2.7.2 Многочлены Чебышева Многочлены Чебышева компактнее всего выражаются с помощью тригонометрических функций: Tk (x) = cos[k arccos x], (2.54) где k ≥ 0 и x ∈ I. Чтобы показать, что выражение (2.54) действительно генерирует ряд полиномов, в первую очередь заметим, что T0 (x) = 1, (2.55) T1 (x) = x. (2.56) Для k > 1 произведем замену: θ = arccos x, =⇒ Tk (θ) = cos(kθ), (2.57) где θ ∈ [0; π]. Подобная тригонометрическая форма представления многочленов Чебышева задает их как ряд косинусов, что позволяет обращаться с ними так же, как и с классическими тригонометрическими системами функций (в частности, для них можно определить 26 полное и дискретное преобразование Фурье). Используя тригонометрическую форму, выражения для Tk+1 и Tk−1 будут иметь вид: Tk+1 (θ) = cos [(k + 1)θ] = cos(kθ) cos(θ) − sin(kθ) sin(θ), (2.58) Tk−1 (θ) = cos [(k − 1)θ] = cos(kθ) cos(θ) + sin(kθ) sin(θ). (2.59) Сложив два уравнения, получаем: Tk+1 (θ) = 2 cos(kθ) cos(θ) − Tk−1 (θ). =⇒ Tk+1 (θ) = 2Tk (θ) cos(θ) − Tk−1 (θ). (2.60) Проведя обратную замену, мы получаем рекуррентное соотношение для многочленов Чебышева: x = cos(θ) (2.61) =⇒ Tk+1 (x) = 2xTk (x) − Tk−1 (x). Так, для k = 2 и k = 3 мы имеем: T2 (x) = 2xT1 (x) − T0 (x) = 2x2 − 1, (2.62) 2 3 T3 (x) = 2xT2 (x) − T1 (x) = 2x(2x − 1) − x = 4x − 3x. (2.63) Заметим, что рекуррентное соотношение (2.61) предполагает, что Tk (x) является полиномом k-й степени с ведущим членом 2k−1 xk . Из рисунка 2.5, иллюстрирующего полиномы Чебышева для 1 ≤ n ≤ 4, можно заметить, что на отрезке [−1; 1] их амплитуда ограничена единицей, т.е. ∀x ∈ [−1; 1] : |Tk (x)| ≤ 1, что отличает их от базисных полиномов Лагранжа, изображенных на рисунке 2.2. Более того, расположение экстремумов полиномов Чебышева стремится к границам отрезка [−1; 1] при увеличении k. В дальнейшем мы строго докажем теорему об экстремумах полиномов Чебышева и воспользуемся ими для минимизации ошибки интерполяции. Теперь продемонстрируем, что √ многочлены Чебышева составляют ортогональную систему функций с весом ω(x) = 1/ 1 − x2 на отрезке [−1; 1]. Рассмотрим скалярное произведение многочленов: ˆ 1 ˆ 1 Tk (x)Tm (x) cos(k arccos x) cos(m arccos x) √ √ hTk (x), Tm (x)iω = dx = dx, (2.64) 2 1−x 1 − x2 −1 −1 и произведем уже известную замену θ = arccos x 1 =⇒ dθ = − √ dx 1 − x2 ˆ ˆ =⇒ hTk (x), Tm (x)iω = − cos kθ cos mθdθ = π cos kθ cos mθdθ. 27 (2.65) π T1 (x) T2 (x) T3 (x) T4 (x) 1.0 Tk (x) 0.5 0.0 −0.5 −1.0 −1.0 −0.5 0.0 0.5 1.0 x Рисунок 2.5 – Многочлены Чебышева T1 (x), T2 (x), T3 (x) и T4 (x), заданные на отрезке [−1; 1]. Тогда для случаев k 6= m и k = m имеем: ˆ π ˆ π 1 k 6= m =⇒ cos kθ cos mθdθ = [cos(k − m)θ + cos(k + m)θ] dθ = 0, 0 2 ˆ π ˆ (2.66) 1 π π 2 k = m =⇒ cos kθdθ = (1 + cos 2kθ)dθ = , 2 0 2 что результирует в следующем равенстве для скалярного произведения: π (2.67) hTk (x), Tm (x)iω = δkm , 2 которое подтверждает, что система, сгенерированная выражением для полиномов Чебышева √ (2.54), действительно является ортогональной системой функций с весом ω(x) = 1/ 1 − x2 на отрезке [−1; 1]. Установив ортогональность многочленов Чебышева, перейдем к теореме об их корнях и экстремумах, которая формализует некоторые интуитивные выводы, которые мы сделали из рисунка 2.5. Теорема 2.7.1. Пусть Tk (x) является многочленом Чебышева и k ≥ 1. Тогда Tk (x) имеет k корней в замкнутом интервале [−1; 1] в точках   2m − 1 x̄m = cos π , m = 1, . . . , k. (2.68) 2k Более того, глобальные экстремумы Tk (x) расположены в точках  mπ  x̂m = cos , m = 0, . . . , k. k и имеют соответствующие значения Tk (x̂m ) = (−1)m . 28 (2.69) Доказательство. Удостоверимся, что x̄m действительно являются корнями Tk (x): Tk (x̄m ) = cos(k arccos x̄m )    2m − 1 = cos k arccos cos π 2k   2m − 1 π = cos 2 = 0. (2.70) Так как Tk (x) является полиномом k-й степени, и все x̄m отличны друг от друга, других дополнительных корней Tk (x) иметь не может. Для доказательства утверждения о глобальных экстремумах необходимо рассмотреть первую производную Tk (x): d [cos(k arccos x)] dx k sin(k arccos x) √ . = 1 − x2 Tk0 (x) = (2.71) Тогда, подставляя вражение для x̂m , имеем: Tk0 (x̂m ) k sin k arccos cos mπ k q =  mπ 2 1 − cos k =  k sin mπ  sin mπ k (2.72) = 0. Случаи m = 0 и m = k соответствуют неопределенности 0/0, так что для начала рассмотрим m = 1, . . . , k −1. Так как Tk0 (x) является полиномом (k −1)-й степени, и все x̂m отличны друг от друга, они соответствуют всем возможным корнях Tk0 (x). Другие глобальные экстремумы могут существовать только на границах отрезка x̂ = −1 и x̂ = 1. Рассмотрим экстремальные значения функции Tk0 (x): Tk (x̂m ) = cos(k arccos x̂m )   mπ  = cos k arccos cos k = cos (mπ) (2.73) = (−1)m , что включает в себя в том числе и m = 0 и m = n, соответствующие границам отрезкам. Таким образом x̂m для m = 0, . . . , k действительно являются точками глобального экстремума функции Tk (x) на отрезке [−1; 1]. Важнейшим свойством полиномов Чебышева является тот факт, что, будучи приведенными к нормированной форме, где коэффициент при члене с наибольшей степенью 29 равен единице, они имеют наименьшие по модулю экстремумы среди всех нормированных полиномов той же степени. Так как это свойство позволит нам в скором будущем минимизировать ошибку интерполяции, докажем его строго. 1 Теорема 2.7.2. Пусть Tek (x) = 2k−1 Tk (x), где k ≥ 1 и Tk (x) является полиномом Чебышева e k-й степени, и пусть Πk – множество всех нормированных полиномов степени k. Тогда верным является следующее утверждение: 1 2k−1 = max |Tek (x)| ≤ max |Pk (x)| x∈[−1;1] x∈[−1;1] e k. ∀Pk (x) ∈ Π (2.74) Более того, равенство верно только при Pk (x) = Tek (x). Доказательство. Рассмотрим доказательство от обратного. Пусть верно max |Pk (x)| ≤ max |Tek (x)| = x∈[−1;1] x∈[−1;1] 1 2k−1 . (2.75) Введем полином (k − 1)-й степени Q(x) = Tek (x) − Pk (x). Для k + 1 точки x̂m мы имеем: Q(x̂m ) = Однако из (2.75) следует |Pk (x̂m )| ≤ 1 . 2k−1 (−1)m − Pk (x̂m ). 2k−1 (2.76) Тогда мы получаем: Q(x̂m ) ≥ 0 для m = 0, 2, . . . Q(x̂m ) ≤ 0 для m = 1, 3, . . . (2.77) Таким образом, вследствие непрерывности Q(x) полином имеет корень в каждом подотрезке [xm ; xm+1 ], где m = 0, . . . , k − 1, что суммарно дает k различных корней. Однако Q(x) является полиномом (k − 1)-й степени. Это возможно только в случае Q(x) = 0, что дает Pk (x) = Tek (x). 2.7.3 Минимизация ошибки интерполяции Лагранжа Вспомним выражение для остаточного члена интерполяции Лагранжа, доказанное в теореме 2.5.1, на отрезке [−1; 1]: n f (n) (ξ) Y f (x) − Ln−1 (x) = (x − xi ), n! (2.78) i=1 где ξ ∈ (−1; 1) и x1 , . . . , xn – узлы интерполяции. Оптимальная интерполяция соответствует случаю, при котором значение остаточного члена минимизировано. Так как мы не имеем контроля над f (x), минимизация возможна только относительно значений интерполяционных узлов. Таким образом, мы получаем оптимизационную задачу следующего вида: n Y min (x − xi ), x1 ,...,xn i=1 при условии xi ∈ [−1; 1], 30 i = 1, . . . , n. (2.79) Заметим, что целевая функция является нормированным полиномом степени n с n различными корнями, равными x1 , . . . , xn . По теореме 2.7.2 ее максимальное значение на [−1; 1] минимально тогда, когда xi соответствуют корням нормированного многочлена Чебышева Ten (x), т.е. когда   2i − 1 xi = x̄i = cos π , i = 1, . . . , n. (2.80) 2n Более того, теорема 2.7.2 позволяет оценить остаточный член подобной оптимальной интерполяции: 1 (2.81) max |f (x) − Ln−1 (x)| ≤ n max |f (n) (x)|, 2 n! для любой функции f (x) ∈ C n [−1; 1]. Обобщение до произвольного отрезка [a; b] реализуется с помощью непрерывной замены переменной x̃ = 1 [(b − a)x + a + b] , 2 (2.82) где x̃ ∈ [a; b] и x ∈ [−1; 1]. С помощью подобной замены значения x̄i пересчитываются на отрезке [a; b]. Резюмируя, интерполяция Лагранжа для любой достаточно гладкой функции f (x) является оптимальной тогда, когда узлы интерполяции распределены в соответствии с корнями многочлена Чебышева x̄i , имеющего степень равную количеству узлов интерполяции. Подобные узлы принято называть чебышевскими узлами. На примере функции Рунге 1 f (x) = рисунок 2.6 показывает, как использование чебышевских узлов позволяет 1 + 25x2 снизить ошибку интерполяции, которая в случае равномерно распределенных узлов сильно возрастает ближе к границам отрезка. 2.8 Локальная интерполяция До этого момента мы рассматривали глобальную интерполяцию, т.е. интерполяцию одной аппроксимирующей функцией по всему отрезку [a; b]. При обсуждении многочленов Лагранжа мы выяснили, что увеличение степени интерполирующего полинома может приводить к паразитным осцилляциям рядом с границами отрезка. Увеличение степени в свою очередь является результатом увеличения количества узлов интерполяции. Одним из выходов из этого положения является локальная интерполяция, где мы делим отрезок [a; b] на маленькие подотрезки и используем интерполяцию полиномом малой степени на каждом из этих подотрезков, после чего “склеиваем” полученное множество полиномов в единую функцию, заданную на всем отрезке [a; b]. Такую интерполяцию называют кусочной интерполяцией. Самым простым случаем локальной интерполяции является кусочно-линейная интерполяция, где между каждой парой точек строится линейная функция, соединяющая их. Пример подобной интерполяции показан на рисунке 2.7. Очевидным недостатком кусочнолинейной интерполяции является отсутствие гладкости, так как результирующая интерполирующая функция принадлежит C 0 [a; b] и, соответственно, имеет прерывную первую 31 1.0 0.8 0.6 0.4 0.2 0.0 f(x) L(x), равномерные узлы −0.2 −1.0 −0.5 0.0 x 0.5 f(x) L(x), чебышевские узлы 1.0 −1.0 −0.5 0.0 x 0.5 1.0 1 с помощью равномерно рас1 + 25x2 пределенных (левый график) и чебышевских (правый график) узлов (синие точки). Рисунок 2.6 – Интерполяция функции Рунге f (x) = производному. Более того, увеличение степени интерполяционных многочленов (что приводит,например, к кусочно-квадратичной интерполяции, кусочно-кубической интерполяции и т.д.) не исправляет эту ситуацию. Проблема гладкости в кусочной интерполяции решается с помощью введения дополнительных условий на значения интерполяционных многочленов в узлах, а именно, условий равенства их производных. На практике самым распространенным случаем является равенство первых и вторых производных в узлах, что требует использования кубических интерполяционных многочленом между парами узлов. Подобная интерполяция называется интерполяцией кубическими сплайнами. 2.8.1 Интерполяция кубическими сплайнами Определение 2.8.1. Пусть функция f (x) задана в n интерполяционных узлах a = x1 , x2 , . . . , xn = b на отрезке [a; b]. Тогда кубическим сплайном для функции f (x) называется функция S(x), для которой верно: 1. S(x) кусочно задана кубическими многочленами Si (x) на каждом отрезке [xi ; xi+1 ], i = 1, . . . , n − 1; 2. Si (xi ) = f (xi ) и Si (xi+1 ) = f (xi+1 ), i = 1, . . . , n − 1; 3. значения смежных многочленов совпадают в общих узлах: Si (xi+1 ) = Si+1 (xi+1 ), i = 1, . . . , n − 2; 32 2 1 −1 −2 −3 −4 −5 −6 −2.0 −1.5 −1.0 −0.5 0.0 x 0.5 1.0 1.5 2.0 Рисунок 2.7 – Пример кусочно-линейной интерполяции функции f (x) = x4 − 4x2 − x. 4. значения первых производных смежных многочленов совпадают в общих узлах: Si0 (xi+1 ) = 0 (x Si+1 i+1 ), i = 1, . . . , n − 2; 5. значения вторых производных смежных многочленов совпадают в общих узлах: Si00 (xi+1 ) = 00 (x Si+1 i+1 ), i = 1, . . . , n − 2; 6. заданы граничные условия: • естественные граничные условия: S 00 (x1 ) = S 00 (xn ) = 0; • граничные условия на касательную: S 0 (x1 ) = f 0 (x1 ) и S 0 (xn ) = f 0 (xn ); Так как кубический многочлен задается 4 константами, для задания кубического сплайна нам необходимо определить 4(n − 1) констант. Сделаем это в общем виде. Запишем кубический многочлен Si (x) на отрезке [xi , xi+1 ] в форме Si (x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 , (2.83) что автоматически дает Si (xi ) = ai = f (xi ). (2.84) Тогда из условия равенства значений смежных многочленов в общих узлах имеем: ai+1 = Si+1 (xi+1 ) = Si (xi+1 ) = ai + bi hi + ci h2i + di h3i , (2.85) где hi = xi+1 − xi . Так как Si0 (xi ) = bi , из условия равенства значений первых производных в общих узлах смежных многочленов получаем: bi+1 = bi + 2ci hi + 3di h2i . 33 (2.86) Наконец, из условия для второй производной имеем: ci+1 = ci + 3di hi , где ci = Si00 (xi ) 2 . (2.87) Из последнего уравнения выразим di через ci : di = ci+1 − ci . 3hi (2.88) Подставив его в выражение для ai+1 , имеем: ai+1 = ai + bi hi + h2i (ci+1 + 2ci ). 3 (2.89) Аналогично получаем для bi+1 : bi+1 = bi + hi (ci+1 + ci ). (2.90) Чтобы получить замыкание для ci , выраженное через ai = f (xi ), мы подставляем bi и bi+1 , выраженное из (2.89) bi = =⇒ bi−1 1 hi (ai+1 − ai ) − (ci+1 + 2ci ), hi 3 1 hi−1 = (ai − ai−1 ) − (ci + 2ci−1 ), hi−1 3 (2.91) в уравнение (2.90), записанное для bi , что дает hi−1 ci−1 + 2(hi + hi−1 )ci + hi ci+1 = 3 3 (ai+1 − ai ) − (ai − ai−1 ) hi hi−1 (2.92) Теперь мы можем составить систему уравнений относительно ci , решив которую можно вычислить недостающие коэффициенты di и bi по формулам (2.88) и (2.86) соответственно. Система уравнений и доказательство единственности ее решения для случая естественных граничных условий рассматриваются в следующей теореме. Теорема 2.8.1. Пусть функция f (x) задана в n интерполяционных узлах a = x1 , x2 , ..., xn = b на отрезке [a; b]. Тогда функция f (x) имеет уникальный естественный кубический сплайн S(x), т.е. удовлетворяющий граничным условиям S 00 (a) = 0 и S 00 (b) = 0. Доказательство. Граничное условие S 00 (a) = 0 соответствует следующему условию на кубический многочлен S1 (x): S100 (x) x=a = [2c1 + 6d1 (x − x1 )]|x=a (2.93) = 2c1 = 0, 34 т.е. c1 = 0. Аналогично граничное условие S 00 (b) = 0 трансформируется в cn = 0. Исходя из полученных ограничений на c1 и cn и уравнения (2.92), запишем матричное уравнение Ac = b, где c = [c1 , . . . , cn ]T :    1 ... ... ... c1 h1 2(h2 + h1 )   h2 ... 0     c2  0   h2 2(h3 + h2 ) h3 ... 0   c3     .. ..   ..  = .. .. .. .. .  .  . . . . .    0 ... hn−2 2(hn−2 + hn−1 ) hn−1  cn−1  cn ... ... ... ... 1   3 3     h2 (a3 − a2 ) − h1 (a2 − a1 )   3 3 (a − a ) − (a − a )   4 3 3 2 h h 3 2  (2.94) = ..   .    3  3 (an−1 − an−2 )  hn−1 (an − an−1 ) − hn−2 Можно заметить,P что матрица A является матрицей со строгим диагональным преобладанием, т.е. |Aii | > j6=i |Aij |, i = 1, . . . , n. Действительно: 2(hi + hi−1 ) > hi + hi−1 . (2.95) Теорема о СЛАУ с матрицами со строгим диагональным преобладанием гласит, что такая СЛАУ имеет единственное решение для c (она будет рассмотрена и доказана в дальнейших лекциях [TODO: добавить ссылку на секцию]) Пример кубического сплайна, построенного после решения системы (2.94) и определения всех коэфициентов ai , bi , ci и di , показан на рисунке 2.8. 35 2.5 1e12 Трлн долларов 2.0 1.5 1.0 0.5 0.0 1985 1990 1995 2000 Год 2005 2010 2015 Рисунок 2.8 – Интерполяция ВВП России с помощью кубических сплайнов. 36 2020 Численное дифференцирование и интегрирование 3.1 Численное дифференцирование 3.1.1 Метод дифференцирования многочлена Лагранжа Простейшая формула для численного дифференцирования функции f (x) в точке x∗ может быть построена исходя из математического определения производной: f (x∗ + h) − f (x∗ ) . h→0 h f 0 (x∗ ) = lim (3.1) Предполагая h достаточно малым, мы всегда можем записать: f 0 (x∗ ) ≈ f (x∗ + h) − f (x∗ ) . h (3.2) В такой аппроксимации неявным образом была использована интерполяция линейным полиномом Лагранжа. Действительно, рассмотрим функцию f (x) ∈ C 2 [a; b] и такие два узла x1 , x2 ∈ [a; b], что x2 = x1 + h. Тогда функция f (x) может быть выражена следующим образом: (x − x1 )(x − x2 ) 00 f (ξ(x)) 2! x − x1 − h x − x1 (x − x1 )(x − x1 − h) 00 = f (x1 ) + f (x1 + h) + f (ξ(x)), −h h 2! f (x) = L1 (x) + (3.3) где ξ(x) ∈ (x1 ; x1 + h). Дифференцирование f (x) приводит к следующему выражению: f 0 (x) =  f (x1 + h) − f (x1 ) 2x − 2x1 − h 00 (x − x1 )(x − x1 − h) d  00 + f (ξ(x))+ f (ξ(x)) , (3.4) h 2 2! dx из которого видно, что при исключении членов, зависящих от ξ(x), производная аппроксимируется как: f (x1 + h) − f (x1 ) f 0 (x) ≈ . (3.5) h 37 В силу наличия производной от неизвестной функции в (3.4), остаточный член подобного численного дифференцирования мы можем определить только в точке x1 (или, эквивалентно, в точке x2 ): f (x1 + h) − f (x1 ) h 00 f 0 (x1 ) = − f (ξ(x)). (3.6) h 2 Легко заметить, что при h → 0 погрешность численного дифференцирования будет стремиться к нулю пропорционально O(h). Таким образом мы имеем формулу для численного дифференцирования первого порядка точности. Очевидно, что данный подход можно распространить на полиномы Лагранжа произвольной степени. Рассмотрим функцию f (x) ∈ C n [a; b] и n различных узлов x1 , . . . , xn . Тогда разложение f (x) в базисные полиномы Лагранжа имеет вид: Qn n X (x − xi ) (n) f (x) = f (xi )li (x) + i=1 f (ξ(x)), (3.7) n! i=1 что при дифференцировании дает: Qn  Qn  n i X (x − xi ) d h (n) d (n) i=1 (x − xi ) f (ξ(x)) + i=1 f (ξ(x)) . (3.8) f (x) = f (xi )li (x) + dx n! n! dx i=1 При дифференцировании в точке x = xj мы имеем:  Qn  n X d i=1 (x − xi ) f (xj ) = f (xi )li (xj ) + f (n) (ξ(xj )) dx n! x=xj i=1 n X n n 1 X Y (xj − xi )f (n) (ξ(xj )) = + n! i=1 k=1 i=1,i6=k Qn n X i=1,i6=j (xj − xi ) (n) = f (ξ(xj )), f (xi )li0 (xj ) + n! f (xi )li0 (xj ) (3.9) i=1 что является общим выражением для численного дифференцирования по n точкам. Форма остаточного члена дает понять, что точность дифференцирования будет повышаться при использовании все большего числа точек, однако это будет происходить за счет увеличения числа арифметических операций, что всегда необходимо помнить, так как большое количество арифметических операций не только влияет на производительность численного метода, но и может приводить к вычислительным неустойчивостям, связанным с погрешностью округления. В качестве примера использования (3.9) рассмотрим вывод формулы численного дифференцирования второго порядка точности. Для этого нам необходимо использовать интерполяцию f (x) в трех точках x1 , x2 , x3 :     d (x − x2 )(x − x3 ) d (x − x1 )(x − x3 ) f (xj ) = f (x1 ) + f (x2 ) + dx (x1 − x2 )(x1 − x3 ) x=xj dx (x2 − x1 )(x2 − x3 ) x=xj   3 d (x − x1 )(x − x2 ) 1 Y + f (x3 ) + (xj − xi )f (3) (ξ(xj )), (3.10) dx (x3 − x1 )(x3 − x2 ) x=xj 6 i=1,i6=j 38 из чего следует: f 0 (xj ) = f (x1 ) 2xj − x2 − x3 2xj − x1 − x3 2xj − x1 − x2 + f (x2 ) + +f (x3 ) + (x1 − x2 )(x1 − x3 ) (x2 − x1 )(x2 − x3 ) (x3 − x1 )(x3 − x2 ) 3 1 Y + (xj − xi )f (3) (ξ(xj )). (3.11) 6 i=1,i6=j Теперь предположим, что узлы распределены равномерно, т.е. x2 = x1 + h и x3 = x1 + 2h. Тогда выражение (3.11) принимает вид: f 0 (xj ) = f (x1 ) 2xj − 2x1 − 2h 2xj − 2x1 − h 2xj − 2x1 − 3h + f (x1 + h) + f (x1 + 2h) + −h · (−2h) h · (−h) 2h · h 3 1 Y + (xj − xi )f (3) (ξ(xj )). (3.12) 6 i=1,i6=j Записав последнее выражение для x1 , x1 + h и x1 + 2h, мы получаем три формулы для численного дифференцирования второго порядка точности: −3f (x1 ) + 4f (x1 + h) − f (x1 + 2h) h2 (3) + f (ξ), 2h 3 2 f (x1 + 2h) − f (x1 ) h (3) f 0 (x1 + h) = − f (ξ), 2h 6 f (x1 ) − 2f (x1 + h) + 3f (x1 + 2h) h2 (3) f 0 (x1 + 2h) = + f (ξ). 2h 3 f 0 (x1 ) = (3.13) (3.14) (3.15) Несмотря на то, что все три формулы имеют точность O(h2 ), можно заметить, что остаточный член численного дифференцирования в случае граничных узлов x1 и x1 + 2h в два раза больше, чем в случае центрального узла x1 + h. Это связано с тем, что центральная формула использует значения функции в точках, расположенных по обе стороны узла, что повышает точность дифференцирования. Несложно показать, что формулы (3.13), (3.14) и (3.15) можно вывести с помощью разложения функции f (x) в ряд Тейлора относительно точек x1 , x1 + h и x1 + 2h соответственно и последующего вычисления значений ряда Тейлора в оставшихся узлах. Тогда разложение в ряд Тейлора в центральном узле x1 + h дейтвительно имеет преимущество, так как остаточный член ряда Тейлора пропорционален разности от точки разложения до точки, в которой требуется вычислить значение ряда. 3.1.2 Метод разложения функции в ряд Тейлора Метод разложения в ряд Тейлора становится удобен в случае, когда требуется построить формулу для вычисления высших производных. В качестве примера построим формулу для второй производной функции f (x). Для этого допустим, что нам известны ее значения в точках x1 − h, x1 и x1 + h, и разложим ее в ряд Тейлора в точке x1 : f (x) = f (x1 ) + f 0 (x1 )(x − x1 ) + f 00 (x1 ) f 000 (x1 ) f (4) (ξ) (x − x1 )2 + (x − x1 )3 + (x − x1 )4 . (3.16) 2 6 24 39 где ξ ∈ (x1 ; x). Тогда значения ряда в точках x1 − h и x1 + h будут равны: h2 00 f (x1 ) − 2 h2 f (x1 + h) = f (x1 ) + hf 0 (x1 ) + f 00 (x1 ) + 2 f (x1 − h) = f (x1 ) − hf 0 (x1 ) + h3 000 f (x1 ) + 6 h3 000 f (x1 ) + 6 h4 (4) f (ξ1 ), 24 h4 (4) f (ξ2 ). 24 (3.17) (3.18) где ξ1 ∈ (x1 − h; x1 ) и ξ2 ∈ (x; x1 + h). Сложив два равенства, получаем: i h4 h (4) f (ξ1 ) + f (4) (ξ2 ) 24 i 2 f (x1 − h) − 2f (x1 ) + f (x1 + h) h h (4) (4) − =⇒ f 00 (x1 ) = f (ξ ) + f (ξ ) . 1 2 h2 24 f (x1 − h) − 2f (x1 ) + f (x1 + h) = h2 f 00 (x1 ) + (3.19) Предположим, что f (x) ∈ C 4 [x1 − h; x1 + h]. Тогда по теореме о промежуточном значении существует такое ξ ∈ (x1 − h; x1 + h), что i 1 h (4) f (ξ1 ) + f (4) (ξ2 ) , (3.20) f (4) (ξ) = 2 что в результате дает формулу численного дифференцирования второго порядка для второй производной: f 00 (x1 ) = f (x1 − h) − 2f (x1 ) + f (x1 + h) h2 (4) − f (ξ), h2 12 (3.21) где ξ ∈ (x1 − h; x1 + h). 3.1.3 Вычислительная неустойчивость операции дифференцирования Как отмечалось во введении, погрешность округления может становиться в особенности заметной тогда, когда происходит вычитание двух близких значений. Именно это происходит во всех формулах численного дифференцирования, что делает операцию дифференцирования неустойчивой с вычислительной точки зрения. В качестве примера рассмотрим формулы численного дифференцирования второго порядка: f 0 (x1 + h) = f (x1 + 2h) − f (x1 ) h2 (3) − f (ξ), 2h 6 (3.22) и предположим, что при округлении значений f (x1 + 2h) и f (x1 ) вычислительная погрешность равна e(x1 + 2h) и e(x1 ), то есть f (x1 + 2h) = f˜(x1 + 2h) + e(x1 + 2h), f (x1 ) = f˜(x1 ) + e(x1 ). (3.23) (3.24) Тогда полная погрешность, включающая погрешность метода и вычислительную погрешность, вычисляется следующим образом: f 0 (x1 + h) − f˜(x1 + 2h) − f˜(x1 ) e(x1 + 2h) − e(x1 ) h2 (3) = − f (ξ). 2h 2h 6 40 (3.25) 10 10 10 10 10 10 -1 -2 -3 -4 -5 E 10 1 10 10 10 10 10 10 10 -6 -7 -8 -9 O(h 2 ) O(h −1 ) -10 -11 -12 10 -16 10 -14 10 -12 10 -10 h 10 -8 10 -6 10 -4 10 -2 Рисунок 3.1 – Зависимость полной погрешности E, выражение для которой дано в (3.28), от шага дифференцирования h в случае формулы дифференцирования второго порядка для функции f (x) и значения производной f 0 (1/2). Пусть вычислительная погрешность ограничена  (например, машинным эпсилон) и пусть f (3) ограничена M . Тогда верным является следующее неравенство: f 0 (x1 + h) − f˜(x1 + 2h) − f˜(x1 )  h2 ≤ + M. 2h h 6 (3.26) Можно заметить, что при h → 0 погрешность будет стремиться к бесконечности, что и обусловливаниет вычислительную неустойчивость численного дифференцирования. Несложно проверить, что выражение справа имеет минимум в точке  hopt = 3 M 1 3 , (3.27) что задает оптимальный шаг дифференцирования для данной формулы. Рисунок 3.1 демонстрирует, как полная погрешность, определенная как E = f 0 (x1 + h) − f˜(x1 + 2h) − f˜(x1 ) , 2h (3.28) меняется в зависимости от шага дифференцирования h в случае использования формулы дифференцирования второго порядка для f (x) = ex и f 0 (1/2). Обе оси графика имеют 41 логарифмический масштаб (так называемый log-log график), что позволяет легко выявить зависимости вида E(h) = αhγ . Можно заметить, что для h & 7 · 10−6 полная погрешность уменьшается пропорционально h2 при уменьшении h, что и предсказывается формулой (3.14). Однако для h . 7 · 10−6 вычислительная погрешность начинает доминировать в соответствии с правой частью неравенства (3.26) и полная погрешность начинает расти пропорционально 1/h при уменьшении h. В соответствии с формулой (3.27) оптимальный шаг дифференцирования равен  hopt = 3 · 2.2 · 10−16 e1/2  13 ≈ 7.4 · 10−6 , (3.29) что действительно совпадает с оптимальным значением, определяемым численно из графика на рисунке 3.1. 3.2 Численное интегрирование Базовая идея численного интегрирования состоит в том, чтобы аппроксимировать интеграл следующим образом: ˆ b f (x)dx ≈ a n X ai f (xi ), ai ∈ R, (3.30) i=1 где выражение справа называется квадратурой. Как и в случае численного дифференцирования, простейшие квадратуры можно вывести, аппроксимируя f (x) интерполяционным многочленом Лагранжа. 3.2.1 Формулы Ньютона-Котеса Рассмотрим функцию f (x) ∈ C n [a; b] и n различных узлов x1 , . . . , xn . Тогда, раскладывая f (x) в базисные многочлены Лагранжа, мы получаем Qn n X (x − xi ) (n) f (ξ(x)), (3.31) f (x) = f (xi )li (x) + i=1 n! i=1 где ξ(x) ∈ (a; b). Тогда интегрирование f (x) на интервале [a; b] дает: ˆ b ˆ bX ˆ b Qn n i=1 (x − xi ) (n) f (x)dx = [f (xi )li (x)] dx + f (ξ(x))dx n! a a i=1 a  ˆ b Qn ˆ b n  X i=1 (x − xi ) (n) = f (xi ) li (x)dx + f (ξ(x))dx, n! a a (3.32) i=1 что дает выражение для коэффициентов квадратуры ai : ˆ b ai = li (x)dx. a 42 (3.33) В случае, когда интерполяционные узлы x1 , . . . , xn распределены равномерно, мы получаем формулы Ньютона-Котеса для численного интегрирования. Оценим остаточный член формул Ньютона-Котеса для n узлов xi = x1 + (i − 1)h, где i = 1, . . . , n и x1 = a, xn = b: R= 1 n! ˆ bY n (x − xi )f (n) (ξ(x))dx a i=1 ˆ n 1 bY = [x − x1 − (i − 1)h] f (n) (ξ(x))dx. n! a (3.34) i=1 Представим переменную x как x = x1 + (t − 1)h, что дает dx = hdt и t = произведя замену в выражении выше, имеем: hn R= n! ˆ 1 n nY x − x1 + 1. Тогда, h (t − i) f (n) (ξ(t))dt. (3.35) i=1 Таким образом, порядок точности можно оценить как O(hn ). Чтобы получить более точное выражение для остаточного члена, необходимо заметить, что полином в подинтегральном выражении меняет знак только в узлах xi . Тогда, пользуя первой теоремой о среднем значении, мы получаем: ˆ j+1 Y n−1 n hn X (n) f (ξj ) (t − i) dt. (3.36) R= n! j j=1 i=1 где ξj ∈ [xj ; xj+1 ]. Эта форма R приводит к теореме об остаточном члене формул НьютонаКотеса, которую мы рассмотрим без доказательства. ´b Теорема 3.2.1. Пусть ai = a li (x)dx и заданы узлы xi = x1 + (i − 1)h, где i = 1, . . . , n и x1 = a, xn = b. Тогда для четных n и f (x) ∈ C n [a; b] существует ξ ∈ (a; b) такое, что: ˆ b f (x)dx = a n X i=1 hn+1 (n) ai f (xi ) + f (ξ) n! ˆ n nY 1 (t − i) dt, (3.37) i=1 в то время как для нечетных n и f (x) ∈ C n+1 [a; b] существует ξ ∈ (a; b) такое, что: ˆ b f (x)dx = a n X i=1 hn+2 (n+1) ai f (xi ) + f (ξ) (n + 1)! ˆ n (t − 1) 1 n Y (t − i) dt, (3.38) i=1 Основным следствием теоремы является тот факт, что предпочтительным является нечетное число узлов. Это связано с формой полинома в подинтегральном выражении в (3.35), который в случае нечетного числа узлов имеет равное количество отрезков, на которых функция всюду положительна и всюду отрицальна, что снижает погрешность метода. 43 3.2.2 Формулы трапеций и Симпсона Частными случаями формул Ньютона-Котеса являются формула трапеций (n = 2) и формула Симпсона (n = 3). В связи с их распространенностью рассмотрим вывод этих формул с явными выражением для остаточного члена. Так, для n = 2 выражение (3.32) принимает вид: ˆ x2 ˆ b ˆ x2 (x − x2 ) (x − x1 ) f (x)dx = f (x1 ) dx + f (x2 ) dx+ x1 (x1 − x2 ) a x1 (x2 − x1 ) ˆ x2 (x − x1 )(x − x2 ) 00 + f (ξ(x))dx, (3.39) 2 x1 что после интегрирования линейных полиномов дает: ˆ x2 ˆ b (x − x1 )(x − x2 ) 00 h f (x)dx = [f (x1 ) + f (x2 )] + f (ξ(x))dx. 2 2 x1 a (3.40) Так как полином внутри подинтегрального выражения не меняет знак для x ∈ [a; b], первая теорема о среднем значении позволяет записать выражение ˆ b ˆ x2 h (x − x1 )(x − x2 ) f (x)dx = [f (x1 ) + f (x2 )] + f 00 (ξ) dx, (3.41) 2 2 a x1 где ξ ∈ (a; b). Таким образом мы получаем выражение для формулы трапеций: ˆ b h3 h f (x)dx = [f (x1 ) + f (x2 )] − f 00 (ξ), 2 12 a (3.42) где, как мы помним, x1 = a, x2 = b и h = b − a. Для вывода формулы Симпсона с n = 3 мы воспользуемся альтернативным подходом, который сделает вывод остаточного члена проще, а также в очередной раз продемонстрирует связь между интерполяционным многочленом Лагранжа и рядом Тейлора. Рассмотрим разложение функции f (x) в ряд Тейлора в промежуточном узле x2 : f (x) = f (x2 ) + f 0 (x2 )(x − x2 ) + f 00 (x2 ) f 000 (x2 ) f (4) (ξ(x)) (x − x2 )2 + (x − x2 )3 + (x − x2 )4 . (3.43) 2 6 24 Тогда интеграл от f (x) принимает вид:  x3  ˆ b f 0 (x2 ) f 00 (x2 ) f 000 (x2 ) 2 3 4 (x − x2 ) + (x − x2 ) + (x − x2 ) + f (x)dx = f (x2 )(x − x2 ) + 2 6 24 a x1 ˆ x3 (4) f (ξ(x)) + (x − x2 )4 dx. (3.44) 24 x1 В силу четности степеней члены, включающие в себя нечетные производные, обращаются в ноль. Более того, так как (x − x2 )4 ≥ 0, мы можем применить первую теорему о среднем значении, что в результате дает: x3  00 ˆ b ˆ f (x2 ) f (4) (ξ) x3 3 + f (x)dx = 2hf (x2 ) + (x − x2 ) (x − x2 )4 dx, (3.45) 6 24 x a x1 1 44 где ξ ∈ (x1 ; x3 ). Для того, чтобы избавиться от второй производной, воспользуемся формулой для численного дифференцирования с остаточным членом (3.21). После подстановки равенство выше принимает вид:   ˆ b ˆ h3 f (x1 ) − 2f (x2 ) + f (x3 ) h2 (4) f (4) (ξ2 ) x3 f (x)dx = 2hf (x2 ) + (x − x2 )4 dx − f (ξ1 ) + 3 h2 12 24 x1 a = h h5 h5 [f (x1 ) + 4f (x2 ) + f (x3 )] − f (4) (ξ1 ) + f (4) (ξ2 ), 3 36 60 (3.46) где ξ1 , ξ2 ∈ (x1 ; x3 ). Так как в общем случае ξ1 6= ξ2 нам необходимо каким-то образом скомбинировать два последних члена. Для этого рассмотрим остаточный член в общем случае и предположим, что существует такое ξ ∈ (x1 ; x3 ), что: ˆ b h (3.47) f (x)dx = [f (x1 ) + 4f (x2 ) + f (x3 )] + αf (4) (ξ), 3 a где α ∈ R – неопределенный коэффициент. Для того чтобы найти его, заметим, что f (4) (ξ) = 24 для любого нормированного многочлена 4-й степени. Тогда рассмотрим в качестве f (x) многочлен (x − x2 )4 : ˆ x3 2h5 (x − x2 )4 dx = 5 x1 5  h 2h (3.48) = (x1 − x2 )4 + 4(x2 − x2 )4 + (x3 − x2 )4 − 24α =⇒ 5 3 h5 =⇒ α = − . 90 Таким образом мы получаем формулу Симпсона с явным выражением для остаточного члена: ˆ b h h5 f (x)dx = [f (x1 ) + 4f (x2 ) + f (x3 )] − f (4) (ξ), (3.49) 3 90 a где x1 = a, x2 = x1 + h и x3 = x1 + 2h = b. Малость погрешности формулы Симпсона, O(h5 ), при использовании всего лишь трех узлов объясняет ее частое использование в реальных приложениях. Необходимо отметить, что такая малая погрешность сохраняется только при достаточной гладкости функции f (x). Для того, чтобы численно исследовать зависимость остаточного члена формулы Симпсона от гладкости интегрируемой функции, мы проведет следующий вычислительный эксперимент. Рассмотрим две функции f1 (x) = ex и f2 (x) = |x|, первая из которых является бесконечно гладкой, а вторая лишь непрерывной. Построим на основе последовательности шагов {hi }ni=1 соответствующую последовательность интегралов: ˆ 1 +hi 2 1 1 (1) n (1) {Ii }i=1 , где Ii = ex dx = e 2 +hi − e 2 −hi , (3.50) (2) {Ii }ni=1 , (2) где Ii ˆ 1 −hi 2 hi = −hi 45 |x|dx = h2i , (3.51) 10 10 E 10 10 10 10 10 10 -3 -5 -7 -9 -11 -13 O(h 5 ) O(h 2 ) -15 -17 10 -4 10 -3 h 10 -2 10 -1 Рисунок 3.2 – Зависимость полной погрешности E численного интегрирования с помощью (1) формулы Симпсона от шага интегрирования h для интегралов {Ii }ni=1 (синие круги) и (2) {Ii }ni=1 (зеленые квадраты). где x = 1/2 и x = 0 являются центральными узлами численного интегрирования для f1 (x) и f2 (x) соответственно. Рассчитав те же интегралы с помощью формулы Симпсона и найдя полную погрешность E, включающую в себя как остаточный член, так и вычислительную погрешность, для каждого случая, мы получаем рисунок 3.2. Для начала заметим, что численное интегрирование устойчиво с вычислительной точки зрения, и полная погрешность полностью соответствует остаточному члену вплоть до тех пор, пока E не достигнет машинного эпсилон. Сам остаточный член, как мы видим, пропорционален O(h5 ) в случае бесконечно гладкой функции f1 (x), что и предполагается равенством (3.49), в то время как в случае функции f2 (x) погрешность метода пропорциональна лишь O(h2 ), что связано с тем, что уже первая производная от f2 (x) имеет разрыв, что делает формулу (3.49) нерабочей. 3.2.3 Формула средних Отдельно рассмотрим случай, когда на отрезке [a; b] мы имеем только один узел, 2 расположенный в центре отрезка, т.е. x1 = a+b 2 . Разложим функцию f (x) ∈ C [a; b] в ряд Тейлора в этом узле: f (x) = f (x1 ) + f 0 (x1 )(x − x1 ) + 46 f 00 (ξ(x)) (x − x1 )2 . 2 (3.52) Тогда интеграл от f (x) вычисляется следующим образом: ˆ a b  1 f (x)dx = f (x1 )(x − x1 ) + f 0 (x1 )(x − x1 )2 2 ˆ b b + a a f 00 (ξ(x)) (x − x1 )2 dx. 2 (3.53) Так как выражение (x − x1 )2 всюду неотрицательно, мы можем воспользователься первой теоремой о среднем значении, что дает: ˆ a b f 00 (ξ) f (x)dx = f (x1 )(b − a) + 2 ˆ b (x − x1 )2 dx, (3.54) a что после интегрирования приводит к формуле средних : ˆ b f (x)dx = f (x1 )(b − a) + a f 00 (ξ) (b − a)3 . 24 (3.55) Заметим, что остаточный член в формуле средних пропорционален O(h3 ), где h = b − a, т.е. имеет тот же порядок погрешности, что и формула трапеций. Однако формула средних использует только один узел и, соответственно, только одно значение функции f (x), что делает ее предпочтительной с вычислительной точки зрения. 3.2.4 Степень точности численного интегрирования Несмотря на то, что оценка остаточного члена с точки зрения его зависимости от шага интегрирования h является удобной для анализа и сравнения различных формул интегрирования, на практике часто пользуются другой оценкой, напрямую следующей из формы остаточного члена. Этой оценкой является степень точности численного интегрирования. Определение 3.2.1. Степенью точности квадратуры называется такое наибольшее n ∈ N, что формула квадратуры дает точный результат для всех xi , i = 0, . . . n. Легко проверить, что вследствие линейности операции интегрирования, это определение автоматически приводит к следующей теореме: Теорема 3.2.2. Степень точности квадратуры равна n ∈ N тогда и только тогда, когда остаточный член равен нулю для всех многочленов степеней i = 0, . . . n и не равен нулю для хотя бы одного многочлена степени n + 1. Форма остаточного члена в формулах трапеций и Симпсона позволяет заключить, что они имеют степени точности 1 и 3 соответственно. Например, интегрируя любой полином, имеющий степень 0, 1, 2 или 3, формула Симпсона будет давать точный результат. В дальнейшем мы рассмотрим способ построения квадратур, имеющих наибольшую степень точности при наименьшем числе используемых узлов. 47 3.2.5 Составные формулы численного интегрирования Как и в случае с интерполяцией, использование формул Ньютона-Котеса большого порядка для увелечения точности интегрирования на больших отрезках приводит к паразитным решениям. В таком случае предпочтительным является кусочный подход к интегрированию. Мы построим составные формулы из формул Симпсона, трапеций и средних, хотя подобный подход, очевидно, можно применить к любым другим квадратурам. ´b Рассмотрим интеграл a f (x)dx. Разделим отрезок [a; b] на четное число подотрезков n и применим формулу Симпсона на каждом из них. Тогда для f (x) ∈ C 4 [a; b], h = b−a n и xi = a + (i − 1)h, где i = 1, . . . , n + 1 мы имеем: ˆ b n/2 ˆ x 2i+1 X f (x)dx = f (x)dx a x2i−1 i=1 n/2 n/2 i=1 i=1 (3.56) h5 X (4) hX [f (x2i−1 ) + 4f (x2i ) + f (x2i+1 )] − f (ξi ), = 3 90 где ξi ∈ (x2i−1 ; x2i+1 ). Заметим, что все нечетные узлы за исключением x1 и xn+1 дважды повторяются в сумме, что позволяет упростить выражение:   ˆ b n/2−1 n/2 n/2 X X h h5 X (4)  f (x)dx = f (x1 ) + 2 f (x2i+1 ) + 4 f (x2i ) + f (xn+1 ) − f (ξi ). (3.57) 3 90 a i=1 i=1 i=1 Для упрощения выражения для остаточного члена заметим, что так как f (x) ∈ C 4 [a; b], мы имеем: min f (4) (x) ≤ f (4) (ξi ) ≤ max f (4) (x) x∈[a;b] x∈[a;b] n/2 X n n =⇒ min f (4) (x) ≤ max f (4) (x) f (4) (ξi ) ≤ 2 x∈[a;b] 2 x∈[a;b] i=1 (3.58) n/2 =⇒ min f x∈[a;b] (4) 2 X (4) (x) ≤ f (ξi ) ≤ max f (4) (x). n x∈[a;b] i=1 Тогда по теореме о промежуточном значении мы получаем: n/2 f (4) (ξ) = 2 X (4) f (ξi ), n (3.59) i=1 где ξ ∈ (a; b). Остаточный член в таком случае принимает следующую форму: n/2 R=− h5 X (4) f (ξi ) 90 i=1 nh5 (4) =− f (ξ) 180 (b − a)h4 (4) =− f (ξ). 180 48 (3.60) Заметим, что по сравнению со стандартной формулой Симпсона, остаточный член составной формулы Симпсона пропорционален O(h4 ). Результирующее выражение для составной формулы представлено в следующей теореме. Теорема 3.2.3. Пусть xi = a + (i − 1)h, h = b−a n и i = 1, . . . , n + 1, где n – четное число. Тогда существует такое ξ ∈ (a; b) для f (x) ∈ C 4 [a; b], что составная формула Симпсона имеет вид:   ˆ b n/2−1 n/2 X X h (b − a)h4 (4) f (x)dx = f (x1 ) + 2 f (ξ). (3.61) f (x2i+1 ) + 4 f (x2i ) + f (xn+1 ) − 3 180 a i=1 i=1 Аналогично можно вывести составные формулы трапеций и средних, в которых n может быть как четным, так и нечетным. Мы приведет соответствующие теоремы без доказательства. Теорема 3.2.4. Пусть xi = a + (i − 1)h, h = b−a n и i = 1, . . . , n + 1, где n ∈ N . Тогда существует такое ξ ∈ (a; b) для f (x) ∈ C 2 [a; b], что составная формула трапеций имеет вид: " # ˆ b n X h (b − a)h2 00 f (x)dx = f (x1 ) + 2 f (xi ) + f (xn+1 ) − f (ξ). (3.62) 2 12 a i=2 Теорема 3.2.5. Пусть xi = a+ (2i−1)h , h = b−a 2 n и i = 1, . . . , n, где n ∈ N . Тогда существует 2 такое ξ ∈ (a; b) для f (x) ∈ C [a; b], что составная формула средних имеет вид: ˆ b n X (b − a)h2 00 f (x)dx = h f (ξ). (3.63) f (xi ) + 6 a i=1 3.2.6 Вычислительная устойчивость операции интегрирования По сравнению с дифференцированием, операция интегрирования, как мы вскоре покажем, способна к стабилизации вычислительной погрешности. Интуитивное объяснение этого эффект заключается в том, что интегрирование предполагает суммирование близких значений, в то время как дифференцирование вычисляет их разность. Рассмотрим составную формулу Симпсона и предположим, что значение f (x) в точке xi вычисляется с погрешностью округления ei : f (xi ) = f˜(xi ) + ei , i = 1, . . . , n + 1. (3.64) Тогда полная погрешность округления, накапливаемая составной формулой Симпсона, может быть оценена следующим образом:   n/2−1 n/2 X X h e(h) = e1 + 2 e2i+1 + 4 e2i + en+1  3 i=1 i=1   (3.65) n/2−1 n/2 X X h ≤ |e1 | + 2 |e2i+1 | + 4 |e2i | + |en+1 | . 3 i=1 i=1 49 Предположим, что погрешность округления ограничена, например, машинным эпсилон: |ei | ≤ , i = 1, . . . , n + 1. Тогда полная погрешность погрешность оценивается как: n  i h h n e(h) ≤ 1+2 −1 +4 +1 3 2 2 (3.66) = nh = (b − a). Этот результат показывает, что верхняя грань для накопленной погрешности округления не зависит от n или h, что означает, что увеличение числа подотрезков не приводит к дестабилизации полной погрешности. Действительно, из рисунка 3.2 можно заметить, что полная погрешность интегрирования падает до тех пор, пока она не достигнет значения, сравнимого с машинным эпсилон, после чего уменьшение погрешности становится невозможным, и она стабилизируется на уровне машинного эпсилон. 3.2.7 Квадратуры Гаусса Формулы Ньютона-Котеса были построены, исходя из равномерного распределения узлов. Как и в случае интерполяции, логично предположить, что существует иное, неравномерное распределение узлов, которое позволило бы максимизировать точность. Как уже было сказано ранее, на практике часто возникает необходимость максимизировать степень точности, т.е. максимизировать степень полинома, интегрирование которого с помощью данной квадратуры дает точный результат при заданном количестве узлов. Эту задачу решают квадратуры Гаусса, суть которых сводится к нахождению таких x1 , . . . , xn и c1 , . . . , cn , что приближение ˆ b n X f (x)dx ≈ ci f (xi ) (3.67) a i=1 максимизирует степень точности. Так как всего мы имеем 2n оптимизируемых параметров, логично предположить, что полином 2n−1 степени, имеющий так же 2n параметров, может быть интегрирован точно при правильно подобранных параметрах. Очевидно, что если квадратура дает точный результат для любого полинома этой степени, то все полиномы низших степеней автоматически интегрируются точно как частные случаи. Рассмотрим случай n = 2 и интервал интегрирования [−1; 1]. Тогда квадратура принимает вид: ˆ b f (x)dx ≈ c1 f (x1 ) + c2 f (x2 ). (3.68) a Мы ожидаем, что эта квадратура дает точный результат при интегрировании полинома третьей степени: f (x) = a0 + a1 x + a2 x2 + a3 x3 ˆ 1 ˆ 1 ˆ 1 ˆ =⇒ f (x)dx = a0 dx + a1 xdx + a2 −1 −1 −1 ˆ 1 −1 1 x2 dx + a3 x3 dx, (3.69) −1 где a0 , a1 , a2 , a3 ∈ R – произвольные константы. Можно заметить, что квадратура будет точно вычислять интеграл этого полинома тогда, когда точно будут вычисляться интегралы 50 от функций f (x) = 1, f (x) = x, f (x) = x2 , f (x) = x3 . В таком случае мы получаем систему уравнений:  ´1  c + c =  1 2 −1 dx = 2,   c x + c x = ´ 1 xdx = 0, 1 1 2 2 ´−1 (3.70) 1 2 2 2 dx = 2 ,  c x + c x = x 1 2  1 2 3 −1   c x3 + c x3 = ´ 1 x3 dx = 0. 1 1 2 2 −1 Из первых двух уравнений мы получаем: 2x2 x2 − x1 2x1 c2 = − , x2 − x1 c1 = (3.71) (3.72) что при подстановке в третье дает: 1 x1 x2 = − . 3 (3.73) x1 + x2 = 0, (3.74) Тогда четвертое уравнение становится: что в результате дает следующее решение: c1 = 1, (3.75) c2 = 1, (3.76) 1 x1 = − √ , 3 1 x2 = √ . 3 Таким образом квадратура Гаусса со степенью точности 3 имеет следующий вид:     ˆ 1 1 1 f (x)dx ≈ f − √ +f √ . 3 3 −1 (3.77) (3.78) (3.79) Подобным образом мы можем построить квадратуры Гаусса произвольной степени точности, однако из-за нелинейности решаемой системы уравнений это становится алгебраически утомительным. Для рассмотрения более удобного подхода нам необходимо ознакомиться с понятием линейно-независимых функций и многочленами Лежандра. 3.2.8 Ортогональные полиномы и многочлены Лежандра По аналогии с векторами мы введем понятие линейно независимых функций. Определение 3.2.2. Система функций {φ1 , . . . , φn } называется линейно независимой на [a; b], если n X ci φ1 (x) = 0 ⇐⇒ c1 = · · · = cn = 0. (3.80) i=1 В противном случае система функций называется линейно зависимой. 51 Важное свойство полиномов состоит в том, что любые полиномы различных степеней являются линейно независимыми. Это свойство доказывается в следующей теореме. Теорема 3.2.6. Пусть {φi }ni=0 – система полиномов, где полином φi имеет i-ую степень. Тогда {φi }ni=0 является линейно независимой системой функций на [a; b]. Доказательство. Рассмотрим линейную комбинацию: P (x) = n X ci φi (x). (3.81) i=0 Пусть коэффициенты ci имеют такие значения, что P (x) = 0. В свою очередь P (x) является полиномом степени n, что означает, что для удовлетворения условия P (x) = 0 коэффициенты при всех степенях xi , i = 0, . . . , n должны быть равны нулю. Это возможно только тогда, когда cn = 0. В результате мы получаем: P (x) = n−1 X ci φi (x). (3.82) i=0 Продолжая эту логику, мы получаем c0 = · · · = cn = 0, что означает, что система {φi }ni=0 является линейно независимой. Также добавим, что если система полиномов {φi }ni=0 является линейно независимой, то любой полином степени меньшей или равной n можно представить в виде единственной линейной комбинации полиномов {φi }ni=0 . Более того, если такая система полиномов является к тому же ортогональной, то верно следующее равенство: ˆ hφn (x), Pk (x)iω = b ω(x)φn (x)Pk (x)dx = 0, (3.83) a где Pk (x) – полиномом любой степени k < n. Действительно, мы может разложить Pk (x) в линейную комбинацию полиномов φ(x): Pk (x) = k X ci φi (x), (3.84) i=0 что дает ˆ b ω(x)φn (x)Pk (x)dx = a k X ˆ ci i=0 b ω(x)φn (x)φi (x)dx = 0. (3.85) a Линейно независимая система функций необязательно является ортогональной. Для случая полиномов мы можем построить ортогональную систему полиномов, адаптировав процесс Грама-Шмидта, хорошо известный из курса линейной алгебры. 52 Теорема 3.2.7. Пусть система полиномов {φi }ni=0 определена следующим образом на [a; b] относительно весовой функции ω(x): φ0 (x) = 1 (3.86) hxφ0 , φ0 iω hφ0 , φ0 iω hxφk−1 , φk−1 iω hxφk−2 , φk−1 iω φk (x) = xφk−1 (x) − φk−1 (x) − φk−2 (x), hφk−1 , φk−1 iω hφk−2 , φk−2 iω φ1 (x) = x − (3.87) (3.88) где x ∈ [a; b] и k ≥ 2. Тогда эта система является ортогональной на [a; b] с весом ω(x). Доказательство. Рассмотрим систему полиномов {χk (x)}nk=0 = {1, x, x2 , . . . }, которая по теореме 3.2.6 является линейно независимой. Пусть φ0 (x) = χ0 (x) = 1. Процесс ГрамаШмидта предполагает, что φ1 (x) ищется в следующей форме: φ1 = χ1 + c01 φ0 , (3.89) где c01 находится из условия ортогональности φ0 и φ1 : 0 = hφ0 , φ1 iω = hφ0 , χ1 iω + c01 hφ0 φ0 iω hφ0 , χ1 iω =⇒ c01 = − . hφ0 φ0 iω (3.90) Тогда φ1 (x) имеет вид: φ1 = x − hφ0 , xiω hxφ0 , φ0 iω =x− . hφ0 , φ0 iω hφ0 , φ0 iω (3.91) Для φ2 (x) имеем: φ2 = χ2 + c20 φ0 + c21 φ1 . (3.92) Функция φ2 (x) должна быть ортогональна φ0 (x) и φ1 (x): 0 = hφ0 , φ2 iω = hφ0 , χ2 iω + c20 hφ0 , φ0 iω + c21 hφ0 , φ1 iω , (3.93) 0 = hφ1 , φ2 iω = hφ1 , χ2 iω + c20 hφ1 , φ0 iω + c21 hφ1 , φ1 iω . (3.94) (3.95) Тогда, помня о взаимной ортогональности φ0 и φ1 , находим c20 и c21 : hφ0 , χ2 iω , hφ0 , φ0 iω hφ1 , χ2 iω =− , hφ1 , φ1 iω c20 = − (3.96) c21 (3.97) (3.98) что дает следующее выражение для функции φ2 : φ 2 = χ2 − hφ1 , χ2 iω hφ0 , χ2 iω φ0 − φ1 . hφ0 , φ0 iω hφ1 , φ1 iω 53 (3.99) Продолжая тем же образом вплоть до φk , мы получаем: φ k = χk − k−1 X hφj , χk iω j=0 hφj , φj iω φj . (3.100) Это выражение можно упростить, если заметить, что полином степени k может быть построен как χk = xφk−1 . Тогда φk принимает форму: φk = xφk−1 − k−1 X hφj , xφk−1 iω j=0 = xφk−1 − hφj , φj iω k−1 X hxφj , φk−1 iω j=0 hφj , φj iω φj (3.101) φj . Так как xφj является полиномом степени j + 1, мы имеем hxφj , φk−1 iω = 0 (3.102) для j < k − 2. Тогда для φk получаем: φk = xφk−1 − hxφk−1 , φk−1 iω hxφk−2 , φk−1 iω φk−1 − φk−2 . hφk−1 , φk−1 iω hφk−2 , φk−2 iω (3.103) Многочлены Лежандра могут быть получены различными способами, однако мы рассмотрим их как ортогональную систему полиномов, построенную с помощью процесса ГрамаШмидта. Действительно, для случая ω(x) = 1 и интервала [−1; 1] мы имеем: φ0 (x) = 1 ´1 φ1 (x) = x − ´−1 1 φ2 (x) = φ3 (x) = (3.104) xdx =x dx −1 ´1 3 ! ´1 2 x dx 1 −1 x dx x− ´1 x − −1 = x2 − , ´1 2 3 −1 x dx −1 dx !  ´1 ´ 1 2 2 1   2 1 2 dx x x − 3 dx 1 3 −1 x x − 3 2 x− ´1 x − − −1 ´ 1 x = x3 − x.  2 1 2 2 3 5 dx −1 x dx −1 x − 3 (3.105) (3.106) (3.107) Остальные многочлены Лежандра могут быть получены аналогичным образом. Наконец, мы имеем возможность доказать следующую теорему, которая постулирует, что квадратуры Гаусса могут быть построены, если в качестве узлов выбраны корни соответствующего многочлена Лежандра. 54 Теорема 3.2.8. Пусть x1 , . . . , xn являются корнями полинома Лежандра n-ой степени φn (x), и пусть коэффициенты c1 , . . . , cn определены следующим образом: ˆ ˆ 1 1 li (x)dx = ci = n Y −1 j=1,i6=j −1 x − xj dx. xi − xj (3.108) Тогда, если Pm (x) является полиномом степени m < 2n, то верным является следующее равенство: ˆ 1 n X Pm (x)dx = ci Pm (xi ). (3.109) −1 i=1 Доказательство. Для начала рассмотрим случай m < n. Тогда полином Pm (x) может быть переписан в виде многочлена Лагранжа с нулевым остаточным членом, так как n-ая производная от Pm (x) будет равна нулю. Тогда имеем: Pm (x) = n X Pm (xi )li (x) = i=1 n X n Y Pm (xi ) i=1 j=1,i6=j x − xj . xi − xj (3.110) В таком случае интеграл от Pm (x) имеет вид: ˆ 1 Pm (x)dx = −1 = n X n X  ˆ Pm (xi )  1 n Y −1 j=1,i6=j i=1  x − xj  dx xi − xj (3.111) ci Pm (xi ). i=1 Теперь рассмотрим случай n ≤ m < 2n. Разделим многочлен Pm (x) на многочлен Лежандра φn (x). Тогда классическое деление многочленов столбиком дает: R(x) Pm (x) = Q(x) + φn (x) φn (x) =⇒ Pm (x) = Q(x)φn (x) + R(x), (3.112) где Q(x) – полином степени m − n и R(x) – полином степени обязательно меньшей, чем φn (x). Тогда, учитывая, что m < 2n и соответственно m − n < n мы имеем (см. равенство (3.83) и прилегающие параграфы): ˆ 1 Q(x)φn (x)dx = 0. (3.113) −1 С другой стороны, так как степень многочлена R(x) меньше n, интеграл от него попадает под первый случай этой теоремы, из чего следует: ˆ 1 R(x)dx = −1 n X i=1 55 ci R(xi ). (3.114) В таком случае интеграл от Pm (x) принимает форму: ˆ 1 Pm (x)dx = −1 n X ci R(xi ). (3.115) i=1 Однако вследствие того, что φn (xi ) = 0, мы получаем Pm (xi ) = R(xi ). Тогда финальная форма интеграла имеет вид: ˆ 1 Pm (x)dx = −1 n X ci Pm (xi ). (3.116) i=1 Интегрирование на произвольном интервале [a; b] с помощью квадратуры Гаусса реализуется с помощью замены переменных: x= 1 [(b − a)t + a + b] , 2 (3.117) где x ∈ [a; b] и t ∈ [−1; 1]. Тогда квадратура Гаусса вычисляется следующим образом: ˆ ˆ b 1 f (x)dx = a  f −1 (b − a)t + a + b 2 56  b−a dt. 2 (3.118) Наилучшее приближение До текущего момента мы апроксимировали неизвестные функции или дискретные данные с помощью интерполяции, т.е. требовали, чтобы аппроксимирующая функция проходила через заранее заданные узлы. В случае с интерполяцией полиномами, степень полинома при этом всегда жестко зависит от количества используемых узлов. Увеличение степени, как мы выяснили, часто негативно влияет на качество интерполяции. Более того, зачастую дискретные данные формируются из численного или реального эксперимента и являются зашумленными. В таком случае логичнее было бы найти полином малой степени, который бы наилучшим образом приближался к дискретным данным. В математической статистике эта операция называется регрессией, но мы будем использовать его без статистического контекста, подразумевая исключительно приближение дискретных данных некоторыми кривыми. Очевидно, что подобная идея легко распространяется, например, на класс тригонометрических полиномов. Для примера рассмотрим набор дискретных данных D = {(xi , yi )}ni=1 . В случае линейной регрессии нам необходимо найти такую функцию f (x) = a0 + a1 x, что она будет приближаться к данным D наилучшим образом. Самый очевидный подход состоит в решении следующей оптимизационной задачи: min E∞ (a0 , a1 ) = min max |yi − f (xi )|, a0 ,a1 a0 ,a1 1≤i≤n (4.1) известной под названием минимакс (минимизация максимальной ошибки), и результатом которой является наилучший аппроксимационный полином. Несмотря на свою простоту, эту задачу тяжело решить даже для линейной функции f (x), что делает ее применение нерациональным [TODO: Демьянов и Малоземов]. Другой подход состоит в минимизации суммы абсолютных отклонений: min E1 (a0 , a1 ) = min a0 ,a1 a0 ,a1 n X |yi − f (xi )|. (4.2) i=1 Минимизация функции E1 (a0 , a1 ) сводится к взятию произодных от нее по a0 и a1 и приравнивание их к нулю. Однако функция E1 (a0 , a1 ) не дифференцируема в нуле, что означает, что мы не всегда сможем найти решение. Проблемы, сформулированные выше, обходятся с помощью использования суммы квадратов отклонений, что приводит нас к методу наименьших квадратов. 57 4.1 4.1.1 Метод наименьших квадратов Линейная регрессия в одномерном пространстве Проиллюстрируем метод наименьших квадратов на примере, изложенном выше. Для этого рассмотрим следующую задачу минимизации: min E2 (a0 , a1 ) = min a0 ,a1 a0 ,a1 n X [yi − f (xi )]2 . (4.3) i=1 Выражение для E2 (a0 , a1 ) представляет собой суммы квадратом отклонений. Название «метод наименьших квадратов», очевидно, мотивировано именно этой задачей минимизации. Подстановка функции f (x) = a0 + a1 x в E2 (a0 , a1 ) дает: E2 (a0 , a1 ) = n X [yi − a0 − a1 xi ]2 . (4.4) i=1 Функция E2 (a0 , a1 ) принимает экстремальное значение при таких a0 , a1 , что: ∂E2 =0 ∂a0 =⇒ ∂E2 =0 ∂a1 =⇒ −2 −2 n X i=1 n X (yi − a0 − a1 xi ) = 0, (4.5) xi (yi − a0 − a1 xi ) = 0, (4.6) i=1 что дает систему уравнений относительно a0 и a1 : n n P P   xi = 0,  yi − na0 − a1 i=1 i=1 (4.7) n n n P P P   xi − a1 x2i = 0.  (xi yi ) − a0 i=1 i=1 i=1 Решением системы являются следующие выражения для a0 и a1 : n P (opt) a0 = i=1 x2i n n P i=1 n P i=1 n (opt) a1 = n P x2i  − i=1 xi x2i − (opt) n P (xi yi ) i=1 , 2 n P (4.8) xi i=1 (xi yi ) − n P n P i=1 i=1 n (opt) yi − n P xi i=1 n P n P i=1 2 yi . (4.9) xi i=1 Тогда прямая f (x) = a0 + a1 x наилучшим образом приближается к дискретным данным {(xi , yi )}ni=1 в среднеквадратичном смысле. Однако это не означает, что такое приближение является наилучшим в принципе. Действительно, если мы сравним решение, полученное методом наименьших квадратов и решение, полученное минимаксом, то обнаружим небольшую разницу между ними. 58 2.0 1.5 1.5 a1 a1 2.0 1.0 0.5 0.0 −1.0 1.0 0.5 −0.5 0.0 0.5 0.0 −1.0 1.0 −0.5 a0 0.0 0.5 1.0 a0 Рисунок 4.1 – Контуры поверхностей E∞ (a0 , a1 ) и E2 (a0 , a1 ). Чем цвет контура ближе к красному, тем больше значение ошибки. Чем цвет контура ближе к синему, тем меньше значение ошибки. Красные точки обозначают минимальные значения соответствующих ошибок. Продемонстрируем это на примере. Рисунок 4.1 показывает контуры поверхностей E∞ (a0 , a1 ) и E2 (a0 , a1 ), сформированных при решении задачи приближения функции f (x) = a0 + a1 x к данным, сгенерированным функцией fe(x, ωg ) = x + ωg , где ωg ∼ N (0, σ 2 ) – гауссовский белый шум. Легко заметить, что оптимальные значения соответствуют несовпадающим a0 , a1 . Это несовпадение легко увидеть, если изобразить на графике оптимальные прямые f (x) для обоих случаев, как сделано на рисунке 4.2. 4.1.2 Линейная регрессия в общем случае В многомерном случае линейная регрессия производится с помощью гиперплоскостей. Для перехода к многомерному случаю нам необходимо воспользоваться векторной формой записи задачи оптимизации, что позволит избежать лишних алгебраических выкладок. Итак, мы имеем: min E2 (a) = min (y − Xa)T (y − Xa) , a a (4.10) где X ∈ Rm×(n+1) , a ∈ Rn+1 и y ∈ Rm . Здесь m обозначает число дискретных данных, а n – размерность пространства данных. Строка матрицы X хранит в себе одну многомерную точку данных, при этом первый столбец является столбцом единиц, что и дает размерность матрицы m × (n + 1). В общем виде матрица X может быть представлена следующим 59 1.2 1.0 0.8 y 0.6 0.4 0.2 yi 0.0 −0.2 0.0 , minimax f(x), SoS f(x) 0.2 0.4 0.6 0.8 1.0 x (opt) (opt) Рисунок 4.2 – Оптимальные прямые f (x) = a0 + a1 x, найденные при решении минимакса (красная прямая) и метода наименьших квадратов (зеленая прямая). Дискретные данные, приближение к которым осуществлялось, обозначены синими точками. образом:  1  1 X=  .. . (1) x1 (2) x1 .. . (m) 1 x1 ... ...  (1) xn (2)  xn  ..  , .  (4.11) ... (m) . . . xn где нижние индексы обозначают координаты многомерной точки данных, а верхние индексы номера точек. Продифференцируем функцию E2 (a) относительно a: E2 (a) = y T y − aT X T y − y T Xa + aT X T Xa = y T y − 2aT X T y + aT X T Xa (4.12) ∂E2 = −2X T y + 2X T Xa =⇒ ∂a В справедливости подобного «векторного» дифференцирования можно убедиться, перейдя от матричной формы к суммированию: !2 m m X n m n X X X X E2 (a) = yj2 − 2 ai Xji yj + ai Xji . (4.13) j=1 j=1 i=0 j=1 i=0 Тогда дифференцирование относительно произвольного ak дает: m m n X j=1 j=1 i=0 X X ∂E2 = −2 Xjk yj + 2 Xjk ∂ak 60 ! ai Xji , (4.14) (opt) (opt) (opt) Рисунок 4.3 – Поверхность f (x) = a0 + a1 x1 + a2 x2 (зеленая поверхность), приближенная к дискретным данным {(xi , yi )}ni=1 (синие точки) c помощью метода наименьших квадратов. что при записи в матричном виде дает (4.12). Оптимальное значение вектора a находится с помощью приравнивания производной (4.12) к нулю: − 2X T y + 2X T Xa = 0 −1 T =⇒ a = X T X X y. (4.15) Последнее уравнение известно как нормальное уравнение и широко используется как для нахождения аналитических решений задач, сформулированных с помощью метода наименьших квадратов, так и численных решений (в том случае, когда размерность матрицы X сравнительно мала). Рисунок 4.3 показывает пример приближения двумерной плоскости к дискретным данным, сгенерированным функцией fe(x, ωg ) = x1 +x2 +ωg , где ωg ∼ N (0, σ 2 ) – гауссовский белый шум. 4.1.3 Нелинейная регрессия Метод наименьших квадратов и нормальное уравнение могут быть с тем же успехом использованы для аппроксимации нелинейной функцией многих переменных. Рассмотрим 61 аппроксимирующую функцию f : Rn −→ R, заданную следующим образом: f (a; x) = n X ai φi (x), (4.16) i=0 где x ∈ Rl , φ0 (x) = 1 и φi (x), i = 1, . . . , n в общем случае нелинейные функции. Несложно заметить, что в таком случае задача минимизации (4.3) может быть записана в матричном виде (4.10), где матрица X ∈ Rm×(n+1) определена как:   1 φ1 (x(1) ) . . . φn (x(1) ) 1 φ1 (x(2) ) . . . φn (x(2) )    (4.17) X = . , .. ..   .. . ... . 1 φ1 (x(m) ) . . . φn (x(m) ) где x(i) , i = 1, . . . , m – дискретные многомерные данные, к которым приближается функция f (a; x). Тогда оптимальные значения параметров a определяются с помощью нормального уравнения: −1 T a = XT X X y. (4.18) Подобный метод может также интерпретироваться как линейная многомерная регрессия в пространстве с нелинейно трансформированными координатами. Заметим, что повторное использование нормального уравнения возможно благодаря линейности f (a; x) относительно вектора параметров a, несмотря на то, что функция нелинейна относительно x. В случае, когда f (a; x) нелинейна относительно a, требуется пересчет соответствующих производных, что в общем случае будет приводить к более сложным и, вероятно, нелинейным уравнениям для определения оптимальных a. В качестве примера рассмотрим полиномиальную регрессию в одномерном пространP стве, где f (a; x) = ni=0 ai xi . Тогда матрица X принимает вид:   1 x(1) . . . xn(1) 1 x . . . xn(2)    (2)  X = . (4.19) .. ..  , . . ... .  . 1 x(m) . . . xn(m) Так как X является матрицей Вандермонда, ее определитель всегда отличен от нуля, если среди дискретных данных нет повторяющихся. Это доказывает, что при удовлетворении этого условия нормальное уравнение (4.18) всегда будет иметь единственное и нетривиальное решение. Рисунок 4.4 демонстрирует пример приближения кубического полинома к дискретным данным, сгенерированным функцией fe(x, ωg ) = x3 + x2 + x + ωg , где ωg ∼ N (0, σ 2 ) – гауссовский белый шум. 62 3.0 2.5 2.0 1.5 y 1.0 0.5 0.0 −0.5 yi −1.0 f(x) −1.5 −1.0 −0.5 0.0 0.5 1.0 x (opt) (opt) (opt) (opt) Рисунок 4.4 – Полином f (x) = a0 + a1 x + a2 x2 + a3 x3 (зеленая кривая), приближенный к дискретным данным {(xi , yi )}ni=1 (синие точки) c помощью метода наименьших квадратов. 4.1.4 Метод наименьших квадратов для приближения к непрерывной функции До текущего момента мы рассматривали метод наименьших квадратов для для нахождения оптимального приближения к дискретных данных. Однако тот же метод можно применить и для приближения к некоторой непрерывной функции y(x) на отрезке [a; b]. Для его демонстрации мы рассмотрим одномерный случай. Пусть аппроксимирующая функция задана так же, как и в случае нелинейной регрессии: f (a; x) = n X ai φi (x). (4.20) i=0 Метод наименьших квадратов, сформулированный для дискретного случая в (4.3), в случае приближения к непрерывной функции трансформируется в интеграл от квадрата отклонения: ˆ b min E2 (a) = min [y(x) − f (x)]2 dx a a a #2 (4.21) ˆ b" n X = min y(x) − ai φi (x) dx. a a i=0 Как мы скоро увидим, в качестве системы функций {φi (x)}ni=0 удобно выбрать ортогональную систему. Так как многие системы функций являются ортогональными только с весом, 63 активно используется модифицированный метод, называемый взвешенным методом наименьших квадратов: ˆ ω(x) y(x) − min E2 (a) = min a a " b a n X #2 ai φi (x) dx. (4.22) i=0 Предположим, что {φi (x)}ni=0 является ортогональной системой на [a; b] с весом ω(x). Для нахождения наименьшего значения функции E2 (a) необходимо найти нули производной: " # ˆ b n X ∂E2 ω(x)φk (x) y(x) − = −2 ai φi (x) dx ∂ak a i=0 " # (4.23) ˆ b n X ω(x)φk (x) y(x) − =⇒ ai φi (x) dx = 0. a i=0 Пользуясь свойством оргональности функций, мы получаем: ˆ b  ω(x)y(x)φk (x) − ak ω(x)φ2k (x) dx = 0. (4.24) a Тогда оптимальные значения ak находятся с помощью выражения: ak = 4.2 hy(x), φk (x)iω . hφk (x), φk (x)iω (4.25) Приближение тригонометрическими полиномами Рассмотрим приближение к непрерывной функции y : R −→ R с помощью тригонометрического ряда: f (x) = Sn (x) = a0 + n X (ak cos kx + bk sin kx) k=1 = n X (4.26) (ak cos kx + bk sin kx) , k=0 где ak , bk ∈ R для k = 0, . . . , n и b0 может быть произвольным, так как sin 0 = 0. Оптимизационная задача метода наименьших квадратов в таком случае имеет вид: ˆ π ω(x) y(x) − min E2 (a) = min a a " −π n X #2 (ak cos kx + bk sin kx) dx. (4.27) k=0 Как мы уже доказали в примере 2.7.1, система тригонометрических функций {cos kx, sin kx}ni=0 является ортогональной на [−π; π] с весом ω(x) = 1. Тогда пользуясь выражением (4.25) 64 для оптимальных коэффициентов метода наименьших квадратов, можно легко вывести следующие выражения для оптимальных ak и bk : ˆ π 1 a0 = y(x)dx, (4.28) 2π −π ˆ 1 π y(x) cos kxdx, (4.29) ak = π −π ˆ 1 π bk = y(x) sin kxdx. (4.30) π −π Тригонометрические ряды вида (4.26) часто называют тригонометрическими полиномами. Это название мотивировано экспоненциальной формой тригонометрического ряда. Действительно, рассмотрим формулу Эйлера: eikx = cos kx + i sin kx. (4.31) Тогда домножение на âk ∈ C дает: âk eikx = âk cos kx + iâk sin kx = <(âk ) cos kx + i<(âk ) sin kx + i=(âk ) cos kx − =(âk ) sin kx, (4.32) где <(âk ) и =(âk ) – вещественная и мнимая части âk соответственно. Добавим к обоим частям равенства комплексно сопряженное: âk eikx + â∗k e−ikx = 2<(âk ) cos kx − 2=(âk ) sin kx, (4.33) где комлексно сопряженное число обозначено через ∗. Тогда суммирование обоих частей равенства по k = 0, . . . , n приводит к выражению: n  X ikx âk e + â∗k e−ikx  = n X âk e k=−n k=0 ikx = n X [2<(âk ) cos kx − 2=(âk ) sin kx] , (4.34) k=0 где â−k = â∗k . Таким образом мы получили экспоненциальную форму тригонометрического ряда (4.26), где коэффициенты связаны друг с другом следующим образом: ak = 2<(âk ), (4.35) bk = −2=(âk ), (4.36) где k = 0, . . . , n. Для того, чтобы перейти к форме полинома, обозначим z = eix . Тогда имеем: n n X X ikx âk e = âk z k , (4.37) k=−n k=−n zn что при домножении на дает комплекснозначный полином степени 2n, по конвенции называемый тригонометрическим полиномом n-й степени: n X Qn (z) = z n k=−n 65 âk z k . (4.38) 4.2.1 Дискретное приближение тригонометрическими полиномами Тригонометрические полиномы могут быть использованы для приближения к дисj кретным данным. Пусть дано 2m равномерно распределенных узлов xj = −π + m π и соот2m−1 ветствующие дискретные значения {yj }j=0 . Тогда метод наименьших квадратов формулируется следующим образом: min a 2m−1 X " yj − j=0 #2 n X (ak cos kxj + bk sin kxj ) . (4.39) k=0 Чтобы найти решение этой оптимизационной задачи, нам необходимо доказать ортогональP ность тригонометрической системы функций относительно операции суммирования 2m−1 j=0 . Для этого докажем следующую лемму. Лемма 4.2.1. Пусть r ∈ Z и r mod 2m 6= 0. Тогда 2m−1 X cos rxj = 0, (4.40) sin rxj = 0. (4.41) cos2 rxj = m, (4.42) sin2 rxj = m. (4.43) j=0 2m−1 X j=0 Более того, если r mod m 6= 0, то 2m−1 X j=0 2m−1 X j=0 Доказательство. Для доказательства первых двух равенств достаточно доказать, что в ноль обращается следующее выражение: 2m−1 X eirxj = j=0 2m−1 X cos rxj + i j=0 2m−1 X sin rxj . (4.44) j=0 Тогда имеем: 2m−1 X j=0 eirxj = 2m−1 X j eir(−π+ m π) j=0 = e−irπ 2m−1 X j=0 66 (4.45) j ir m π e . Можно заметить, что данная сумма представляет собой сумму членов геометрической прогрессии. Тогда получаем: 2m−1 X r 1 − ei m (2m)π r 1 − ei m π j eir m π = j=0 (4.46) 1 − e2irπ = r 1 − ei m π Легко проверить, что e2irπ = 1 и числитель, следователь, обращается в ноль. Однако для r mod 2m = 0 в ноль обращается и знаменатель, что приводит к неопределенности 0/0. Таким образом мы получаем 2m−1 X eirxj = 0 j=0 =⇒ 2m−1 X cos rxj = 0, (4.47) j=0 =⇒ 2m−1 X sin rxj = 0, j=0 для r mod 2m 6= 0. Теперь докажем справедливость второй пары неравенств: 2m−1 X j=0 2m−1 1 X (1 + cos 2rxj ) cos rxj = 2 2 j=0 2m−1 1 X cos 2rxj =m+ 2 (4.48) j=0 = m, где r mod m 6= 0. Аналогично доказывается и второе равенство: 2m−1 X j=0 sin2 rxj = 2m−1 1 X (1 − cos 2rxj ) 2 j=0 = m, где r mod m 6= 0. Рассмотренная лемма позволяет легко доказать теорему об ортогональности. 67 (4.49) Теорема 4.2.1. Пусть φk (xj ) = cos kxj и ψl (xj ) = sin lxj , где k = 0, . . . , n и l = 1, . . . , n. Тогда верны следующие равенства: 2m−1 X φk (xj )ψl (xj ) = 0, при ∀k, l, (4.50) j=0 2m−1 X φk (xj )φl (xj ) = 2m−1 X j=0 ψk (xj )ψl (xj ) = 0, при k 6= l, (4.51) j=0 2m−1 X φ2k (xj ) = j=0 2m−1 X ψk2 (xj ) = m, при любом k 6= 0, (4.52) j=0 2m−1 X φ2k (xj ) = 2m, при k = 0. (4.53) j=0 Доказательство. Первые два равенства доказываются, используя тригонометрические тождества 1 [sin(k + l)xj + sin(k − l)xj ] 2 1 cos kxj cos lxj = [cos(k + l)xj + cos(k − l)xj ] 2 1 sin kxj sin lxj = [cos(k − l)xj − sin(k + l)xj ] 2 cos kxj sin lxj = (4.54) (4.55) (4.56) (4.57) и лемму 4.2.1. Третье равенство напрямую следует из леммы 4.2.1. Четвертое равенство очевидно, так как: 2m−1 2m−1 X X 2 φ0 (xj ) = 1 = 2m. (4.58) j=0 j=0 Теперь мы можем найти оптимальные значения коэффициентов тригонометрического ряда в оптимизационной задаче (4.39). Производная суммы квадратов отклонений по ap , p = 0, . . . , n имеет вид: " # 2m−1 n X X ∂E2 = −2 cos pxj yj − (ak cos kxj + bk sin kxj ) . (4.59) ∂ap j=0 k=0 68 15 10 y 5 −5 xj , f(xj ) f(x) = 2x 2 − 9 S2 (x) −10 −4 −3 −2 −1 1 x 2 3 4 Рисунок 4.5 – Приближение тригонометрическим полиномом второй степени (зеленая линия) к дискретным данных (синие точки), сгенерированными функцией f (x) = 2x2 − 9 (синяя линия) для шести узлов. Приравнивая к нулю и используя теорему 4.2.1, получаем: " # 2m−1 n X X cos pxj yj − (ak cos kxj + bk sin kxj ) = 0 j=0 =⇒ a0 = k=0 1 2m 2m−1 X yj cos pxj , (4.60) j=0 2m−1 1 X yj cos pxj , =⇒ ap = m p = 1, . . . , n. j=0 Аналогично получаем оптимальные значения для bk : 2m−1 1 X bp = yj sin pxj , m p = 1, . . . , n. (4.61) j=0 Пример дискретного приближения тригонометрическим полиномом второй степени с помощью МНК можно наблюдать на рисунке ??. В данном случае узлы {(xj , yj )}5j=0 были сгенерированы функцией f (x) = 2x2 − 9, обладающей четностью: x −→ −x. 4.2.2 Дискретное преобразование Фурье До текущего момента мы рассматривали наилучшее (в среднеквадратическом смысле) приближение тригометрического полинома к некоторым непрерывным или дискрет69 ным данным. Однако более широкое распространение получила тригонометрическая интерполяция по равномерно распределенным узлам, т.е. интерполяции дискретных данных тригонометрическими полиномами. Как мы уже знаем из (4.37), тригонометрический ряд представляет из себя полином степени n с 2n+1 неизвестными вещественными коэффициенj тами. При 2m дискретных узлов {(xj , yj )}2m−1 j=0 , где xj = −π + m π, мы всегда можем найти единственный интерполяционный тригонометрический полином степени m с некоторыми ограничениями, которые будут обсуждаться позже. Действительно, рассмотрим следующий тригонометрический полином в экспоненциальной форме: m−1 X âk eikx (4.62) k=−m и потребуем, чтобы он согласовывался с узлами (xj , yj ): m−1 X âk eikxj = yj k=−m m−1 X =⇒ (4.63) âk e ikxj = yj . k=−m Домножим обе стороны равенства на e−ilxj и просуммируем результат по индексуj: m−1 X âk 2m−1 X k=−m ei(k−l)xj = 2m−1 X yj e−ilxj . (4.64) j=0 j=0 Благодаря лемме 4.2.1 мы знаем, что: 2m−1 X j=0 i(k−l)xj e ( 0, k 6= l = 2m, k = l (4.65) Тогда мы сразу получаем выражение для коэффициентов âk , составляющее дискретное преобразование Фурье: 2m−1 1 X âk = yj e−ikxj . (4.66) 2m j=0 Заметим, что в тригонометрическом интерполянте вы выбрали несимметричное суммирование относительно k: m−1 X âk eikx , (4.67) k=−m что приводит к несбалансированности комплексного члена â−m e−imx . Можно заметить, что 70 для â−m мы имеем: 2m−1 2m−1 (−1)−m X (−1)m X yj eijπ = (−1)j yj 2m 2m â−m = j=0 j=0 (4.68) =⇒ â−m ∈ R, =⇒ â−m = âm . Так как yj ∈ R, тригонометрический полином должен отображать R в R. Это означает, что в члене â−m e−imx требуется обнулить мнимую часть. В таком случае вследствие вещественности â−m получаем окончательную форму тригонометрического интерполянта: m−1 X k=−m 4.2.3 ikx âk e = m−1 X ikx + â−m <(e âk e −imx m−1 X )= k=−m+1 âk eikx + âm cos mx. k=−m+1 Быстрое преобразование Фурье Дискретное преобразование Фурье в представленной форме требует 2m комплексных умножений и 2m − 1 комплексных сложений для вычисления одного коэффициента ak . Так как всего имеется 2m коэффициентов, алгоритмическая сложность дискретного преобразование Фурье имеет форму O(m2 ). Подобная сложность ограничивала масштабное использование дискретного преобразования Фурье вплоть до тех пор, пока не был открыт алгоритм быстрого преобразования Фурье (БПФ), имеющий сложность O(m log2 m). Мы рассмотрим его в той форме, в которой он был представлен Кули и Тьюки. Для начала запишем коэффициент âk в следующей форме: âk = 2m−1 2m−1 kj ikjπ (−1)k X 1 X yj eikπ e−i m π = yj e− m . 2m 2m j=0 (4.69) j=0 Алгоритм Кули–Тьюки вычисляет значение суммы, которую мы обозначим как: Ak = 2m−1 X yj e− ikjπ m k = 0, . . . 2m − 1. , (4.70) j=0 Разделим Ak на две части с четными и нечетными индексами соответственно: Ak = m−1 X y2j e − 2jikπ m j=0 = m−1 X + m−1 X y2j+1 e− (2j+1)ikπ m j=0 y2j e − 2jikπ m +e − ikπ m j=0 m−1 X j=0 71 (4.71) − 2jikπ m y2j+1 e . Обозначим полученные суммы Ek и Ok : m−1 X Ek = y2j e− 2jikπ m , (4.72) j=0 m−1 X Ok = y2j+1 e− 2jikπ m . (4.73) j=0 Заметим, что Ek и Ok являются периодическими относительно k и периода m: Ek±m = m−1 X y2j e− 2ji(k±m)π m = e∓2jiπ m−1 X j=0 Ok±m = y2j e− 2jikπ m = Ek , (4.74) 2jikπ m (4.75) j=0 m−1 X y2j+1 e− 2ji(k±m)π m m−1 X = e∓2jiπ j=0 y2j+1 e− = Ok . j=0 Это свойство позволяет посчитать Ek и Ok только для k = 0, . . . , m, так как Ek и Ok для k = m, . . . , 2m − 1 будут иметь те же значения. Тогда Ak для k = 0, . . . , 2m высчитывается следующим образом: Ak = Ek + e− Ak+m = Ek + e− ikπ m Ok , i(k+m)π m k = 0, . . . , m Ok = Ek − e− ikπ m (4.76) Ok , k = 0, . . . , m. (4.77) Так как Ek и Ok так же могут быть восприняты как БПФ на более грубых сетках, этот алгоритм рекурсивно применяется и к ним, что и замыкает в конечном итоге алгоритм Кули–Тьюки. Ясно, что в приведенном изложении алгоритма предполагается, что m = 2m̃ , m̃ ∈ N. Рассмотрим в качестве примера развернутый рекурсивный алгоритм для 2m = 8. Тогда имеем: Ak = 7 X yj e− ijkπ 4 j=0 = 3 X y2j e− ijkπ 2 + e− ikπ 4 j=0 = (1) Ek 3 X y2j e− (4.78) ijkπ 2 j=0 − ikπ 4 +e (1) Ok . (1) (1) На этом этапе нам необходимо рассчитать Ek и Ok только для k = 0, . . . , 4. Для удобства введем индекс k (1) = 0, . . . , 4 и рекурсивно применим алгоритм разделения на четные и (1) (1) нечетные индексы для Ek и Ok : (1) Ek(1) = 3 X y2j e (1) π − ijk 2 = j=0 (1) Ok(1) = 3 X j=0 1 X −ijk(1) π y4j e +e (1) π − ik 2 y2j+1 e (1) π − ijk 2 = y4j+2 e−ijk (1) π (E,2) = Ek(1) + e− ik(1) π 2 (E,2) Ok(1) , j=0 j=0 1 X 1 X y4j+1 e −ijk(1) π +e (1) π − ik 2 1 X j=0 j=0 72 y4j+3 e−ijk (1) π (O,2) = Ek(1) + e− ik(1) π 2 (O,2) Ok(1) . (E,2) (E,2) (O,2) (O,2) Наконец, для полученных выражений Ek(1) , Ok(1) , Ek(1) и Ok(1) нам достаточно рассмотреть индексы k (1) = 0, 1, 2. Тогда, введя новый индекс k (2) = 0, 1, 2, получаем: (E,2) Ek(2) = 1 X y4j e−ijk (2) π (2) = y0 + (−1)k y4 , (4.79) j=0 (E,2) Ok(2) = 1 X y4j+2 e−ijk (2) π = y2 + (−1)k y6 , (2) y4j+1 e−ijk (2) π = y1 + (−1)k y5 , y4j+3 e−ijk (2) π = y3 + (−1)k y7 . (4.80) j=0 (O,2) Ek(2) = 1 X (2) (4.81) j=0 (O,2) Ok(2) = 1 X (2) (4.82) j=0 (4.83) Рассчитав все значения по рекурсии вверх, мы получаем искомый результат. 73 Численные методы линейной алгебры Зачастую конечным результатом применения тех или иных сложных численных методов решения дифференциальных или иных уравнений является система линейных алгебраических уравнений (СЛАУ), матричная форма которой имеет вид:      a11 . . . a1n x1 b1  .. ..   ..  =  ..  (5.1)  . .  .   .  an1 . . . ann xn bn или кратко: Ax = b, (5.2) где A ∈ Rn×n , x ∈ Rn и b ∈ Rn Так как в сложных численных методах решение СЛАУ после некоторых простых манипуляций дает полное численное решение задачи, очевидна необходимость нахождения оптимальных методов решения СЛАУ. Глобально большинство методов решения СЛАУ можно разделить на две группы: • прямые; • итерационные. Прямые методы позволяют найти точное решение СЛАУ (5.2), в то время как итерационные методы рассчитывают такое x(k) , что Ax(k) − b → 0 при k → ∞. Прямые методы обычно используются для СЛАУ малой размерности, в то время как для СЛАУ большой размерности используют итерационные методы. Разнообразие как прямых, так и итерационных методов связано с разнообразием особенностей матриц, составляющих СЛАУ. Так, например, если матрица является положительно определенной, то из класса прямых методов логично выбрать разложение Холецкого. 5.1 5.1.1 Прямые методы Метод Гаусса (метод последовательного исключения) Метод Гаусса является базовым методом решения СЛАУ и состоит в приведении матрицы A к треугольному виду с помощью элементарных преобразований, после чего решение 74 x находится сравнительно легко. Рассмотрим следующую расширенную матрицу:   a11 a12 . . . a1n b1  a21 a22 . . . a2n b2    Ã = [A, b] =  . ..  . .. .. ..  .. . . . . (5.3) an1 an2 . . . ann bn Для того, чтобы привести матрицу A к треугольному виду, необходимо последовательно обнулять элементы, находящиеся под главной диагональю. Так, если из строк i = 2, 3, . . . , n i1 отнять первую строку, домноженную на aa11 , то все элементы, расположенные под a11 будут равны нулю. Мы обозначим это элементарное преобразование следующим образом: (i) −→ (i) − ai1 (1), a11 i = 2, . . . , n (5.4) где (i) обозначает i-ю строку. Тогда, применив операцию к расширенной матрицу, имеем:   a11 a12 . . . a1n b1  (1)  (1) (1)  0 a22 . . . a2n b2  Ã =  (5.5) .. .. .. ..   .. , . . . .   . (1) (1) i1 где aij = aij − aa11 a1j и bi (1) an2 (1) . . . ann (1) bn i1 = bi − aa11 b1 . Аналогично, для обнуления элементов, находящих- (1) ся под диагональным элементом a22 , нам необходимо применить следующее элементарное преобразование: ai2 (i) −→ (i) − (1) (2), i = 3, . . . , n (5.6) a22 Применяя подобные преобразования каскадно вплоть до последнего диагольного элемента, мы получаем верхнюю треугольную матрицу для A:   a11 a12 . . . ... a1n b1 (1) (1)  0 a(1) . . . ... a2n b2    22  . ..  .. .. .. ..  . (5.7) Ã =  . . .  . . . .  (n−2) (n−2) (n−2)  0 . . . an−1,n−1 an−1,n bn  0  ... (n−1) ann (n−1) bn Этот этап метода Гаусса называется прямым ходом. Очевидно, что тот же метод можно использовать для получения нижней треугольной матрицы. Можно заметить, что решение СЛАУ, в которой матрица имеет треугольную форму, легко находится с помощью так 75 называемого обратного хода метода Гаусса: (n−1) xn = bn , (n−1) ann (n−2) xn−1 = (n−2) bn−1 − an−1,n xn (n−2) , an−1,n−1 ... x1 = b1 − Pn i=2 a1i xi a11 . Рассчитаем количество операций, необходимых для нахождения решения СЛАУ методом Гаусса. Так как вычислительное время, потребное для операций умножения и деления, сильно больше, чем вычислительное время сложения и вычитания, мы сконцентрируемся на расчете числа умножений и делений. В первую очередь заметим, что на k-й итерации из всего (n − 1) итераций прямого хода требуется (n − k) делений для вычисления мно(k) жителя mik = aik (k) akk . Затем требуется для (n − k) строк требуется произвести (n − k + 1) перемножений, т.е. суммарно (n − k)(n − k + 1). Таким образом, на k-й итерации мы имеем n − k + (n − k)(n − k + 1) = (n − k)(n − k + 2) умножений и делений. Суммируя по k = 1, . . . , n − 1, получаем общее число умножений и делений в прямом ходе метода Гаусса: n−1 X n−1 X k=1 k=1 n−1 X (n − k)(n − k + 2) = = (n − k)2 + 2 n−1 X (n − k) k=1 k2 + 2 n−1 X k k=1 k=1 (5.8) (n − 1)n(2n − 1) (n − 1)n +2 6 2 3 2 2n + 3n − 5n = . 6 В обратном ходе метода Гаусса для нахождения xk требуется n − k перемножений и одно деление, что в сумме дает: = n X (n − k + 1) = k=1 n X k k=1 n(n + 1) (5.9) 2 n2 + n = . 2 Наконец, суммарно требуется следующее число операций для нахождения решения методом Гаусса: = 2n3 + 3n2 − 5n n2 + n + = O(n3 ). 6 2 76 (5.10) 5.1.2 Метод Гаусса с выбором главного элемента В случае, когда на k-й итерации алгоритма диагональный элемент оказывается равен (k) нулю, мы не имеем возможности рассчитать множитель mik = (k) aik (k) akk . Эта проблема решается (k) соответствующим переставлением строк. Если элемент akk мал по сравнению с aik , множитель mik будет иметь большое значение, что приводит к усилению погрешности округления в результате ряда последующих умножений на mik . Более того, деление на малый элемент (k) akk происходит также во время обратного года Гаусса и усиливает накопленные погрешности в числителе. Простейший способ избежать подобного поведения состоит в перестановке строк матрицы так, что диагональным элементом становится наибольший по модулю элемент k-го столбца: (k) (k) |akk | = max |aik |. (5.11) k≤i≤n Такой подход называется частичным выбором главного элемента. Логичным развитием является перестановка строк и столбцов так, что диагональным элементом становится наи(k) больший по модулю элемент |aij |, где k ≤ i ≤ n и k ≤ j ≤ n: (k) (k) |akk | = max |aij |. k≤i,j≤n (5.12) Такой подход именуется полным выбором главного элемента. Легко убедиться, что полный выбор главного элемента требует суммарно O(n3 ) сравнений и таким образом рекомендуется к использованию только тогда, когда решаемая задача особенно чувствительна к погрешности округления. 5.1.3 LU-разложение Предположим, что матрица A может быть разложена в нижнюю и верхнюю треугольные матрицы: A = LU . (5.13) Такое разложение называется LU-разложение. В таком случае система линейных уравнений Ax = b решается в два шага. Обозначив вектор y как y = U x, мы находим его как решение уравнения: Ly = b. (5.14) Вектор x тогда является решением уравнения: U x = y. (5.15) Каждый из шагов требует O(n2 ) операций. Таким образом, один раз разложив матрицу A в нижнюю и верхнюю треугольные матрицы, мы можем находить решение x для различных b в O(n2 ) шагов. LU-разложение связано с прямым ходом метода Гаусса и соответственно требует O(n3 ) операций. 77 Получим явные выражения для матриц L и U . Пусть перед k-й итерацией прямого хода метода Гаусса матрица A находится в форме A(k) . Тогда k-я итерация эквивалентна домножению матрицы A(k) и вектора b(k) слева на матрицу M (k) , имеющую вид:   1 0 ... ... ... ... ... 0 ..   .. .. . . 0 . . ..  .. . ... ...  . . . . ..  .. .. .  . . . . (k) M = . . (5.16) .. ..  .. ..  ..  . . . −m .   k+1,k . .. .. . . . . ..   .. . . . . .    . .. .. .. . . . .  .. . . 0 . . . 0 ... 0 −mnk 0 ... 0 1 Верхняя треугольная матрица, получающаяся в результате обратного хода метода Гаусса, тогда выражается следующим образом: A(n) = M (n−1) · · · M (1) A. (5.17) В контексте LU-разложения мы таким образом получаем матрицу U = A(n) : U = M (n−1) · · · M (1) A. Матрица L в таком случае может быть получена следующим образом:  −1 A = M (n−1) · · · M (1) U −1 −1   =⇒ A = M (1) · · · M (n−1) U −1 −1   =⇒ L = M (1) · · · M (n−1) . (5.18) (5.19) Явные выражения для обратных матриц могут быть получены, если мы заметим, что опеik ik (k), i = k+1, . . . , n, есть операция (i) −→ (i)+ a(1) (k), i = рация, обратная (i) −→ (i)− a(1) akk akk  −1 k + 1, . . . , n. Тогда обратная матрица M (k) имеет вид:   1 0 ... ... ... ... ... 0 ..   .. .. . . 0 . .  . .. . ... ... ..  . .   . . . . .  −1 .. .. ..  .   (5.20) M (k) = L(k) =  . . . . . .  .. .. m .. .. ..    k+1,k . .. .. . . . . ..   .. . . . . .   .  .. .. .. . . . .  .. . . 0 . . . 0 ... 0 mnk 0 ... 0 1 78 Легко убедиться, что перемножение таких матриц  1   m21 L = L(1) · · · L(n−1) =   ..  . mn1 дает: ... .. . .. . 1 .. . . . . mn,n−1  ..  . .  0 1 (5.21) В данном выводе LU-разложения мы не предполагали перестановок строк, которые зачастую являются необходимыми. Подобные перестановки можно учесть, используя матрицу перестановки. Матрица перестановки P образуется с помощью перестановки строк единичной матрицы E. Несложно проверить, что при умножении такой матрицы слева на матрицу A происходит та же перестановка строк, что использовалась при построении матрицы P из единичной матрицы. При умножении матрицы перестановки справа на матрицу A происходит перестановка столбцов. Пусть мы имеем матрицу необходимых перестановок P . Тогда мы можем найти LU-разложение для матрицы: P A = LU , (5.22) и найти решение матричного уравнения: P Ax = P b. 5.1.4 (5.23) Матрицы с диагональным преобладанием Матрица A обладает свойством диагольного преобладания, если |aii | ≥ n X |aij |, i = 1, . . . , n. (5.24) j=1 i6=j Для матрицы со строгим диагональным преобладанием верны соответствующие строгие неравенства: n X |aii | > |aij |, i = 1, . . . , n. (5.25) j=1 i6=j Матрицы со строгим диагональным преобладанием примечательны тем, что они всегда являются невырожденными. Более того, метод Гаусса может быть использован для них без перестановок строк и столбцов и является вычислительно устойчивым. Теорема 5.1.1. Матрица A со строгим диагональным преобладанием является невырожденной. Доказательство. Рассмотрим доказательство от обратного. Пусть матрица A является вырожденной. Это означает, что уравнение Ax = 0 79 (5.26) имеет нетривиальное решение. Пусть k – индекс, для которого верно xk = max |xj |. (5.27) 1≤j≤n Тогда имеем: X akj xj = 0 1≤j≤n =⇒ akk xk = − X akj xj . (5.28) 1≤j≤n k6=j В соответствии с неравенством треугольника имеем: X |akj ||xj |, |akk ||xk | ≤ (5.29) 1≤j≤n k6=j что дает X |akk | ≤ |akj | 1≤j≤n k6=j X ≤ |xj | , |xk | (5.30) |akj |, 1≤j≤n k6=j что противоречит свойству строгого диагонального преобладания. 5.1.5 Положительно определенные матрицы Матрица A называется положительно определенной, если она симметричная, и верным является неравенство xT Ax > 0 для любого вектора x 6= 0 подходящей размерности. Легко проверить, что выражение xT Ax имеет вид: T x Ax = n X n X aij xi xj . (5.31) i=1 j=1 Положительно определенные матрицы рядом полезных свойств, которые мы докажем в следующей теореме. Теорема 5.1.2. Пусть A – положительно определенная матрица. Тогда верно следующее: 1. существует A−1 ; 2. aii > 0, i = 1, . . . , n; 3. max1≤i≤n |aii | ≥ max1≤k,j≤n |akj |; 80 4. aii ajj > a2ij , i 6= j. Доказательство. Первый пункт доказывается через определение положительно определенной матрицы. Если Ax = 0, то верно и xT Ax = 0. По определению это возможно только в том случае, когда x = 0. Соответственно Ax = 0 имеет только тривиальное решение, что эквивалентно существованию обратной матрицы для A. Второй пункт доказывается через введение ненулевого вектора x(i) для i = 1, . . . , n: ( (i) xi = 1, (5.32) (i) xj = 0, при j 6= i. По определению имеем:  x(i) T Ax(i) > 0  T  =⇒ x(i) Ax(i)  a1i T  a2i     = x(i)  .  = aii > 0.  ..  (5.33) ani Схожим образом доказывается и третий пункт. Определим z (j,k) как:  (j,k) = 1,  zj (j,k) zk = −1,   (j,k) zk = 0, при i 6= j, i 6= k. (5.34) Тогда имеем:   z (j,k) T Az (j,k) a1j T  a2j   = z (j,k)   anj  − a1k − a2k    = ajj − ajk − (akj − akk ) > 0. ..  . (5.35) − ank В силу симметричности матрицы получаем: akj < ajj + akk . 2 (5.36) Теперь определим x(j,k) как:  (j,k) = 1,  xj (j,k) xk = 1,   (j,k) xk = 0, при i 6= j, i 6= k. 81 (5.37) Аналогичным образом получаем:   x(j,k) T Ax(j,k) a1j  T  a2j  = x(j,k)   anj  + a1k + a2k    = ajj + ajk + akj + akk > 0, ..  . + ank из чего следует: − akj < Иными словами, мы имеем: |akj | < Несложно заметить, что: (5.38) ajj + akk . 2 ajj + akk . 2 (5.39) (5.40) ajj + akk ≤ max |aii |, 1≤i≤n 2 (5.41) max |aii | ≥ max |akj |. (5.42) что в результате дает: 1≤i≤n 1≤k,j≤n Последний пункт доказывается через модификацию вектора x(j,k) :  (j,k) = α,  xj (j,k) xk = 1,   (j,k) xk = 0, при i 6= j, i 6= k. (5.43) Тогда получаем:   x(j,k) T Ax(j,k)  αa1j + a1k T  αa2j + a2k     = x(j,k)   = α(αajj + ajk ) + αakj + akk > 0, ..   . αanj + ank (5.44) После упрощений имеем: ajj α2 + 2akj α + akk > 0. (5.45) Это неравенство выполняется, когда дискриминант меньше нуля: D = 4a2kj − 4akk ajj < 0, (5.46) akk ajj > a2kj . (5.47) из чего следует: 82 Особенностью положительно определенных матриц является тот факт, что метод Гаусса для них является устойчивым с вычислительной точки зрения и не требует перестановки строк. Более того, для положительно определенных матриц существует два специальных вида разложений – LDLT и LLT разложения. Разложение вида LDLT существует также для симметричных матриц. Для случая положительно определенных матриц мы сформулируем эти разложения в виде двух теорем без доказательства. Теорема 5.1.3. Матрица A является положительно определенной тогда и только тогда, когда существует разложение A = LDLT , где L – нижняя треугольная матрица с единицами на диагонали, D – диагональная матрица с положительными элементами. В качестве примера LDLT -разложения рассмотрим положительно определенную матрицу размерности 3 × 3:       a11 a21 a31 1 0 0 d1 0 0 1 l21 l31 a21 a22 a32  = l21 1 0  0 d2 0  0 1 l32  a31 a32 a33 l31 l32 1 0 0 d3 0 0 1    1 0 0 d1 d1 l21 d1 l31 d2 d2 l32  = l21 1 0  0 . (5.48) l31 l32 1 d3   d1 d1 l21 d1 l31 2 +d d1 l21 d1 l21 l31 + d2 l32  = d1 l21 2 2 + d l2 + d d1 l31 d1 l21 l31 + d2 l32 d1 l31 2 32 3 Тогда неизвестные элемента матриц вычисляются следующим образом: d1 = a11 , a21 l21 = , d1 a31 , l31 = d1 2 d2 = a22 − d1 l21 , 1 l32 = (a32 − d1 l21 l31 ) , d2 2 2 d3 = a33 − d1 l31 − d2 l32 . (5.49) (5.50) (5.51) (5.52) (5.53) (5.54) Теорема 5.1.4. Матрица A является положительно определенной тогда и только тогда, когда существует разложение A = LLT , называемое разложением Холецкого, где L – нижняя треугольная матрица с ненулевыми элементами на диагонали. T Из LDL можно легко получить разложение Холецкого, если разложить √ -разложения √ D как D = D D. Тогда имеем:  √   √ T √ √ LDLT = L D DLT = L D L D = L̃L̃T . 83 (5.55) В очередной раз воспользуемся положительно определенной матрицей размерности 3 × 3 для демонстрации разложения Холецкого:      l11 l21 l31 l11 0 a11 a21 a31 a21 a22 a32  = l21 l22 0   0 l22 l32  0 l33 l31 l32 l33 a31 a32 a33 (5.56)  2 . l11 l11 l21 l11 l31 2 + l2 l21 l21 l31 + l22 l32  = l11 l21 22 2 + l2 + l2 l11 l31 l21 l31 + l22 l32 l31 32 33 Неизвестные элементы матрицы L тогда вычисляются следующим образом: l11 = l21 l31 l22 a11 , a21 = , l11 a31 = , l q11 2 , = a22 − l21 (5.57) (5.58) (5.59) (5.60) 1 (a32 − l21 l31 ) , l22 q 2 − l2 . = a33 − l31 32 l32 = l33 √ (5.61) (5.62) Несложно убедиться, что справедливы следующие общие формулы для матрицы произвольной размерности n × n: v u i−1 X u 2, lii = taii − lij i = 1, . . . , n (5.63) j=1 1 lij = ljj 5.1.6 aij − j−1 X ! lik ljk , j < i. (5.64) k=1 Ленточные матрицы В ряде численных методов результирующая матрица часто является разреженной, то есть обладает преимущественно нулевыми элементами. Одним из важнейших частных случаев разреженных матриц являются ленточные матрицы. Определение 5.1.1. Квадратная матрица A ∈ Rn×n называется ленточной, если существуют такие p, q ∈ Z, где 1 < p, q < n, что j − i ≥ p =⇒ aij = 0 и i − j ≥ q =⇒ aij = 0. Ширина ленты при этом определяется как w = p + q − 1. В приведенном определении p обозначает число ненулевых диагоналей над главной диагональю (включая ее), в то время как q обозначает число ненулевых диагоналей под 84 главной диагональю (включая ее). Частным случаем ленточной матрицы является трехдиагональная матрица, возникающая, например, при выводе разрещающих уравнений кубического сплайна:   a11 a12 0 . . . ... ... ..  .  a21 a22 a23 . . .   ..  ..   . .   0 a32 a23 a34  . ..  .. .. .. .. ..  A= (5.65) . . . . . . .  ..  .  .. .. .. ..  .. . . . . 0     .  ..  .. . an−1,n−2 an−1,n−1 an−1,n  0 ... ... ... an,n−1 ann Рассмотрим специальный метод решения СЛАУ, имеющих трехдиагональную матрицу – метод прогонки. Пусть мы имеем следующее матричное уравнение:       a11 a12 0 . . . ... ... b1 ..  x1 ..  . a21 a22 a23 .   x2   b2       ..  ..   x3   b3   . .   0 a32 a23 a34     ..   ..   . ..  .. .. .. .. ..    .    (5.66) . . . . . .  .  =  . ,  .    .    . . . . . . . .   ..    .. .. .. .. 0   .   .     .    xn−1 bn−1  ..  .. . an−1,n−2 an−1,n−1 an−1,n  xn bn 0 ... ... ... an,n−1 ann где каждая строка эквивалентна рекуррентному соотношению вида: ai,i−1 xi−1 + aii xi + ai,i+1 xi+1 = bi . (5.67) Очевидно, что методом последовательного исключения можно привести такую СЛАУ к верхней треугольной форме:      b̃1 x1 ã11 ã12 0 . . . ...  x2   b̃2   ..      0 ã22 ã23 . . .  .   ..  .   .   .   .. ..   .. .. .. ..   .   .  . . . . .    . .   .  =  .  . (5.68)  ..  .   .  . . . . . .  .  .   .  . . .    ..   ..    ..  ..    . ãn−1,n−1 ãn−1,n    . xn−1  b̃n−1  0 ... ... ... ãnn xn b̃n Тогда решение для xi−1 может быть выражено через xi : xi−1 = b̃i−1 − ãi−1,i xi , ãi−1,i−1 85 (5.69) что задает выражение для обратного хода метода Гаусса. Вместо явного вывода неизвестных коэффициентов, мы построим рекуррентное соотношение, позволяющее рекурсивно найти нужные коэффициенты. Для упрощения записи переопределим коэффициенты: xi−1 = γi xi + βi . (5.70) ai,i−1 (γi xi + βi ) + aii xi + ai,i+1 xi+1 = bi −ai,i+1 bi − ai,i−1 βi =⇒ xi = xi+1 + . ai,i−1 γi + aii ai,i−1 γi + aii (5.71) Тогда подстановка в (5.67) дает: Сравнив полученное выражение с (5.70), получаем рекуррентные соотношения для определения γi и βi : −ai,i+1 , ai,i−1 γi + aii bi − ai,i−1 βi = . ai,i−1 γi + aii γi+1 = (5.72) βi+1 (5.73) Последовательно вычислив все коэффициенты γi и βi , решение СЛАУ находится с помощью обратного хода метода Гаусса по формуле (5.70). Для завершения построения метода прогонки достаточно найти выражения для коэффициентов γ1 , β1 и неизвестной xn . Рассмотрим уравнение для x1 : a11 x1 + a12 x2 = b1 b1 a12 x2 + . =⇒ x1 = − a11 a11 (5.74) Тогда сравнение с (5.71) дает: −a12 a12 =− , a10 γ1 + a11 a11 b1 − a10 β1 b1 = , a10 γ1 + a11 a11 (5.75) (5.76) из чего следует γ1 = β1 = 0 (или, эквивалентно, a10 = 0). Для определения xn рассмотрим уравнение, соответствующее последней строке матрицы: an,n−1 xn−1 + ann xn = bn an,n−1 bn =⇒ xn = − xn−1 + . ann ann (5.77) Подстановка в уравнение (5.70), записанное для i = n дает: xn−1 = γn xn + βn bn − an,n−1 βn =⇒ xn = . ann + an,n−1 γn 86 (5.78) Таким образом, используя рекуррентные соотношения (5.70), (5.72) и (5.73), можно найти решение СЛАУ с помощью O(n) операций, что делает метод прогонки предпочтительным перед методом последовательного исключения, требующим O(n3 ) операций. Более того, если исходная матрица обладает свойством строгого диагонального преобладания, то метод прогонки является вычислительно устойчивым. 5.2 5.2.1 Итерационные методы Нормы векторов и матриц Для обсуждения итерационных методов нам необходимо определить несколько норм векторов и матриц и доказать важнейшие их свойства. Будучи снабженными подходящими нормами, вектора и матрицы формируют соответствующие линейные нормированными пространства (определение 1.3.11). Рассмотрим в первую очередь векторные нормы l2 и l∞ , также обозначаемые как ||·||2 и || · ||∞ . Они определяются следующим образом: ||x||2 = n X !1 2 x2i , (5.79) i=1 ||x||∞ = max |xi |. (5.80) i∈[1;n] где x = [x1 , . . . , xn ] ∈ Rn . Заметим, что геометрическим местом точек x, таких, что ||x||2 = 1 и ||x||∞ = 1, являются (n − 1)-мерная сфера и (n − 1)-мерный куб соответственно. Одним из главных свойств l2 -нормы является неравенство Коши-Буняковского. Теорема 5.2.1 (неравенство Коши-Буняковского). Пусть x, y ∈ Rn . Тогда верно следующее неравенство: xT y ≤ ||x||2 ||y||2 (5.81) Доказательство. Доказательство для x = 0 и y = 0 очевидно, так что рассмотрим случай x, y 6= 0. Заметим, что для любого λ ∈ R верно: ||x − λy||22 ≥ 0 n n n X X X 2 2 =⇒ xi − 2λ x i yi + λ yi2 ≥ 0 i=1 =⇒ 2λxT y ≤ Выберем λ = ||x||2 ||y||2 . i=1 ||x||22 + (5.82) i=1 λ2 ||y||22 . Тогда имеем: 2 ||x||2 T x y ≤ 2||x||22 ||y||2 T =⇒ x y ≤ ||x||2 ||y||2 . 87 (5.83) Из этого неравенства следует неравенство треугольника, которому по определению должна удовлетворять норма: ||x + y||2 ≤ ||x||2 + ||y||2 . (5.84) Расстояние между двумя векторами, индуцированное нормой || · ||, имеет вид ||x − y||. Перейдем к рассмотрению норм матриц. Кроме стандартных аксиом норм линейных нормированных пространств, нормы квадартных матриц также обязаны удовлетворяют аксиоме ||AB|| ≤ ||A||||B||. Здесь и далее мы будет использовать матричные нормы, построенные на основе векторных норм. Такие нормы матриц называются индуцированными. Для вывода индуцированных матричных норм из векторных норм l2 и l∞ , нам необходимо сформулировать следующую теорему без доказательства: Теорема 5.2.2. Пусть || · || – векторная норма в пространстве Rn . Тогда следующий функционал является нормой матрицы: ||A|| = max ||Ax||. ||x||=1 (5.85) z Так как x = ||z|| , где z 6= 0, удовлетворяет требованию ||x|| = 1, мы можем переписать утверждение теоремы 5.2.2 следующим образом: ||A|| = max ||z||6=0 ||Az|| . ||z|| (5.86) Очевидным является также следующее следствие: Следствие 5.2.1. Для любого вектора x 6= 0, матрицы A и индуцированной матричной нормы || · || верно следующее неравенство: ||Ax|| ≤ ||A|| · ||x||. (5.87) Исходя из теоремы 5.2.2, мы можем записать индуцированные матричные нормы ||·||2 и || · ||∞ как: ||A||2 = max ||Ax||2 , (5.88) ||A||∞ = max ||Ax||∞ . (5.89) ||x||2 =1 ||x||∞ =1 (5.90) Более того, можно доказать, что эти нормы имеют следующий вид: q ||A||2 = ρ(AT A), ||A||∞ = max i∈[1;n] n X |aij |, (5.91) (5.92) j=1 где ρ(AT A) – спектральный радиус матрицы AT A, определение которому будет дано ниже. 88 5.2.2 Собственные числа и вектора Проблема о собственных числах и векторах матрицы появляется в самых разных контекстах математической физики. В численных методах они играют важную роль в определении сходимости итерационного процесса, так что нам необходимо ознакомиться с некоторыми важными свойствами собственных чисел и собственных векторов. В первую очередь рассмотрим ряд определений. Определение 5.2.1. Пусть A ∈ Rn×n . Тогда собственным вектором матрицы A называется такой вектор x 6= 0, что: Ax = λx, (5.93) где λ ∈ R называется собственным числом матрицы A, ассоциированным с собственным вектором x. Несложно заметить, что собственный вектор x является нетривиальным решением однородной СЛАУ: (A − λE)x = 0, (5.94) которая будет иметь нетривиальное решение только в том случае, когда: det(A − λE) = 0. (5.95) Определение 5.2.2. Пусть A ∈ Rn×n . Тогда характеристическим многочленом матрицы A является многочлен: n X Pn (λ) = det(A − λE) = ak λk (5.96) k=0 Таким образом, собственные числа матрицы являются корнями ее характеристического многочлена. Заметим, что собственные вектора матрицы определены вплоть до произвольного множителя и являются такими направлениями в пространстве Rn , вдоль которых действие оператора A эквивалентно коллинеарному преобразованию (т.е. растяжению или сжатию вектора в зависимости от значения |λ|), что продемонстрировано на рисунке 5.1. Важнейшим свойством собственных векторов является тот факт, что в случае, когда они все являются линейно независимыми, они формируют базис данного пространства. Это позволяет разложить любой вектор, на который действует оператор A, в линейную комбинацию собственных векторов. Тогда, например, если все собственные числа по модулю меньше 1, то можно утверждать, что для любого вектора x1 вектор x2 = Ax1 будет удовлетворять неравенству ||x2 || ≤ ||x1 ||. Эта простая мысль приводит нас к рассмотрению спектрального радиуса, сходящихся матриц и связи между ними. Определение 5.2.3. Спектральным радиусом матрицы A называется число ρ(A) ∈ R такое, что: ρ(A) = max |λi |, (5.97) i∈[1,m] где λi – одно из m собственных чисел матрицы A. 89 Рисунок 5.1 – Коллинеарное преобразование собственного вектора x под действием оператора A. В случаях (a) и (c) ассоциированное собственное число λ больше единицы по модулю, что приводит к растяжению собственного вектора. В случаях (b) и (d) мы имеем |λ| < 1, что приводит к сжатию собственного вектора. Мы уже ознакомились с одним из случаев использования спектрального радиуса: q ||A||2 = ρ(AT A). (5.98) Теперь докажем другое важное свойство спектрального радиуса. Теорема 5.2.3. Пусть A ∈ Rn×n . Тогда ρ(A) ≤ ||A|| для любой индуцированной матричной нормы || · ||. Доказательство. Рассмотрим собственное число λ с собственным вектором x. Тогда имеем: Ax = λx =⇒ ||Ax|| = ||λx|| (5.99) =⇒ ||Ax|| = |λ| · ||x||. Так как ||Ax|| ≤ ||A|| · ||x||, мы получаем: |λ| · ||x|| ≤ ||A|| · ||x|| =⇒ |λ| ≤ ||A||, (5.100) что приводит к ρ(A) = max |λ| ≤ ||A||. Расширением этой теоремы является следующая теорема, которую мы рассмотрим без доказательства. Теорема 5.2.4. Для любой матрицы A ∈ Rn×n и любого  > 0 можно найти такую индуцированную норму, что: ρ(A) ≤ ||A|| ≤ ρ(A) + . 90 (5.101) 5.2.3 Сходящиеся матрицы Так как итерационные методы построены на большом количестве перемножений матриц на самих себя, т.е. возведении их в степень, важно рассмотреть такие матрицы, которые при такой операции сходятся к нулевой матрице. Определение 5.2.4. Матрица A ∈ Rn×n называется сходящейся, если для нее верно: lim Ak = O, k→∞ (5.102) где O – нулевая матрица. Несложно доказать, что если матрица является сходящейся, то к нулю сходится любая матричная норма степеней матрицы: lim ||Ak || = 0. k→∞ (5.103) Более того, в случае индуцированных норм сходимость в одной из норм эквивалентна сходимости в любой другой норме. Важнейшим свойством сходящихся матриц является тот факт, что их спектральный радиус всегда строго меньше единицы. Теорема 5.2.5. Матриц A ∈ Rn×n является сходящейся тогда и только тогда, когда ρ(A) < 1. Доказательство. Докажем утверждение в обе стороны относительно схождения норм: lim ||Ak || = 0. k→∞ (5.104) В первую очередь докажем limk→∞ ||Ak || = 0 =⇒ ρ(A) < 1. Для начала заметим, что ρ(Ak ) = ρk (A). Действительно, пусть λ собственное число матрицы A, ассоциированное с собственным вектором x. Предположим, что Ak имеет собственное число λ̃, ассоциированное с тем же собственным вектором. Тогда имеем: Ak x = A · · · AAx = λ̃x =⇒ A · · · Aλx = λ̃x =⇒ λk x = λ̃x (5.105) =⇒ λ̃ = λk . Очевидным следствием из этого является равенство ρ(Ak ) = ρk (A). Теперь, воспользовавшись теоремой 5.2.3, получаем: ρ(Ak ) ≤ ||Ak || =⇒ ρk (A) ≤ ||Ak ||, (5.106) что приводит нас к утверждению: lim ||Ak || = 0 =⇒ lim ρk (A) = 0 ⇐⇒ ρ(A) < 1. k→∞ k→∞ 91 (5.107) Теперь докажем утверждение в обратную сторону: ρ(A) < 1 =⇒ limk→∞ ||Ak || = 0. По теореме 5.2.4 мы можем найти такую норму || · || и  > 0, что: ||A|| ≤ ρ(A) +  < 1. (5.108) Тогда пользуясь одной из аксиом матричных норм, имеем: ||Ak || ≤ ||A||k ≤ (ρ(A) + )k =⇒ lim ||Ak || = 0. k→∞ (5.109) Последнее свойство сходящихся матриц, которое мы рассмотрим, очевидно следует из предыдущих рассуждений: lim Ak x = 0. (5.110) k→∞ 5.2.4 Методы простой итерации Как мы уже упомянули в начале раздела, итерационные методы ищут такое x(k) , что → 0 при k → ∞. Зачастую такие методы могут быть записаны в виде следующей итерации: x(k) = T x(k−1) + c, k = 1, 2, . . . , (5.111) Ax(k) − b где T и c некоторые матрица и вектор, получаемые в результате разложения A и b тем или иным образом. Начальное приближение x(0) предполагается случайным. Решением такого рекуррентного соотношения является неподвижная точка x: x = T x + c. (5.112) Таким образом, нам необходимо определить, какие условия следует наложить на матрицу T , чтобы итерации сходились к неподвижной точке, т.е. x(k) → x при k → ∞. Прежде чем перейти к соответствующей теореме, рассмотрим вспомогательную лемму. Лемма 5.2.1. Пусть ρ(T ) < 1. Тогда матрица (E − T ) имеет обратную, и при этом: −1 (E − T ) 2 = E + T + T + ··· = ∞ X Tj (5.113) j=0 Доказательство. Докажем существование обратной матрицы, доказав существования только ненулевых собственных чисел. Действительно, рассмотрим произвольное собственное число λ матрицы T : T x = λx =⇒ (E − T )x = (1 − λ)x. (5.114) Иными словами, собственные числа матрицы E −T равны 1−λ. Мы знаем, что |λ| ≤ ρ(T ) < 1, из чего следует: 0 < 1 − λ < 2, (5.115) 92 что означает, что матрица E − T невырожденная. Для доказательства второй части леммы рассмотрим следующую матрицу: Sm = E + T + T 2 + · · · + T m . (5.116) Домножив ее слева на E − T , получаем: (E − T )Sm = (E + T + T 2 + · · · + T m ) − (T + T 2 + · · · + T m+1 ) =⇒ (E − T )Sm = E − T m+1 . (5.117) Рассмотрим предел этого выражения: lim (E − T )Sm = lim (E − T m+1 ) = E, m→∞ m→∞ (5.118) где последнее равенство справедливо, так как ρ(T ) < 1. Таким образом, мы получаем: −1 (E − T ) = S∞ = ∞ X T j. (5.119) j=0 Теперь мы можем рассмотреть фундаментальную теорему о сходимости метода простой итерации. (k) = T x(k−1) + Теорема 5.2.6. Последовательность {x(k) }∞ k=0 , сгенерированная итерацией x c, сходится к единственному решению уравнения x = T x + c, т.е. неподвижной точке x, для любого x(0) ∈ Rn тогда и только тогда, когда ρ(T ) < 1. Доказательство. В первую очередь докажем обратную часть теоремы, т.е. предположим, что ρ(T ) < 1. Тогда, развернув все итерации, имеем: x(k) = T x(k−1) + c = T (T x(k−2) + c) + c = T 2 x(k−2) + (T + E)c (5.120) = ... = T k x(0) + (T k−1 + · · · + T + E)c. Рассмотрим предел limk→∞ x(k) . Тогда, воспользовавшись фактом ρ(T ) < 1 и леммой 5.2.1, имеем: h i x = lim x(k) = lim T k x(0) + (T k−1 + · · · + T + E)c k→∞ k→∞ = lim (T k−1 + · · · + T + E)c k→∞ = (E − T )−1 c, 93 (5.121) из чего следует x = T x + c. Теперь рассмотрим прямой случай, т.е. предположим, что x = limk→∞ x(k) есть единственное решение уравнения x = T x + c. Так как ρ(T ) < 1 ⇐⇒ limk→∞ T k z = 0 для любого z, докажем вторую часть утверждения. Пусть x(0) = x − z. Заметим, что: x − x(k) = T x + c − (T x(k−1) + c) = T (x − x(k−1) ) = T 2 (x − x(k−2) ) = ... (5.122) = T k (x − x(0) ) = T k z. Однако по условию теоремы limk→∞ (x − x(k) ) = 0, из чего следует: lim T k z = 0. k→∞ (5.123) Так как z был выбран произвольно, это эквивалентно утверждению ρ(T ) < 1. Из доказательства теоремы можно вывести две полезные оценки погрешности. Рассмотрим одно из уравнений из 5.122: x − x(k) = T k (x − x(0) ), (5.124) и оценим его: ||x − x(k) || = ||T k (x − x(0) )|| =⇒ ||x − x(k) || ≤ ||T k || · ||x − x(0) ||, (5.125) из чего следует оценка погрешности метода: ||x − x(k) || ≤ ||T ||k ||x − x(0) ||. (5.126) Для вывода второй оценки рассмотрим следующее выражение: x(k+1) − x(k) = T x(k) + c − T x(k−1) − c = T (x(k) − x(k−1) ) = ... (5.127) = T k (x(1) − x(0) ). Тогда для m > k ≥ 1 справедливо следующее: ||x(m) − x(k) || = ||x(m) − x(m−1) + x(m−1) − · · · + x(k+1) − x(k) || ≤ ||x(m) − x(m−1) || + ||x(m−1) − x(m−2) || + · · · + ||x(k+1) − x(k) || ≤ (||T ||m−1 + ||T ||m−2 + . . . ||T ||k )||x(1) − x(0) || = ||T ||k (1 + · · · + ||T ||m−k−1 + ||T ||m−k−2 )||x(1) − x(0) ||. 94 (5.128) В пределе m → ∞ мы имеем: ||x − x(k) || = lim ||x(m) − x(k) || m→∞ k = ||T || ∞ X ||T ||j · ||x(1) − x(0) ||. (5.129) j=0 Сумма представляет собой сумму геометрической прогрессии, и так как ρ(T ) < 1 =⇒ ||T || < 1 мы имеем: ||T ||k ||x(1) − x(0) ||. (5.130) ||x − x(k) || = 1 − ||T || Таким образом скорость сходимости методов простой итерации зависит от ||T ||, и вследствие ρ(T ) ≈ ||T || она, в сущности, зависит от спектрального радиуса матрицы T : ||x − x(k) || ≈ ρ(T )k ||x − x(0) ||. (5.131) Очевидно, что мы хотели бы найти итерационный метод с минимально возможным ρ(T ). В конце отметим, что в качестве условия окончания итерационного процесса логично выбрать ограничение на относительное улучшение решения: ||x(k) − x(k−1) || < , ||x(k) || (5.132) где  ∈ R – выбранная точность решения. Рассмотрев метод простой итерации в общем виде, мы можем перейти к его частным случаям, а именно к методам Якоби и Гаусса–Зейделя. 5.2.5 Метод Якоби Метод Якоби строит итерационную процедуру, напрямую решая i-ое уравнение СЛАУ:   xi = n X  1  − aij xj + bi   , aii (5.133) j=1 i6=j и находя решение на шаге k из решения на шаге k − 1:  (k) xi = 1  − aii  n X (k−1) aij xj j=1 i6=j   + bi  , (5.134) Легко убедиться, что в матричном виде метод Якоби предполагает разложение матрицы A на диагональную, нижнюю треугольную и верхнюю треугольную составляющие:       a11 0 . . . 0 ... ... 0 −a12 . . . −a1n   a11 . . . a1n   ..   ..   .. .. . .. ..  −a21 . . . .  . . 0 a22 . . .  . .  .. ..  =  .       . − −  . . .   .   ..  ..   .. .. .. .. .. ..  ..     . . . . . . . . −an−1,n  an1 . . . ann 0 . . . 0 ann −an1 . . . −an,n−1 0 0 ... ... (5.135) 95 или кратко: A = D − L − U. (5.136) Подстановка в СЛАУ дает: (D − L − U )x = b =⇒ Dx = (L + U )x + b. (5.137) При этом, если D имеет обратную (т.е. все диагональные элементы ненулевые), то можно записать: x = D −1 (L + U )x + D −1 b, (5.138) что легко превращается в следующее рекуррентное соотношение: x(k) = D −1 (L + U )x(k−1) + D −1 b, (5.139) из которого мы получаем матрицу T и вектор c в контексте метода простой итерации: TJ = D −1 (L + U ), cJ = D 5.2.6 −1 b. (5.140) (5.141) Метод Гаусса–Зейделя (k−1) Метод Якоби можно улучшить, если заметить, что в уравнении (5.134) вместо xj ,j < (k) xj , j i можно использовать уже посчитанные < i, которые априори будут “ближе” к точному решению. Это наблюдение приводит нас к методу Гаусса–Зейделя:   i−1 n X X 1  (k) (k−1) (k) − aij xj − aij xj + bi  , (5.142) xi = aii j=1 j=i+1 В матричном виде метод Гаусса–Зейделя можно записать в следующем виде: (D − L)x(k) = U x(k−1) + b =⇒ x(k) = (D − L)−1 U x(k−1) + (D − L)−1 b, (5.143) где матрица (D − L)−1 существует тогда и только тогда, когда все диагональные элементы являются ненулевыми. В свою очередь в контексте метода простой итерации мы получаем следующие выражения для T и c: TG = (D − L)−1 U , cG = (D − L) −1 b. (5.144) (5.145) Методы Якоби и Гаусса–Зейделя являются безусловно сходящимися для матриц со строго диагональным преобладанием. Докажем это утверждение для метода Якоби. 96 Теорема 5.2.7. Пусть A – матрица со строгим диагональным преобладанием. Тогда метод Якоби формирует последовательность {x(k) }∞ k=0 , которая сходится к единственному решению x. Доказательство. Найдем верхнюю границу для ||TJ ||∞ . По определению мы имеем: n X 1 (lij + uij ) aii i∈[1;n] ||TJ ||∞ = max j=1 n P ≤ max (5.146) |lij + uij | j=1 |aii | i∈[1;n] . Заметим, что lij + uij = aij для i 6= j и lij + uij = 0 для i = j. Тогда достаточно записать: ||TJ ||∞ ≤ max i6=j |aij | . |aii | (5.147) По определению матриц со строгим диагональным преобладанием мы имеем: |aii | > n X |aij |, i = 1, . . . , n, (5.148) j=1 j6=i из чего следует: n P |aij | j=1,j6=i |aii | < 1. (5.149) что немедленно дает: ||TJ ||∞ < 1, (5.150) что равносильно ρ(TJ ) < 1. 5.2.7 Методы релаксации Как показывает выражение (5.131), скорость сходимости итерационного метода напрямую зависит от спектрального радиуса матрицы T – чем он меньше, тем больше скорость сходимости к точному результату. Методы релаксации, как мы скоро покажем, позволяют модифицировать матрицу T так, что ее спектральный радиус уменьшается. Для начала необходимо ввести новый показатель близости решения СЛАУ на определенной итерации к ее точному решению. Определение 5.2.5. Пусть x̃ ∈ Rn является приближением к точному решению СЛАУ Ax = b. Тогда вектором невязки называется r = b − Ax̃. На примере метода Гаусса–Зейделя рассмотрим связь между итерационными урав(k) (k) (k) (k) нениями и вектором невязки. Пусть ri = [r1i , r2i , . . . , rni ]T обозначает вектор невязки, 97 (k) соответствующий k-й итерации метода при расчете xi и, следовательно, вектору прибли(k) (k) (k) (k) (k) (k) (k) жения к решению xi = [x1 , x2 , . . . , xi−1 , xi , . . . , xn ]T . Элемент вектора невязки rmi тогда имеет вид: (k) rmi = bm − i−1 X (k) amj xj − n X j=1 = bm − i−1 X (k−1) amj xj j=i (k) amj xj − j=1 (5.151) n X (k−1) amj xj (k−1) − ami xi . j=i+1 Тогда i-й компонент вектора невязки будет иметь вид: (k) rii = bi − i−1 X (k) aij xj − j=1 =⇒ (k) rii + n X (k−1) aij xj j=i+1 (k−1) aii xi = bi − i−1 X (k) aij xj n X − j=1 (k) Подставив выражение для xi (k−1) − aii xi (5.152) (k−1) aij xj . j=i+1 метода Гаусса-Зейделя из уравнения (5.142), получаем: (k) (k−1) rii + aii xi (k) = aii xi (5.153) (k) (k) =⇒ xi (k−1) = xi + rii , aii что задает связь между итерацией метода Гаусса-Зейделя и вектором невязки. Методы релаксации основаны на модификации уравнения (5.153): (k) (k) xi (k−1) = xi +ω rii , aii (5.154) где ω > 0. При 0 < ω < 1 мы имеем методы нижней релаксации, а при ω > 1 методы верхней релаксации. Последние оказались подходящими для большинства практических (k) случаев, так что позже мы рассмотрим их подробнее. Подставив выражение для rii из (5.152), получаем формулу, которая может использоваться для реализации итерационного метода верхней релаксации:   i−1 n X X ω (k) (k−1)  (k) (k−1) bi − aij xj − aij xj . (5.155) xi = (1 − ω)xi + aii j=1 j=i+1 Для вывода матричной формы переформулируем выражение выше следующим образом: (k) aii xi +ω i−1 X (k) aij xj = (1 − (k−1) ω)aii xi j=1 −ω n X j=i+1 98 (k−1) aij xj + ωbi , (5.156) что в матричной форме дает: (D − ωL)x(k) = [(1 − ω)D + ωU ] x(k−1) + ωb. (5.157) В форме простой итерации мы имеем: x(k) = Tω x(k−1) + cω . (5.158) где Tω = (D − ωL)−1 [(1 − ω)D + ωU ] и cω = ω(D − ωL)−1 b. Выбор значения ω не всегда является тривиальной задачей, и очевидного ответа для общего случая СЛАУ нет. Однако для некоторых частных случаев можно получить оценки интервала, которому должен принадлежать ω для сходимости метода. Рассмотрим эти случаи в виде ряда теорем без доказательств. Теорема 5.2.8. Если aii 6= 0, i = 1, . . . , n, то ρ(Tω ) ≥ |ω − 1|. Следовательно, для этого случая метод верхней релаксации может сойтись только при 0 ≤ ω ≤ 2. Теорема 5.2.9. Если A – положительная определенная матрица и 0 ≤ ω ≤ 2, то метод верхней релаксации сходится для любого x(0) . Теорема 5.2.10. Если A – положительная определенная и трехдиагональная матрица, то ρ(TG ) = ρ2 (TJ ) < 1 и оптимальное значение ω вычисляется как: ω (opt) = 2 p , 1 + 1 − ρ2 (TJ ) (5.159) и при этом ρ(Tω(opt) ) = ω (opt) − 1. 5.2.8 Обусловленность матриц Несмотря на кажущуюся разумность предположения, что малая относительная погрешность вычислений ||x−x̃|| ||x|| соответствует малой невязке ||r||, в реальности соотношение между этими величинами регулируется числом обусловленности, которое, как мы скоро убедимся, является важнейшей показателем устойчивости решения СЛАУ к ее малым изменениям. Для начала найдем верхнюю грань для относительной погрешности вычислений через норму невязки. Теорема 5.2.11. Пусть x̃ ∈ Rn является приближением к точному решению СЛАУ Ax = b, A – невырожденная матрица и r – вектор невязки. Тогда для любой индуцированной матричной нормы верно: ||x − x̃|| ≤ ||r|| · ||A−1 ||, (5.160) и при x, b 6= 0: ||x − x̃|| ||r|| ≤ K(A) , ||x|| ||b|| где K(A) = ||A|| · ||A−1 || называется числом обусловленности. 99 (5.161) Доказательство. Первое неравенство следует из: r = b − Ax̃ = A(x − x̃) =⇒ x − x̃ = A−1 r =⇒ ||x − x̃|| ≤ ||A (5.162) −1 || · ||r||. Второе неравенство следует из рассмотрения верхней границы для 1 ||x|| : ||b|| = ||Ax|| =⇒ ||b|| ≤ ||A|| · ||x|| 1 ||A|| =⇒ ≤ . ||x|| ||b|| Тогда домножая первое неравенство на 1 ||x|| , (5.163) получаем: ||r|| ||x − x̃|| ≤ ||A|| · ||A−1 || . ||x|| ||b|| (5.164) Для того, чтобы увидеть связь между число обусловленности и устойчивостью решения СЛАУ к малым изменениям ее коэффициентов, представим, что приближенное решение x̃ является точным решением модифицированной СЛАУ, полученной с помощью малых возмущений матрицы A: (A + δA)x̃ = b. (5.165) Матрица возмущений δA, например, может имитировать погрешность округления, ассоциированную с каждым элементом матрицы A. Вектор невязки тогда вычисляется следующим образом: r = b − Ax̃ = δAx̃, (5.166) что при подстановке во второе неравенство теоремы 5.2.11 дает: ||x − x̃|| ||δAx̃|| ≤ K(A) ||x|| ||b|| ||x̃|| ≤ K(A)||δA|| . ||b|| (5.167) Даже такой грубый пример позволяет заметить, что относительная погрешность вычислений будет тем меньше, чем меньше будет число обусловленности K(A) (при этом легко увидеть, что K(A) ≥ 1). Слишком большое число обусловленности, в свою очередь, приводит к дестабилизации вычислительных погрешностей. Матрицы с малым числом обусловленности называют хорошо обусловленными, а матрицы с большим числом обусловленности плохо обусловленными. 100 В свете этих рассуждений попробуем оценить число обусловленности без явного вычисления обратной матрицы, что само по себе было бы источником погрешностей, и найти связь между числом обусловленности и точностью полученного решения в контексте арифметики с t значащими цифрами. Можно доказать, что если приближенное решение x̃ было получено с помощью метода Гаусса и арифметики с t значащими цифрами, то верно следующее приближение для нормы вектора невязки: [TODO: Forsythe, G. E. and C. B. Moler, Computer solution of linear algebraic systems] ||r|| ≈ 10−t ||A|| · ||x̃||. (5.168) Приближение для числа обусловленности теперь можно получить, рассмотрев следующую СЛАУ: Ay = r. (5.169) Так как предполагалось, что решение x̃ было получено с помощью метода Гаусса, в наличии гарантированно имеются множители, необходимые для LU-разложения матрицы A, что означает, что решение y может быть быстро найдено. Приближенное решение y удовлетворяет: ỹ ≈ A−1 r = A−1 (b − Ax̃) = A−1 b − x̃ (5.170) = x − x̃. Таким образом вектор ỹ является оценкой вычислительной погрешности, возникшей при нахождении решения x̃. Оценим его норму: ||ỹ|| ≈ ||A−1 r|| ≤ ||A−1 || · ||r|| ≈ ||A−1 ||(10−t ||A|| · ||x̃||) (5.171) = 10−t K(A)||x̃||. Из полученного результата можно сделать следующий вывод. Если число обусловленности имеет порядок O(1), то вычислительная погрешность приближенного решения x̃ имеет оценочный порядок O(10−t ), в том время как при K(A) ∝ O(10t ) ее оценочный порядок O(1). Иными словами, число обусловленности позволяет оценить, сколько значимых цифр теряется в процессе вычислений: K(A) ≈ =⇒ ||ỹ|| t ||x − x̃|| t 10 ≈ 10 ||x̃|| ||x̃|| ||x − x̃|| ≈ 10−t K(A). ||x̃|| (5.172) На основании этого результата может быть построена техника итерационного уточнения решения x̃. Действительно, если ỹ ≈ x − x̃, то логично предположить, что для достаточно обусловленных матриц (а именно K(A) < 10t ) вектор x̃ + ỹ будет давать более точное 101 решение. Обозначив x̃(1) = x̃(0) + ỹ (0) и продолжив итерацию уже относительно нового приближенного значения x̃(1) , мы получаем метода итерационного уточнения на основе метода Гаусса. Из (5.172) очевидно, что при K(A) ∝ 10q после k итераций ожидается k(t − q) корректных значащих цифр в решении. Для хорошо обусловленных матриц будет достаточно одной-двух итераций. 5.2.9 Метод сопряженных градиентов Еще один класс итерационных методов может быть построен при рассмотрении задачи минимизации вектора невязки. Действительно, пусть x∗ является решением СЛАУ Ax = b, где A ∈ Rn×n . Тогда верным является утверждение: x∗ = argmin r T r = argmin(b − Ax)T (b − Ax). x (5.173) x Рассмотрим случай положительно определенной и, следовательно, симметричной матрицы A. Легко убедиться, что для симметричной матрицы A верным является утверждение: hAx, yi = hx, Ayi, (5.174) где h·, ·i – скалярное произведение векторов, x, y ∈ Rn – произвольные вектора. Тогда задача минимизации (5.173) может быть записана следующим образом: argmin [hb, bi − 2hAx, bi + hAx, Axi] = argmin [hAx, Axi − 2hAx, bi] x x = argmin [hx, Axi − 2hx, bi] . (5.175) x Обозначив целевую функцию как g(x) = hx, Axi − 2hx, bi, мы имеем конечную форму задачи минимизации: x∗ = argmin g(x). (5.176) x Для нахождения минимума, начав с некоторого приближения x, необходимо определить направление поиска v и шаг t. Рассмотрим подобный поиск в контексте функции g(x): g(x + tv) = hx + tv, A(x + tv)i − 2hx + tv, bi = hx, Axi + thx, Avi + thv, Axi + t2 hv, Avi − 2hx, bi − 2thv, bi = hx, Axi − 2hx, bi + 2thv, Axi + t2 hv, Avi − 2thv, bi (5.177) = g(x) + t2 hv, Avi − 2thv, b − Axi. В первую очередь найдем оптимальный шаг t(opt) , минимизирующий функцию g(x + tv): ∂g = 2thv, Avi − 2hv, b − Axi = 0 ∂t hv, b − Axi =⇒ t(opt) = hv, Avi hv, b − Axi2 =⇒ g(x + t(opt) v) = g(x) − . hv, Avi 102 (5.178) Из последнего выражения очевидно, что решение x∗ минимизирует g(x) для любого направления v 6= 0. Теперь, задавшись начальным приближением x(0) и начальным направлением поиска v (1) , мы можем построить следующий итерационный алгоритм: tk = hv (k) , b − Ax(k−1) i , hv (k) , Av (k) i x(k) = x(k−1) + tk v (k) . (5.179) (5.180) Следующим шагом является генерация таких направлений поиска v (k) , что метод сходится достаточно быстро. Очевидным выбором является направление наискорейшего спуска: − ∂g = −2(Ax − b) = 2r, ∂x (5.181) то есть направлением наискорейшего спуска является вектор невязки. Тогда направление поиска определяется как: v (k+1) = r (k) , (5.182) что задает метод градиентного спуска для решения СЛАУ. Так как этот метод известен относительно медленной сходимостью, мы воспользуется альтернативным подходом, который базируется на построении таких v (i) , что hv (i) , Av (j) i = 0, i 6= j. (5.183) Такой вид ортогональности векторов мы будем называть A-ортогональностью, а полученную систему векторов {v (1) , . . . , v (n) } A-ортогональной. Эта система задает базис пространства, так как является линейно независимой. Это легко проверить с помощью доказательства от обратного. Действительно, пусть можно выразить вектор v (i) через линейную комбинацию остальных векторов: X v (i) = αj v (j) j=1 j6=i =⇒ hv (i) , Av (i) i = X αj hv (j) , Av (i) i (5.184) j=1 j6=i =⇒ hv (i) , Av (i) i = 0, что нарушает условие A-ортогональности, из чего следует, что система векторов действительно является линейно независимой. Результирующий итерационный метод, построенный на основе уравнений (5.179) и (5.180), называется методом сопряженных направлений. Следующая теорема доказывает, что такой метод дает точное решение в контексте арифметики с бесконечной точностью за n итераций. Теорема 5.2.12. Пусть система векторов {v (1) , . . . , v (n) } является A-ортогональной, а матрица A положительно определенной. Тогда Ax(n) = b, где x(n) определяется с помо- 103 щью итерационного алгоритма ниже: tk = hv (k) , b − Ax(k−1) i , hv (k) , Av (k) i x(k) = x(k−1) + tk v (k) . (5.185) (5.186) Доказательство. Раскроем итерации в выражении Ax(n) вплоть до начального приближения x(0) :   Ax(n) = A x(n−1) + tn v (n) ,   = A x(n−2) + tn−1 v (n−1) + tn v (n) , (5.187) = ...   = A x(0) + t1 v (1) + · · · + tn v (n) , из чего следует:   Ax(n) − b = Ax(0) − b + A t1 v (1) + · · · + tn v (n) . (5.188) Посчитаем скалярное произведение обоих сторон уравнения, домножив его на v (k) : hAx(n) − b, v (k) i = hAx(0) − b, v (k) i + tk hv (k) , Av (k) i. (5.189) Из определения tk можно получить выражение: tk hv (k) , Av (k) i = hv (k) , b − Ax(k−1) i = hv (k) , b − Ax(0) + Ax(0) − Ax(1) + Ax(1) − · · · − Ax(k−2) + Ax(k−2) − Ax(k−1) i = hv (k) , b − Ax(0) i + hv (k) , Ax(0) − Ax(1) i + · · · + hv (k) , Ax(k−2) − Ax(k−1) i. (5.190) Заметим, что из x(i) = x(i−1) + ti v (i) следует Ax(i−1) − Ax(i) = −ti Av (i) . Тогда подстановка в выражение выше дает: tk hv (k) , Av (k) i = hv (k) , b − Ax(0) i, (5.191) из чего после подстановки в (5.189) мы получаем: hAx(n) − b, v (k) i = hAx(0) − b, v (k) i + hv (k) , b − Ax(0) i =⇒ hAx(n) − b, v (k) i = 0 ∀k = 1, . . . , n. (5.192) Последнее выражение говорит о том, что вектор невязки на n-й итерации ортогонален всем векторам {v (1) , . . . , v (n) }, которые, будучи линейно независимыми, задают базис пространства. Это возможно тогда и только тогда, когда Ax(n) − b = 0, что означает, что x(n) является решением исходной СЛАУ. 104 Также можно доказать, что получаемые векторы невязки r (k) будут ортогональны векторам v (i) , i = 1, . . . , k. Метод сопряженных градиентов выбирает такие {v (i) }, что система, состоящая из векторов невязки {r (i) }, является ортогональной, т.е. hr (i) , r (j) i для i 6= j. Соответствующие формулы для {v (i) } можно построить, адаптировав процесс ГрамаШмидта для A-ортогональности. Действительно, пусть начальное направление является направлением наискорейшего спуска, т.е. v (1) = r (0) . Предположим, что мы уже рассчитали приближения {x(1) , . . . , x(k−1) } и направления {v (1) , . . . , v (k−1) }. Применим процесс ГрамаШмидт для нахождения v (k) : v (k) = r k−1 + sk−1 v (k−1) , (5.193) где коэффициент sk−1 мы находим исходя из условия A-ортогональности hv (k) , Av (k−1) i = 0: 0 = hr k−1 , Av (k−1) i + sk−1 hv (k−1) , Av (k−1) i =⇒ sk−1 = − hr (k−1) , Av (k−1) i . hv (k−1) , Av (k−1) i (5.194) Имея выражение для v (k) , переформулируем tk : tk = hv (k) , r (k−1) i hv (k) , Av (k) i = hr (k−1) , r (k−1) i hv (k−1) , r (k−1) i + s k−1 hv (k) , Av (k) i hv (k) , Av (k) i = hr (k−1) , r (k−1) i , hv (k) , Av (k) i (5.195) где мы использовали свойство hv (k−1) , r (k−1) i = 0. Мы также можем записать рекурсивное выражение для r (k) : x(k) = x(k−1) + tk v (k) =⇒ Ax(k) − b = Ax(k−1) − b + tk Av (k) (5.196) =⇒ r (k) = r (k−1) − tk Av (k) . Требование ортогональности r (k) и r (k−1) при этом дает hv (k) , Av (k) i = 1 (k−1) (k−1) hr r i. tk (5.197) Это позволяет упросить выражение для sk , если мы заметим что: hv (k) , Ar (k) i = hAv (k) , r (k) i = 1 (k−1) 1 hr − r (k) , r (k) i = − hr (k) , r (k) i, tk tk (5.198) Тогда выражение для sk принимает вид: sk = hr (k) , r (k) i . hr (k−1) , r (k−1) i 105 (5.199) Резюмируем метод сопряженных градиентов в виде следующих рекурсивных уравнений: hr (k−1) , r (k−1) i , hv (k) , Av (k) i (5.200) x(k) = x(k−1) + tk v (k) , (5.201) tk = r (k) =r sk = (k−1) − tk Av (k) , hr (k) , r (k) i , hr (k−1) , r (k−1) i v (k+1) = r (k) + sk v (k) , (5.202) (5.203) (5.204) где x(0) , r (0) = b − Ax(0) и v (1) = r (0) являются начальными условиями. Важно отметить, что сопряженные направления напрямую связаны с подпространством Крылова. Определение 5.2.6. Подпространством Крылова размерности n называется линейное пространство Km (z, A), порожденное множеством векторов {z, Az, A2 z, . . . , Am−1 z}, где z ∈ Rn и A ∈ Rn×n . Рассмотрим выражения для сопряженных направлений: v (1) = r (0) , v (2) = −t1 Ar (0) + (1 + s1 )r (0) , v (3) = r (0) − [t1 + t2 (1 + s1 )] Ar (0) + t1 t2 A2 r (0) , ... Можно заметить, что сопряженные направления v k принадлежат подпространству Крылова Kn (r (0) , A). Более того, несложно продемонстрировать, что они составляют ортонормальный базис подпространства Крылова Kn (r (0) , A). 5.2.10 Предобуславливание матриц В случае, когда матрица A является плохо обусловленной (т.е. имеет большое число обусловленности K(A)), вычислительная погрешность, как мы выяснили, становится достаточно большой и значимой. Более того, плохо обусловленные матрицы обладают медленной сходимостью. Выходом из этой ситуации является модификация исходной матрицы A так, что полученная в результате матрица обладает значительно меньшим числом обусловленности. Матрица, используемая для модификации исходной матрицы, называется матрицей предобуславливания. Для положительно определенных матрицы такая модификация должна иметь вид: T Ã = C −1 A C −1 , (5.205) где обозначение C −1 говорит о том, что матрица предобуславливания C −1 должна быть невырожденной. При подобном предобуславливании полученная матрица Ã сохраняет свойство положительной определенности. Одним из вариантов матриц C −1 является следующее 106 предобуславливание:  T Ã = D −1/2 A D −1/2 , (5.206) где D −1/2 состоит из корней от обратных диагональных элементов матрицы A. Метод сопряженных градиентов, сформулированный для модифицированной матрицы, называется методом сопряженных градиентов с предобуславливанием. 107 Численные методы нелинейной алгебры Несмотря на широкую распространенность линейных систем уравнений и соответствующих методов их решения, мир по своей природе остается нелинейным. Этот факт остроумно резюмирован польским математиком Станиславом Уламом в афоризме «использование термина “нелинейная динамика” эквивалентно отношению к зоологии как к науке о неслонах». Действительно, большинство прикладных задач, решаемых в математической физике и машинном обучении, являются изначально нелинейными и становятся линейными лишь в процессе тех или иных упрощений. Когда эти упрощения перестают быть валидными, нам необходимо решать полностью нелинейную задачу. Первым шагом на пути к решению нелинейных задач является изучение методов нахождения корней нелинейных систем алгебраических уравнений. В отличие от линейных систем, нелинейные системы в общем случае не могут быть решены прямыми методами, поэтому целью этой главы является рассмотрение исключительно итерационных методов. Также отметим, что доказательства для многомерных пространств могут быть технически сложны, так что мы будем демонстрировать доказательства теорем для одномерным пространств (т.е. для системы из одного нелинейного алгебраического уравнения), после чего обобщим их утверждения до многомерного случая без доказательства. В общем виде система нелинейных алгебраических уравнений имеет вид: f1 (x1 , . . . , xn ) = 0, f2 (x1 , . . . , xn ) = 0, ... (6.1) fn (x1 , . . . , xn ) = 0. Такую систему удобно представить в виде векторной функции f : Rn −→ Rn :     x1 f1 (x1 , . . . , xn )     .. f (x) :  ...  7→  . . xn fn (x1 , . . . , xn ) (6.2) Тогда система принимает вид: f (x) = 0 108 (6.3) 6.1 Метод простой итерации Мы уже рассмотрели метод простой итерации для линейных систем. Формулировка этого метода для нелинейных систем строится вокруг понятия неподвижной точки. Определение 6.1.1. Вектор x∗ ∈ Rn называется неподвижной точкой векторной функции g(x), если g(x∗ ) = x∗ . Систему вида (6.3) можно легко свести к задаче о поиске неподвижной точки, рассмотрев следующую функцию: g(x) = x − Ω(x)f (x), (6.4) где невырожденная матрица Ω(x) : Rn ∈ Rn×n выступает в качестве аналога параметра релаксации в линейных системах. В таком случае множество неподвижных точек функции g(x) совпадает с множеством корней функции f (x). Докажем теорему о достаточном условии существования и единственности неподвижной точки для одномерного случая. Теорема 6.1.1. Пусть D = [a; b]. Если g ∈ C(D) и g(D) ⊂ D, то g имеет хотя бы одну неподвижную точку в D. Если при этом существует производная g 0 (x) в (a; b) и |g 0 (x)| < 1 для любого x ∈ (a; b), то эта неподвижная точка является единственной. Доказательство. Случаи g(a) = a, g(b) = b очевидны, так что, с учетом g(D) ⊂ D, мы рассмотрим g(a) > a, g(b) < b. Определим вспомогательную функцию h(x) следующим образом: h(x) = g(x) − x. Для нее является справедливым следующее: h(a) = g(a) − a > 0, (6.5) h(b) = g(b) − b < 0. (6.6) Следовательно, по теореме о промежуточном значении можно найти такое x∗ ∈ D, что h(x∗ ) = 0, то есть g(x∗ ) = x∗ . Доказажем вторую часть теоремы от обратного. Предположим, что существуют две неподвижных точки x∗ 6= y ∗ . Тогда по теореме Лагранжа о среднем значении существует такое ξ ∈ [x∗ ; y ∗ ] ⊂ D, что: g(x∗ ) − g(y ∗ ) x∗ − y ∗ x∗ − y ∗ = ∗ x − y∗ = 1, g 0 (ξ) = (6.7) что противоречит установке |g 0 (x)| < 1. Следовательно, существующая неподвижная точка является единственной. 109 Как и в случае с линейными системами, неподвижная точка находится с помощью метода простых итераций: x(k) = g(x(k−1) ), (6.8) который дает последовательность точек {x(k) }∞ k=0 . Следующая теорема задает условие, при котором эта последовательность будет сходиться к неподвижной точке x. Рассмотрим ее для одномерного случая. Теорема 6.1.2. Пусть D = [a; b], g ∈ C(D), g(D) ⊂ D и существует производная g 0 (x) для x ∈ (a; b) с таким γ ∈ (0; 1), что |g 0 (x)| ≤ γ для любого x ∈ (a; b). Тогда для любого x(0) ∈ D (k) = g(x(k−1) ), сходится к последовательность {x(k) }∞ k=0 , сгенерированная итерацией x единственной неподвижной точке x∗ ∈ [a; b]. Доказательство. Так как |g 0 (x)| < 1 для любого x ∈ (a; b), по теореме 6.1.1 существует единственная неподвижная точка в D. По теореме Лагранжа о среднем значении для любого k > 1 существует такое ξ (k) ∈ D, что: x(k) − x∗ g(x(k−1) ) − g(x∗ ) = x(k−1) − x∗ x(k−1) − x∗ (k) ∗ 0 (k) (k−1) =⇒ |x − x | = |g (ξ )| · |x − x∗ | g 0 (ξ (k) ) = (6.9) =⇒ |x(k) − x∗ | ≤ γ|x(k−1) − x∗ |. Применив тот же подход для нахождения верхней границы для |x(k−1) − x∗ |, |x(k−2) − x∗ | и т.д., получаем: |x(k) − x∗ | ≤ γ|x(k−1) − x∗ | ≤ γ 2 |x(k−2) − x∗ | ... (6.10) ≤ γ k |x(0) − x∗ |. Тогда предел limk→∞ |x(k) − x∗ | принимает вид: lim |x(k) − x∗ | ≤ lim γ k |x(0) − x∗ | = 0, k→∞ k→∞ (6.11) что эквивалентно сходимости метода простой итерации. Следующее следствие дает оценки погрешности метода простой итерации. Мы оставляем его без доказательства, так как оно абсолютно аналогично выводу оценок погрешностей метода простой итерации для случая СЛАУ. Следствие 6.1.1. Пусть функция g(x) удовлетворяет требованиями теоремы 6.1.2. Тогда верными являются следующие неравенства: |x(k) − x∗ | ≤ γ k max{x(0) − a, x(0) − b}, |x(k) − x∗ | ≤ γk 1−γ |x(1) − x(0) |, для любых k ≥ 1. 110 (6.12) (6.13) Теперь приведем утверждения для этих же теорем для n-мерного случая без доказательства. Теорема 6.1.3. Пусть D = {(x1 , . . . , xn )|xi ∈ [ai ; bi ] для i = 1, . . . , n}. Если g ∈ C(D) и g(D) ⊂ D, то g имеет хотя бы одну неподвижную точку в D. Если при этом существует ∂g e = {(x1 , . . . , xn )|xi ∈ (ai ; bi ) для i = 1, . . . , n} и такое число γ < 1, матрица Якоби ∂x вD e что для любого x ∈ D верны следующие неравенства: γ ∂gi (x) ≤ , ∂xj n i, j = 1, . . . , n, (6.14) то эта неподвижная точка является единственной. Теорема 6.1.4. Пусть верны условия теоремы 6.1.3. Тогда для любого x(0) ∈ D последова(k) = g(x(k−1) ), сходится к единствентельность {x(k) }∞ k=0 , сгенерированная итерацией x ной неподвижной точке x∗ ∈ D. Следствие 6.1.2. Пусть верны условия теоремы 6.1.4. Тогда верным является следующее неравенство: ||x(k) − x∗ ||∞ ≤ γk ||x(1) − x(0) ||∞ , 1−γ (6.15) для любых k ≥ 1. Сформулированные теоремы позволяют однозначно установить сходимость метода простой итерации и оценить скорость сходимости. Таким образом, для решения практических задач достаточно сформировать функцию g(x) по формуле (6.4) и убедиться, что ее производные удовлетворяют заданному критерию сходимости. Скорость сходимости можно увеличить, если использовать подход, аналогичный подходу в методе Гаусса-Зейделя: при k−1 k k расчете xki вместо xk−1 1 , . . . , xi−1 использовать уже посчитанные x1 , . . . , xi−1 . 6.2 Метод Ньютона Метод Ньютона является одним из самых распространенных методов решения систем нелинейных алгебраических уравнений. Для начала мы рассмотрим классический вывод метода Ньютона через разложение в ряд Тейлора, после чего взглянем на метод Ньютона как на частный случай метода простой итерации. Как и раньше, мы в деталях рассмотрим одномерный случай, после чего обобщим результаты для многомерного случая. Пусть нам дана функция f (x) ∈ C 2 [a; b] и точка x(0) ∈ [a; b] является приближением к корню x∗ функции f (x), т.е. f (x∗ ) = 0. Разложим функцию f (x) в ряд Тейлора в точке x(0) : f 00 (ξ) f (x) = f (x(0) ) + f 0 (x(0) )(x − x(0) ) + (x − x(0) )2 , (6.16) 2 где ξ ∈ (x; x(0) ). Метод Ньютона основан на предположении, что дистанция |x∗ − x(0) | от приближения до корня функции достаточно мала. Тогда, вычислив ряд в точке x∗ , мы можем отбросить квадратичный член: f (x∗ ) ≈ f (x(0) ) + f 0 (x(0) )(x∗ − x(0) ). 111 (6.17) Так как f (x∗ ) = 0, мы получаем оценку для x∗ , т.е. более точное приближение: 0 ≈ f (x(0) ) + f 0 (x(0) )(x∗ − x(0) ) =⇒ x∗ ≈ x(0) − f (x(0) ) . f 0 (x(0) ) (6.18) Таким образом, можно сформулировать следующий итерационный метод, называемый методом Ньютона: f (x(k−1) ) x(k) = x(k−1) − 0 (k−1) . (6.19) f (x ) Несложно заметить, что полученный итерационный метод является формой метода простой итерации: x(k) = g(x(k−1) ), (6.20) где g(x) = x − ff0(x) (x) . Сравнение полученной функции g(x) с общим выражением (6.4) показывает, что метода Ньютона выбирает в качестве функции Ω(x) = − f 01(x) . Отметим две важных особенности метода Ньютона: 1. начальное приближение x(0) должно быть достаточно близким к корню x∗ ; 2. градиент f 0 (x(k) ) должен быть отличен от нуля для любого k. Более того, метод Ньютона тем эффективнее, чем дальше f 0 (x∗ ) от нуля. Первое условие накладывает серьезные ограничения на сходимость метода Ньютона для произвольных x(0) . Следующая теорема доказывает существование некоторой окрестности x∗ , внутри которой сходимость метода Ньютона является безусловной. Теорема 6.2.1. Пусть f (x) ∈ C 2 [a; b] и существует такое x∗ ∈ (a; b), что f (x∗ ) = 0 и f 0 (x∗ ) 6= 0. Тогда существует такое δ > 0, что последовательность {x(k) }∞ k=0 , генерируемая метода Ньютона, сходится к x∗ для любого x(0) ∈ [x∗ − δ; x∗ + δ]. Доказательство. Рассмотрим метода Ньютона как метод простой итерации в соответствии с (6.20). Тогда, следуя теореме 6.1.2, необходимо найти интервал D = [x∗ −δ; x∗ +δ], который функция g(x) отображает в себя, и в котором |g 0 (x)| ≤ γ, где γ ∈ (0; 1). Так как f 0 является непрерывной и f 0 (x∗ ) 6= 0, существует такое δ1 > 0, что f 0 (x) 6= 0 в замкнутой δ1 -окрестности точки x∗ , т.е. для x ∈ [x∗ − δ1 ; x∗ + δ1 ] ⊂ [a; b]. Тогда непрерывная производная g 0 (x) ∈ C 1 [a; b] также будет существовать в этом интервале: (f 0 (x))2 − f (x)f 00 (x) g (x) = 1 − (f 0 (x))2 f (x)f 00 (x) = . (f 0 (x))2 (6.21) Найдем значение g 0 (x) в точке x∗ : f (x∗ )f 00 (x∗ ) (f 0 (x∗ ))2 = 0. g 0 (x∗ ) = 112 (6.22) Тогда существует такое δ ∈ (0; δ1 ), что |g 0 (x)| ≤ γ для γ ∈ (0; 1) в замкнутой δ-окрестности точки x∗ , т.е. для x ∈ [x∗ − δ; x∗ + δ] ⊂ [a; b]. Теперь докажем, что полученный интервал D = [x∗ −δ; x∗ +δ] отображается функцией g(x) сам в себя. По теореме Лагранжа о среднем значении для x ∈ D существует такое ξ ∈ (x; x∗ ) или ξ ∈ (x∗ ; x), что: |g(x) − g(x∗ )| |g(x) − x∗ | = |x − x∗ | |x − x∗ | ∗ ∗ =⇒ |g(x) − x | = |g (ξ)| · |x − x | ≤ γ|x − x∗ | < |x − x∗ |. |g 0 (ξ)| = (6.23) Так как |x − x∗ | ≤ δ, мы получаем |g(x) − x∗ | ≤ δ, из чего следует, что g(x) отображает ∗ D в себя. Тогда по теореме 6.1.2 последовательность {x(k) }∞ k=0 сходится к x для любого (0) ∗ ∗ x ∈ [x − δ; x + δ]. Прежде чем перейти к рассмотрению скорости сходимости метода Ньютона, дадим строгое определение этому термину. ∗ Определение 6.2.1. Пусть последовательность {x(k) }∞ k=0 сходится к x . Тогда если существуют такие λ, α ∈ R, что: |x(k+1) − x∗ | = λ, k→∞ |x(k) − x∗ |α lim (6.24) то метод, генерирующий данную последовательность, обладает сходимостью степени α. При α = 1, λ ∈ (0; 1) сходимость называется линейной, при α = 1, λ = 0 сверхлинейной и при α = 2 квадратичной. Следующая теорема доказывает, что сходящийся метод простой итерации в общем случае сходится только линейно. Теорема 6.2.2. Пусть D = [a; b], g ∈ C(D), g(D) ⊂ D и существует производная g 0 (x) для x ∈ (a; b) с таким γ ∈ (0; 1), что |g 0 (x)| ≤ γ для любого x ∈ (a; b). Если g 0 (x∗ ) 6= 0, (k) = то для любого x(0) ∈ D последовательность {x(k) }∞ k=0 , сгенерированная итерацией x (k−1) ∗ g(x ), сходится линейно к единственной неподвижной точке x ∈ [a; b]. Доказательство. По теореме 6.1.2 данная последовательность действительно сходится к x∗ , так что необходимо доказать только факт линейной сходимости. В силу непрерывности g 0 (x) по теореме Лагранжа о среднем значении для любого k > 0 существует такое ξ ∈ (x(k) ; x∗ ) или ξk ∈ (x∗ ; x(k) ), что: g(x(k) ) − g(x∗ ) x(k) − x∗ x(k+1) − x∗ = (k) . x − x∗ g 0 (ξk ) = 113 (6.25) ∗ ∗ (k) }∞ . Более того, благодаря непрерывТак как {x(k) }∞ k=0 сходится к x , к x сходится и {ξ k=0 ности g 0 (x), мы имеем lim g 0 (ξk ) = g 0 (x∗ ) k→∞ x(k+1) − x∗ = g 0 (x∗ ) k→∞ x(k) − x∗ |x(k+1) − x∗ | lim = |g 0 (x∗ )|. k→∞ |x(k) − x∗ | =⇒ lim =⇒ (6.26) ∗ Тогда, так как 0 < |g 0 (x∗ )| < 1, последовательность {x(k) }∞ k=0 сходится к x линейно. Рассмотренная теорема предполагает, что сходимость быстрее линейной возможна только при g 0 (x∗ ) = 0. Действительно, как доказывает следующая теорема, сходимость в таком случае становится как минимум квадратичной. Теорема 6.2.3. Пусть x∗ ∈ (a; b) является неподвижной точкой функции g(x), т.е. x∗ = g(x∗ ). Пусть также g 0 (x∗ ) = 0 и |g 00 (x)| < M для x ∈ (a; b). Тогда существует такое (k) = g(x(k−1) ), k > 1, δ > 0, что последовательность {x(k) }∞ k=0 , генерируемая итерацией x ∗ ∗ ∗ сходится к x в области [x − δ; x + δ] как минимум квадратически. Более того, для асимптотически больших k, верно следующее неравенство: |x(k+1) − x∗ | < M (k) |x − x∗ |2 . 2 (6.27) Доказательство. По аналогии с доказательством теоремы 6.2.1 выберем такое δ > 0 и γ ∈ (0; 1), что |g 0 (x)| ≤ γ для x ∈ [x∗ − δ; x∗ + δ] ⊂ [a; b]. В том же доказательстве мы установили, (0) ∈ [x∗ − δ; x∗ + δ] будем так же содержаться в что последовательность {x(k) }∞ k=0 для x [x∗ − δ; x∗ + δ]. Разложим g(x) в ряд Тейлора в точке x∗ : g(x) = g(x∗ ) + g 0 (x∗ )(x − x∗ ) + g 00 (ξ) (x − x∗ )2 2 (6.28) где x ∈ [x∗ − δ; x∗ + δ] и, следовательно, ξ ∈ [x∗ ; x] или ξ ∈ [x; x∗ ]. Используя установки теоремы, а именно g(x∗ ) = x∗ и g 0 (x∗ ) = 0, мы имеем: g(x) = x∗ + g 00 (ξ) (x − x∗ )2 . 2 (6.29) Тогда для x = x(k) мы получаем: g 00 (ξk ) (k) (x − x∗ )2 2 g 00 (ξk ) (k) =⇒ x(k+1) − x∗ = (x − x∗ )2 . 2 g(x(k) ) = x∗ + 114 (6.30) ∗ Так как |g 0 (x)| ≤ γ для x ∈ [x∗ − δ; x∗ + δ], последовательность {x(k) }∞ k=0 сходится к x =⇒ ∗ 00 00 ∗ {ξ (k) }∞ k=0 сходится к x =⇒ limk→∞ g (ξk ) = g (x ). Тогда имеем: lim g 00 (ξk ) = g 00 (x∗ ) k→∞ =⇒ x(k+1) − x∗ g 00 (x∗ ) = k→∞ (x(k) − x∗ )2 2 =⇒ |x(k+1) − x∗ | |g 00 (x∗ )| = , k→∞ |x(k) − x∗ |2 2 lim (6.31) lim что доказывает квадратичную сходимость. Так как |g 00 (x∗ )| < M , мы также получаем следующую оценку: M (k) |x(k+1) − x∗ | < |x − x∗ |2 . (6.32) 2 Теорема 6.2.3 дает нам возможность построить такую функцию g(x) в соответствии с определением (6.4) для нахождения корня функции f (x), что метод простой итерации будет сходиться квадратично. Как мы убедились, для этого необходимо, чтобы g 0 (x∗ ) = 0. Тогда по формуле (6.4) для одномерного случая имеем: g 0 (x∗ ) = 0 =⇒ 1 − Ω0 (x∗ )f (x∗ ) − Ω(x∗ )f 0 (x∗ ) = 0 =⇒ 1 − Ω(x∗ )f 0 (x∗ ) = 0 1 =⇒ Ω(x∗ ) = 0 ∗ . f (x ) Тогда, выбрав Ω(x) = 1 f 0 (x) , (6.33) мы получаем уже рассмотренный метод Ньютона: x(k) = g(x(k) ) = x(k−1) − f (x(k−1) ) . f 0 (x(k−1) ) (6.34) Таким образом, метод Ньютона является “оптимальным” методом простой итерации и имеет квадратичную сходимость. Рассмотрев одномерный случай, мы можем обобщить результаты на многомерный случай. Мы сразу обратимся к методу Ньютона в форме метода простой итерации и сформулируем без доказательства теорему о методе простой итерации с квадратичной сходимостью. Теорема 6.2.4. Пусть x∗ является неподвижной точкой функции g(x), т.е. g(x∗ ) = x∗ , и пусть функция g(x) удовлетворяет следующим условиям: • существует такое δ, что производные ∂gi непрерывны в D = {x ∂xj | ||x − x∗ || < δ}; ∂ 2 gi ∂ 2 gi непрерывны и ограничены, т.е. ≤ M, в D = ∂xj ∂xk ∂xj ∂xk ||x − x∗ || < δ}; • вторые производные {x | 115 • ∂gi (x∗ ) = 0, ∂xj для i = 1, . . . , n, j = 1, . . . , n и k = 1, . . . , n. Тогда существует такое δ̂ ≤ δ, что последо(k) = g(x(k−1) ), сходится квадратично вательность {x(k) }∞ k=0 , генерируемая итерацией x к x∗ для любого x(0) , удовлетворяющего ||x(0) − x∗ || < δ̂, так, что верно следующее неравенство: n2 M (k−1) ||x(k) − x∗ ||∞ ≤ ||x − x∗ ||2∞ , k ≥ 1. (6.35) 2 Для вывода метода Ньютона для многомерного случая рассмотрим формулу (6.4) покоординатно: n X gi (x) = xi − ωij (x)fj (x). (6.36) j=1 По условиям теоремы 6.2.4 для построения метода простой итерации с квадратичной сходимостью нам необходимо обнулить производные функций gi (x) в точке x∗ . Найдем для начала соответствующие производные:  n n X X ∂fj (x) ∂ωij (x)   1 − fj (x) − ωij (x) , i = j,   ∂xj ∂xj ∂gi (x) j=1 j=1 = (6.37) n n X X  ∂xj ∂ωij (x) ∂fj (x)   fj (x) − , i 6= j. ωij (x)  − ∂xj ∂xj j=1 j=1 Тогда обнуление производных дает уравнения: n X ωij (x∗ ) ∂fj (x∗ ) = 1, i = j, ∂xj (6.38) ωij (x∗ ) ∂fj (x∗ ) = 0, i 6= j. ∂xj (6.39) j=1 n X j=1 где мы использовали факт fj (x∗ ) = 0. Легко убедиться, что в матричном виде это эквивалентно следующему выражению: Ω(x∗ )J (x∗ ) = E где матрица J называется матрицей Якоби и имеет следующую форму:   ∂f1 (x) ∂f1 (x) . . . ∂xn  ∂x. 1 ..  ..  .. J (x) =  . . .  ∂fn (x) n (x) . . . ∂f∂x ∂x1 n (6.40) (6.41) Таким образом, для квадратичной сходимости в качестве Ω(x) мы можем выбрать обратную матрицу Якоби: Ω(x) = J −1 (x), (6.42) 116 что дает формулировку метода Ньютона для систем нелинейных алгебраических уравнений: x(k) = g(x(k) ) = x(k−1) − J −1 (x(k−1) )f (x(k−1) ). (6.43) На практике обратная от матрицы Якоби не вычисляется, вместо чего используется следующая двухшаговая процедура: J (x(k−1) )y (k−1) = f (x(k−1) ), (k) x (k−1) =x −y (k−1) , (6.44) (6.45) где y (k−1) находится через решение первого уравнения. Заметим, что в такой форме метод Ньютона требует на каждой итерации n вычислений значений векторной функции f (x(k−1) ), n2 вычислений значений матрицы Якоби J (x(k−1) ) и O(n3 ) операций для нахождения y (k−1) . Подобная алгоритмическая сложность не позволяет использовать метод Ньютона в его стандартной форме для систем большой размерности. 6.3 Квазиньютоновские методы Квазиньютоновские методы представляют собой класс методов, уменьшающих алгоритмическую сложность метода Ньютона за счет аппроксимации матрицы Якоби тем или иных способом. Уменьшение алгоритмической сложности, однако, приводит к замене квадратичной сходимости на сверхлинейную. Более того, так как аппроксимация матрицы Якоби в сущности является заменой точных производных скалярных функций на аппроксимации путем численного дифференцирования, квазиньютоновские методы являются вычислительно неустойчивыми и могут накапливать погрешность округления с каждой итерацией. В этом разделе мы рассмотрим один из квазиньютоновских методов, а именно метод Бройдена, который обобщает метод хорд на многомерный случай. Предположим, что x(0) является начальным приближением и следующее приближение x(1) было рассчитано по методу Ньютона. Это также означает, что мы уже рассчитали матрицу Якоби в точке x(0) , т.е. J (x(0) ). Для нахождения аппроксимации матрицы Якоби в точке x(1) нам необходимо сначала взглянуть на одномерный случай. Рассмотрим формулу для численного дифференцирования первого порядка: f 0 (x(1) ) ≈ f (x(1) ) − f (x(0) ) . x(1) − x(0) (6.46) Обобщить это выражение на многомерный случай можно, если переписать его в следующей форме:   f 0 (x(1) ) x(1) − x(0) ≈ f (x(1) ) − f (x(0) ), (6.47) из чего следует:   J (x(1) ) x(1) − x(0) ≈ f (x(1) ) − f (x(0) ). 117 (6.48) Введем обозначение для аппроксимации матрицы Якоби: A1 ≈ J (x(1) ). Тогда мы получаем следующее равенство:   A1 x(1) − x(0) = f (x(1) ) − f (x(0) ). (6.49) Это выражение не позволяет однозначно определить матрицу A1 , так как оно определяет поведение матрицы лишь в направлении одного вектора x(1) −x(0) в n-мерном пространстве. Бройден логично предположил, что действие матрицы A1 на все вектора z, ортогональные вектору x(1) − x(0) , должны быть аналогичны действию на них матрицы J (x(0) ): A1 z = J (x(0) )z, hx(1) − x(0) , zi = 0. (6.50) Эти два условия однозначно задают матрицу A1 , выражение для которой будет тогда иметь вид:   T f (x(1) ) − f (x(0) ) − J (x(0) )(x(1) − x(0) ) x(1) − x(0) (0) . (6.51) A1 = J (x ) + hx(1) − x(0) , x(1) − x(0) i Действительно, легко убедиться, что такая матрица удовлетворяет заданным условиям. Например, для вектора z, удовлетворяющего hx(1) − x(0) , zi = 0, мы имеем:   f (x(1) ) − f (x(0) ) − J (x(0) )(x(1) − x(0) ) hx(1) − x(0) , zi (0) A1 z = J (x )z + hx(1) − x(0) , x(1) − x(0) i (6.52) = J (x(0) )z, в то время как для x(1) − x(0) перемножение дает:     A1 x(1) − x(0) = J (x(0) ) x(1) − x(0) +   f (x(1) ) − f (x(0) ) − J (x(0) )(x(1) − x(0) ) hx(1) − x(0) , x(1) − x(0) i + hx(1) − x(0) , x(1) − x(0) i   h i = J (x(0) ) x(1) − x(0) + f (x(1) ) − f (x(0) ) − J (x(0) )(x(1) − x(0) ) = f (x(1) ) − f (x(0) ). (6.53) Используя подобную аппроксимацию для матрицы Якоби, модифицированный метод Ньютона имеет вид: Ak = Ak−1 + (yk − Ak−1 sk ) sTk , ||sk ||22 Ak w(k) = f (x(k) ), (k+1) x =x (k) −w (6.54) (6.55) (k) , (6.56) где yk = f (x(k) ) − f (x(k−1) ), sk = x(k) − x(k−1) . Даже после такого упрощения нам все еще необходимо O(n3 ) операций для нахождения w(k) , так что полученный метод в его текущей форме не имеет преимуществ перед методом Ньютона. Его можно улучшить, если 118 сформулировать рекуррентное соотношение для обратной матрицы A−1 k . В этом нам поможет формула Шермана–Моррисона, которая гласит, что для невырожденной матрицы A и векторов x, y верно следующее выражение: A + xy T −1 = A−1 − A−1 xy T A−1 , σ (6.57) где σ = 1 + y T A−1 x. Убедимся, что формула действительно является тождественно верной. Домножение слева на A + xy T дает:   −1 A + xy T A−1 xy T A−1 T E = A + xy A − σ (6.58) T −1 T −1 T xy A + xy A xy A−1 T −1 =⇒ xy A − = O. σ Тогда домножение справа на x и подстановка y T A−1 x = σ − 1 дает:   y T A−1 x + y T A−1 xy T A−1 x T −1 = 0, x y A x− σ   σ − 1 + (σ − 1)2 = 0, =⇒ x σ − 1 − σ (6.59) где, как несложно убедиться, выражение в скобках тождественно обращается в ноль. Найдем выражение для A−1 k , используя формулу Шермана–Моррисона: A−1 k = =  −1 (yk − Ak−1 sk ) sTk Ak−1 + ||sk ||22 A−1 k−1 T −1 A−1 k−1 (yk − Ak−1 sk ) sk Ak−1   − yk − Ak−1 sk ||sk ||22 1 + sTk A−1 k−1 ||sk ||22 = A−1 k−1 − = A−1 k−1 − (6.60) T −1 A−1 k−1 (yk − Ak−1 sk ) sk Ak−1 ||sk ||22 + sTk A−1 k−1 (yk − Ak−1 sk )  −1 Ak−1 yk − sk sTk A−1 k−1 , −1 T sk Ak−1 yk −1 2 что позволяет рассчитать A−1 k , используя Ak−1 , за O(n ) операций. Таким образом, мы получаем следующие рекуррентные соотношения для метода Бройдена:  T −1 A−1 k−1 yk − sk sk Ak−1 −1 −1 , (6.61) Ak = Ak−1 − sTk A−1 k−1 yk (k) x(k+1) = x(k) − A−1 k f (x ). 119 (6.62) 6.4 Метод градиентного спуска Метод градиентного спуска, используемый для нахождения минимума нелинейной целевой функции, может быть использован и для нахождения корней нелинейной системы алгебраических уравнений так же, как и в случае со СЛАУ (см. вывод метода градиентого спуска в разделе 5.2.9). Он обладает линейной сходимостью, вследствие чего редко используется для нахождения окончательного значения корня. Чаще его роль заключается в том, чтобы найти подходящее начальное приближение для метода Ньютона. Подобная страгегия работает благодаря тому, что метод градиентного спуска накладывает гораздо меньше ограничений на бассейн притяжения (т.е. область, которой должно принадлежать начальное приближение). Так как в случае нелинейной системы вида 6.3 вектор невязки формально равен f (x), корень нелинейной системы алгебраических уравнений совпадает со следующим аргументом минимизации: argmin g(x) = argminhf (x), f (x)i. (6.63) x x Как мы уже обсуждали в разделе 5.2.9, в подобных задачах минимизации необходимо найти шаг поиска t и направление поиска v для формирования итерации вида: x(k) = x(k−1) + t(k) v (k) . (6.64) Оптимальным направлением поиска является направление, обратное вектору градиента функции g(x), также называемое направлением наискорейшего спуска: v (opt) = −∇g(x)   ∂g ∂g ∂g T =− , ,..., ∂x1 ∂x2 ∂xn " n #T n n X X ∂fi (x) X ∂fi (x) ∂fi (x) =− 2fi (x) , ,..., 2fi (x) 2fi (x) ∂x1 ∂x2 ∂xn i=1 T i=1 (6.65) i=1 = −2J (x)f (x). Выбрав в качестве направления поиска направление наискорейшего спуска, мы получаем метод градиентного спуска: z (k) = J T (x(k−1) )f (x(k−1) ), x(k) = x(k−1) − t(k) z (k) . ||z (k) ||2 (6.66) Нахождение оптимального значения для t(k) не всегда является тривиальной задачей, так (k) как это требует дифференцирования функции h(t) = g(x(k−1) −t ||zz(k) || ) относительно t. Для 2 упрощения задачи, мы саппроксимируем функцию h(t) квадратичным полиномом P2 (t) и (k) (k) (k) найдем ее минимум. Для этого нам необходимо найти три значения t1 , t2 , t3 . Мы сразу (k) можем выбрать t1 = 0, так как оно является минимальным значением t и гарантированно (k) (k) (k) не является оптимальным. Затем мы выбираем такое t3 , что h(t1 ) > h(t3 ), что можно 120 (k) (k) сделать, начав подбирать с t3 = 1, и после делить t3 пополам или удваивать до тех пор, (k) (k) пока не выполнится указанное условие. Когда t3 , мы автоматически можем найти t2 = (k) t3 2 . Тогда, в соответствии с интерполяцией Лагранжа (см. 2.26), мы получаем следующее выражение для P2 (t): (k) (k) P2 (t) = h(t1 ) (k) (k) (k) (k) (t − t2 )(t − t3 ) (k) (k) (t1 − t2 )(t1 − t3 ) (k) +h(t2 ) (k) (t − t1 )(t − t3 ) (k) (k) (k) (k) (t2 − t1 )(t2 − t3 ) (k) (k) +h(t3 ) (k) (t − t1 )(t − t2 ) (k) (k) (k) (k) (t3 − t1 )(t3 − t2 ) (6.67) Производная P2 (t) имеет вид: (k) (k) (k) (k) (k) (k) dP2 2t − t1 − t3 2t − t1 − t2 2t − t2 − t3 (k) (k) (k) +h(t2 ) (k) +h(t3 ) (k) . = h(t1 ) (k) (k) (k) (k) (k) (k) (k) (k) (k) (k) dt (t1 − t2 )(t1 − t3 ) (t2 − t1 )(t2 − t3 ) (t3 − t1 )(t3 − t2 ) (6.68) Для упрощения записи введем следующие обозначения: (k) a(k) = h(t1 ) (k) (k) (k) (k) , (6.69) , (6.70) . (6.71) (t1 − t2 )(t1 − t3 ) (k) b(k) = h(t2 ) (k) (k) (k) (k) (t2 − t1 )(t2 − t3 ) (k) c(k) = h(t3 ) (k) (k) (k) (k) (t3 − t1 )(t3 − t2 ) Тогда путем обнуления производной мы находим следующее квазиоптимальное значение для t(k) :       (k) (k) (k) (k) (k) (k) a(k) t2 + t3 + b(k) t1 + t3 + c(k) t1 + t2  t(k) = . (6.72) 2 a(k) + b(k) + c(k) 121 . Численное решение задачи Коши для систем ОДУ Дифференциальные уравнения являются каркасом большинства математических моделей, формулируемых во всех направлениях науки, где производится попытка математически формализовать то или иное явление или процесс. Это объясняется тем, что в большинстве случаев описание рассматриваемого явления или процесса сводится к заданию взаимосвязи между изменениями значений переменных рассматриваемой системы (например, характеризуемыми производной dy(t) dt ) и самими значениями (например, значением переменной y(t)) при некотором значении параметра системы (например, в момент времени t). В том случае, когда переменные рассматриваемой системы изменяются непрерывно, дифференциальные уравнения являются очевидным способом описания соответствующего явления или процесса. Для контраста отметим, что если переменные изменяются прерывно (это может происходить, например, в случае дискретного времени), операция дифференцирования становится невозможной, и используют другие способы описания: конечные автоматы, итерации отображений и проч. Среди дифференциальных уравнений принято выделять две основные группы – обыкновенные дифференциальные уравнения (ОДУ) и уравнения в частных производных. Мы будем рассматривать нормальные ОДУ n-го порядка, т.е. разрешенные относительно производной: y (n) (t) = f (t, y, y 0 , . . . , y (n−1) ), t ∈ [a; b]. (7.1) В частности, мы рассмотрим нахождение решения ОДУ с помощью задания начальных условий для переменных, что известно как задача Коши: y(a) = y0 , y (a) = y01 , ... y (n−1) (a) = y0,n−1 . (7.2) (7.3) (7.4) (7.5) Несложно убедиться, что подобное ОДУ n-го порядка можно представить в виде системы 122 ОДУ 1-го порядка:  y1 y2 .. .   y2 y3 .. .         d      = ,     dt   yn−1   yn f (t, y1 , . . . , yn ) yn (7.6) где y1 = y, y2 = y 0 , . . . , yn = y (n−1) . В таком случае рассмотрение численных методов решения задачи Коши для систем ОДУ 1-го порядка позволяет закрыть большой класс практических задач, связанных с нахождением решения различных систем ОДУ. Более того, те же численные методы используются при решении задачи Коши для уравнений в частных производных. Рассмотрим, например, уравнение теплопроводности: ∂u = α∇2 u + q(x, t), ∂t (7.7) где u = u(x, t), α ∈ R и q(x, t) – некоторая функция. Дискретизация пространства приводит к тому, что функция u, изначально являющаяся бесконечномерным вектором, заменяется на конечномерный вектор u = [u1 (t), u2 (t), . . . , un (t)]T , каждый элемент которого все еще является функцией от времени t. Такая форма дискретизации называется полудискретизацией. Аналогичная метаморфоза происходит в функцией q(x, t), которая заменяется на конечномерный вектор q = [q1 (t), q2 (t), . . . , qn (t)]T . Оператор Лапласа ∇2 также преобразуется в конечномерную форму, а именно в матрицу A. В результате мы получаем следующую систему ОДУ: du = αAu + q (7.8) dt с задачей Коши для t = t0 . Для ее решения мы можем использовать те же численные методы, которые мы используем для любых других систем ОДУ 1-го порядка. Убедившись в важности задачи Коши для систем ОДУ 1-го порядка, рассмотрим n-мерную систему 1-го порядка в общем виде:     y1 (t) f1 (t, y1 , . . . , yn )    d   y2 (t)   f2 (t, y1 , . . . , yn )  (7.9)  ..  =   .. dt  .    . yn (t) fn (t, y1 , . . . , yn ) или кратко в векторном виде: dy = f (t, y). (7.10) dt с начальными условиями y1 (a) = α1 , . . . , yn (a) = αn , где t ∈ [a; b]. Важным моментом в задаче Коши является существование и единственность решений данной системы ОДУ 1-го порядка. Соответствующая теорема полагается на понятие липшиц-непрерывных функций, так что нам необходимо обобщить определение 1.3.18, данное во введении. 123 Определение 7.0.1. Пусть дана область D = {(t, y1 , . . . , yn ) | t ∈ [a; b], y1 , . . . , yn ∈ R}. Тогда функция f (t, y1 , . . . , yn ), определенная на D, называется липшиц-непрерывной по переменным y1 , . . . , yn , если существует такое K > 0, что |f (t, ỹ1 , . . . , ỹn ) − f (t, ỹ˜1 , . . . , ỹ˜n )| ≤ K n X |ỹi − ỹ˜i | (7.11) i=1 для любых (t, ỹ1 , . . . , ỹn ) ∈ D и (t, ỹ˜1 , . . . , ỹ˜n ) ∈ D. Теперь можем рассмотреть формулировку теоремы о существовании и единственности решения задачи Коши без доказательства. Теорема 7.0.1. Пусть дана область D = {(t, y1 , . . . , yn ) | t ∈ [a; b], y1 , . . . , yn ∈ R}. Пусть функции fi (t, y1 , . . . , yn ), i = 1, . . . , n, липшиц-непрерывны по переменным y1 , . . . , yn в D. Тогда система ОДУ 1-го порядка вида     y1 (t) f1 (t, y1 , . . . , yn )    d   y2 (t)   f2 (t, y1 , . . . , yn )  (7.12)  ..  =   .. dt  .    . yn (t) fn (t, y1 , . . . , yn ) с начальными условиями y1 (a) = α1 , . . . , yn (a) = αn имеет единственное решение для t ∈ [a; b]. Здесь и далее мы будем рассматривать детальные выводы относительно одного ОДУ, а после презентовать обобщение для систем ОДУ. 7.1 Метод Эйлера Метод Эйлера является стартовой точкой в разговоре о численных методах решения задачи Коши в силу простоты своего вывода и возможности легко аналитически оценить как глобальные, так и локальные погрешности метода. Рассмотрим следующее ОДУ: dy = f (t, y), dt (7.13) где t ∈ [a; b] и y(a) = α. Все методы, которые мы будем рассматривать, предполагают дискретизацию координаты t в сетку вида ti = a + ih, i = 1, . . . , m, где h = b−a m = ti+1 − ti называют шагом. Это автоматически дает дискретизацию решения y(t) в виде yi = y(ti ). Предположим, что y(t) ∈ C 2 [a; b] и разложим функцию y(t) в ряд Тейлора в точке ti : y(t) = y(ti ) + y 0 (ti )(t − ti ) + 124 y 00 (ξ) (t − ti )2 , 2 (7.14) где ξ ∈ (ti ; t) для t > ti . Вычислим значение ряда в точке ti+1 : h2 y 00 (ξi ) 2 h2 y 00 (ξi ) =⇒ y(ti+1 ) = y(ti ) + hf (ti , y(ti )) + , 2 y(ti+1 ) = y(ti ) + hy 0 (ti ) + (7.15) где ξi ∈ (t; ti+1 ). Теперь предположив, что h мало, мы можем отбросить член порядка O(h2 ), что дает нам формулировку метода Эйлера: w0 = α, (7.16) wi+1 = wi + hf (ti , wi ), i = 0, 1, . . . , m − 1, (7.17) где мы ожидаем, что wi ≈ y(ti ). 2 Рисунок 7.1 демонстрирует работу метода Эйлера на пример ОДУ dy dt = y − t + 1 для 5 1 y(0) = 2 и t ∈ [0; 2 ]. Это ОДУ первого порядка является линейным, что позволяет легко найти точное решение: y(t) = (t + 1)2 + (y(0) − 1)et . Этот рисунок также позволяет продемонстрировать два важных вида погрешности метода, характерных для численных методов решения задачи Коши: локальную погрешность метода и глобальную погрешность метода. Локальной погрешностью (погрешностью на шаге) называют абсолютное отклонение приближенного решения от точного в пределах одного шага. На рисунке 7.1 локальную погрешность проще всего наблюдать для t = 12 . Глобальной погрешностью в свою очередь называют погрешность, накопленную на всем интервале [a; b]. В случае решения, изображенного на рисунке 7.1, глобальную погрешность можно оценить как максимальное абсолютное отклонение, наблюдаемое при t = 52 . Так как при выводе метода Эйлера предполагалось, что член порядка O(h2 ) мал и может быть отброшен, мы можем утверждать, что локальная погрешность метода Эйлера имеет порядок O(h2 ). В таком случае глобальную погрешность можно оценить как напо2 ленную локальную погрешность, что дает порядок m · O(h2 ) = b−a h · O(h ) ∼ O(h). Более точный вывод верхней границы и, соответственно, порядка для глобальной погрешности гораздо сложнее, так что нам необходимо рассмотреть две вспомогательных леммы. Лемма 7.1.1. Для любого x ≥ −1 и k > 0 справедливы следующие неравенства: 0 ≤ (1 + x)k ≤ ekx (7.18) Доказательство. Ряд Маклорена для f (x) = ex имеет вид: 1 ex = 1 + x + x2 eξ , 2 (7.19) где ξ расположен между x и 0. Тогда для x ≥ −1 справедливо неравенство: 1 0 ≤ 1 + x ≤ 1 + x + x2 eξ = ex 2 k kx =⇒ 0 ≤ (1 + x) ≤ e . 125 (7.20) 7 6 5 y 4 3 2 1 wi y(t) 0.0 0.5 1.0 1.5 2.0 2.5 t 2 Рисунок 7.1 – Синие точки обозначают решение ОДУ dy dt = y − t + 1 с начальным условием 1 y(0) = 2 , полученное методом Эйлера. Зеленая кривая обозначает точное решение задачи Коши. 126 Лемма 7.1.2. Пусть s, t > 0 и последовательность {ai }ki=0 задана так, что: t a0 ≥ − , s ai+1 ≤ (1 + s)ai + t, (7.21) i = 0, 1, . . . , k − 1. Тогда верным является следующее неравенство:   t t (i+1)s ai+1 ≤ e a0 + ai − . s s (7.22) (7.23) Доказательство. Раскроем рекуррентное неравенство, заданное в условии леммы: ai+1 ≤ (1 + s)ai + t ≤ (1 + s) [(1 + s)ai−1 + t] + t = (1 + s)2 ai−1 + (1 + 1 + s)t   ≤ (1 + s)3 ai−2 + 1 + 1 + s + (1 + s)2 t (7.24) .. .   ≤ (1 + s)i+1 a0 + 1 + 1 + s + (1 + s)2 + · · · + (1 + s)i t i+1 = (1 + s) a0 + t i X (1 + s)j . j=0 Несложно убедиться, что сумма по j является суммой членов геометрической прогрессии. Тогда имеем: 1 − (1 + s)i+1 1 − (1 + s)   t = (1 + s)i+1 a0 + (1 + s)i+1 − 1  s  t t = (1 + s)i+1 a0 + − , s s ai+1 ≤ (1 + s)i+1 a0 + t (7.25) где, используя лемму 7.1.1, мы получаем: ai+1 ≤ e (i+1)s  t a0 + s  t − . s (7.26) Теперь мы можем приступить к рассмотрению теоремы о верхней границе глобальной погрешности метода Эйлера. Теорема 7.1.1. Пусть функция f (t, y) является липшиц-непрерывной в D = {(t, y) | t ∈ [a; b], y ∈ R} с константой Липшица L. Пусть существует такое M > 0, что |y 00 (t)| < M для любого t ∈ [a; b], где y(t) является единственным решением задачи Коши y 0 = f (t, y), 127 y(a) = α. Тогда для последовательности {wi }m i=0 , сгенерированной методом Эйлера, верно следующее неравенство:  hM  L(ti −a) |y(ti ) − wi | ≤ e − 1 , i = 0, 1, . . . , m, (7.27) 2L где h = b−a m . Доказательство. Из вывода метода Эйлера мы имеем: yi+1 = yi + hf (ti , yi ) + h2 00 y (ξi ), 2 (7.28) где yi = y(ti ). Тогда выражение для yi+1 − wi+1 имеет вид: yi+1 − wi+1 = yi − wi + h [f (ti , yi ) − f (ti , wi )] + h2 00 y (ξi ), 2 (7.29) h2 00 |y (ξi )|. 2 (7.30) из чего следует неравенство: |yi+1 − wi+1 | ≤ |yi − wi | + h|f (ti , yi ) − f (ti , wi )| + Так как функция f (t, y) является липщиц-непрерывной, мы имеем: |yi+1 − wi+1 | ≤ (1 + hL)|yi − wi | + h2 00 |y (ξi )|. 2 (7.31) h2 M . 2 (7.32) Более того, в силу ограниченности y 00 (t) мы получаем: |yi+1 − wi+1 | ≤ (1 + hL)|yi − wi | + Тогда применение леммы 7.1.2 вместе с |y0 − w0 | = 0 и (i + 1)h = ti+1 − a дает:   h2 M h2 M (i+1)hL |yi+1 − wi+1 | ≤ e |y0 − w0 | + − 2hL 2hL   hM (i+1)hL = e −1 2L  hM  (ti+1 −a)L = e −1 . 2L 7.1.1 (7.33) Методы решения задачи Коши, основанные на разложении в ряд Тейлора Очевидно, что подход, основанный на разложении в ряд Тейлора, который мы использовали при выводе метода Эйлера, может быть обобщен на разложения более высокого порядка: y(ti+1 ) = y(ti ) + hy 0 (ti ) + hn (n) hn+1 (n+1) h2 00 y (ti ) + · · · + y (ti ) + y (ξi ), 2 n! (n + 1)! 128 (7.34) где ξ ∈ (ti , ti+1 ). Так как y (k) = f (k−1) (t, y(t)), мы имеем: h2 0 hn hn+1 (n) f (ti , y(ti )) + · · · + f (n−1) (ti , y(ti )) + f (ξi , y(ξi )). 2 n! (n + 1)! (7.35) Это позволяет сформировать метод решения задачи Коши порядка n относительно глобальной погрешности: y(ti+1 ) = y(ti ) + hf (ti , y(ti )) + w0 = α, (7.36) wi+1 = wi + hT (n) (ti , wi ), (7.37) где функция T (n) (ti , wi ) определена как: T (n) (ti , wi ) = f (ti , y(ti )) + h 0 hn−1 (n−1) f (ti , y(ti )) + · · · + f (ti , y(ti )). 2 n! (7.38) Метод Эйлера является частным случаем подобного обобщенного метода и имеет первый порядок точности. Подобные методы не используются на практике, так как требуют дополнительных вычислений для нахождения производных f (k) (t, y(t)). Однако они позволяют создавать методы произвольного порядка точности и являются хорошей базой для вывода более эффективных методов, таких, как метод Рунге–Кутты. 7.2 Методы Рунге–Кутты Прежде чем перейти к выводу методов Рунге-Кутты, нам необходимо рассмотреть теорему о формуле Тейлора для функции двух переменных. Теорема 7.2.1. Пусть f (t, y) ∈ C n+1 в области D = {(t, y) | t ∈ [a; b], t ∈ [c; d]} и пусть (t0 , y0 ) ∈ D. Тогда для любого (t, y) ∈ D существуют такие ξ между t и t0 и µ между y и y0 , что: f (t, y) = Pn (t, y) + Rn (t, y), (7.39) где n-й многочлен Тейлора Pn (t, y) имеет вид:   ∂f ∂f Pn (t, y) = f (t0 , y0 ) + (t − t0 ) (t0 , y0 ) + (y − y0 ) (t0 , y0 ) + ∂t ∂y   2 2 (t − t0 ) ∂ f ∂f (y − y0 )2 ∂ 2 f (t0 , y0 ) + (t − t0 )(y − y0 ) (t0 , y0 ) + (t0 , y0 ) + · · · + + 2 ∂t2 ∂t∂y 2 ∂y 2 n   1 X n ∂nf + (t − t0 )n−j (y − y0 )j n−j j (t0 , y0 ), (7.40) n! j ∂t ∂y j=0 и остаточный член Rn (t, y): n+1 X n + 1 1 ∂ n+1 f Rn (t, y) = (t − t0 )n+1−j (y − y0 )j n+1−j j (ξ, µ). (n + 1)! ∂t ∂y j j=0 129 (7.41) Методы Рунге–Кутты основаны на аппроксимации T (n) (t, y), определенного формулой (7.38). Так как формула для T (n) (t, y) была построена путем отбрасывания члена порядка O(hn ), нам достаточно найти аппроксимацию φ(t, y) точную вплоть до члена порядка O(hn ): T (n) (t, y) = φ(t, y) + O(hn ). (7.42) Подобная аппроксимация позволяет получить метод n-го порядка с такой функцией φ(t, y), что в ней присутствуют только вычисления значений функции f (t, y) без каких-либо ее производных. Это достигается за счет использования некоторой обобщенной формы с неопределенными коэффициентами, которые затем находятся методом неопределенных коэффициентов. Рассмотрим, например, вывод метода Рунге–Кутты 2-го порядка. Это означает, что нам необходимо найти аппроксимацию для T (2) (t, y) точную до члена порядка O(h2 ). Рассмотрим следующую аппроксимирующую функцию: φ(t, y) = a1 f (t + α1 , y + β1 ). (7.43) с неопределенными коэффициентами a1 , α1 , β1 . Раскроем выражение для T (2) (t, y): h 0 f (t, y) 2  h ∂f ∂f = f (t, y) + (t, y) + (t, y)y (t) 2 ∂t ∂y h ∂f h ∂f = f (t, y) + (t, y) + (t, y)f (t, y). 2 ∂t 2 ∂y T (2) (t, y) = f (t, y) + (7.44) Теперь разложим функцию f (t, y) в ряд Тейлора в точке (t, y) и вычислим значение ряда, соответствующее φ(t, y) = a1 f (t + α1 , y + β1 ): a1 f (t + α1 , y + β1 ) = a1 f (t, y) + a1 α1 ∂f ∂f (t, y) + a1 β1 (t, y) + a1 R1 (t + α1 , y + β1 ). ∂t ∂y Приравнивая коэффициенты при f (t, y), получаем: ∂f ∂t (t, y) и ∂f ∂y (t, y) (7.45) в выражениях (7.44) и (7.45), a1 = 1, h α1 = , 2 h α2 = f (t, y), 2 (7.46) (7.47) (7.48) из чего следует: T (2) (t, y) = f (t + h h h h , y + f (t, y)) − R1 (t + , y + f (t, y)). 2 2 2 2 (7.49) Мы ожидаем, что функция R1 будет иметь порядок O(h2 ). Убедимся в этом: R1 (t + h h h2 ∂ 2 f h2 ∂2f h2 2 ∂2f , y + f (t, y)) = (ξ, µ) + f (t, y) (ξ, µ) + f (t, y) (ξ, µ) 2 2 8 ∂t2 4 ∂t∂y 8 ∂y 2 = O(h2 ). 130 (7.50) Таким образом, мы получаем формулировку метода Рунге–Кутты 2-го порядка, также называемого модифицированным методом Эйлера: w0 = α, (7.51) wi+1 = wi + hf (ti + h h , wi + f (ti , wi )), 2 2 i = 0, 1, . . . , m − 1. (7.52) Функция φ(t, y) была подобрана таким образом, что соответствующее разложение в ∂f ряд Тейлора включало в себя составляющие функции T (2) (t, y), т.е. f (t, y), ∂f ∂t (t, y) и ∂y (t, y). Рассмотрим теперь вывод метода Рунге–Кутты 3-го порядка. Для этого нам необходимо найти аппроксимацию для выражения T (3) (t, y): T (3) (t, y) = f + =f+ =f+ =f+ =f+ h 0 h2 00 f + f 2 6 h [∂t f + f ∂y f ] + 2 h [∂t f + f ∂y f ] + 2 h [∂t f + f ∂y f ] + 2 h [∂t f + f ∂y f ] + 2 h2 d [f ∂y f + ∂t f ] 6 dt   h2 0 d d f ∂y f + f (∂y f ) + (∂t f ) 6 dt dt 2 h [(∂t f + f ∂y f ) ∂y f + f (∂yt f + f ∂yy f ) + (∂tt f + f ∂ty f )] , 6 i h2 h ∂t f ∂y f + f (∂y f )2 + 2f ∂yt f + f 2 ∂yy f + ∂tt f , 6 (7.53) где для компактности была опущена зависимость f (t, y) от t и y и использовались сокра∂2f щенные записи производных: например, ∂t f = ∂f ∂t и ∂ty f = ∂t∂y . Заметим, что в выражении для T (3) (t, y) присутствуют ∂t f ∂y f и (∂y f )2 , нехарактерные для обычного разложения в ряд Тейлора. Чтобы те же члены присутствовали в аппроксимации φ(t, y), нам необходимо рассмотреть следующую форму для этой функции: φ(t, y) = a1 f (t, y) + a2 f (t + α1 , y + β1 f (t + α2 , y + β2 f (t, y))) . (7.54) Прежде чем рассмотреть соответствующее разложение в ряд Тейлора, заметим, что вполне логично предположить следующие оценки для коеффициентов (см. (7.52)): a1 ∼ O(1), (7.55) a2 ∼ O(1), (7.56) α1 ∼ O(h), (7.57) α2 ∼ O(h), (7.58) β1 ∼ O(h), (7.59) β2 ∼ O(h). (7.60) Подобные оценки помогут сразу записать получившийся порядок и опустить некоторые выкладки. Теперь рассмотрим выражения для φ(t, y) с учетом разложения f (t, y) в ряд 131 Тейлора:  1 φ(t, y) = a1 f + a2 f + α1 ∂t f + β1 f (t + α2 , y + β2 f )∂y f + α12 ∂tt f + 2  1 + α1 β1 f (t + α2 , y + β2 f )∂ty f + β12 f 2 (t + α2 , y + β2 f )∂yy f + O(h3 ), (7.61) 2 где f = f (t, y). Заметим при этом, что: f (t + α2 , y + β2 f ) = f + α2 ∂t f + β2 ∂y f + O(h2 ). (7.62) Тогда мы имеем:  1 φ(t, y) = a1 f + a2 f + α1 ∂t f + β1 f ∂y f + β1 α2 ∂t f ∂y f + β1 β2 (∂y f )2 + α12 ∂tt f + 2  1 2 2 + α1 β1 f ∂ty f + β1 f ∂yy f + O(h3 ). (7.63) 2 Затем, как и в предыдующем случае, составляем систему уравнений, приравнивая коэффициенты при подобных членах в выражениях (7.53) и (7.63): f =⇒ a1 + a2 = 1, h ∂y f =⇒ f = a2 β1 f, 2 h ∂t f =⇒ = a2 α1 , 2 h2 ∂y f ∂t f =⇒ = a2 β1 α2 , 6 h2 (∂y f )2 =⇒ f = a2 β1 β2 f, 6 1 h2 = a2 α12 , ∂tt f =⇒ 6 2 h2 1 ∂ty f =⇒ 2 f = a2 α1 β1 f, 6 2 h2 2 1 ∂yy f =⇒ f = a2 β12 f 2 , 6 2 (7.64) (7.65) (7.66) (7.67) (7.68) (7.69) (7.70) (7.71) решением которой являются следующие коэффициенты: 1 3 2h h a1 = , a2 = , α1 = β1 = , α 2 = β2 = . 4 4 3 3 (7.72) Таким образом, мы вывели формулу для метода Рунге–Кутты 3-го порядка: w0 = α, wi+1 (7.73)     h 2h 2h h h f (ti , wi ) + 3f ti + , wi + f ti + , wi + f (ti , wi ) , = wi + 4 3 3 3 3 i = 0, 1, . . . , m − 1, (7.74) 132 который также можно записать в следующем виде: w0 = α, (7.75) k1 = hf (ti , wi ),   1 h k2 = hf ti + , wi + k1 , 3 3   2h 2 k3 = hf ti + , wi + k2 , 3 3 1 wi+1 = wi + (k1 + 3k3 ) , i = 0, 1, . . . , m − 1. 4 (7.76) (7.77) (7.78) (7.79) Аналогично можно вывести и метод Рунге–Кутты 4-го порядка, что, правда, становится алгебраически более трудоемким (для дальнейших выводов рекомендуется пользоваться обобщенная схемой формирования выражений для методов Рунге–Кутты произвольного порядка [TODO: Butcher]). Приведем формулировку метода Рунге–Кутты 4-го порядка: w0 = α, (7.80) k1 = hf (ti , wi ),   h 1 k2 = hf ti + , wi + k1 , 2 2   h 1 k3 = hf ti + , wi + k2 , 2 2 k4 = hf (ti + h, wi + k3 ) , 1 wi+1 = wi + (k1 + 2k2 + 2k3 + k4 ) , 6 (7.81) (7.82) (7.83) (7.84) i = 0, 1, . . . , m − 1. (7.85) Также отметим, что в случае системы ОДУ 1-го порядка выражения, полученные для методов Рунге–Кутта не претерпевают никаких существенных изменений. Например, формулировка метода Рунге–Кутты 4-го порядка для систем ОДУ имеет вид: w0 = α, (7.86) k1 = hf (ti , wi ),   h 1 k2 = hf ti + , wi + k1 , 2 2   h 1 k3 = hf ti + , wi + k2 , 2 2 k4 = hf (ti + h, wi + k3 ) , 1 wi+1 = wi + (k1 + 2k2 + 2k3 + k4 ) , 6 (7.87) (7.88) (7.89) (7.90) i = 0, 1, . . . , m − 1. (7.91) Заметим, что увеличение порядка формулы приводит к увеличению количества арифметических операций. В частности, формулы метода Рунге–Кутты 3-го и 4-го порядка требуют 3 и 4 вычислений функции f (t, y) соответственно, в то время как формула 5-го порядка 133 будет требовать уже 6 вычислений функции f (t, y) [TODO: Butcher]. Тренд на непропорциональное увеличение числа вычислений сохраняется и для формул большего порядка. Таким образом, оптимальным выбором среди прочих методов Рунге–Кутты является метод Рунге–Кутты 4-го порядка. 7.3 Многошаговые методы Все методы, которые мы рассматривали до этого момента, были построены таким образом, что они использовали информацию только в пределах одного шага t ∈ [ti ; ti+1 ]. Логично предположить, что мы можем увеличить порядок точности за счет использования уже посчитанных значений функции y(t) на предыдущих шагах ti−1 , ti−2 и так далее. В общем случае соответствующая p-шаговая формула численного решения задачи Коши будет иметь вид: wi+1 = ap−1 wi + ap−2 wi−1 + · · · + a0 wi+1−p + + h [bp f (ti+1 , wi+1 ) + bp−1 f (ti , wi ) + · · · + b0 f (ti+1−p , wi+1−p )] , (7.92) где при bp 6= 0 формула называется неявной, так как рекуррентное соотношение в таком случае не разрешено относительно wi+1 . Заметим, что i ≥ p − 1 и, следовательно, для расчета значений wi+1 , i < p − 1 требуется использовать одношаговый метод (например, метод Рунге–Кутты 4-го порядка). Читатель, ознакомившийся с главой о численном дифференцировании, уже может догадаться, что подобные формулы могут быть выведены с помощью разложения в ряд Тейлора или интерполяции Лагранжа. Мы воспользуемся альтернативным подходом, дающим, однако, тот же результат и так же включающий в себя интерполяцию. Как и раньше, рассмотрим следующее ОДУ: dy = f (t, y), (7.93) dt где t ∈ [a; b] и y(a) = α. Проинтегрируем обе части уравнения на интервале [ti ; ti+1 ]: ˆ ti+1 ˆ ti+1 dy f (t, y(t))dt dt = dt ti ti (7.94) ˆ ti+1 f (t, y(t))dt. =⇒ y(ti+1 ) = y(ti ) + ti Заметим, что функция f (t, y(t)) в сущности является функцией одной переменной t. Тогда для того, чтобы проинтегрировать f (t, y(t)), нам необходимо построить для нее соответствующую аппроксимацию вида f (t, y(t)) ≈ P (t). Простейшим решением является полиномиальная интерполяция, т.е. построение полинома Лагранжа, проходящего через точки, значения которых уже известны: (ti , f (ti , y(ti ))), (ti−1 , f (ti−1 , y(ti−1 ))), . . . , (ti+1−p , f (ti+1−p , y(ti+1−p ))). (7.95) Если при этом требуется построить неявную формулу, то интерполянт также должен проходить через точку (ti+1 , f (ti+1 , y(ti+1 ))). В случае явной формулы, используя теорему 2.5.1, 134 мы получаем: p f (p) (ξi , y(ξi )) Y f (t, y(t)) = Lp−1 (t) + (t − ti−j+1 ) p! j=1 = = p X j=1 p X f (ti−j+1 , y(ti−j+1 )) Y j6=k f (ti−j+1 , y(ti−j+1 )) j=1 p t − ti−k+1 f (p) (ξi , y(ξi )) Y + (t − ti−j+1 ) (7.96) ti−j+1 − ti−k+1 p! j=1 Y t − ti−k+1 + h(k − j) f (p) (ξ j6=k i , y(ξi )) p! p Y (t − ti−j+1 ), j=1 где ξi = ξi (t) ∈ (ti−p+1 ; ti ). Тогда интеграл от f (t, y(t)) принимает вид: ˆ ti+1 f (t, y(t))dt = ti p X ˆ ti+1 Y t − ti−k+1 dt+ h(k − j) f (ti−j+1 , y(ti−j+1 )) ti j=1 ˆ j6=k ti+1 + ti p f (p) (ξi , y(ξi )) Y (t − ti−j+1 )dt. (7.97) p! j=1 Для вывода зависимости остаточного члена от h, проведем замену t = ti + sh во втором интеграле: ˆ ˆ ti+1 (p) p p Y f (ξi , y(ξi )) Y h 1 (p) f (ξi , y(ξi )) (t − ti−j+1 )dt = (ti + sh − ti−j+1 )ds p! p! 0 ti j=1 j=1 ˆ p Y hp+1 1 (p) = f (ξi , y(ξi )) (s + j − 1)ds (7.98) p! 0 j=1 ˆ 1Y p hp+1 (p) f (µi , y(µi )) = (s + j − 1)ds, p! j=1 Q где в последнем шаге мы воспользовались теоремой о среднем значении ( pj=1 (s + j − 1) не меняет знак для s ∈ [0; 1]) и µi ∈ (ti ; ti+1 ). Полученное выражение говорит о том, что локальная погрешность метода будет иметь порядок O(hp+1 ). Проведем аналогичную замену для первого интеграла: ˆ ti+1 ˆ 1Y p X s+k−1 f (t, y(t))dt = h f (ti−j+1 , y(ti−j+1 )) ds. (7.99) k−j ti j=1 j6=k Таким образом мы получаем следующую обобщенную формулировку явного p-шагового метода, известного как метод Адамса–Башфорта p-го порядка: w0 = α0 , w1 = α1 , . . . , wp = αp , wi+1 = wi + h p X aj f (ti−j+1 , wi−j+1 ), j=1 135 (7.100) i = p, p + 1, . . . , m − 1, (7.101) где коэффициенты aj имеют вид: ˆ 1 aj = Y s+k−1 ds, k−j j = 1, . . . , p. (7.102) 0 j6=k Как и в случае с методом Рунге–Кутты, порядок метода Адамса–Башфорта определяется порядком глобальной погрешности, полученной в результате накопления локальной погрешности. В качестве примера рассмотрим двухшаговый метод. Коэффициенты aj для него имеют вид: ˆ 1Y ˆ 1 s+2−1 3 a1 = (s + 1)ds = , ds = (7.103) 2 − 1 2 0 j6=k ˆ 1 ˆ 1Y 1 s+1−1 sds = − . ds = − (7.104) a2 = 1 − 2 2 j6=k Тогда метод Адамса–Башфорта второго порядка принимает вид: w0 = α0 , w1 = α1 , h wi+1 = wi + [3f (ti , wi ) − f (ti−1 , wi−1 )] , 2 (7.105) i = 1, 2, . . . , m − 1, (7.106) Аналогичным образом можно получить формулировку для неявного метода. В таком случае мы имеем следующие p точек интерполяции: (ti+1 , f (ti+1 , y(ti+1 ))), (ti , f (ti , y(ti ))), . . . , (ti+2−p , f (ti+2−p , y(ti+2−p ))). (7.107) Дальнейший вывод будет идентичен выводу явного метода. В результате мы получаем неявный (p − 1)-шаговый метод, известный как метод Адамса–Моултона: w0 = α0 , w1 = α1 , . . . , wp−1 = αp−1 , wi+1 = wi + h p X aj f (ti−j+2 , wi−j+2 ), (7.108) i = p − 1, p, . . . , m − 1, (7.109) j=1 где коэффициенты aj имеют вид: ˆ aj = 1 Y s+k−2 ds, k−j j = 1, . . . , p, (7.110) 0 j6=k и остаточный член, формирующийся из-за интерполяции функции f (t, y), имеет форму: hp+1 (p) f (µi , y(µi )) p! ˆ p 1Y (s + j − 2)ds, 0 j=1 136 (7.111) Таким образом, (p − 1)-шаговый метод Адамса–Моултона имеет порядок O(hp ), что делает его на один порядок более точным, чем (p − 1)-шаговый метод Адамса–Башфорта. Неявные методы в общем случае всегда дают более точный результат, чем явные методы, для одного и того же количества шагов или вычислений функции f (t, y). В случае методов Адамса–Башфорта и Адамса–Моултона это является следствием того, что методы Адамса–Башфорта для вычисления интеграла фактически экстраполируют функцию f (t, y(t)) на интервале [ti ; ti+1 ] на основе интерполянта, построенного на интервале [ti−p+1 ; ti ], в то время как методы Адамса–Моултона интегрируют сам интерполянт. Очевидно, что интегрирование интерполянта дает более точный результат, чем интегрирование экстрополянта. Более того, неявные методы в общем случае оказываются абсолютно устойчивыми, тогда явные методы почти всегда являются лишь условно устойчивыми. 7.4 Методы, построенные по схеме предиктор-корректор Несмотря на рассмотренные преимущества неявных методов, основным их недостатком является необходимость искать корни системы нелинейных алгебраических уравнений. Выходом из этого положения является использование двух стадий в расчете wi+1 . На первой стадии с помощью явного метода, называемого предиктором, находится приближение w̃i+1 ≈ wi+1 . Затем, на второй стадии, с помощью неявного метода, называемого корректором, находится само значение wi+1 , при этом в правой части неявного метода вместо wi+1 используется w̃i+1 . Вторую стадию можно затем повторять, имитируя метод простой итерации, что зачастую позволяет улучшить устойчивость численного решения. Рассмотрим несколько конкретных примеров подобных методов. 7.4.1 Метод Хойна Простейший метод такого рода может быть построен путем комбинации одношаговых методов Адамса–Башфорта (т.е. метода Эйлера) и Адамса–Моултона. Одношаговый метод Адамса–Моултона также известен как метод трапеций, названный в честь аналогичной формулы численного интегрирования (3.42): w0 = α, wi+1 = wi + (7.112) h [f (ti+1 , wi+1 ) + f (ti , wi )] , 2 i = 0, . . . , m − 1. (7.113) Метод Хойна в таком случае может быть сформулирован следующим образом: w0 = α, (7.114) w̃i+1 = wi + hf (ti , wi ), h wi+1 = wi + [f (ti+1 , w̃i+1 ) + f (ti , wi )] , 2 (7.115) i = 0, . . . , m − 1. (7.116) Использование схемы предиктор-корректор позволило улучшить точность численного решения (метод Эйлера имеет порядок O(h), в то время как метод трапеций O(h2 )) и одно137 временно повысить устойчивость численной схемы (метод Эйлера является условно устойчивым методом, в то время как метод трапеций абсолютно устойчив). 7.4.2 Метод Адамса–Башфорта–Моултона Метод Адамса–Башфорта–Моултона строится за счет комбинации многошаговых методов Адамса–Башфорта и Адамса–Моултона одного порядка точности, что повышает устойчивость численной схемы. Например, для методов 4-го порядка мы получаем Метод Адамса– Башфорта–Моултона 4-го порядка следующего вида: w0 = α0 , w1 = α1 , w2 = α2 , w3 = α3 (7.117) h w̃i+1 = wi + [55f (ti , wi ) − 59f (ti−1 , wi−1 ) + 37f (ti−2 , wi−2 ) − 9f (ti−3 , wi−3 )] , (7.118) 24 h wi+1 = wi + [9f (ti+1 , w̃i+1 ) + 19f (ti , wi ) − 5f (ti−1 , wi−1 ) + f (ti−2 , wi−2 )] , i = 3, . . . , m − 1. 24 (7.119) 7.4.3 Метод Милна–Симпсона Методы Адамса – не единственные многошаговые методы, построенные на основе интегрирования ОДУ и дальнейшей полиномиальной интерполяции. Другой класс многошаговых методов можно построить, если проинтегрировать ОДУ dy dt = f (t, y) на интервале [tj ; ti+1 ] для j < i вместо [ti ; ti+1 ], как в методах Адамса: ˆ ti+1 tj dy dt = dt ˆ ti+1 f (t, y(t))dt tj ˆ (7.120) ti+1 f (t, y(t))dt. =⇒ y(ti+1 ) = y(tj ) + tj Так, например, для интервала [ti−3 ; ti+1 ] и квадратичного интерполянта для f (t, y(t)) мы получаем явный метод, называемый методом Милна: w0 = α0 , w1 = α1 , w2 = α2 , w3 = α3 4h wi+1 = wi−3 + [2f (ti , wi ) − f (ti−1 , wi−1 ) + 2f (ti−2 , wi−2 )] , 3 (7.121) i = 3, . . . , m − 1. (7.122) Подобным же образом для интервала [ti−1 ; ti+1 ] и квадратичного интерполянта для f (t, y(t)) мы получаем неявный метод, называемый методом Симпсона по аналогии с известной формулой численного интегрирования 3.49: w0 = α0 , w1 = α1 , h wi+1 = wi−1 + [f (ti+1 , wi+1 ) + 4f (ti , wi ) + f (ti−1 , wi−1 )] , 3 138 (7.123) i = 1, . . . , m − 1. (7.124) Рассмотренные методы часто используются в комбинации по схеме предиктор-корректор: w0 = α0 , w1 = α1 , w2 = α2 , w3 = α3 4h [2f (ti , wi ) − f (ti−1 , wi−1 ) + 2f (ti−2 , wi−2 )] , w̃i+1 = wi−3 + 3 h wi+1 = wi−1 + [f (ti+1 , w̃i+1 ) + 4f (ti , wi ) + f (ti−1 , wi−1 )] , i = 3, . . . , m − 1. 3 7.5 (7.125) (7.126) (7.127) Устойчивость численных схем Мы уже несколько раз упоминали факт устойчивости или неустойчивости тех или иных численных методов решения задачи Коши. Чаще всего под понятием “устойчивости” в этом контексте понимается А-устойчивость, являющейся, в сущности, формой линейной устойчивости. Прежде чем перейти к устойчивости численных схем, рассмотрим линейную устойчивость самого ОДУ. Как и раньше, мы рассматриваем следующее ОДУ: y 0 = f (t, y). (7.128) Предположим, что нам известно решение y(ti ) = yi на шаге ti . Рассмотрим разложение f (t, y) в ряд Тейлора в точке (ti , yi ): f (t, y) = f (ti , yi ) + (t − ti )  ∂f ∂f (ti , yi ) + (y − yi ) (ti , yi ) + O (t − ti )2 , (y − yi )2 . ∂t ∂y (7.129) Линеаризация исходного ОДУ подразумевает отбрасывание квадратичного члена в этом разложении, что приводит к линейному дифференциальному уравнению первого порядка: y0 − y ∂f ∂f ∂f (ti , yi ) = f (ti , yi ) + (t − ti ) (ti , yi ) − yi (ti , yi ). ∂y ∂t ∂y (7.130) Для упрощения записи введем следующие обозначения: fi = f (ti , yi ), ∂f kt = (ti , yi ), ∂t ∂f ky = (ti , yi ). ∂y (7.131) y 0 − ky y = fi + (t − ti )kt − ky yi . (7.134) (7.132) (7.133) Тогда мы имеем: Это ОДУ можно решить, используя хорошо известный метод интегрирующего множителя. Разберем его детально. Домножим (7.134) на множитель µ(t): µ(t)y 0 (t) − ky µ(t)y(t) = µ(t) [fi + (t − ti )kt − ky yi ] . (7.135) Тогда при µ0 (t) = −ky µ(t), мы имеем: (µ(t)y(t))0 = µ(t) [fi + (t − ti )kt − ky yi ] , 139 (7.136) из чего следует решение: ´ y(t) = µ(t) [fi + (t − ti )kt − ky yi ] dt + c1 . µ(t) (7.137) Для того, чтобы найти явное выражение для y(t), нам необходимо рассчитать µ(t): µ0 (t) = −ky µ(t) (7.138) =⇒ µ(t) = c2 e−ky t . Тогда выражение для y(t) принимает вид: ˆ t y(t) = ceky t + eky t e−ky τ [fi + kt (τ − ti ) − ky yi ] dτ. (7.139) ti Коэффициент c находится из условия y(ti ) = yi : y(ti ) = ceky ti (7.140) =⇒ c = yi e−ky ti , что дает: ˆ ky (t−ti ) y(t) = yi e +e t ky t e−ky τ [fi + kt (τ − ti ) − ky yi ] dτ. (7.141) ti После интегрирования мы имеем:  ˆ  t e−ky τ τ dτ (fi − kt ti − ky yi ) + kt e e −e y(t) = yi e +e ti     kt ti kt kt kt = yi − fi + kt ti + ky yi + − 2 eky (t−ti ) − t + fi − kt ti − ky yi + 2 . ky ky ky ky ky (t−ti ) ky t −ky t −ky ti ky t (7.142) Из данного выражения можно заметить, что при ky > 0 будет наблюдаться бесконечный экспоненциальный рост, что говорит о линейной неустойчивости исходного ОДУ. Необходимо однако отметить, что это не говорит о глобальной неустойчивости, но вопрос глобальной неустойчивости в общем случае является трудно разрешимым. Кроме того, мы рассматриваем поведение функции на некотором шаге ti , и нас интересует поведение ОДУ в некоторой окрестности ti . Таким образом, необходимым условием для линейной устойчивости как ОДУ, так и численной схемы, является ky < 0 для любого ti ∈ [a; b]. Более того, так как правая часть линеаризованного уравнения (7.134) не влияет на линейную устойчивость решения, нам достаточно рассмотреть следующее ОДУ: y 0 − ky = 0, (7.143) где мы опустили индекс y, т.е. k = ky . Применение численной схемы к этому уравнению позволяет установить линейную устойчивость численной схемы, также называемую А-устойчивостью. Для того, чтобы также проанализировать колебательные неустойчивости схемы, необходимо кроме того предположить, что k ∈ C. 140 Рассмотрим анализ А-устойчивости на примере явного и неявного методов Эйлера. Рекуррентное соотношение для явного метода Эйлера имеет вид: wi+1 = wi + hf (ti , wi ). (7.144) Применение метода к линейному ОДУ (7.143) дает: wi+1 = wi + hkwi =⇒ wi+1 = (1 + hk)wi . (7.145) Подобное рекуррентное соотношение стремиться к неподвижной точке (т.е. является устойчивым) тогда, когда |1 + hk| < 1 (это очевидно, если вы проинтерпетируете это соотношение в контексте метода простой итерации). Так как k является комплексным числом, область устойчивости будет кругом в координатах <(hk), =(hk), которую принято изображать в виде соответствующей hk-диаграммы, представленной на левом графике рисунка 7.2 (штриховка обозначает область устойчивости). Подобная устойчивость называется условной устойчивостью, так как при фиксированном k величина шага h строго ограничена областью устойчивости. Заметим, что <(k) < 0 (левая половина графика), является необходимым условием для устойчивости любой схемы и независит от самой схемы. Теперь рассмотрим неявный метод Эйлера: wi+1 = wi + hf (ti , wi+1 ) =⇒ wi+1 = wi + hkwi+1 1 wi . =⇒ wi+1 = 1 − hk (7.146) Область устойчивости в этом случае определяется неравенством |1−hk| > 1. Соответствующая область устойчивости с учетом необходимого условия <(k) < 0 изображена на правом графике рисунка 7.2. Легко заменить, что неявный метод Эйлера будет устойчивым для любых h. Подобная устойчивость называется абсолютной устойчивостью. Иными словами, всегда, когда само исходное ОДУ является линейно устойчивым, неявный метод Эйлера, примененный к этому ОДУ, будет так же устойчивым в независимости от шага h. 141 Рисунок 7.2 – Левый график демонстрирует hk-диаграмму для явного метода Эйлера, где окружность соответствует равенству |1 + hk| = 1. Правый график демонстрирует hk-диаграмму для неявного метода Эйлера, где окружность соответствует равенству |1 − hk| = 1. На обоих графиках область устойчивости численного метода обозначена штриховкой. 142
«Вычислительная математика» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot