Введение
Глава 1. Теоретические основы  численных методов
1.2. Погрешности вычислений
1.2.2. Приближенные числа.  Абсолютная и относительная погрешность
1.2.3. Особенности машинной арифметики
1.2.4. Трансформированные погрешности арифметических операций
1.2.5. Трансформированные погрешности  вычисления функций
1.3. Свойства вычислительных задач  и алгоритмов
1.3.2. Обусловленность вычислительной задачи
1.3.3. Требования, предъявляемые  к численному методу
1.4. Вопросы и задания для самопроверки
Библиографический список к главе 1
Глава 2. Прямые методы решения систем  линейных алгебраических уравнений
2.2. Метод Гаусса
2.3. Метод прогонки
2.4. Метод LU-разложения
2.5. Метод Холецкого
2.6. Метод LDLT-разложения
2.7. Метод QR-разложения
2.7.2. Метод отражений
2.7.3. Приведение матриц к форме Хессенберга
2.8. Вычисление определителей  и обращение матриц
2.9. Оценка погрешностей решений,  получаемых прямыми методами
2.10. Решение систем  с прямоугольными матрицами
2.10.2. Использование QR-разложения для решения задачи наименьших квадратов
2.10.3. Использование сингулярного разложения
2.11. Реализация прямых методов в MATLAB
2.11.2. Хранение и обработка разреженных матриц
2.11.3. Примеры программ
2.12. Задания для лабораторных  и самостоятельных работ
2.13. Вопросы и задания для самопроверки
Библиографический список к главе 2
Глава 3. Итерационные методы  решения систем линейных  алгебраических уравнений
3.2. Основные теоретические положения итерационных методов
3.3. Метод Ричардсона
3.4. Методы простой итерации и Якоби
3.5. Методы Зейделя  и последовательной верхней релаксации
3.5.2. Метод последовательной  верхней релаксации
3.6. Блочные и асинхронные  итерационные методы
3.7. Методы спуска
3.8. Предобусловливатели
3.9. Методы подпространств Крылова
Базисы и операторы
Подпространства
Понятие наилучшего приближения
3.9.2. Проекционные методы
3.9.3. Подпространства Крылова
3.9.4. Методы ортогонализации
Процедура Арнольди
Биортогонализация Ланцоша
3.9.5. Метод сопряженных градиентов
3.9.6. Методы подпространств Крылова для несимметричных и знаконеопределенных задач
MINRES — метод минимальных невязок  на подпространствах Крылова
GMRES — обобщенный метод минимальных невязок
BiCG — метод бисопряженных градиентов
CGS — квадратичный метод сопряженных градиентов
BiCGSTAB — устойчивый алгоритм  бисопряженных градиентов
3.10. Итерационные методы решения нормальных систем линейных  алгебраических уравнений
3.11. Итоговые замечания
3.12. Реализация итерационных методов  в MATLAB
3.12.2. Примеры программ
3.13. Задания для лабораторных  и самостоятельных работ
3.14. Вопросы и задания  для самопроверки
Библиографический список к главе 3
Глава 4. Вычисление собственных значений  и собственных векторов матриц
4.2. Решение частичной проблемы  собственных значений
4.2.2. Метод скалярных произведений
4.2.3. Метод обратных итераций.  Обратные итерации со сдвигами
4.2.4. Градиентный метод решения частичной проблемы собственных значений
4.3. Решение полной проблемы  собственных значений
4.3.2. Методы для симметричных задач  на собственные значения
4.3.3. Использование QR-алгоритма  для вычисления собственных векторов
4.4. Вычисление сингулярного разложения
4.4.2. Сингулярное разложение  двухдиагональной матрицы
4.5. Вычисление собственных значений  больших разреженных матриц
4.5.2. Метод Арнольди
4.5.3. Метод Ланцоша
4.6. Обобщенная задача  на собственные значения
4.6.2. Решение обобщенной задачи  на собственные значения
4.7. Вычисление собственных пар  в MATLAB
4.7.2. Примеры программ
4.8. Задания для лабораторных  и самостоятельных работ
4.9. Вопросы и задания для самопроверки
Библиографический список к главе 4
Литература  по вычислительной математике
Литература  по по системе MATLAB
Предметный указатель
Текст
                    В. И. Горбач нко
I
"н
π
н L
Г рет 4G К О НО Ы
ч л со
Прямые методы реше и
с сгем нейн χ
алгебра че<к к у авнен
ерационные то ы
решен с ст м ли ~н χ
алгобраическ χ равнений
Со в иные до чення
в к торы мат
Приме ы a MA L
■ - -


В. И.Горбаченко Вычислительная линейная алгебра с примерами на MATLAB Рекомендовано Учебно-методическим объединением по образованию в области прикладной информатики в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 080801 «Прикладная информатика (по областям)» и другим экономическим специальностям Санкт-Петербург «БХВ-Петербург» 2011
УДК 681.3.06+512.64(075.8) ББК 32.973.26-018.2/22.143я73 Г67 Горбаченко В. И. Г67 Вычислительная линейная алгебра с примерами на MATLAB. — СПб.: БХВ-Петербург, 2011. — 320 с: ил. — (Учебное пособие) ISBN 978-5-9775-0725-7 Излагаются теоретические основы численных методов, включая теорию погрешностей, особенности машинной арифметики, корректность и обусловленность вычислительных задач; современные прямые и итерационные методы решения больших систем линейных алгебраических уравнений. Основное внимание уделено современным итерационным методам на основе подпространств Крылова. Рассмотрено решение частичной и полной проблемы собственных значений, в том числе для больших разреженных матриц. Для основных вычислительных методов приведены реализации с использованием программ, разработанных автором, а также соответствующие функции системы MATLAB. Для студентов и преподавателей высших учебных заведений УДК 681.3.06+512.64(075.8) ББК 32.973.26-018.2/22.143я73 Рецензенты: О. Э. Яремко, канд. физ.-мат. наук, проф., завкафедрой математического анализа Пензенского государственного педагогического университета им. В. Г. Белинского; Кафедра информационно-вычислительных систем Пензенского государственного университета, завкафедрой д-р техн. наук, проф. Ю. Н. Косников. Группа подготовки издания: Главный редактор Екатерина Кондукова Зам. главного редактора Евгений Рыбаков Зав. редакцией Григорий Добин Редактор Юрий Якубович Компьютерная верстка Натальи Караваевой Корректор Наталия Першакова Дизайн серии Инны Тачиной Оформление обложки Елены Беляевой Зав. производством Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 26.07.11. Формат 70χ1001/ΐ6. Печать офсетная. Усл. печ. л. 25,8. Тираж 1000 экз. Заказ № "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29. Санитарно-эпидемиологическое заключение на продукцию № 77.99.60.953.Д.005770.05.09 от 26.05.2009 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12. ISBN 978-5-9775-0725-7 β Горбаченко В. И., 2011 © Оформление, издательство "БХВ-Петербург", 2011
Оглавление Введение 1 Глава 1. Теоретические основы численных методов 5 1.1. Математическое моделирование и вычислительный эксперимент 5 1.2. Погрешности вычислений 7 1.2.1. Источники погрешностей вычислений 7 1.2.2. Приближенные числа. Абсолютная и относительная погрешность 9 1.2.3. Особенности машинной арифметики 11 1.2.4. Трансформированные погрешности арифметических операций 15 1.2.5. Трансформированные погрешности вычисления функций 18 1.3. Свойства вычислительных задач и алгоритмов 19 1.3.1. Корректность вычислительной задачи 19 1.3.2. Обусловленность вычислительной задачи 22 1.3.3. Требования, предъявляемые к численному методу 28 1.4. Вопросы и задания для самопроверки 29 Библиографический список к главе 1 30 Глава 2. Прямые методы решения систем линейных алгебраических уравнений 33 2.1. Системы линейных алгебраических уравнений. Матрицы и их свойства 33 2.2. Метод Гаусса 37 2.3. Метод прогонки 41 2.4. Метод LU-разложения 43 2.5. Метод Холецкого 45 2.6. Метод Ы)Гт-разложения 48 2.7. Метод QR-разложения 50 2.7.1. Метод вращений 50 2.7.2. Метод отражений 57 2.7.3. Приведение матриц к форме Хессенберга 62 2.8. Вычисление определителей и обращение матриц 63 2.9. Оценка погрешностей решений, получаемых прямыми методами 65 2.10. Решение систем с прямоугольными матрицами 66 2.10.1. Постановка задачи наименьших квадратов. Нормальные уравнения 66
IV Оглавление 2.10.2. Использование QR-разложения для решения задачи наименьших квадратов 68 2.10.3. Использование сингулярного разложения 71 2.11. Реализация прямых методов в MATLAB 74 2.11.1. Некоторые функции матричных вычислений и реализации прямых методов в MATLAB 74 2.11.2. Хранение и обработка разреженных матриц 87 2.11.3. Примеры программ 98 2.12. Задания для лабораторных и самостоятельных работ 109 2.13. Вопросы и задания для самопроверки 116 Библиографический список к главе 2 117 Глава 3. Итерационные методы решения систем линейных алгебраических уравнений 119 3.1. Дискретизация задач математической физики и особенности решения систем алгебраических ypaBHemriiEquation Chapter 3 Section 1 119 3.2. Основные теоретические положения итерационных методов 125 3.3. Метод Ричардсона 130 3.4. Методы простой итерации иЯкоби 132 3.5. Методы Зейделя и последовательной верхней релаксации 135 3.5.1. Метод Зейделя 135 3.5.2. Метод последовательной верхней релаксации 136 3.6. Блочные и асинхронные итерационные методы 140 3.7. Методы спуска 142 3.8. Предобусловливатели 149 3.9. Методы подпространств Крылова 151 3.9.1. Краткие сведения из функционального анализа и линейной алгебры 151 3.9.2. Проекционные методы 158 3.9.3. Подпространства Крылова 163 3.9.4. Методы ортогонализации 164 3.9.5. Метод сопряженных градиентов 174 3.9.6. Методы подпространств Крылова для несимметричных и знаконеопределенных задач 184 3.10. Итерационные методы решения нормальных систем линейных алгебраических уравнений 197 3.11. Итоговые замечания 202 3.12. Реализация итерационных методов в MATLAB 203 3.12.1. Некоторые функции реализации итерационных методов в MATLAB 203 3.12.2. Примеры программ 212 3.13. Задания для лабораторных и самостоятельных работ 232 3.14. Вопросы и задания для самопроверки 234 Библиографический список к главе 3 235
Оглавление V Глава 4. Вычисление собственных значений и собственных векторов матриц 239 4.1. Собственные пары матриц и их свойства 239 4.2. Решение частичной проблемы собственных значений 245 й метод 245 4.2.2. Метод скалярных произведений 250 4.2.3. Метод обратных итераций. Обратные итерации со сдвигами 252 4.2.4. Градиентный метод решения частичной проблемы собственных значений 254 4.3. Решение полной проблемы собственных значений 255 4.3.1. QR-алгоритм решения полной проблемы собственных значений 255 4.3.2. Методы для симметричных задач на собственные значения 263 4.3.3. Использование QR-алгоритма для вычисления собственных векторов .... 265 4.4. Вычисление сингулярного разложения 267 4.4.1. Приведение матрицы к двухдиагональной форме 267 4.4.2. Сингулярное разложение двухдиагональной матрицы 270 4.5. Вычисление собственных значений больших разреженных матриц 275 4.5.1. Метод одновременных итераций 275 4.5.2. Метод Арнольди 278 4.5.3. Метод Ланцоша 281 4.6. Обобщенная задача на собственные значения 283 4.6.1. Основы теории 283 4.6.2. Решение обобщенной задачи на собственные значения 284 4.7. Вычисление собственных пар в MATLAB 288 4.7.1. Стандартные функции MATLAB 288 4.7.2. Примеры программ 296 4.8. Задания для лабораторных и самостоятельных работ 301 4.9. Вопросы и задания для самопроверки 302 Библиографический список к главе 4 303 Литература по вычислительной математике 305 Литература по по системе MATLAB 309 Предметный указатель 311
Введение В основе большинства научных применений компьютеров лежит вычислительная линейная алгебра (матричные вычисления). Множество вычислительных задач сводится к решению систем линейных алгебраических уравнений и к вычислению собственных чисел и векторов матриц. Целью данного пособия является обучение теоретическим основам и практическим навыкам решения вычислительных задач и проведения вычислительного эксперимента. Причем упор делается на прикладные аспекты и на алгоритмическую сторону численных методов. Особенностями данного пособия являются: □ доступность изложения для студентов и специалистов, изучавших математику в объеме инженерных специальностей; □ особое внимание к теоретическим основам численных методов, включая теорию погрешностей, особенности машинной арифметики, корректность и обусловленность вычислительных задач; □ изложение современных прямых и итерационных методов решения больших систем линейных алгебраических уравнений, включая сингулярное разложение, обоснование преимуществ применения итерационных методов для решения больших разреженных систем, описание современных итерационных методов, прежде всего, методов на основе подпространств Крылова; □ подробное рассмотрение современных методов решения частичной и полной проблемы собственных значений, в том числе для больших разреженных матриц; □ детальное описание использования основных функций вычислительной линейной алгебры, реализованных в системе MATLAB, многим из которых в отечественной учебной литературе уделено мало внимания; □ наличие заданий для лабораторных занятий и самостоятельной работы, а также разработанной автором библиотеки учебных программ, что позволяет организовать эффективное изучение численных методов студентами с различным уровнем подготовки. Данное пособие содержит следующие главы: 1. Теоретические основы численных методов. 2. Прямые методы решения систем линейных алгебраических уравнений. 3. Итерационные методы решения систем линейных алгебраических уравнений. 4. Вычисление собственных значений и собственных векторов матриц.
2 Введение Каждая глава содержит список использованной литературы — это источники, которыми пользовался автор при написании данной главы, и специальная литература, более подробно освещающая те или иные главы. Кроме того, приведен общий список рекомендованной литературы по вычислительной математике. Списки литературы не претендуют на полноту, а лишь отражают вкусы и научные интересы автора. Из общего списка книг по вычислительной математике следует обратить внимание на книги Уоткинса Д., Амосова А. А. и др., Вержбицкого В. М. В настоящее время на рынке доступно множество коммерческих систем компьютерной математики, наиболее известными из которых являются MATLAB, Math- CAD, Mathematica, Maple. Из открытых систем компьютерной математики известна система профессионального уровня Scilab (http://www.scilab.org/), которая позиционируется в качестве аналога пакета MATLAB. Доступность и удобный интерфейс современных систем компьютерной математики создают у неопытного пользователя иллюзию легкости решения вычислительных задач и некритичное отношение к получаемым результатам. Однако грамотная постановка задачи, рациональный выбор метода решения и правильная интерпретация результатов требуют серьезного знания численных методов. Очень важной проблемой является оценка погрешности решения. Поэтому современные инструменты могут быть эффективно использованы и дать достоверные результаты только в руках профессионала. Большинство пользователей забывают, что системы компьютерной математики, являясь сложными программными продуктами, при всей тщательности тестирования фирмами-разработчиками, не гарантированы от ошибок . Пособие ориентировано на использование системы MATLAB фирмы Math- Works Inc. (http://www.mathworks.com/), фактически ставшей мировым стандартом университетского образования по численным методам. Владение MATLAB сегодня является одним из показателей уровня профессиональной подготовки выпускников естественно-научных и технических факультетов университетов в области информационных технологий. Название MATLAB является сокращением от Matrix Laboratory. В MATLAB основным типом данных является матрица, что делает эту систему особенно удобной для решения задач вычислительной линейной алгебры. Система MATLAB представляет собой высокоуровневый язык и интерактивную среду для разработки алгоритмов, численных расчетов, визуализации и анализа данных. Используя MATLAB, можно решать вычислительные задачи гораздо быстрее, чем с использованием традиционных языков программирования, например C++ или Pascal. Каждая глава пособия (кроме первой) содержит описание реализации соответствующих методов в виде функций MATLAB. Кроме того, приводятся исходные тексты примеров программ на MATLAB, реализующих основные численные методы, 1 Петров Ю. П. Обеспечение достоверности и надежности компьютерных расчетов— СПб.: БХВ- Петербург, 2008. — 160 с.
Введение 3 с минимальным использованием стандартных функций. Таким образом, использование пособия возможно на нескольких уровнях: □ ознакомление с основами численных методов без привязки к конкретному языку программирования; □ использование стандартных функций для решения вычислительных задач, что предъявляет минимальные требования к знаниям в области программирования, но требует грамотного выбора функций; □ разработка полноценных программ на языке MATLAB, что требует понимания алгоритмов решения и навыков программирования, но при этом позволяет реализовать любой алгоритм. Пособие также содержит контрольные вопросы и задания для самостоятельной работы. Исходные тексты программ могут быть бесплатно высланы по электронной почте по запросу. Запрос можно сделать по адресу gorvi_edu@mail.ru. По этому же адресу автор ожидает предложений и замечаний по пособию. Данное пособие не содержит описания системы MATLAB. Необходимую информацию можно получить из книг, приведенных в списке литературы по системе MATLAB. Обратите особое внимание на книги И. Е. Ануфриева, А. Б. Смирнова, Е.Н.Смирновой [2] и Б. Р. Ханта, Р. Л. Липсмена, Д. М. Розенберга [23]. Масса полезной информации содержится на сайте http://matlab.exponenta.ru Консультационного Центра MATLAB российской компании Softline (http://www.softline.ru/), официального дистрибьютора системы в России.
Глава 1 Теоретические основы численных методов 1.1. Математическое моделирование и вычислительный эксперимент В современных науке и технике важную роль играет математическое моделирование [1—2] , заменяющее эксперименты с реальными объектами экспериментами с их математическими моделями. Возник даже термин "вычислительный эксперимент" [1—3]. Вычислительный эксперимент имеет ряд преимуществ по сравнению с натурным экспериментом: □ экономичность, так как не тратятся ресурсы реальной системы; □ возможность моделирования гипотетических, то есть не реализованных в природе объектов (прежде всего на разных этапах проектирования); □ доступность тестирования режимов, опасных или трудновоспроизводимых в натуре (критический режим ядерного реактора, работа системы противоракетной обороны, природные и техногенные катастрофы); □ возможность изменения масштаба времени; □ простота многоаспектного анализа; □ большая прогностическая сила вследствие возможности выявления общих закономерностей. Следует отметить, что моделирование сложных объектов, например атомных, космических и многих других, требует проведения колоссальных объемов вычислений. Например, для решения многих прикладных задач аэродинамики и ядерной 1 Q физики требуется выполнение более 10 арифметических операций [4]. Для практических задач довольно редко удается найти аналитическое решение уравнений, составляющих математическую модель явления. Поэтому приходится применять численные методы. Сущность применения численных методов рассмотрим на схеме вычислительного эксперимента [3, 5—6], показанной на рис. 1.1. Ссылки в тексте относятся к библиографическому списку в конце главы. —Ред.
6 Глава 1 Численный метод= дискретная модель +вычислительный алгоритм Проведение вычислений и анализ результатов Рис. 1.1. Схема вычислительного эксперимента Основу вычислительного эксперимента составляет триада: модель — метод (алгоритм) — программа. Сначала строится с некоторыми допущениями математическая модель объекта. Первоначально строится относительно простая, но достаточно полная с точки зрения экспериментальных данных модель. В ходе вычислительного эксперимента модель уточняется и дополняется. Поэтому можно говорить о наборе математических моделей, каждая из которых с различной точностью описывает объект или различные свойства объекта. Построение математических моделей выходит за рамки нашего курса. Более подробную информацию о построении математических моделей можно найти в книгах [2, 3]. После выбора или построения математической модели средствами прикладной математики проводится предварительное качественное исследование модели. Качественное исследование начинается с приведения задачи к безразмерному виду [6, 7]. Суть приведения задачи к безразмерному виду состоит в выделении характерных значений (величин) и масштабировании всех величин задачи. Приведение задачи к безразмерному виду сокращает общее число параметров математической модели, что упрощает анализ. Кроме того, в безразмерной задаче можно сравнивать параметры и упрощать задачу, отбрасывая малые параметры. Наконец, приведение к безразмерному виду уменьшает влияние ошибок округления при вычислениях на компьютере, так как все безразмерные величины изменяются примерно от -1 до +1. Приведение задачи к безразмерному виду представляет достаточно сложную задачу, так как основано на теории подобия [7] и требует знания особенностей процессов, протекающих в объекте исследования. В частности масштабы разных величин оказываются взаимосвязанными. Математическая модель часто оказывается очень сложной для качественного исследования. В этом случае для качественного исследования строят модельные (упрощенные) задачи. После приведения к безразмерному виду рассматриваются существование и единственность решения, основные свойства решения, влияние различных параметров задачи на решение, устойчивость решения относительно малых возмущений входных данных и другие вопросы. Качественное исследование модели зачастую представляет собой сложную самостоятельную задачу. Однако для многих прикладных задач, например для обыкновенных дифференциальных уравнений, качественный анализ уже проведен. Объект исследования Математическая модель Исследование модели => Компьютерная программа
Теоретические основы численных методов 7 Затем необходимо решить систему уравнений, представляющую собой математическую модель объекта. Как уже говорилось, обычно приходится применять численные методы. Под численным методом понимается совокупность дискретной модели, реализуемой на компьютере, и вычислительного алгоритма, позволяющего решить дискретизированную задачу. Например, дискретной моделью вычисления определенного интеграла является вычисление суммы площадей прямоугольников, аппроксимирующих площадь криволинейной трапеции, являющейся геометрической интерпретацией задачи. Для реализации численного метода необходимо разработать программу на одном из языков программирования или применить готовый пакет прикладных программ. В настоящее время разработано несколько пакетов прикладных программ, или систем компьютерной математики, таких как MathCAD, MATLAB, Maple, Mathematica и других, которые позволяют решать большинство практически встречающихся задач. Однако грамотная постановка задачи, рациональный выбор метода решения, оценка погрешности и правильная интерпретация результатов требуют серьезных знаний численных методов. После отладки программы производятся вычисления на компьютере (обычно требуется провести много вариантов вычислений, для чего необходимо планировать вычислительный эксперимент) и анализ результатов. После получения результатов исследуется соответствие результатов вычислительного эксперимента процессу функционирования реального объекта (проверяется адекватность модели), и при необходимости уточняются компоненты схемы вычислительного эксперимента (рис. 1.1) до получения удовлетворительных результатов. Можно выделить три основных типа вычислительного эксперимента [6]: □ поисковый, заключающийся в исследовании различных объектов и процессов посредством математических моделей; □ оптимизационный, направленный, например, на подбор оптимальных характеристик конструкций, технологических процессов; □ диагностический, когда по результатам натурных экспериментов определяются свойства объектов или явлений (при этом решаются обратные задачи). Одной и той же математической модели можно поставить в соответствие множество дискретных моделей и вычислительных алгоритмов, то есть численных методов. Для выбора подходящих численных методов надо знать их основные свойства. Рассмотрение свойств численных методов начнем с анализа погрешностей вычислений. 1.2. Погрешности вычислений 1.2.1. Источники погрешностей вычислений Исследование реального объекта методом вычислительного эксперимента носит приближенный характер. На каждом этапе вычислительного эксперимента (рис. 1.1) возникают погрешности. Можно выделить 5 источников погрешностей [5, 8—11]: □ погрешность математической модели; □ погрешность дискретизации;
8 Глава 1 Π трансформированная погрешность (погрешность искажения); □ методическая погрешность; □ погрешность округления. Неустранимая по отношению к численному методу погрешность математической модели обусловлена недостаточным знанием или чрезмерным упрощением моделируемых объектов и явлений. То есть причиной этого вида погрешности является неадекватность математической модели. Адекватность математической модели может быть оценена путем сравнения реального процесса и реализации на компьютере модели процесса. Это очень сложная задача, так как реализация модели на компьютере включает много составляющих погрешностей, исследование реального процесса также происходит с погрешностью. Оценка погрешности математической модели выходит за рамки данного курса. Погрешность дискретизации — это погрешность от замены непрерывной математической модели дискретной моделью. Примером дискретизации является замена дифференциального уравнения системой алгебраических уравнений. Решение системы алгебраических уравнений отличается от решения дифференциального уравнения, что и составляет погрешность дискретизации. Обычно дискретная модель зависит от некоторых параметров, изменением которых теоретически можно понизить погрешность дискретизации. В рассмотренном примере, выбирая более мелкий шаг дискретизации (и увеличивая порядок системы алгебраических уравнений), можно уменьшить погрешность дискретизации. Трансформированная погрешность (погрешность искажения) [8] — это погрешность, возникающая за счет погрешности исходных данных. Исходные данные, как правило, являются результатом измерений некоторых величин, естественно, эти измерения производятся с некоторой погрешностью. Кроме того, из-за ограниченной разрядности компьютеров возникает погрешность представления исходных данных (погрешность округления исходных данных). Многие задачи являются весьма чувствительными к погрешностям исходных данных и к погрешностям, возникающим в ходе реализации алгоритма. В этом случае говорят, что задача является плохо обусловленной. Для плохо обусловленной задачи погрешности исходных данных, даже при отсутствии погрешностей вычислений, могут приводить к значительным искажениям результата. Методическая погрешность возникает из-за применения приближенных алгоритмов. Например, решая систему алгебраических уравнений итерационным методом, теоретически можно получить точное решение лишь при бесконечно большом числе итераций. Однако число итераций приходится ограничивать, что приводит к погрешности метода. Погрешность округления возникает из-за того, что все вычисления выполняются с ограниченным числом значащих цифр, то есть производится округление чисел. Погрешности округления накапливаются и при плохой обусловленности задачи могут привести к большим отклонениям результата. Как выбирать допустимые погрешности? Известны различные рекомендации. В [5] предлагается обеспечивать одинаковый порядок всех погрешностей. То есть
Теоретические основы численных методов 9 не следует очень точно решать задачу с неточными исходными данными. Другими словами, погрешность решения всей задачи (всей последовательности действий вычислительного эксперимента) должна быть соизмерима с погрешностью исходных данных. В [12] рекомендуется обеспечивать методическую погрешность в 2—10 раз меньшую, чем погрешность модели, а погрешность округления — на порядок меньше погрешности метода. 1.2.2. Приближенные числа. Абсолютная и относительная погрешность Мерой точности вычислений являются погрешности. Пусть а — приближенное значение точного числа А . Погрешностью, или ошибкой Аа приближенного числа а называется разность Аа = а -А. В качестве меры погрешности используют абсолютную и относительную погрешность. Абсолютная погрешность приближенного числа а определяется формулой Δ а =\а-А\. Так как точное значение числа А в большинстве случаев неизвестно, то используется оценка предельной абсолютной погрешности А , называемая также границей абсолютной погрешности: Α α = \а-А\<Аа. Относительная погрешность определяется формулой 7-А\ А а δ а \А\ \А\ Относительная погрешность часто выражается в процентах. Предельной относительной погрешностью δα приближенного числа а называется число, заведомо не меньшее относительной погрешности этого числа δ α <δα. Так как значение точного числа А неизвестно, то часто пользуются приближенными оценками предельных погрешностей δΩ* JT' Δα*Ηδα· Г Очень часто используется термин "точность решения". Хотя точность решения противоположна по смыслу погрешности решения, для измерения точности используются те же характеристики, что и для измерения погрешности. Когда говорят, что точность решения равна ε , то это означает, что принятая мера погрешности решения не превышает ε . Абсолютная и относительная погрешности тесно связаны с понятием верных значащих цифр. Значащими цифрами числа называют все цифры в его записи, начиная
10 Глава 1 с первой ненулевой цифры слева. Например, число 0.00012900 имеет пять значащих цифр (значащие цифры подчеркнуты). Значащая цифра называется верной, если абсолютная погрешность числа не превышает вес разряда, соответствующего этой цифре. Значащая цифра называется верной в узком смысле слова, если абсолютная погрешность числа не превышает половины веса разряда, соответствующего этой цифре. Пусть, например, число равно а — 9348, абсолютная погрешность числа равна Δ а = 15 . Записывая число в виде 9348 = 9-103 +3-102 +4-101 +8-10°, имеем 0,5-10 <Δ а <0,5-10 следовательно, число имеет две верных в узком смысле значащих цифр (9 и 3). Верная значащая цифра может не совпадать с соответствующей цифрой в записи точного числа. Например, А = 1.000, α = 0.999, Δ α =0.001, тогда у приближенного числа а все значащие цифры верны, но не совпадают с цифрами точного числа А. Количество верных значащих цифр числа связано со значением его относительной погрешности [12]. Если десятичное приближенное число а содержит η верных значащих цифр, то для относительной погрешности справедлива оценка δ а < Ю'М-1~1*1(Г',+1. Чтобы число а содержало η верных значащих цифр, достаточно выполнения неравенства δ а < 10й+1 ^«НГ". Поэтому, если необходимо вычислить приближенное число а с точностью 10~" , то необходимо сохранить верной значащую цифру, стоящую в η -м разряде после десятичной запятой. Тот факт, что число а является приближенным значением числа А с предельной абсолютной погрешностью Аа, записывают в виде А = а±Аа, причем числа а и Аа записываются с одинаковым количеством цифр после запятой, например, А = 2,347± 0,002 или А = 2,347 + 2■ 10"3. Запись вида А = а \±δα означает, что число а является приближенным значением числа А с предельной относительной погрешностью δα. Предельные абсолютные и относительные погрешности принято записывать с одной или двумя значащими цифрами. Большая точность не имеет смысла, так как предельные погрешности представляют собой достаточно грубые оценки.
Теоретические основы численных методов 11 1.2.3. Особенности машинной арифметики Одним из основных источников вычислительных погрешностей является приближенное представление чисел в компьютере, обусловленное конечностью разрядной сетки. При решении вычислительных задач обычно используют представление чисел в форме с плавающей точкой (запятой). Число а в форме с плавающей точкой представляется в форме а = ±Мгр, где + —знак числа; г —основание системы счисления (как правило, г = 2); ρ — порядок числа а; М — мантисса числа а, причем должно выполняться условие нормировки г~ < Μ < 1, означающее, что в компьютере хранятся только значащие цифры. Диапазон изменения чисел в компьютере ограничен. Для всех представимых в компьютере нормализованных чисел χ (за исключением нуля) справедливо неравенство о<х0 <|х|<хю, где Х0 — минимальное представимое в компьютере нормализованное число (машинный ноль) Х0=2 Ршах ; ртак=2 + — 1 — максимальное по абсолютной величине значение порядка; / — разрядность порядка; Xw =Mmax2Pmsx = = 1 — 2~ 2Pmax « 2Pmax — максимальное представимое в компьютере нормализованное число (машинная бесконечность); Мтах — максимальное по абсолютной величине значение мантиссы; t — разрядность мантиссы. В большинстве языков программирования получение машинной бесконечности приводит к аварийному останову выполнения программы по переполнению. Все числа, по модулю меньшие Х0 , представляются как ноль (исчезновение порядка). Большинство современных компьютеров поддерживают стандарт двоичной арифметики IEEE 754-1985 (ANSI 754) Binary floating-point arithmetic (1985 г.)1 [13]. Представление чисел с плавающей точкой в этом стандарте несколько отличается от рассмотренного "классического" представления. Под знак числа отводится один бит: 0 соответствует положительному числу, 1 — отрицательному. Мантисса нормализованных двоичных чисел удовлетворяет условию 1 <М < 2, то есть мантисса нормализованного числа всегда содержит единицу в целой части. Так как целая часть всех нормализованных чисел равна единице, то эта единица не хранится, а хранится только дробная часть мантиссы. Число получается прибавлением единицы к дробной части. Сэкономленный разряд используется для хранения еще 1 IEEE — The Institute of Electrical and Electronics Engineers, Inc. (произносится "ай-трипл-и"), Институт инженеров по электротехнике и радиоэлектронике, ИИЭР (США) — крупнейшая в мире организация (http://www.ieee.org/), объединяющая более 300 тыс. технических специалистов из 147 стран, ведущая организация по стандартизации, отвечающая также за сетевые стандарты.
12 Глава 1 одного двоичного разряда. Математически представление мантиссы, принятое в стандарте, эквивалентно "классическому" представлению, но увеличивает разрядность мантиссы и диапазон представления чисел. Порядок может быть как положительным, так и отрицательным. Чтобы не вводить бит знака порядка, используют смещенный порядок, прибавляя к порядку смещение, равное 2 ~ — 1, где / — число разрядов, отведенное под смещенный порядок. Например, если под порядок от- •7 веден один байт, то смещение равно 2 —1 = 127 . Если порядок равен +4, то смещенный порядок будет 4 + 127 = 131. Если порядок равен —4, то смещенный порядок будет —4 + 127 = 123. Число с нулевым порядком и нулевой мантиссой считается нулем. При этом формально различаются +0 и -0 . Стандарт предусматривает два основных типа чисел с плавающей точкой: числа одинарной и двойной точности. В стандарте предусмотрены также расширенный одинарный (длиной 43 и более битов, редко используется) и расширенный двойной форматы (длиной 79 и более битов, обычно используется 80-битный формат Intel двойной точности). Числа одинарной точности представляются 32 битами (4 байтами) в виде: 1 бит под знак, 8 бит под порядок, 23 бита под мантиссу. Числа двойной точности представляются 64 битами (8 байтами) в виде: 1 бит под знак, 11 бит под порядок, 52 бита под мантиссу. IEEE-арифметика включает субнормальные числа — очень малые ненормализованные числа, расположенные между 0 и наименьшим по абсолютной величине нормализованным числом Х0 . При таких условиях нормализация чисел не производится. Субнормальные числа имеют нулевой смещенный порядок. Наличие субнормальных чисел приводит к тому, что малые числа не превращаются в машинный ноль. Например, равенство χ — у = 0 возможно только при х = у . IEEE-арифметика поддерживает специальные символы ±ро (в MATLAB обозначается inf) и NaN . Символ ±ро генерируются при переполнении. Бесконечность содержит единицы во всех разрядах смещенного порядка и нули в разрядах мантиссы. Правила для символа ±ро : х/+ро = 0, х/0 = + со, со + со = +со и т. д. Любая операция, результат которой (конечный или бесконечный) не определен корректно, генерирует символ NaN (Not a Number— не число). Например, символ NaN да 0 генерируется при операциях: оо-оо, —, —, NaN Ох, где О — любая опера- оо О ция. В случае если в результате арифметической операции получается неопределенность (NaN), машинная бесконечность, деление на ноль или машинный ноль, то процессор выставляет флаг исключительного состояния (exception flag). Большинство компиляторов по умолчанию не маскируют исключения с плавающей точкой. Это приводит к завершению программ при возникновении таких исключений. Программист должен маскировать и обрабатывать исключения с плавающей точкой самостоятельно, что может сильно усложнить программу. Система
Теоретические основы численных методов 13 MATLAB маскирует и обрабатывает исключительные ситуации, что существенно упрощает программирование. В некоторых случаях оказывается недостаточно двойной точности стандарта IEEE 754-1985. Поэтому многие компиляторы поддерживают 80-битный формат Intel двойной точности (мантисса содержит 64 бита, порядок — 15 бит). Некоторые компиляторы программно поддерживают увеличенную разрядность вычислений (при этом существенно увеличивается время вычислений). В новой редакции стандарта IEEE 754-2008 предусмотрены числа учетверенной точности, мантисса которых содержит 112 бит, а порядок — 15 бит. Для уменьшения погрешностей вычислений иногда используется рациональная арифметика — числа представляются в виде рациональных дробей и операции производятся как над обычными дробями. Рациональная арифметика реализована, например, в пакете Matliematica. Существует также подход, известный как интервальные вычисления [14]. В интервальных вычислениях при выполнении каждой арифметической операции вычисляются границы ошибки. Однако алгоритмы интервальных вычислений оказываются сложными и медленными. Найдем некоторые оценки точности представления чисел и выполнения арифметических операций. Для простоты используем простейшее представление чисел с плавающей точкой, то есть будем использовать условие нормировки мантиссы 2~ < Μ < 1. Полученные результаты справедливы и для представления чисел в стандарте IEEE 754, если учесть, что в стандарте разрядность мантиссы фактически больше на единицу физически выделенной под мантиссу разрядности. Из-за конечной разрядной сетки в компьютере можно представить не все числа. Число а, не представимое в компьютере, подвергается округлению, то есть заменяется близким числом а , пред ставимым в компьютере точно. Известно несколько способов округления числа до η значащих цифр. Простейший способ — усечение. При усечении отбрасываются все цифры, расположенные справа от η -й значащей цифры. Несколько более сложный способ, округление по дополнению, получил наибольшее распространение. В простейшем варианте этого способа анализируется первая отбрасываемая цифра. Если эта цифра равна 1 (в двоичной системе счисления), то к младшей сохраняемой цифре прибавляется единица. Найдем границу относительной погрешности представления числа с плавающей точкой [5]. Допустим, что применяется простейшее округление — усечение. Система счисления — двоичная. Пусть надо записать число, представляющее бесконечную двоичную дробь а = +2р а\ а2 at atX v 2 22 21 2t+1 0 где aj=< , 7 = 1,2,... —цифры мантиссы, а р —порядок. j 1
14 Глава 1 Пусть под запись мантиссы отводится t двоичных разрядов. Отбрасывая лишние разряды, получим округленное число (, :±2Р 2 22 ·+- Абсолютная погрешность округления в этом случае равна \a-a\ :2Р at+\ | at+2 | ,м-1 Наибольшая погрешность будет в случае a t+\ lt+2 = 1, a, t+2 -a\<2p- 1 >i+l 1 + - + — + ■ 2 22 : 2p-f . ,тогда Из условия нормировки для мантиссы всегда верно αγ \>2Р -2~х =2ρ-χ неравенство Μ > 0,5 . Тогда \а\ можно оценить следующим образом: δ а 1, поэтому выполняется и относительную погрешность \а-а\ ■<2 -t+i \а\ Практически применяют более точные методы округления [11], и для погрешности представления чисел справедлива оценка \а-а\ δ а ■<2-<. \а\ (1.1) то есть точность представления чисел определяется разрядностью мантиссы t. Тогда приближенно представленное в компьютере число можно записать в виде а = а 1 + ε , где ε = 2~ — так называемый машинный эпсилон или машинная точность (часто обозначается macheps) — относительная погрешность представления чисел (1.1). В системе MATLAB переменная eps обозначает машинную точность, eps=2~52, ЧТО примерно равно 2 . 2204е-01б. При вычислениях с плавающей точкой операция округления может потребоваться после выполнения любой арифметической операции. Так, умножение или деление двух чисел сводится к умножению или делению мантисс и к сложению или вычитанию порядков. Так как в общем случае количество разрядов мантисс произведений и частных больше допустимой разрядности мантиссы, то требуется округление мантиссы результата. При сложении или вычитании чисел с плавающей точкой операнды должны быть предварительно приведены к одному порядку. Это осуществляется сдвигом вправо мантиссы числа, имеющего меньший порядок, и увеличением в соответствующее число раз порядка этого числа. Сдвиг мантиссы вправо может привести к потере младших разрядов мантиссы, то есть появляется погрешность округления. Обозначим округленное в системе с плавающей точкой число, соответствующее точному числу х, через fl χ (от англ. floating— плавающий). Известно [5], что
Теоретические основы численных методов 15 выполнение каждой арифметической операции вносит относительную погрешность, не большую, чем погрешность представления чисел с плавающей точкой (1.1). Тогда можно записать fl апЪ =aob 1+δ , где о — любая из арифметических операций, а δ < 2_ί. Таким образом, относительная погрешность арифметической операции над числами, представленными в форме с плавающей точкой, не превышает машинный эпсилон. 1.2.4. Трансформированные погрешности арифметических операций Рассмотрим трансформированные погрешности арифметических операций. Будем считать, что арифметические операции проводятся над приближенными числами, ошибку арифметических операций учитывать не будем (эту ошибку легко учесть, прибавив ошибку округления соответствующей операции к вычисленной ошибке). Рассмотрим сложение и вычитание приближенных чисел. Покажем, что абсолютная погрешность алгебраической суммы приближенных чисел не превосходит суммы абсолютных погрешностей слагаемых. Действительно, пусть сумма точных чисел равна S = Ai+A2 +··· + 4,· Абсолютная погрешность суммы равна AS = Аа1+а2-\— + ап = \ а1+а2-\— + ап - А1+А2-\— + Ап = = \а1-А1 + а2-А2 +■··+ ап-Ап |< (1.2) < |^ — ^4Х| -ь|ί72 — ^421 ч— + |аи-Ли| = А ах + Δ а2 λ— + Δ ап . Из (1.2) получаем оценку с использованием предельных абсолютных погрешностей: Δ S <Ап +А„ +... + Δ„ . "1 "2 "л Для относительной погрешности суммы нескольких чисел справедлива оценка AS \аА \S\ \S\ U a, > V Ы \а0 + т4 \S\ 1Ά а2 ^ V \а2\ j \аЛЪ ах +\а2\Ь а2 +. (1.3) \S\ где δ aj , / = 1,2,..., η —относительные погрешности представления чисел. Из (1.3) следует, что относительная погрешность суммы нескольких чисел одного знака не превышает наибольшей из относительных погрешностей слагаемых: δ S < max δ ak , k = 1,2,..., η . k
16 Глава 1 Пусть А и В — ненулевые числа одного знака. Тогда для соответствующих приближенных чисел справедливы неравенства δ a + b <5max, δ а-Ъ <γδηιαχ, (1 4) где 5тах=тах δ α , δ Ъ , γ = \Α + В\/\А-В\ . Для доказательства, учитывая (1.2), рассмотрим выражение \Α±Β\δ a±b =Δ a±b <Δ α + Δ b = \Α\δ α +\Β\δ b < \A\ + \B\ δηηηγ =\A + B δηηηγ. llldA lllclX (1.5) Из выражения (1.5) следуют оценки (1.4). Из второго неравенства (1.4) следует, что при сложении чисел разного знака или вычитании чисел одного знака относительная погрешность может быть очень большой (если числа близки между собой). Это происходит из-за того, что величина γ в этой ситуации может быть очень большой. Поэтому вычислительные алгоритмы необходимо строить таким образом, чтобы избегать вычитания близких чисел. Для предельных относительных погрешностей справедливо равенство \αλδη +\α2\δη +... \s\ Отметим также, что погрешности вычислений зависят от порядка вычислений. Рассмотрим пример сложения трех приближенных чисел *J — Χι ~г XЧ ~г Xq ; Sx = х1 + х2 1 + δ , S2= ^+х3 1±δ = χλ+χ2 1±δ 1±δ +χ, 1±δ , (1.6) где δ — предельная относительная погрешность округления. При другой последовательности действий результат будет другим: Бъ= хъ+х2 1 + δ , SA= хъ+х2 1 ± δ 1 ± δ + χγ 1 ± δ . Из (1.6) видно, что результат выполнения некоторого алгоритма, искаженный погрешностями округления, совпадает с результатом выполнения того же алгоритма, но с неточными исходными данными. Поэтому можно применять обратный анализ, то есть свести влияние погрешностей округления к возмущению исходных данных. Другими словами, вместо (1.6) можно записать *J — Χι ~г Хо ~Г Xq ; где х1=х1 1±δ 1 + δ , χ2=χ2 1±δ l + δ, Хз=хз 1 + ^ · В прямом анализе ошибок пытаются оценить влияние погрешностей исходных данных, метода и округлений на результат. В обратном анализе ошибок приближенное решение рассматривается как точное решение задачи, но при возмущенных
Теоретические основы численных методов 17 исходных данных. В обратном анализе рассматривается влияние ошибок на результат, а не оценивается погрешность результата. Однако оценить эквивалентное возмущение исходных данных весьма сложно, поэтому на практике обратный анализ ошибок пока не получил широкого распространения. Для относительной трансформированной погрешности произведения справедлива оценка δ ah <Ъ α +δ Ъ +δ α δ Ъ . (1.7) Для доказательства рассмотрим выражение \ΑΒ\δ ah = А ah =\ab-AB\ = = \А-а В+ В-Ъ А- А-а В-Ъ\< <|#|А α +\Α\Δ Ъ +Δ α А Ъ = И , , \В\ \А\\В\ = \В\А а \-{ + \А\А Ъ \-\ + А а А Ъ = И И ИИ = \АВ\ δ α +δ Ъ +δ α δ Ъ , из которого следует (1.7). Для относительной погрешности частного справедлива оценка (а\ δ α +δ Ъ \Ъ) l-δ Ъ Действительно, а А Ъ В А В \аВ-АЪ\ \В а-А -А Ъ-В \АЪ\ \АЪ\ < (1.8) \В\А а +\А\А b δ α +δ b \АВ\ l-δ b В выражении (1.8) учтено неравенство \ь\ = \в+ ъ-в \>\в\ l-δ Ъ ■А Ъ =\В\ l-δ Ъ Так как для предельных погрешностей справедливы оценки δα <зс 1 и Ъъ <sc 1, то для оценки предельных трансформированных погрешностей умножения и деления на практике используются оценки !δ„+δ6, ίδα+δδ· Jab ,г° υα "·" u6' ο/δ Рассмотренные аналитические оценки громоздки и малоприменимы для оценки погрешностей многократно повторенных операций. Кроме того, эти оценки рассчитаны на наихудшие случаи и не учитывают частичную компенсацию погрешностей при выполнении большого числа операций. Ведь часть операций будет иска-
18 Глава 1 жать результат в большую сторону, а часть — в меньшую. При большом числе η арифметических операций можно пользоваться приближенной статистической оценкой погрешности арифметических операций, учитывающей частичную компенсацию погрешностей разных знаков [15]: δΣ «δ^ν" , где δΣ — суммарная относительная погрешность; δ β <ε — относительная погрешность выполнения операций с плавающей точкой; ε — погрешность представления чисел с плавающей точкой. Статистическую оценку погрешности проиллюстрируем на примере суммы η большого числа слагаемых & = Σαί· Вследствие погрешностей слагаемые aj ;=1 можно рассматривать как случайные величины. Если слагаемые aj независимы и их среднеквадратические отклонения равны σ то из теории вероятностей известно, что σ^ = σα \Jn . Если принять, что погрешности распределены по нормальному закону с нулевым математическим ожиданием и среднеквадратическим отклонением σα, то часто считают, что погрешность не превышает трех σα: Δα <3σα ("правило трех сигма"). Умножая предыдущее равенство на 3, получаем для предельных погрешностей As = Aayjn . 1.2.5. Трансформированные погрешности вычисления функций Рассмотрим трансформированную погрешность вычисления значений функций. Пусть y = f Xi,x2,---,xm — дифференцируемая функция многих переменных и известны приближенные значения аргументов хъх2,...,хт ■ Тогда трансформированная погрешность значения функции равна Ay = f хъх2, -J Х\,Х2 (1.9) Выражение (1.9) представляет собой полное приращение функции. Главной линейной частью приращения (1.9) является полный дифференциал, тогда т ду Ay*dy = Y—dXi /=ιдх, (1.10) Из соотношения (1.10) получаем оценку абсолютной трансформированной погрешности функции многих переменных Δ у к\с/у\: Y^-dx, /=ιдх, т ;=1 ду дх. ■Σ ;=1 ду дх, Δ χ, <Χ ;=1 ду дх, (1.11) где Δχ — предельная абсолютная погрешность переменной xi.
Теоретические основы численных методов 19 Относительная трансформированная погрешность функции многих переменных равна δ У =^^^Σ \У\ i=l ду dxt Δ xi \у\ 2=1 ду удхг Δ χ. ■Σ г=1 д In у дх: Δ хг <Х д In j etc,- (1.12) Трансформированные погрешности функции одной переменной получаются из (1.11) и (1.12) при т = \. С практической точки зрения важно определить допустимую погрешность аргументов по допустимой погрешности функции (обратная задача). Эта задача имеет однозначное решение только для дифференцируемых функций одной переменной y = fx в случае, когда /' χ Φ 0 : Δ χ 1 V ■Ay Для функций многих переменных задача не имеет однозначного решения, и необходимо ввести дополнительные ограничения. Например, если функция у = f(xl,x2,--.,xm) наиболее критична к погрешности Δ xi , то, пренебрегая погрешностью других аргументов, получаем df Δ χ, =Δ у дх, Если вклад погрешностей всех аргументов примерно одинаков, то применяют принцип равных влияний: Δ χ; =Δ у I т дх. г = 1,т. 1.3. Свойства вычислительных задач и алгоритмов 1.3.1. Корректность вычислительной задачи Пусть решается операторное уравнение общего вида Ay = f, (1.13) где A.Y —> F — некоторый оператор, действующий из метрического пространства Υ в метрическое пространство F. Тогда задача нахождения элемента у е Υ по заданному элементу feF из уравнения (1.13) называется корректно поставленной по Адамару, или просто корректной, если [17]: □ решение у е Υ существует при каждом f <eF ; Π это решение единственно;
20 Глава 1 Π решение непрерывно зависит от правой части уравнения (1.13), то есть из сходимости /„—>/ по метрике пространства F следует сходимость уп —>у по метрике пространства Υ , где уп — решение уравнения (1.13), в котором правая часть заменена на f . Другими словами, решение устойчиво по отношению к малым возмущениям входных данных. Если хотя бы одно из этих условий не выполнено, то задача называется некорректной. Длительное время считалось, что некорректные задачи, решения которых неустойчивы, не имеют физического смысла. Однако выяснилось, что многие важные практические задачи являются некорректными. Например, некорректными являются обратные задачи [16], ряд задач распознавания образов и многие другие. Поэтому разработаны методы решения многих классов некорректных задач — так называемые методы регуляризации [17]. Основополагающие работы в этой области принадлежат российским математикам, в частности А. Н. Тихонову (см., например, [17]). Использование методов регуляризации выходит за рамки нашего курса, поэтому дадим самые общие представления о методах решения некорректных задач. Идея методов регуляризации состоит в учете некоторых дополнительных условий, часто носящих не очень четкую и неоднозначную формулировку. Например, сужается пространство решений Υ или учитывается априорная информация о решении. При решении различных физических задач известна априорная информация о решении. Учет априорной информации позволяет сузить множество решений Υ до некоторого множества М, в котором решение задачи устойчиво. Это приводит к понятию задачи, корректной по Тихонову, или условно корректной. Задача нахождения решения уравнения (1.13) называется условно корректной или корректной по Тихонову, если [17]: □ решение у существует и принадлежит множеству МсГ {множеству корректности, или классу корректности); Π решение у единственно в Μ ; □ малым вариациям /, не выводящим за пределы Μ, соответствуют малые вариации у. Понятие условной корректности позволяет сузить множество, на котором ищется решение, но, как правило, требует привязки задачи (1.13) к конкретным приложениям. Для решения некорректных задач используется понятие регуляризирующего оператора [17] R f,a :.F—>У для уравнения (1.13). Регуляризирующий оператор (выбор которого в общем случае неоднозначен) должен позволять получить регу- ляризированное решение уравнения (1.13) с приближенной правой частью / , если значение параметра регуляризации α согласовано с погрешностью исходных данных. При этом если погрешность исходных данных стремится к нулю, то регуляри- зированное решение стремится к точному решению, а параметр регуляризации стремится к нулю.
Теоретические основы численных методов 21 Рассмотрим понятие метода регуляризации на примере линейного оператора А [18—20]. Пусть вместо (1.13) известно приближенное уравнение Ay = f, (1.14) где уеΥ, /eF. Задача (1.14) очень чувствительна к погрешностям исходных данных и является неустойчивой, то есть решение сильно изменяется при изменении исходных данных. Близость уравнений (1.13) и (1.14) характеризуется неравенствами p-φξ, |/-/|И> (1-15) где |...| —некоторая норма. Для решения уравнения (1.14) используется сглаживающий функционал (функционал Тихонова) cba[y,Aj] = \\Ay-ff+an у , где α > 0 — параметр регуляризации; Ω у — стабилизирующий функционал (стабилизатор). Часто берут Ω у =Ы · Доказывается [17, 20], что при определенных условиях функционал Тихонова, в частности Oa[j,i,/] = pJ-/|2+a|j|2, (1.16) имеет единственный минимум уа, который принимается за регуляризованное решение уравнения (1.14). Регуляризованное решение можно найти методами численной минимизации функционала (1.16) или с помощью решения уравнения Тихонова aya+A*Aya=A*f, (1.17) ~Л* ~Л где А — оператор, сопряженный с А . Уравнение (1.17) представляет собой необходимое условие экстремума функционала (1.16). Главной проблемой является выбор параметра регуляризации a. При малом значении α регуляризованное решение уа обеспечивает малую невязку пАу — /1 , но является неустойчивым. При большом значении α решение уа является устойчивым, что обеспечивается стабилизатором |Ы| , но сильно отличается от решения системы (1.14). Выбор параметра регуляризации α является сложной задачей (см., например, [20, 22]). Параметр регуляризации должен быть согласован с уровнем погрешности ξ и δ (см. (1.15)).
22 Глава 1 Например, решение переопределенной системы линейных алгебраических уравнений Ах = b методом регуляризации Тихонова сводится к минимизации функционала Фа=|Ах-Ь|2+а|х|2, (1.18) где а — параметр регуляризации. Задача минимизации функционала (1.18) эквивалентна решению системы АтА + аЕ х = АтЬ, где Ε — единичная матрица. Опуская математические подробности, отметим, что параметр регуляризации согласуется с уровнем погрешности задания элементов матрицы и вектора правой части. Часто, например при решении обратных задач, используют так называемую итерационную регуляризацию [19, 21]. Для простоты опять рассмотрим линейную задачу. Вместо решения некорректной задачи (1.13) можно решить задачу отыскания минимума функционала J у =\\Ay-ff. (1.19) Нахождение минимума (1.19) означает нахождение такого решения у, которое обеспечивает минимум невязки г = Ay — f. Для нахождения минимума часто используют итерационные методы численной оптимизации [23]. Для таких итерационных процессов характерно, что первые приближения мало отличаются от соответствующих приближений при точных исходных данных. С ростом числа итераций приближения могут все сильнее отличаться от точного решения, а итерационный процесс может начать расходиться. Метод итерационной регуляризации состоит в том, чтобы по оценке погрешности исходных данных выбрать номер итерации, на котором следует остановить итерационный процесс. Итерационный процесс решения останавливается по критерию, согласованному с точностью исходных данных. Параметром регуляризации здесь является номер итерации. 1.3.2. Обусловленность вычислительной задачи Рассмотрим корректную вычислительную задачу. Корректная задача теоретически позволяет найти ее решение со сколь угодно малой погрешностью при условии малых погрешностей исходных данных. Погрешности исходных данных не могут быть устранены никакими методами решения, и на практике они всегда конечны и не могут быть сколь угодно малыми, хотя в каком-то смысле они все же малы. Поэтому важно знать, как малые погрешности исходных данных трансформируются в погрешность результата. Это существенно еще и потому, что, как показали последние исследования [24—26], существуют задачи (названные "особыми"), у которых малые изменения параметров могут привести к радикальному изменению свойств решения. Например, устойчивое решение системы обыкновенных дифференциальных уравнений, описывающей систему автоматического управления,
Теоретические основы численных методов 23 может стать неустойчивым при малом изменении параметров. Причем малое изменение параметров реальной системы и, соответственно, модели может произойти в процессе эксплуатации системы, например из-за износа. Неустойчивость системы управления может привести к аварии. Чувствительность решения вычислительной задачи к малым погрешностям исходных данных называется обусловленностью задачи. Задача называется хорошо обусловленной, если малым погрешностям исходных данных соответствуют малые погрешности решения. В противном случае задача называется плохо обусловленной. Степень обусловленности задачи определяется числом обусловленности. Выделяют абсолютное число обусловленности νΔ, определяемое неравенством Δ у <νΔΔ χ , и относительное число обусловленности νδ, определяемое неравенством δ у <νδδ χ . Чаще всего используется относительное число обусловленности. Если ν »1, то задача плохо обусловлена. Практически можно считать [12], если νδ —10 , то N показывает число верных цифр, которое может быть потеряно по сравнению с числом верных цифр исходных данных. Например, при вычислении дифференцируемой функции y = f x из оценки (1.12) получаем число обусловленности Если вычисляется функция у = sin χ , то νδ «|х ■ ctg x|. При χ —> nk число обусловленности стремится к бесконечности, то есть задача плохо обусловлена. В чем различие между некорректными и плохо обусловленными задачами? На практике и в том и в другом случае небольшие изменения исходных данных приводят к большим изменениям результата. В [24, 25] предлагается уточнить классическое определение некорректной задачи. В классической работе [17] рассматриваются некорректные задачи в основном для сложных проблем, описываемых дифференциальными уравнениями в частных производных и интегральными уравнениями. И классическое определение некорректности, безусловно, справедливо для этих задач. Но в целом это определение неудобно. Требования существования и единственности решения часто не являются определяющими. Например, уравнение χ +1 = 0 не имеет решения в области вещественных чисел, уравнение sin χ = 0 имеет бесконечное множество решений, но некорректными в бытовом смысле слова эти задачи не являются. В [24] в определении некорректности основное внимание уделяется влиянию исходных данных: "Некорректными назовем те задачи, в которых сколь угодно малым изменениям коэффициентов, параметров, начальных условий, граничных условий и т. п. соответствуют конечные или даже коренные изменения решения (под коренными изменениями подразуме-
24 Глава 1 ваются, например, случаи, когда при номинальных значениях коэффициентов решение отсутствует, а при сколь угодно малых вариациях— появляется). ... Плохо обусловленными назовем задачи, в которых малым, но конечным изменениям коэффициентов, параметров и т. п. соответствуют большие изменения решения". Определение плохо обусловленной задачи в отличие от некорректной задачи не является математически точным. Из определения видно, что некорректные задачи являются предельным случаем задач плохо обусловленных, когда малые, но конечные изменения параметров переходят в сколь угодно малые ("бесконечно малые"). В [24, 25] показано, что корректность задачи может изменяться при эквивалентных преобразованиях, не изменяющих решения. В указанных работах предлагается ввести третий класс задач, меняющих свою корректность в ходе эквивалентных преобразований, используемых при их решении. Другим примером, требующим расширения понятия корректности, являются системы линейных алгебраических уравнений. Общеизвестно, если определитель матрицы системы линейных алгебраических уравнений равен нулю, то такая задача является некорректной. В реальной задаче при неточно заданных элементах матрицы нельзя говорить о точном равенстве нулю определителя. В [26] вводится понятие "очень плохо обусловленных систем уравнений" — систем, у которых при разрешаемых погрешностями изменениях элементов матрицы возникает значение определителя, равное нулю. В практике решения вычислительных задач большое внимание уделяется обусловленности систем линейных алгебраических уравнений (СЛАУ). Рассмотрим, как влияют погрешности исходных данных на погрешность решения СЛАУ. Корректно поставленные задачи решения СЛАУ (то есть задачи, решение которых существует, единственно и непрерывно зависит от входных данных) в зависимости от чувствительности решения к погрешности исходных данных делятся на хорошо и плохо обусловленные. Рассмотрим пример плохо обусловленной СЛАУ [24]. Система l,lx + j = l,l; х + у = \ имеет определитель 1Д 1 = 0,1 и решение примет вид и имеет решение χ - χ = 1; у = 0 . С учетом вариации одного из коэффициентов система l,lx + j = l,l; l + ε х + у = 1 -11ε 1 У: Решение очень сильно зависит от вариации 1-10ε 1-10ε коэффициента. Например, если |ε|< 0,001, то 0,990 <х<1,010; -0,011 <у <0,011 . Если |ε|<0,010, то 0,909<х<1,110; -0,122 < j < 0,100 . Если У < 0,100:
Теоретические основы численных методов 25 то 0,500 < χ < да ; -оо < у < 0,550 . Таким образом, уже при |ε| = 0,1 вариация решения может быть сколь угодно большой. Для СЛАУ из двух уравнений явление плохой обусловленности имеет наглядный геометрический смысл. В этом случае каждое уравнение системы описывает прямую, а координаты точки пересечения прямых являются решением. Рассмотрим СЛАУ [27] 1000х1+999х2=61, 999χ1+998χ2=δ2. Наклоны двух прямых, описываемых этими уравнениями, соответственно равны: *!=-1000/999 = -1,001001, к2 =-999/998 = -1,001002 . То есть прямые практически параллельны. Найти точку пересечения этих прямых трудно. Небольшое изменение правой части одного из уравнений приводит к небольшому параллельному сдвигу соответствующей прямой. При этом точка пересечения прямых (решение СЛАУ) резко изменится. Оценим число обусловленности СЛАУ. Рассмотрим систему линейных алгебраических уравнений, записанную в матричном виде Ах = Ь, (1.20) где А — невырожденная квадратная матрица коэффициентов; b — ненулевой вектор правой части; χ — вектор искомого решения. Пусть элементы матрицы А заданы точно, а правая часть СЛАУ задана неточно, то есть используется возмущенный вектор b + Ab . Тогда изменится и решение системы: A(x + Ax) = b + Ab. (1.21) Если det А φ 0, то из (1.20) и (1.21) получим1 Ах < А"1 llAbll, (1.22) где под Δχ и АЬ будем понимать абсолютные погрешности векторов. Перемножая (1.22) и очевидное неравенство bll < All·|х|, с учетом того, что lb Φ 0 и Ι χ Φ 0, получим ||Δχ|| ||аь|| \-;p<cond(A)J N1' или δ(χ) < cond(A)5(b), (1.23) где δ χ и δ b — относительные погрешности решения и правой части, а cond(A)= A-1 -II All 1 Определение и свойства норм векторов и согласованных норм матриц приводятся в разд. 2.1.
26 Глава 1 число обусловленности (от англ. conditionahty) матрицы А. Значение числа обусловленности зависит от используемой нормы. Матрицы с большим числом обусловленности называются плохо обусловленными. Обычно считается [9], что плохую обусловленность имеют СЛАУ с числом обусловленности 10 —10 и более. При решении СЛАУ с плохо обусловленными матрицами возможно сильное накопление погрешностей. Числа обусловленности обладают следующими свойствами. □ cond(A) > 1. Действительно, cond A АА ||Е| = 1, где Ε большой разброс модулей собственных чисел матрицы единичная матрица. |λ(Α)| □ cond(A)> max HA)L характеризует ее плохую обусловленность. Для доказательства рассмотрим спектральный радиус матрицы ρ Α =|λ(Α)| . Известно, что ρ А < А , ρ Α"1 = ΐ/|λ(Α)|ηι.η , тогда cond А =||А|- А"1 >р Α -ρ Α"1 =|λ(Α)| /|λ(Α)| . II II г- г- | ν Лтах/1 v ylmm □ cond(AB) < cond(A) · cond(B), что непосредственно следует из свойства норм матриц ПАВ]! < |аЦ ЦвЦ. □ cond(aA) = cond(A), где α^Ο произвольное число. Действительно, -1 cond(aA) = otA aA А - = cond(A) Замечено также, что большой разброс величин элементов в пределах строки матрицы А свидетельствует о плохой обусловленности матрицы [28]. Пусть теперь возмущены как правая часть, так и элементы матрицы, тогда Ах = b, где ΔΑ — А — А, Δχ = χ — χ, Ab = b — b. Пусть матрица А имеет обратную ι матрицу и пусть выполняется условие ΔΑ < ратную матрицу и справедлива оценка [5, 8, 27] cond(A) тогда матрица А имеет об- где 5(A) = JL_1 5(b): δ(χ)< Ab l-cond(A)5(A) 5(A) + 5(b) (1.24) Как мы уже знаем, используя обратный анализ, влияние погрешностей округления можно свести к возмущению исходных данных. Поэтому из (1.23) и (1.24) следует, что для плохо обусловленных СЛАУ погрешности округления сильнее сказываются на результате.
Теоретические основы численных методов 27 Казалось бы, вычислить число обусловленности матрицы и оценить погрешность решения СЛАУ несложно. Но как будет показано в главе 2, вычисление элементов обратных матриц представляет собой задачу гораздо более сложную, чем решение СЛАУ, поэтому при решении СЛАУ элементы обратной матрицы А~ не вычисляют. Однако, имея решение системы (1.20), полученное каким-либо методом, например методом Гаусса, можно получить приближенную апостериорную оценку числа обусловленности. Действительно, решение СЛАУ (1.20) любым методом формально можно записать в виде χ = A b, тогда границы для числа обусловленности имеет вид А"1 — х /\\Щ и оценка нижней cond A >ЦМ (1.25) IN Известно [29], что оценка (1.25) за исключением очень редких случаев может быть принята за оценку числа обусловленности. Оценка (1.25) основана на решении СЛАУ, поэтому является оценкой обусловленности матрицы, возмущенной погрешностями решения СЛАУ. В той же книге [29] доказывается, что практически число обусловленности возмущенной матрицы мало отличается от числа обусловленности исходной матрицы. Известны [27, 29, 30] более сложные и точные оценки числа обусловленности матрицы. Оценка погрешности решения с помощью числа обусловленности является оценкой сверху и может быть весьма грубой. В [26] показана зависимость числа обусловленности от эквивалентных преобразований системы линейных алгебраических уравнений. Например, умножение левой и правой частей одного из уравнений системы изменяет число обусловленности, хотя геометрический смысл обусловленности и свойства решения при этом не изменяются. Изменения решения при изменениях исходных данных можно оценить и другими методами, в частности с помощью интервальных вычислений [14, 31—34], которые дают результаты вычислений в виде интервалов значений в зависимости от интервалов значений исходных данных. Интервальные вычисления являются очень перспективным и интенсивно развиваемым направлением (современное состояние интервальных вычислений хорошо представлено на сайте Института вычислительных технологий Сибирского отделения РАН: http://www.nsc.ru/interval/index.php). Изложение принципов интервальных вычислений представляет самостоятельную задачу, выходящую за рамки данного пособия. Кроме того, даже при наличии специального программного обеспечения, например пакета INTLAB для MATLAB (http://www.ti3.tu-harburg.de/rump/intlab/index.html), интервальные вычисления достаточно сложны. Оригинальный и простой подход к оценке вариаций решения при вариации исходных данных системы линейных алгебраических уравнений предложен в [26]. Но данный подход основан на формулах Крамера и имеет ограниченное применение.
28 Глава 1 1.3.3. Требования, предъявляемые к численному методу Одной и той же математической модели можно поставить в соответствие множество дискретных моделей и вычислительных алгоритмов, то есть численных методов. При выборе численного метода необходимо учитывать две группы требований: □ дискретная модель должна быть адекватна математической модели; □ численный метод должен быть реализуемым на компьютере. Для обеспечения адекватности численный метод должен обладать свойствами корректности, хорошей обусловленности, сходимости, выполнения дискретных аналогов законов сохранения и качественно правильного поведения решения [5, 12]. Численный метод называется корректным, если выполняются три условия: □ метод позволяет получить решение за конечное число элементарных операций; □ метод является устойчивым по входным данным; □ метод обладает вычислительной устойчивостью. Первое требование очевидно. Например, метод вычисления суммы членов бесконечного ряда является некорректным, если не задано условие окончания вычислений. Устойчивость по входным данным означает непрерывную зависимость решения от входных данных при условии отсутствия погрешностей вычислений. Вычислительная устойчивость означает устойчивость к погрешностям представления данных и погрешностям округления. Метод называется вычислительно устойчивым, если вычислительная погрешность результата стремится к нулю при стремлении к нулю машинной погрешности. Используется также понятие обратной устойчивости алгоритма [15]. Например, с помощью некоторого алгоритма получается решение χ невырожденной СЛАУ (1.20) с А и b , близкими к А и b . Алгоритм называется обратно устойчивым, если χ является точным решением приближенной задачи, то есть равенство Ах = Ь выполняется точно. Из обратной устойчивости не следует близость χ к точному решению χ. Если алгоритм обратно устойчив и матрица коэффициентов хорошо обусловлена, то решение близко к точному. Если матрица плохо обусловлена, то решение может оказаться неточным, даже если алгоритм обратно устойчив. Алгоритм решения СЛАУ является обратно устойчивым, если невязка f = b - Ах приближенного решения мала. Действительно, Ах = b + 5b , где 5b = —f . Если 6b / b невелико, то χ является решением некоторой приближенной СЛАУ, то есть алгоритм является обратно устойчивым. Вычислительно устойчивый алгоритм называется хорошо обусловленным, если малые погрешности округления приводят к малым погрешностям результата. Следует учесть, что, решая хорошо обусловленную задачу плохо обусловленным методом, можно не получить решение. Сходимость численного метода связана с его корректностью и, например, означает, что при уменьшении шага разбиения интервала интегрирования результат численного интегрирования стремится к точному значению.
Теоретические основы численных методов 29 Различные математические модели являются выражением физических законов сохранения, поэтому для дискретной модели законы сохранения также должны выполняться. Например, дифференциальные уравнения заменяются разностными с помощью конечно-разностной аппроксимации. Если для разностных схем не выполняются аналоги законов сохранения (разностные схемы не являются консервативными), то дискретная модель будет неправильно отражать поведение решения исходной задачи. Качественно правильное поведение дискретной модели означает, что из-за дискретного характера поведения модели не теряются некоторые детали поведения реальной системы. Реализуемость численного метода на компьютере ограничена объемом памяти и быстродействием компьютера. Вычислительный алгоритм должен предъявлять разумные требования к ресурсам компьютера. Например, математически корректный метод Крамера решения систем линейных алгебраических уравнений абсолютно неприменим для решения реальных задач: если принять, что каждая арифметическая операция выполняется за 10~ с, то для решения системы с 20 неизвестными методом Крамера потребуется более миллиона лет [35]. В то же время простейшим методом Гаусса эта система будет решена за доли секунды. Говоря о реализуемости численных методов, следует отметить все возрастающую сложность решаемых задач и повышение требований к компьютерам, что приводит к все более широкому применению параллельных методов вычислений. Рассмотрение параллельных методов вычислений выходит за рамки данного пособия. Интересующиеся могут обратиться, например, к [36—38]. 1.4. Вопросы и задания для самопроверки 1. Перечислите основные этапы вычислительного эксперимента. 2. Что такое дискретная модель? 3. Что дает приведение задачи к безразмерному виду? 4. Перечислите основные источники погрешностей вычислительного эксперимента. 5. На компьютере вычисляется сумма 1000 первых членов бесконечного ряда. Какие виды погрешностей при этом возникают? 6. Какие цифры являются значащими в числе 0.0012345000? 7. Определить верные значащие цифры приближенного числа —3.1234567, если абсолютная погрешность равна 0.6 ■ ΙΟ"5? 8. Определить верные значащие цифры приближенного числа 1234, если абсолютная погрешность равна 0.5? 9. Чему равна относительная погрешность представления числа с плавающей точкой, если разрядность порядка равна 11, а разрядность мантиссы равна 52?
30 Глава 1 10. Чему равна погрешность округления чисел с плавающей точкой, если разрядность порядка равна 8, а разрядность мантиссы равна 23? 11. Что произойдет в MATLAB при делении числа на ноль? 12. Перечислите особенности стандарта двоичной арифметики IEEE 754. 13. Что дает применение субнормальных чисел? 4 14. Найдите трансформированную погрешность вычисления выражения у = Σαίχί ' если все числа представлены с плавающей точкой в двоичной системе счисления с разрядностью мантиссы t. 15. Найдите выражения для абсолютных трансформированных погрешностей вычисления элементарных функций: у = х" при a = 2 и a = 1/2; у = In χ ; у = sin χ ; у = tg x. 16. Почему при сложении длинной последовательности чисел одного знака рекомендуется складывать сначала малые числа? 17. Что такое обусловленность вычислительной задачи? 18. По каким признакам можно судить о плохой обусловленности матрицы системы линейных алгебраических уравнений? 19. Какие основные требования предъявляются к численному методу? 20. Что такое вычислительная устойчивость? Библиографический список к главе 1 1. Самарский Α. Α., Михайлов А. П. Математическое моделирование: Идеи. Методы. Примеры. — М.: ФИЗМАТЛИТ, 2002. — 320 с. 2. Введение в математическое моделирование / Под ред. П. В. Трусова. — М.: Логос, 2004. — 440 с. 3. Самарский Α. Α., Вабищевич П. Η. Математическое моделирование и вычислительный эксперимент. — Институт математического моделирования РАН, 2000. 4. Левайн Р. Д. Суперкомпьютеры//Современный компьютер.— М.: Мир, 1986. с. 9—29. 5. Самарский Α. Α., ГулинА. В. Численные методы математической физики. — 2-е изд. — М.: Научный мир, 2003. — 316 с. 6. Самарский Α. Α., Вабищевич П. Н. Вычислительная теплопередача. — М.: Еди- ториал УРСС, 2003. — 784 с. 7. Гухман А. А. Введение в теорию подобия. — 3-е изд. — М.: Издательство ЛКИ, 2010.— 296 с. 8. Михлин С. Г. Некоторые вопросы теории погрешностей. — Л.: Изд-во ЛГУ, 1988. —334 с.
Теоретические основы численных методов 31 9. Калиткин Н. Н. Численные методы. — М.: Наука, 1978. — 512 с. 10. Иванов В. В. Методы вычислений на ЭВМ: Справочное пособие. — Киев: Нау- кова думка, 1986. — 584 с. 11. Желнов Ю. А. Точностные характеристики управляющих вычислительных машин. — М.: Энергоатомизтат, 1983. — 136 с. 12. Амосов Α. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы. — М.: Издательский дом МЭИ, 2008. — 672 с. 13. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения. — М.: Мир, 2001. —430 с. 14. Алефельд Г., ХерцбергерЮ. Введение в интервальные вычисления.— М.: Мир, 1987. — 360 с. 15. Уилкинсон Дж. Алгебраическая проблема собственных значений. — М.: Наука, 1970.— 564 с. 16. Самарский Α. Α., Вабищевич П. Н. Численные методы решения обратных задач математической физики. — М.: Едиториал УРСС, 2004. — 480 с. 17. ТихоновА. Н., АрсенинВ.Я. Методы решения некорректных задач.— М.: Наука, 1986.— 288 с. 18. ВержбицкийВ. М. Численные методы (линейная алгебра и нелинейные уравнения). — 2-е изд., испр.— М.: ООО "Издательский дом "ОНИКС 21 век", 2005. —432 с. 19. Ватульян А. О. Обратные задачи в механике деформируемого твердого тела. — М.: ФИЗМАТЛИТ, 2007. — 224 с. 20. Бакушинский А. Б., Гончарский А. В. Некорректные задачи.— М.: Изд-во Моск. ун-та, 1989. — 199 с. 21. Морозов В. А. Алгоритмические основы методов решения некорректно поставленных задач // Вычислительные методы и программирование. — 2003, том 4. — с. 130—141. 22. Алифанов О. М. Обратные задачи теплообмена.— М.: Машиностроение, 1988. —280 с. 23. Гилл Ф., МюррейУ., РайтМ. Практическая оптимизация. — М.: Мир, 1985. — 509 с. 24. Петров Ю. П., Петров Л. Ю. Неожиданное в математике и его связь с авариями и катастрофами. — СПб.: БХВ-Петербург, 2005. — 217 с. 25. Петров Ю. П. Обеспечение достоверности и надежности компьютерных расчетов. — СПб.: БХВ-Петербург, 2008. — 160 с. 26. Петров Ю. П. Как получать надежные решения систем уравнений.— СПб.: БХВ-Петербург, 2009. — 176 с. 27. Уоткинс Д. Основы матричных вычислений. — М.: БИНОМ. Лаборатория знаний, 2006. — 664 с.
32 Глава 1 28. Жидков Η. П. Несколько замечаний по поводу обусловленности систем линейных алгебраических уравнений // Журнал вычислительной математики и математической физики, 1963, т. 3. № 5. — с. 803—811. 29. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. — М.: Мир, 2001. — 575 с. 30. Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999. — 548 с. 31. ШокинЮ.И. Интервальный анализ.— Новосибирск: Сибирское отд. изд-ва "Наука", 1981. —112 с. 32. Добронец Б. С. Интервальная математика. — Красноярск: Издательство КГУ, 2004.— 216 с. 33. Достоверные вычисления. Базовые численные методы. — М.-Ижевск: Издательство РХД, 2005. — 495 с. 34. Прикладной интервальный анализ. — М.-Ижевск: Издательство РХД, 2007. — 468 с. 35. Ортега Дж., Пул У. Введение в численные методы решения дифференциальных уравнений. — М.: Наука, 1986. — 288 с. 36. Воеводин В. В., Воеводин Вл. А. Параллельные вычисления.— СПб.: БХВ- Петербург, 2002. — 608 с. 37. Ортега Дж. Введение в параллельные и векторные методы решения линейных систем. — М.: Мир, 1991. — 367 с. 38. Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования. — М.: Вильяме, 2003. — 512 с.
Глава 2 Прямые методы решения систем линейных алгебраических уравнений 2.1. Системы линейных алгебраических уравнений. Матрицы и их свойства Рассмотрим самые необходимые сведения из теории матриц и систем линейных алгебраических уравнений (СЛАУ), которые нам потребуются в дальнейшем. Для более подробного ознакомления можно обратиться к литературе [1—14]. Несколько электронных курсов по линейной алгебре, например, "Введение в линейную алгебру" представлены на сайте интернет-университета информационных технологий (http://www.intuit.ru/). Мы будем рассматривать решение СЛАУ вида ах Λ + апх2 + а13х3 +... + а1пхп = \, а2\Х\ + ί?22Χ2 + α23Χ3 + · · · + а2пХп = "2' (2.1) 7йЛ + ап2х2 + апЪхъ +... + аппхп = Ъп или в матричной форме записи Ах = Ь, (2·2) где А — матрица коэффициентов; χ — вектор неизвестных; b — вектор правой части (свободных членов). Пусть матрица А системы (2.1) является невырожденной. Мы будем рассматривать лишь действительные матрицы, то есть матрицы, элементы <3ц которых являются действительными числами. Матрица, состоящая из одной строки, называется вектором-строкой, матрица, состоящая из одного столбца — вектором- столбцом. Совокупность элементов а матрицы, для которых i=j, называется главной диагональю матрицы. Соответствующие элементы называются диагональными,
34 Глава 2 все остальные элементы называются енедиагоналъными. Квадратная матрица вида 711 0 0 0 0 а22 0 0 0 .. 0 .. «зз ·· 0 .. . 0 . 0 . 0 . а„ (2.3) называется диагональной матрицей. Если в (2.3) все αΉ = 1 (/' = 1,2,...,η), то матрица называется единичной и обозначается Ε. Матрица, у которой все элементы нули, называется нулевой и обозначается 0 . Если в матрице поменять строки и столбцы друг на друга (или, другими словами, отразить ее относительно главной диагонали), то получится транспонированная матрица А . Матрица называется симметричной, если А = А, то есть α; = α Ί. Матрицы А и В называются равными (А = В или В = А), если они имеют одинаковое число строк и столбцов и соответствующие их элементы равны, то есть йц = Ъц . Элементы суммы матриц С = А + В с одинаковыми размерами ту.η вычисляются по правилам Cj,-= dj.-+ bj,-, i = l,2,...,m, j = l,2,...,n. Сумма матриц обладает следующими свойствами: А + (В+С) = (А+В)+С, А+В=В+А, А+0 = А. Произведение матрицы А на число α определяется следующим образом: С = аА = Аа, сн ■ аа„ г = 1,2,...,/w, j = 1,2,...,η и обладает свойствами: 1·Α = Α, 0·Α = 0, βΑ = αβ Α, α + β Α = αΑ + βΑ, α Α + Β =αΑ+ αΒ. Произведение ΑΒ — произведение матрицы А на матрицу В — определено только в том случае, когда число столбцов матрицы А равно числу строк матрицы В. Пусть А имеет размеры тхп , а В — nxq, тогда С = АВ имеет размеры т χ q и элементы матрицы С определяются выражением су = Σ aikbkj» »' = l· 2> ···» m, j = l,2,...,q. Умножение матриц не подчиняется перестановочному закону, то есть в общем случае АВ Φ ΒΑ. Если АВ = ВА, то матрицы А и В называются перестановочными (или коммутирующими). Если АА =А А, то матрица А называется нормальной. Произведение матриц обладает свойствами: А(ВС) = (АВ)С, α(ΑΒ) = (αΑ)Β, (А+В)С = АС+ВС, С(А + В) = СА + СВ, АЕ = ЕА = А, (AB)J = ВТАТ. Квадратной матрице А можно сопоставить число, называемое определителем и обозначаемое det А, см. [1—14]. Квадратная матрица называется неособенной (невырож-
Прямые методы решения систем линейных алгебраических уравнений 35 денной), если ее определитель отличен от нуля: det А φ О. Для неособенной матрицы существует обратная матрица А~ , которая определяется соотношением АА = А А = Ε . Если С = АВ, то С~ — В~ А~ . Формально решение любым методом СЛАУ (2.2) можно трактовать как умножение (2.2) слева на А~ : х = А Λ (2.4) Запись (2.4) удобна для математических исследований, но при решении СЛАУ на практике крайне редко находят А~ . Если обратная матрица равна транспониро- ванной А =А , то есть А А = Ε, то матрица А называется ортогональной. Собственным вектором матрицы А, отвечающим собственному значению λ , называется ненулевой вектор ν, удовлетворяющий уравнению Αν = λν . Матрица А порядка η имеет не более η собственных чисел (возможно кратных). τ Скалярным произведением вещественных векторов х= х1,х2,...,х„ и у= уъу2,...,у„ называется число и (х, у) = хту = утх = X xiyi = хуух + х2у2 +... + х„у„. Скалярное произведение удовлетворяет следующим аксиомам: х,У = У,х , сх,у =с х,у , x + y,z = χ,ζ + y,z , χ,χ >0, если χ ^0, χ,χ =0, если χ =0. Симметричная матрица А называется положительно определенной, если для любого вектора χ Φ 0 положительно скалярное произведение (Ах, х) > 0 . Известно, что все собственные значения положительно определенной матрицы положительны. Матрицы многих СЛАУ положительно определены. Например, положительно определена матрица системы, описывающей линейную цепь постоянного тока, положительно определены матрицы систем, аппроксимирующих во многих методах дифференциальные уравнения в частных производных. Матрица А называется положительно полуопределенной, если (Ах,х)>0 при всех х. Все собственные значения такой матрицы неотрицательны. Квадратная матрица называется нижней (верхней) треугольной, если все ее элементы, стоящие выше (ниже) главной диагонали, равны нулю. Определитель треугольной матрицы равен произведению диагональных элементов: det A = апа22а33.. .ат. Матрица называется ленточной, если все ее ненулевые элементы заключены внутри ленты, образованной диагоналями, параллельными главной диагонали [15].
36 Глава 2 Другими словами, у ленточной матрицы а; = 0, если \i - jI > β, здесь β — полуширина, а 2β + 1 — ширина ленты матрицы. Ленточные матрицы получаются, например, при конечно-разностной аппроксимации дифференциальных уравнений в частных производных. Ленточные матрицы являются частным случаем разреженных матриц, то есть матриц, число ненулевых элементов которых много меньше общего числа элементов. В противном случае матрица называется плотной (заполненной). Если плотные матрицы обычно хранятся в виде двумерных массивов, то для хранения разреженных матриц применяют сложные методы хранения, исключающие хранение ненулевых элементов [15—17]. Элементами рассмотренных матриц были числа. В общем виде элементами матрицы могут быть подматрицы, или блоки (блочные матрицы). Многие алгоритмы, сконструированные для числовых матриц, формально переносятся и на блочные матрицы. Чтобы как-то оценивать "величину" векторов, вводится понятие нормы вектора. τ Рассмотрим множество М" всех и-мерных вещественных векторов х= Χγ,χ2,...,χ„ Это множество образует линейное пространство . Норма вектора определяется аксиоматически. Норма вектора— это действительное число, обозначаемое χ и удовлетворяющее условиям: 1. |х| > 0 при χ Φ О, |х| = 0 при χ = 0 . 2. α =У χ при любом скалярном с —аксиома однородности. 3. |х+у| <|х| + |у| —неравенство треугольника. Существует множество различных способов введения нормы вектора, удовлетворяющей указанным условиям. Следуя [4, 18], введем нормы : □ | х|| = | Χγ | +1 х21 +... +1 х„ | — первая (октаэдрическая) норма; ^ IHI? = vlxi| +ΙΧ2| + ··· + |χ«Ι —вторая (евклидоваили сферическая) норма; □ |х| =max|xJ —кубическая норма. Эти нормы являются частными случаями более общей нормы [ 18] ( « ЛУр II II ^1 \Р \\Щ = / \ХЛ II По ^1 Ί 0=1 ) Первая норма получается при ρ = 1, вторая — при ρ = 2, кубическая — при ρ —> оо . Для норм векторов справедливы неравенства χ < χ < χ <п χ 1 Подробнее с этим понятием можно ознакомиться, например, в [11]. 2 Приведенные названия норм не являются общепринятыми, хотя достаточно часто используются. Обозначения же действительно общеприняты. —Ред.
Прямые методы решения систем линейных алгебраических уравнений 37 Используются и другие обозначения приведенных норм (см., например, [11]). Рассмотрим множество квадратных матриц размера η χ η с вещественными элементами, образующее линейное пространство R"x" . Нормой квадратной матрицы А называется действительное число, удовлетворяющее условиям: 1. |аЦ > 0 при А ф О ; |аЦ = 0 при А = 0 . 2. |сА| = |с||А| для любого числа с . 3. Выполнено неравенство |А+В| < |аЦ + |В|. 4. Справедливо неравенство |АВ| < |аЦ |В|. В пп. 3—4 В — произвольная матрица размера пхп . В анализе обычно участвуют как нормы векторов, так и матриц, поэтому используют нормы матриц, согласованные с нормами векторов, что означает выполнение неравенства|Ах|<|А||х|. Еще более сильным требованием к норме матрицы является условие подчиненности. Норма матрицы А называется подчиненной норме вектора χ,если |аЦ = тах|Ах|. То есть при заданной векторной норме за подчиненную матричную норму принимается максимум нормы вектора Ах, где χ пробегает множество векторов, норма которых равна единице. Среди всех норм, согласованных с заданными векторными нормами, η подчиненная норма является минимальной. Норма матрицы |а| = max^|a;J подчи- k ;=1 нена первой норме вектора. Норма |аЦ = |аЦ = ^λλ (где λγ — наибольшее собственное число матрицы А А) подчинена норме вектора |х| . Норма ||А|| называется η спектральной нормой. Норма ΙΙαΙΙ = max ^ \ац<\ подчинена кубической норме век- ' к=\ I n m |2 тора. Используется также евклидова норма матрицы НА]! = |Х X р,; \/=1у=1 Введенные определения норм распространяются на векторы и матрицы с комплексными коэффициентами (поэтому в определении второй нормы использован модуль), а также на прямоугольные матрицы (с небольшими изменениями). 2.2. Метод Гаусса Метод Гаусса (Carl Friderich Gauss) является одним из самых распространенных прямых методов решения СЛАУ, то есть методов, в которых решение системы находится в результате конечного числа арифметических действий. Пусть решается
38 Глава 2 система (2.1) порядка η, имеющая единственное решение. Метод состоит из прямого и обратного хода. Прямой ход состоит из η шагов и заключается в последовательном исключении неизвестных из системы. В результате система (2.1) преобразуется в СЛАУ с верхней треугольной матрицей. На этапе обратного хода решается система с треугольной матрицей, и находятся неизвестные. Рассмотрим простейший вариант метода Гаусса, называемый схемой единственного деления. На первом шаге прямого хода производится исключение неизвестного Χγ из второго, третьего и т. д., η -го уравнений. Пусть απ φ О. Этот элемент называется ведущим (главным) элементом первого шага. Разделив первое уравнение на ах J, получим 6, 42 а\Ъ а\г, Χι Η Х<2 Η Χ} "τ-... Η Χη — (2.5) 41 41 41 41 Умножая (2.5) на α2ι и вычитая результат из второго уравнения, получим преобразованное второе уравнение, из которого исключено jq . Λ '22 ' '21 ' 42 41 J ΧΊ + Λ '23 '21" Ί3 41 J Χτ +. .+ Λ '2η '21' Ίη 41 У '21' (2.6) Ί1 Далее исключается jq из третьего, четвертого и т. д. до л-то уравнения. Введем обозначения для входящих в (2.5) величин: ,(1)л ,(1)л Χι -г Ол гу Х'у ~г Cf-i τ Xq ~г . + α(1)χ ■ + "in Xn ./,(1) где 70) 70-i) sk ;0) ;0-l) (2.7) В уравнении (2.5) номер шага s = 1, a a (0) sk 4sk b\0)=b4, k = s,s+l, Обозначим также величины, входящие в (2.6): ,(1)л La ryry л,г\ -\- Cf/-f% Х"д "τ" · 723λ3 + α(1)χ • + α2η χη -°2 ■ где при i = s + l,s +2,...,η; к = s,s +\,...,n ik "sk °is ■ a ;0) _ aO-1) ЬГ'-Ь^Ч*-": a a^J/ и δ;·5-* определяются из (2.7). (2.8) (2.9) На втором шаге (5 = 2) прямого хода производится исключение неизвестного х2 из третьего, четвертого и т. д. до η -го уравнения, преобразованных на первом шаге. Если а22 Φ 0, делим на а22 второе уравнение преобразованной на первом шаге системы и исключаем х2 из всех уравнений, начиная с третьего. Преобразования проводятся по формулам (2.7)—(2.9) при 5 = 2. После η шагов преобразований получаем СЛАУ с верхней треугольной матрицей (шаг η состоит только из преоб-
Прямые методы решения систем линейных алгебраических уравнений 39 разования последнего уравнения согласно (2.7)), причем содержащей единицы на диагонали: ,(1). ^(1Ь ^ ^(1Ь _А(1) хх + а[2>х2 + а|з;х3 + · · · + a\Jx„ = Ь{ х2 + а23 х3 +... + а2п хп=Ь2 , (и) (2.10) хп=Ъп . Далее в процессе обратного хода метода Гаусса решается система (2.10) и определяются неизвестные: x„=bi"\ Xi=bP- Σ 44, i=n-\,n-2,...,\. k=i+\ При реализации прямого хода на компьютере нет необходимости производить какие-либо действия с переменными х1,х2,...,хп. Прямой ход сводится к преобразованию матрицы А и вектора b по формулам (2.7)—(2.9). Широко используется вариант метода Гаусса (см. например, [18]), когда на 5-ом шаге 5-е уравнение не преобразуется по формуле (2.7). В результате в преобразованной системе, в отличие от системы (2.10), диагональные элементы не равны единице. Известна модификация метода Гаусса, называемая методом Гаусса— Жордана. Если в методе Гаусса на 5-ом шаге прямого хода преобразуются s +1, 5 + 2, ..., п-е уравнения, то в методе Гаусса—Жордана на 5-ом шаге прямого хода по тем же формулам (2.9) преобразуются 1, 2, ..., 5-1, 5 + 1, 5 + 2, ..., п-е уравнения. После завершения прямого хода метода Гаусса—Жордана матрица А приводится к диагональному виду. В методе Гаусса необходимо, чтобы все ведущие элементы a^sss~\ s = l,2,...,n в формуле (2.7) были отличны от нуля. Кроме того, близость ведущих элементов к нулю может привести к потере точности вычислений, так как будет происходить деление на очень малые числа. Этот недостаток устраняется в методе Гаусса с выбором главного элемента. Чаще всего используется выбор главного элемента по столбцу {схема частичного выбора). При исключении xs просматривается 5-й столбец еще не преобразованных уравнений и в строках s,5 + 1,...,η находится максимальный по абсолютной величине коэффициент а^~ ', после чего уравнения s и к меняются местами. Затем xs исключается по обычной схеме. Если все элементы столбца для непреобразованных уравнений равны нулю, то матрица А вырождена. К сожалению, для плохо обусловленных систем из-за погрешностей округлений ведущие элементы вырожденной матрицы могут отличаться от нуля, что не позволяет обнаружить вырожденность матрицы. Лучше сравнивать указанные элементы с малым числом ε > 0 . Величина ε зависит от погрешностей вычислений.
40 Глава 2 В методе Гаусса с выбором главного элемента по всей матрице {схема полного выбора) на 5-ом шаге среди коэффициентов а^~ в уравнениях s , s + 1, ..., η выбирают максимальный по модулю коэффициент α^~ '. Затем 5-е уравнение и к-е уравнение меняются местами и исключается хг. На этапе обратного хода неизвестные исключаются в порядке, обратном выбору исключаемых неизвестных на этапе прямого хода. Метод Гаусса с выбором главного элемента по всей матрице достаточно сложен и требует много операций сравнения элементов матрицы, поэтому на практике наибольшее распространение получил метод Гаусса с выбором главного элемента по столбцу. Рассмотрим формальное описание перестановки строк и столбцов матриц. Перестановки можно описывать с помощью матриц перестановок [4]. Матрица перестановок — это квадратная матрица, у которой в каждой строке и каждом столбце только один элемент отличен от нуля и равен единице. Матрица перестановок Ρ является ортогональной, то есть Ρ Ρ = РР = Ε, Ρ = Ρ . Произведение матриц перестановок одного порядка является матрицей перестановок. Рассмотрим построение матрицы Рй перестановок строк матрицы А . Сначала полагаем Рй — Ε, где Ε — единичная матрица. При каждой перестановке строк в преобразуемой матрице А переставляются строки с теми же номерами в текущем значении матрицы перестановок Рй. Так как переставляются непреобразованные строки матрицы А, то после перестановок получается тот же результат, как если бы перестановка строк происходила в исходной матрице А . Перестановка строк не меняет порядок неизвестных. Рассмотрим решение системы (2.2). Известно [4], что при умножении матрицы А слева на матрицу перестановок Рй переставляются строки матрицы А. При перестановке строк также переставляются компоненты вектора b . Поэтому метод Гаусса с выбором главного элемента по столбцу формально описывается уравнением РйАх1=РйЬ, откуда видно, что Xj=x и нет смысла хранить матрицу Рй. Матрица перестановок столбцов Рс строится аналогично: при каждой перестановке столбцов преобразуемой матрицы переставляются столбцы в матрице Рс. Так как переставляются столбцы непреобразованной части матрицы, то результат эквивалентен перестановке столбцов в исходной матрице А. Перестановка столбцов меняет порядок исключения неизвестных, но не изменяет порядок уравнений. Известно [4], что при умножении матрицы А справа на матрицу перестановок Рс переставляются столбцы матрицы А . При перестановке столбцов компоненты вектора b не переставляются. Метод Гаусса с выбором главного элемента по всей матрице описывается уравнением РйАРсх1=РйЬ,
Прямые методы решения систем линейных алгебраических уравнений 41 откуда PcX!=A_1b = x и решение исходной системы равно x = PcXi (2.11) Выражение (2.11) справедливо для всех методов решения систем линейных алгебраических уравнений с перестановкой столбцов исходной матрицы в процессе решения. Действительно, пусть в результате перестановок исходная матрица А преобразована в Aj= РЙАРС . Любым методом, например рассматриваемыми далее методами разложения матрицы, решается система AjXj = РЙЬ . Решение исходной системы находится согласно (2.11). Рекомендуется перед решением СЛАУ уравновесить ее матрицу умножением строк и (или) столбцов на подходящие масштабные множители. Масштабные множители подбирают так, чтобы элементы матрицы были величинами одного порядка. В случае масштабирования столбцов после получения решения необходимо произвести его демасштабирование. На практике часто делят каждое уравнение на наибольший по модулю коэффициент. Отметим, что для матриц со свойством диагонального преобладания η Ы> Σ \ау\, ' = 1,2,...,η метод исключения Гаусса без выбора главного элемента всегда осуществим. Матрицами с диагональным преобладанием является, например, матрицы СЛАУ, возникающих при расчете электрических цепей или при конечно-разностной аппроксимации дифференциальных уравнений в частных производных. 2.3. Метод прогонки Метод прогонки — это метод Гаусса, примененный к СЛАУ с ленточными трех- и пятидиагональными матрицами, возникающими, в частности, при разностной аппроксимации краевых задач для обыкновенных дифференциальных уравнений и дифференциальных уравнений в частных производных [19]. Рассмотрим простейший вариант правой прогонки для СЛАУ с трехдиагоналъной матрицей [18]: 1 "^1 ^1 "^"9 = 1 ? ί7οΧι ~г О'уХ'у -г CoXq — Q'у ; αιΧι-\ + Ь,Х, + С,Х,+1 = di > (2·12) ап-\Хп-2 +К-1Хп-1 +Сп-1Хп ~dn-l, anXn-l+KXn=dn-
42 Глава 2 Прямой ход прогонки состоит в вычислении прогоночных коэффициентов, а обратный ход заключается в вычислении значений неизвестных. Преобразуем первое уравнение системы (2.12): Χγ=αγΧ2+$ι, (2-13) ax=-cxlby, $y=dxlby. (2.14) Подставим (2.13) во второе уравнение системы (2.12) и после преобразования с учетом (2.14) получим %2 =а2Хз +β2, (2.15) а2= ^—, β2=^^. (2Л6) Ь2 + ί?2α1 ^2 + а2а1 Выражения (2.15) и (2.16) подставим в третье уравнение и т. д. На г -ом шаге получим хг =aixi+1+pi, α,= ^, ft-4-"A- (2Ι7) bi+aiai-l Ъг+агаг-\ На и -ом шаге имеем ^=PB = f" °"β"~1> α«=°· (2·18) Таким образом, прогоночные коэффициенты при г = 1 вычисляются по формуле (2.14), при 2<г<п-\ — по (2.17), а при i = n —по (2.18). В процессе обратного хода прогонки вычисляются xf по формулам Хп ~ Ри ' xi=aixi+l+\Q>i, i=n-\,n-2,...,\. Если матрица системы (2.12) обладает свойством диагонального преобладания, то метод прогонки является корректным и устойчивым. Метод прогонки требует гораздо меньше арифметических операций, чем метод Гаусса («8и вместо « 2/3 η [18]). На практике часто приходится решать СЛАУ с одной и той же матрицей и разными правыми частями. В этом случае коэффициенты о^ могут быть рассчитаны один раз, а для каждой задачи необходимо определять только коэффициенты β; и решение xi. Известны различные варианты метода прогонки [19], например матричная прогонка, когда в качестве коэффициентов системы (2.12) выступают матрицы. Матричная прогонка используется при численном решении задач математической физики, описываемых дифференциальными уравнениями в частных производных.
Прямые методы решения систем линейных алгебраических уравнений 43 2.4. Метод LU-разложения Как показано в разд. 2.2, метод Гаусса преобразует исходную СЛАУ (2.2) в эквивалентную систему (2.10), которую можно записать в виде Ux = f, (2.19) где U — верхняя треугольная матрица с единицами на главной диагонали, a f — преобразованный вектор правой части. Выведем связь между векторами b и f . Из (2.5) получаем /j = b^ =—^-, откуда ап Ъх =anfi =ап /γ. Из (2.6) получаем Ъ2 = Ъ2-а2ХЪх = b2-a2lf1. Из (2.8) г Ь2 г. 1 1 у тт ι. 0 г I г 1, /2 = —τ-, тогда о2 = a22j2. Получаем b2 = a21 jx + a22j2 , где учтено, что а22 = 1. а22 В общем виде bj=ljifi+lj2f2+- + ljjfj> 7=1,2,...,", (2.20) где Ιβ —числовые коэффициенты, причем / =afj Запишем соотношение (2.20) в матричном виде b = Lf, (2.21) где L — нижняя треугольная матрица, диагональные элементы которой равны направляющим элементам α метода Гаусса. Мы приняли допущение, что а1, ч^О, поэтому det L ^0, так как определитель треугольной матрицы равен произведению ее диагональных элементов. Поэтому матрица L имеет обратную, и можно из (2.21) выразить f: f = L_1b. (2.22) Подставляя (2.22) в (2.19), получаем LUx = b. (2.23) Значит, метод Гаусса эквивалентен разложению матрицы А решаемой СЛАУ в произведение нижней треугольной матрицы с ненулевыми элементами на главной диагонали и верхней треугольной матрицы с единичной главной диагональю. Метод, основанный на таком разложении (декомпозиции) матрицы, называется методом LU-разложения. В сущности, это другая реализация метода Гаусса. Этот метод называют еще компактной схемой метода Гаусса. Известна теорема о LU-разложении [20]: если все угловые миноры матрицы А отличны от нуля, то матрицу А можно представить в виде A = LU, (2.24)
44 Глава 2 где L — нижняя треугольная матрица; U — верхняя треугольная матрица. Если элементы диагонали одной из матриц L или U ненулевые, а диагональ другой матрицы единичная, то такое разложение единственно (во многих реализациях, например в [18], матрица L имеет единичную диагональ, a U — ненулевую). Названия матриц являются начальными буквами английских слов Lower ний" и Upper — "верхний". Напомним, что угловые миноры это ниж- \ъ Δ2 = det Обозначив в (2.23) получим ull u12 Va21 α22, Ux = y, Л A„=det(A). (2.25) (2.26) Ly = b Таким образом, вместо решения СЛАУ (2.2) необходимо последовательно решить систему (2.26) с нижней треугольной матрицей и систему (2.25) с верхней треугольной матрицей. Метод LU-разложения удобно использовать, когда многократно решаются СЛАУ с постоянной матрицей и различными правыми частями. Формулы для элементов /; и и,можно получить, приравнивая соответствующие элементы в матричном равенстве О О 41 '21 -Ή1 -Ί2 '22 Ή2 '13 '23 -Ή3 Ίη А2п 11 21 >22 О Ή1 'и2 'иЗ '12 1 '13 ^23 Чп '2и 1 Например, an=ln, 22\ ~hi 0 0 0 ani = К\ — эт0 элементы первого столбца матри- 12 . „ _ ι „, „__„ „. _ а13 л 9 a цы L . Из равенства а12 =h\un получаем щ2 = —'■> ai3 = hiui3 > откуда и13 = — 'и h\ и т. д. — так могут быть вычислены элементы первой строки матрицы U . Аналогично находим а22 =/21м12+/22, а32 =/31^12 + ^32 и Т-Д·' откуда получаем выражения для элементов второго столбца матрицы L: /22 =а22-/21м12, /32 =аЪ2 ~hi42 ИТ-Д· Из равенства α23 = /г1м1з +^22Μ23 получаем выражение для элемента второй строки матрицы U : и23 = — а23 - /21и 13 22 В общем виде вычисление элементов матриц L и U состоит из η шагов. На г-ом шаге (г — 1, 2,..., η ) вычисления проводятся в следующем порядке: 1. Вначале вычисляются элементы r-го столбца матрицы L : г-\ hr=air-HhkUh; i=r,...,n. /Ы В формуле принято, что при г = 1 имеем Χ^=1/^Μώ- = 0
Прямые методы решения систем линейных алгебраических уравнений 45 2. Затем вычисляются элементы r-й строки матрицы U : / = /* + !, 1 ( г-\ \ К ari - Σ hkuki V k=\ J Заметим, что для экономии памяти элементы матриц L и U можно формировать на местах соответствующих элементов матрицы А (единичную диагональ матрицы U можно не хранить). Решение системы (2.26) находится по формуле 1 ( ;-1 ^ У'=Т 41 /=1,2, Решение системы (2.25) определяется выражением " Σ hiJk k=\ и xi =yf- Σ uikxk, i = ",w-l,...,l. k=i+l LU-разложение может быть реализовано, если 11Ί, ψ О . Кроме того, близость 1п, к нулю может привести к большим погрешностям. Чтобы избежать этого, можно использовать LU-разложение с выбором главного элемента по столбцу [18]. На каждом шаге г вычисляются элементы /. столбца г матрицы L и размещаются на местах элементов ajr. Если max|/;r|= / , то строки г и ρ меняются местами. Затем вычис- ляются элементы и ■ строки г матрицы U и размещаются на местах элементов a . Вырожденность матрицы решаемой системы определяется аналогично методу Гаусса с выбором главного элемента по столбцу. Перестановка строк эквивалентна умножению исходной системы слева на матрицу перестановок: РАх = РЬ . В результате разложения получаем РА = LU . Вместо системы (2.26) должна решаться система Ly = Pb . В часто встречающемся на практике случае диагонального преобладания матрицы А метод LU-разложения всегда осуществим. 2.5. Метод Холецкого Этот метод называют еще методом Холеского (Andre-Louis Cholesky), методом квадратных корней, методом LLT-разложения. Пусть матрица А системы (2.2) симметрична и положительно определена. Поскольку А = А по определению симметричной матрицы, из разложения А = LU и А = U L следует, что U = L , L = U . Значит, матрицу А можно представить в виде или A = LLT (2.27) A = UTU, (2.28) где L — нижняя треугольная матрица; U — верхняя треугольная матрица, причем все диагональные элементы матриц L и U положительны.
46 Глава 2 Матрица А при использовании представлений (2.27) и (2.28) должна быть положительно определена, так как известно [20], что для произвольной невырож- денной квадратной матрицы Μ матрица А = Μ Μ является положительно определенной. Действительно, матрица А является симметричной, так как τ τ Ат = МТМ = Мт Мт = МТМ = А. Для доказательства положительной определенности матрицы А докажем, что Αχ, χ > 0 для любого χ Φ 0 . Действительно, Αχ,χ =х Ах = х Μ Мх . Обозначим у = Мх , тогда χ Ах = у y = X=1Jj >0. Рассмотрим разложение (2.27). Элементы матрицы L можно получить из матричного равенства ап ап «о а\п а. 21 а. 22 а23 '31 "32 •*33 •*2и АЪп ап\ ап2 апЗ Из ап-1п получаем /и /21 /31 'nl 0 0 0... /22 0 0 ... hi /33 0 .. /«2 /«3 /«4 · 0 0 . 0 • "'пи /и 0 0 0 /21 /22 0 0 /31 /32 'зз 0 /41 ■••'nl /42 · · · /«2 /43 · · · 'иЗ о.../яя Αι (2.29) 11 -ν"ΐι В (2.29) берется положительное значение корня, так как диагональные элементы матрицы L положительны. Из формулы для элементов первой строки матрицы А ai2~hihh ai3~hihh ■■■> a\i-h\hb получаем выражение для элементов первого столбца матрицы L : а,. I _ ~Чг '11 / = 2,3, (2.30) Рассмотрим выражения для диагональных элементов матрицы А -«22 -'21 _г,22' откуда и в общем виде 22 ψ1 22 _ /21 ■> 'зЗ 33 - ^31 + ^32 + ^33 ' ψ1. _/2 _/2 33 '31 '32 Ι»=*Ια»-Σ&> г = 2,Ъ,...,п. V /t=l ИЗ θ23 =/21/3ι +/22/32, «34 =№ + /32Z42 + ^43 ПОЛучим (2.31) '32 723 /21/3I '22 ' /43 γ34 /31/4Ι +/32/42 '33
Прямые методы решения систем линейных алгебраических уравнений 47 в общем виде * "Г J J α»-Σ k=\ hiJjk i = 3,4,...,η; 7=2,3,..., г-1. (2.32) В (2.32) учтена симметрия матрицы А . Расчет элементов матрицы L производится в следующем порядке: сначала вычисляется Ιγγ по формуле (2.29), затем согласно (2.30) вычисляются элементы /;1 первого столбца матрицы L . Далее находятся элементы строк матрицы L по формулам (2.32) и (2.31). В (2.31) подкоренное выражение всегда положительно (доказывается [18], что это является следствием положительной определенности матрицы). Вместо исходной СЛАУ решаются две системы с треугольными матрицами Ly = b, LTx = у. Решение проводится по следующим очевидным формулам ъх if, г1 ^ У\=~Г , У г /„ 1 Х'=Т - Σ hiJk k=\ /=2,3, Уг ~ Σ ]ЫЧ Λ k=i+\ i = n -1,и-2,...,1. Для положительно определенной матрицы LL -разложение всегда выполнимо и не требует никаких перестановок. Достаточно вычислять и хранить только матрицу L, поэтому число арифметических операций и объем памяти в методе Холецкого примерно вдвое меньше, чем в методе Гаусса и LU-разложении. Учитывая симметрию матрицы А, можно хранить только элементы α у при / > у, то есть нижнюю треугольную матрицу. Элементы /; можно помещать на место элементов α; , так как из (2.30)—(2.32) следует, что элементы матрицы А участвуют в расчете элементов матрицы L только один раз. Метод Холецкого удобен для решения СЛАУ с симметричными положительно определенными ленточными матрицами. Из (2.30)—(2.32) можно доказать, что за пределами ленты /; = 0 , то есть матрица L имеет тот же вид, что и нижняя половина ленточной матрицы А . При этом нулевым элементам <3ц внутри ленты будут соответствовать, как правило, ненулевые элементы /; . Таким образом, в случае ленточных матриц достаточно хранить только ленты матриц А и L . Рассмотрим пример применения метода Холецкого для решения СЛАУ с симметричными трехдиагональными матрицами [21], имеющими следующий вид: ъх о о о о Jn-2 Лп-\ Jn-\ Jn-\
48 Глава 2 Матрица L имеет вид ft О Wr, О О о ϊ о li-l w,- ...О ln-\ Wn J где wj = ^, & w, w. г+1 : >/°»ч Аналогично можно решать СЛАУ с пятидиагональными матрицами. СЛАУ с трех- и пятидиагональными матрицами — типичный пример разреженных матриц, возникающих при решении дифференциальных уравнений в частных производных методом конечных разностей. Метод Холецкого является хорошим тестом на положительную определенность матрицы. Для проверки положительной определенности матрицы А необходимо попытаться вычислить матрицу L. Если на некотором шаге вычислений под знаком квадратного корня в (2.31) получается неположительное число, то матрица А не является положительно определенной. 2.6. Метод LD^-разложения Для СЛАУ с симметричными, положительно определенными матрицами на практике удобнее использовать не LL -разложение, a LDL -разложение [15, 22]: A = LDLT, (2.33) где L — нижняя треугольная матрица с единичной диагональю; D — диагональная матрица. В методе LDL -разложения при сохранении всех свойств LL -разложения исклю- чена операция извлечения квадратного корня, поэтому метод LDL -разложения находит большое практическое применение. Из (2.2) и (2.33) получаем Обозначим тогда LDL1x = b DLTx = y, Ly = b (2.34) (2.35)
Прямые методы решения систем линейных алгебраических уравнений 49 Система (2.35) — это СЛАУ с нижней треугольной матрицей, решения которой находятся из выражения ί-1 Уг =bi ~И11кУк- i = l,2,...,п. ЫХ Вектор χ — решение СЛАУ (2.34) с верхней треугольной матрицей — находится по формулам Уп У? xn=-f-> xi=~f~ Σ lkxk- i=n-l,n-2,...,l. "nn "ii k=i+X Теперь получим расчетные выражения для разложения (2.33). Известны общие подходы для факторизованного представления матриц [17,22]. Мы получим разложение (2.33), исходя из известного LL -разложения (для удобства сменим только обозначения) τ A = WW Сравнивая (2.33) и (2.36), можно записать W = LQ, Q = D2, D = D2D2 или в развернутом виде Из правил умножения матриц получаем wn = qn, что с учетом (2.29) дает dn = q\x = wj2! =an, то есть dn =an. Отметим также, что 4if=wif> i = \2,...,n. w'j=I'j4jj> i = 2,3,...,n; j = 1,2,...,п. Из (2.37), (2.38) и (2.31) получаем ί-1 ί-1 ί-1 -w, 'α = αα~Σ wik = αα~Σ hklkk = αα~Σ hkdkk, »' = 2 Д. . к=Х k=\ k=\ Из (2.38), (2.37) и (2.30) находим с учетом симметрии матрицы А / _ и 'л — α. a чх ■■^- , i = 2,3,...,п. qn wnqn dn -"} *^5 * * * 5 (2.36) fwn W2X w31 ,WnX 0 W22 w32 Wn2 0 .. 0 .. w33 ·· wn3 ■■ . 0 ^ . 0 . 0 • WnnJ = (\ hx hx JnX 0 1 /32 /„2 0 .. 0 .. 1 .. Къ ■■ . 0^ . 0 . 0 • h • (Чхх 0 0 ν0 0 <?22 0 0 0 .. 0 .. ?зз ·· 0 .. ' ° 1 . 0 . 0 • Inn J (2.37) (2.38) (2.39) (2.40)
50 Глава 2 Из (2.38), (2.37) и (2.32) видим, что ( J~l λ 1 ;; ~4jwjj ν *=ι у -;; ( ;-ι ^ απ /^hl&dJ' jklkk -~Γ~ αϋ Z^hlJik^i ЛЦ Zj 'ik'jkukk V *=1 У (2.41) / = 3,4,...,и; 7 = 2,3,...,/-2. Таким образом, расчет элементов матриц L и D производится в следующем порядке: 1. Все диагональные элементы /,,=1, /' = 1,2,..., η (эти элементы можно не хранить). 2. Рассчитывается dx x =ax x. 3. Находятся элементы первого столбца матрицы L по формуле (2.40). 4. Далее по строкам рассчитываются du и /,-,- согласно (2.39) и (2.41). Отметим, что LDL -разложение является частным случаем LDM -разложения для произвольных матриц А [23]: A = LDM , где Ьи Μ — ортогональные нижние треугольные матрицы, a D — диагональная матрица. Если матрица А симметричная, то оказывается, что Μ = L, то есть LDL -разложение применимо к любым симметричным матрицам А. 2.7. Метод QR-разложения 2.7.1. Метод вращений Вспомним свойства ортогональности векторов и матриц (см., например, [20]). Два вектора называются ортогональными, если их скалярное произведение равно нулю: х,у = 0 . Для доказательства используем определение скалярного произведения из аналитической геометрии: если χ и у — два ненулевых вектора и θ — угол между ними, то COS6 = OTT' (2.42) где х,у — скалярное произведение векторов; χ , у — евклидовы нормы (длины) векторов. Аналогично (2.42) определим угол между векторами многомерного пространства Ж": х,у θ = arccos.. .. .. .. . (2.43)
Прямые методы решения систем линейных алгебраических уравнений 51 Из (2.43) следует условие ортогональности векторов многомерного пространства — х,у = 0 . Напомним, что квадратная матрица Q называется ортогональной, если QQT=QTQ = E, (2 44) где Ε — единичная матрица, то есть все ее столбцы (и строки), рассматриваемые как векторы, ортогональны и нормированы. Из (2.44) следует, что для ортогональ- Τ —1 ных матриц Q = Q Отметим важные свойства ортогональных матриц [20]. Если Q — ортогональная матрица, то: □ умножение на ортогональную матрицу не изменяет скалярное произведение: Qx,Qy = х,у , (2.45) Τ Τ Τ Τ действительно, Qx,Qy = Qy Qx =y Q Qx=y x= x,y ; □ умножение на ортогональную матрицу не изменяет евклидову норму вектора: |Qx| = |x|, (2.46) действительно, |Qx| = J Qx, Qx и, учитывая (2.45), получаем (2.46). □ ортогональное преобразование сохраняет углы, то есть угол между векторами Qx и Qy тот же, что и угол между векторами χ и у . Для доказательства применим формулы (2.43), (2.45) и (2.46): θ = arccos QxQy |Q«IH|Qy|| : arccos; *,У ιΗΗΗΙ Рассмотрим вращение вектора. Из аналитической геометрии известно, что поворот вектора на плоскости на угол θ является линейным преобразованием и описывается матрицей #11 #12 #21 #22 Рассмотрим два вектора Q (рис. 2.1). (2.47) Рис. 2.1. Поворот вектора на угол θ
52 Глава 2 Матрица Q, задаваемая формулой (2.47), полностью определяется своим воздействием на векторы Яп Яп Я21 Я22 Яп Я2\ Яп Яп Я 21 Я 22 Яп Я22 Учитывая координаты векторов после поворота (рис. 2.1), получаем "Г о Яп №ij cos θ sill θ и О "0" 1 Яп Я22_ -sin θ cos θ так что cos θ - sin θ sin θ cos θ (2.48) Матрица вида (2.48) называется ротатором, или вращением [20]. Вращение можно применять для получения нулевых элементов в векторах и матрицах. Например, найдем вращение вида (2.48) для вектора χ с элементом х2 ^ 0 такое, чтобы у преобразованного вектора Q χ равен нулю. Имеем второй компонент был QTx поэтому результат имеет вид cos θ sill θ -sin θ cos θ г вид У 0 хх _Х2_ , если Χγ COS ϋ + Х2 Sill К Χγ Sill ϋ + X2 COS t Xj Sill fc) = X2 COSt (2.49) Очевидное решение cos θ = Χγ и sin θ = χ2, вообще говоря, не удовлетворяет основ- ному тригонометрическому тождеству sin θ + cos θ = 1. Если положить COS0 = χι V 2 2 χι +χ2 И Sill I ft + Χο то одновременно выполняются основное тригонометрическое тождество и уело- V9 9 Xj +Х2 .
Прямые методы решения систем линейных алгебраических уравнений 53 Используем вращение для упрощения матрицы А '11 a 12 ib Мы видели, что существует вращение Q, для которого Q a и делим г12 и г22 как '12 '22. -Ί2 '22. '21. и пусть R = 11 О '11 '12 О '21 "22 , где Aii=-y/i/n Тогда + а 21 Опре- '22. QTA = R, (2.50) то есть матрица А преобразуется в верхнюю треугольную матрицу. Такие преобразования можно выполнить для любой квадратной матрицы [20]. Переписав уравнение (2.50) в виде A = QR, (2.51) видим, что можно осуществить QR-разложение, где Q — ортогональная матрица, R — верхняя треугольная матрица. Применяя к системе линейных алгебраических уравнений Ах = b разложение (2.51), аналогично LU-разложению, приходим к двум системам Rx = y, (2.52) Qy = b Так как матрица Q ортогональна, то вектор у находится очень просто: y = QTb Затем вектор χ находится из решения системы (2.52) с верхней треугольной матрицей. В матричных вычислениях широко используются плоские вращения, называемые в зависимости от контекста вращениями Гивенса (James Givens) или вращениями Якоби (С. G. J. Jacobi) — матрицы вида [20, 23] Ί (2.53) J, t i t J
54 Глава 2 где χ ■■ cos θ = , ' и s = sin θ = —-. •у Xi + Xj у 2 2 В матрице вращений (2.53) все незаполненные элементы равны нулю. Плоское вращение совпадает с единичной матрицей за исключением пары строк и столбцов. Плоским вращением любой вектор χ можно преобразовать в вектор Q х,у которого изменятся лишь i -й и j -й элементы, причем j -й элемент станет равен нулю. Если χ, = χ ■ = 0, то можно взять с = 1 и 5 = 0, то есть просто единичную матрицу. Несложно показать, что преобразования QA и Q А, где матрица Q определяется по формуле (2.53), изменяют только г -ю и j-ю строки в матрице А . Аналогично, преобразования AQ и AQ изменяют i -й и j -й столбцы в матрице А. Преобразования с помощью матриц вида (2.53) можно рассматривать как преобразования вращения на угол θ в плоскости, соответствующей координатам с индексами i и j. Отсюда происходят обозначения с = cos θ и s = sin θ . Рассмотрим метод QR-разложения {метод вращений) решения системы линейных алгебраических уравнений. Метод QR-разложения [18, 24] состоит из прямого хода, когда с использованием разложения (2.50) матрица А преобразуется к треугольной, и обратного хода — решения СЛАУ с треугольной матрицей. Рассмотрим прямой ход, так как обратный ход ничем, в принципе, не отличается от решения СЛАУ с треугольными матрицами в других методах. Прямой ход состоит из п — \ шага, на каждом из которых в системе исключается одно неизвестное. Каждый шаг, в свою очередь, состоит из некоторого числа "малых" шагов. Пусть решается система (2.2) с неособенной матрицей А общего вида. На первом "малом" шаге первого шага алгоритма исключается Χγ из второго уравнения. Для этого вычисляются коэффициенты „ _ α11 „ _ α21 12 " Π Г ' 12" Π Г ' VaH+a21 VaH+a21 при этом оказывается, что С\2 + SU = ! , -S\2a\ 1 + CUa2\ = ° · (2·54) Первое уравнение заменяется линейной комбинацией первого и второго уравнений с коэффициентами с12 и sl2 '■ (а11С12 +α21Λ'ΐ2)Χ1 +(а12С12 +α22Λ'ΐ2)Χ2 + · · · + (а1иС12 + a2nS\2>Xn =®\C\2 +^2^12 ' (2.55) а второе уравнение — аналогичной комбинацией с коэффициентами -s12 и с12 : (-al2sl2 + а22сп )х2 +... + (-alnsl2 + а2пс12 )хп = -Ь^12 + Ъ2сп, (2.56)
Прямые методы решения систем линейных алгебраических уравнений 55 причем в (2.56) в силу (2.54) коэффициент при jq равен нулю. Преобразования (2.55) и (2.56) можно записать в матричной форме: с12 s12 0 0...0 Т12Ах = Т12Ь, 42 -sn сп 0 0...0 О 0 1 0...0 0 0 0 0...1 На втором "малом" шаге первого шага исключается jq из третьего уравнения. Для этого по формулам, аналогичным (2.55) и (2.56), преобразуются первое и третье уравнения. Для этого используются коэффициенты "13 ,(1) 711 №tf+"L· *13 '31 ■Ί1 + а 31 с123+5123=1 ~snaU + с13й,31=°> где ап — преобразованное на первом "малом" шаге значение коэффициента ап В матричной форме результат преобразования первых двух "малых" шагов можно записать в виде T13Ti2Ax = T13Ti2b. Аналогично Х\ исключается из оставшихся уравнений. В результате первого шага получается преобразованная система А х = Ь , где А1 =Т1я...Т13Т12А, Ь1 =Т1я...Т13Т12Ь. Здесь и на других шагах преобразования матрица преобразования T/d — это ортогональная матрица, к — номер шага, / — номер уравнения, из которого исключается переменная на шаге (к + 1</ <п). Матрица Ту — матрица плоских вращений. Для элементов матрицы Ту должно выполняться соотношениеTkk =Тц= скг, где сы 1-1 7кк здесь акк значение элемента акк, полученное /-1 1кк +а1 на (/ -1 )-ом шаге преобразования, акк = акк . Выполняются также соотношения
56 Глава 2 На втором шаге преобразований системы из третьего, четвертого и т. д. уравнений исключается неизвестное х2. В матричной форме преобразование можно записать в виде А 2 U2 А х = Ь , = Т2й...Т24Т23А , b =Т2й...Т24Т23Ь . После (п — 1) -го шага преобразованная система имеет вид An—1 ■ и—1 х = Ь An—1 т . и—2 ■ и—1 т ι и—2 = Т»-1,»А , Ь =Т„_1)ЯЬ Матрица А — это верхняя треугольная матрица. Обозначив R = А" , Т = Т«-1,« · · · Т2» · · · Т23Т1» · · ·Т13Т12 , ПОЛУЧИМ ίχ = 1 R = TA, Rx = b" 1 , (2.57) или A = QR, — 1 Τ in где Q = Τ = Τ , так как Τ — ортогональная матрица (как произведение ортогональных матриц). Обычно преобразование исходной матрицы в методе вращений производят не формальным умножением на матрицы Ту, а последовательным исключением неизвестных по формулам, аналогичным (2.55) и (2.56). Для решения СЛАУ (2.2) следует преобразовать как матрицу А, так и правую часть. Фактически необходимо провести QR-разложение расширенной прямоугольной матрицы А ! b , полученной добавлением столбца, равного вектору правой части. В результате преобразования получа- содержащая треугольную матрицу R и преобразованный ■ τ ется матрица R ! Q b вектор правой части Q b . Отметим, что матрицу Q в явном виде мы не получим. Далее решается система Rx = Q b с треугольной матрицей. Если необходимо получить разложение А = QR, то есть найти матрицы Q и R, следует преобразовать расширенную матрицу А ! Ε , где Ε — единичная матрица. В результате преобразования получается матрица R ! Rj , где R = ТА, Rj = ТЕ = Τ, Τ = Τη_! .. .Τ2η .. -Т23Т1и .. ·Τ13Τ12 . Мы показали, что Q = Τ , значит Q = Rj . В методе QR-разложения евклидова норма любого столбца преобразованной матрицы А , где г = 1, 2,..., п-1, равна евклидовой норме соответствующего столбца
Прямые методы решения систем линейных алгебраических уравнений 57 исходной матрицы А . Это вытекает из того, что столбцы преобразованных матриц получаются из столбцов исходной матрицы умножением на ортогональные матрицы, а такое умножение не изменяет евклидову норму вектора (см. (2.46)). Это означает, что в методе QR-разложения не наблюдается роста элементов в процессе преобразования и метод является численно устойчивым и лучше обусловленным, чем метод Гаусса. Однако метод QR-разложения значительно более трудоемок. Отметим, что метод QR-разложения применим к любым матрицам, в том числе вырожденным. Признаком вырожденности матрицы А будет являться наличие нулевых (точнее, очень малых) значений на диагонали матрицы R. Действительно, из ортогональности матрицы Q следует, что QQ =Е. Тогда det QQ =detE 2 или detQ =1, так как транспонирование не изменяет определитель матрицы. Поэтому detQ = ±l. Из разложения A = QR и из равенства определителя треугольной матрицы произведению диагональных элементов следует det A = detQ · detR = ±detR = ±гпг22...гЛГ1. Таким образом, равенство нулю определителя матрицы А возможно, если хотя бы один из диагональных элементов матрицы R равен нулю. 2.7.2. Метод отражений Метод основан на преобразовании отражения вектора относительно плоскости [20, 23, 24]. Пусть w — вектор-столбец с единичной евклидовой нормой (длиной) |w| = Jw,w =vw w=l. (2.58) Квадратная матрица H = E-2wwT (2.59) называется матрицей Хаусхолдера (Alston Scott Householder), или матрицей отражения (Е — единичная матрица). Рассмотрим преобразование произвольного вектора χ с помощью матрицы Η : y = Hx = x-2ww x = x-2 x,w w. (2.60) Если вектор х коллинеарен вектору w, то есть χ = aw, где α φ 0 — некоторая константа, то x,w = a w,w = a . Из (2.60) имеем у = χ - 2aw = χ - 2х = -χ . Если же вектор χ ортогонален вектору w, то по определению ортогональных векторов х, w = 0, и из (2.60) получаем у = χ. Таким образом, преобразование Хаусхолдера оставляет неизменными векторы, ортогональные вектору w, а векторы, коллинеарные w , переводит в противоположные, то есть отражает.
58 Глава 2 Матрица Хаусхолдера является ортогональной матрицей. В самом деле, матрица ww является симметричной: W, WW Wn, yv„ W, Wr, w„ W, w^w \νΛ\ν \w2 W,W \wn 2n\ W0 Wr,W W„W, W„W. vnw\ nw2 2nn W„ Симметрия матрицы ww влечет симметрию матрицы Н , поэтому с учетом (2.58) HHJ 2 Τ Τ Τ Η = Ε - 4ww + 4w www = Ε, что и означает ортогональность матрицы Хаусхолдера. Как уже отмечено (см. (2.46)), ортогональные преобразования сохраняют евклидову норму (длину) преобразуемых векторов: |у| = |Нх| = ^ Нх Т Нх = VxTHTHx = Vx^ (2.61) Построим матрицу Хаусхолдера, преобразующую ненулевой вектор χ в вектор у, τ τ коллинеарный орту ej = 1 0 ... О , то есть в вектор у = у^ = ух О ... О . Отметим, что по сравнению с рассмотренным в предыдущем разделе преобразованием вращения в плоскости, определяемой парой ортов, преобразование отражения действует во всем пространстве и позволяет обнулить все компоненты вектора, кроме одного, при правильном подборе вектора w. Из свойств введенного вектора у и (2.61) получаем |y|=W=IHI> поэтому у\ =±||х|| и у = + χ ej. Чтобы найти вектор w, подставим найденное значение у в выражение (2.60): ±|x|ei =χ-2 x,w w или 2 x,w w = x + |x|e1. (2.62) Так как в формуле (2.62) величина 2 x,w представляет собой скаляр, то два возможных направления искомого вектора задает вектор w = χ + ||х||е1. Вектор w имеет вид w :[*1 + Х ' х2>· <S х\ + SLxi ' х2' \г=1
Прямые методы решения систем линейных алгебраических уравнений 59 (его компоненты для большей наглядности разделены запятыми). Приводя вектор w к единичной длине (условие (2.58)), получаем W = jn7uW= , ^=W . (2.63) |w|| J w,w Знак в формуле для w выберем таким образом, чтобы исключить вычитания, а следовательно, большую погрешность при вычитании близких чисел. Для этого положим [24] w= xj-β, х2, ..., х„ , (2.64) при jcj φ О примем β = sign -хх |х|| = sign -хх SZxf > (2·65) 1, если ζ > О, где sign z =<j 0, если ζ = 0, обозначает функцию знака (читается: "сигнум"). -1, еслиг<0 При х1 = 0 примем β = |χ|; (2.66) при таком выборе, как мы увидим далее, у1 Φ 0 . Выбор w согласно (2.64) и (2.65) означает, что к положительному элементу Χγ прибавляется ||х||, а из отрицательного Xj вычитается ||х||. Длину вектора w можно выразить через β . Из (2.64) находим II ~ Ι|2 ~ ~ η 2 2 2 ν^ 2 τη η2 ||w|| = w,w = Χι-β +χ2 +... + χ„ =Lxi -2βχ!+β . ί=1 η Из (2.65) получаем ^jc7- = β , поэтому ;=1 Тогда (2.63) примет вид |\ν|2 = 2β2-2βχ1. (2.67) τ \ν = μ Χ!-β, χ2, ... хи , (2.68) где μ ν2β2"2βχ! и коэффициент β определяется согласно (2.65) и (2.66).
60 Глава 2 Если определяемую выражением (2.59) матрицу Хаусхолдера строить с помощью вектора (2.68), то ненулевой вектор χ преобразуется в вектор со всеми нулевыми компонентами, кроме первого, а первый компонент окажется равен β. Последнее утверждение следует из выражений у^ =+ χ и (2.65). Причем, если выбрать β согласно (2.66), то у1 ^ 0, даже если х1 = О . Ввиду ортогональности матрицы Η возможно обратное преобразование вектора у в вектор χ: χ = Η у . Рассмотрим преобразование квадратной матрицы А размера и χ и к треугольному виду с использованием матрицы Хаусхолдера [24]. Задача решается за η -1 шаг. На первом шаге преобразуется первый столбец матрицы А. Для этого строится матрица Хаусхолдера Hj = Ε - 2νΐγΝχ с помощью вектора τ \νι=μι «„-ft a '21 а-, и1 где ft = sign -an p^al В результате преобразования получаем Αι где μι J2tf-2han ι О О 1 712 ΛΊ1 Ап2 Н,А 41п Л2п •Ί1 На втором шаге преобразуется матрица, получающаяся из Aj вычеркиванием первой строки и первого столбца. Такое преобразование эквивалентно применению ко всей матрице Aj преобразования Хаусхолдера, определяемого формулами H2=E-2w2w2, W- :μ2 О α22 - β2 α32 Αη2 β2 = sig 11 -°22 JZ a a μ2 ν2β2-2β2α22
Прямые методы решения систем линейных алгебраических уравнений 61 Матрицу Н2 можно применить ко всей матрице Aj, так как матрица Н2 имеет структуру (звездочками отмечены ненулевые элементы): Н, О О о (2.69) Структура матрицы (2.69) означает, что первая строка и первый столбец матрицы Aj не изменяются при преобразовании А2 =Н2А1. В результате выполнения первых двух шагов преобразования формируется матрица НДА О О о о чз '33 -Ή3 •Чи 42п 4Ъп На i -м шаге преобразование определяется формулами H/=E-2w/w/ , w,- О ...0 a i-X i-X Ч Ui+X β, « i-X г_1 Г" ~ι 2" β,. = sign -ой' Σ aia » ^=_Г= ■2β;α;; Причем, если в формуле для μ^ знаменатель равен нулю, то, как следует из (2.67), Wj = 0. Поэтому, согласно (2.64), соответствующий столбец матрицы уже нулевой и на г -м шаге следует пропустить обработку этого столбца. После п — \ шага матрица преобразуется в треугольную матрицу R = A„_1=H„_1 Η2Η!Α = ΟτΑ, (2.70) где Q1 Η и-1· Н2Н1 ортогональная матрица (как произведение ортогональных матриц). Из (2.70) получаем А = QR , где Q = HjH^. ΐίη_ι. Как и в методе вращений, можно применить преобразование Хаусхолдера к матрице А и вектору правой части b системы линейных алгебраических уравнений, преобразуя расширенную матрицу а ;ь и прийти к системе вида Rx = Q b . Аналогично, для нахождения матриц Q и R следует преобразовать расширенную матрицу А ! Ε , где Ε — единичная матрица.
62 Глава 2 Метод отражений при той же устойчивости, что и метод вращений, требует примерно в полтора раза меньше арифметических операций [18]. Важным свойством QR-разложения является его единственность для невырожденных матриц А: для невырожденной матрицы существует единственное разложение А = QR, где Q — ортогональная матрица, a R — верхняя треугольная матрица с положительными элементами на главной диагонали [20]. Другим важным свойством является устойчивость вычислений, использующих вращения и отражения [25]. Если матрица А преобразуется в QA, где Q — матрица либо вращений, либо отражений, то fl QA =Q A + I , - результат выполнения преобразования QA в форме с плавающей А мало. где fl QA точкой, а I Таким образом, результат преобразования с учетом погрешностей совпадает с точным результатом применения этого же преобразования незначительно возмущенной матрице. Причем устойчивость сохраняется при многократных применениях вращений или отражений. Отметим также, что для QR-разложения кроме рассмотренных методов вращения и отражения известна процедура Грама—Шмидта [20] (см. разд. 3.9.4). Известно также QL-разложение [4, 20] А = QL, где Q — квадратная ортогональная матрица, L — нижняя треугольная матрица. 2.7.3. Приведение матриц к форме Хессенберга Матрица В называется правой (левой) почти треугольной матрицей, или матрицей Хессенберга (Karl Adolf Hessenberg) [4, 20], если для ее элементов выполняются соотношения δ;, = 0. и В i>j \Ъп Ъ2\ 0 0 0 + 1 ьи *22 ЬЪ2 0 0 j>i + \ : ··· Кп-2 ··· Ь2,п-\ ··· ЬЪ,п-2 "'" Ъ„_Хп_2 0 \п-\ Ъ2,п-\ ЬЪ,п-\ К-1,п-1 К,п-1 К Ъ2п К К-1,п Кп _ Некоторые алгоритмы, например поиск собственных значений матриц, проще реализовать, если предварительно преобразовать матрицу к форме Хессенберга. Если исходная матрица является симметричной, то преобразования к форме Хессенберга приводят к трехдиагональной матрице. Исходная матрица А может быть приведена к форме Хессенберга с помощью преобразований Хаусхолдера. На первом шаге преобразования обнуляются все элемен-
Прямые методы решения систем линейных алгебраических уравнений 63 ты первого столбца матрицы А кроме ап и а21. Для этого используется матрица Хаусхолдера Hj = Ε - 2wjWj , где \νι=μι 0,a21-ft, a3l ..., αη1 , 1 ' μι ft = sign -α21 /Σ>*ι V/t=2 ^2ft2-2fta21 ' Аналогично строятся матрицы Н2, Н3,..., Ни 2. На i -м шаге преобразования имеем где μ, ™г = μ,-ι Н^ = Ε - IWjWj , Ο,-,Ο,^ί "ft, α/~£, ...., 1 η __„ .i-1 i —— ? Рг Ь1ЬИ с'г+1 ^2β2-2β;α;^ в получим итоговое разложение B = QTA, г-1 " Τ 5 J Σ «/Γ1 V /с=г+1 где В = АИ_2 —матрицаХессенберга, a Q = H1H2...HW_2 —ортогональная матрица. 2.8. Вычисление определителей и обращение матриц В современных численных методах вычисление определителей используется редко. Следует также отметить крайнюю неэффективность непосредственного вычисления определителей. Так, для вычисления определителя матрицы пхп потребуется η -1 п\ умножений и п\ сложений. Если η = 20 (практически это весьма простая задача) и на выполнение одной операции требуется 10 с, то для вычисления определителя потребуется более миллиона лет, а для решения СЛАУ с такой матрицей при такой же производительности компьютера методом Гаусса— примерно 0.005 с [26]. По этой причине математически безукоризненный метод Крамера совершенно не применим для решения реальных задач. Если все же необходимо вычислить определитель матрицы, то используют какое- либо разложение матрицы на треугольные, например, LU-разложение или преобразование к треугольному виду, например, методами вращений или отражений и известные свойства определителей [4]: определитель произведения квадратных матриц равен произведению определителей сомножителей; определитель треугольной матрицы равен произведению диагональных элементов; определитель меняет знак
64 Глава 2 при перестановке строк матрицы. Тогда, используя, например, LU-разложение, получим det А = -1 s detL · detU = -1 s InI22.. .Im, (2.71) где s — число перестановок строк в процессе LU-преобразования. В (2.71) учтено, что матрица U имеет единичную диагональ. В случае особенной матрицы при реализации LU-разложения в вычисленной части матрицы L в результате перестановок строк будет расположено очень малое по абсолютной величине число. Поэтому формула (2.71) для вырожденной матрицы дает малое по абсолютной величине число. Вычисление обратных матриц также крайне редко используется в современном вычислительном эксперименте из-за большой трудоемкости решения такой задачи. Практически всегда целесообразно заменить умножение χ = А~ b решением системы Ах = b . Если требуется многократно решать системы с одной и той же матрицей А и различными правыми частями, то использование, например, LU- разложения потребует примерно в три раза меньше времени, чем нахождение А~ . Обратную матрицу целесообразно вычислять, если требуется анализ элементов этой матрицы. Исходя из свойств обратной матрицы видно, что нахождение элементов обратной матрицы эквивалентно решению матричного уравнения АХ = Е, где X — искомая обратная матрица; Ε — единичная матрица. Например, при η = 2 имеем ап ап а21 а22 откуда получаем а\ 1Х11 + а12Х21 а\ 1Х12 + а12Х22 _а2\Х\\ +α22Χ21 °21Χ12 + α22Χ22 Из условия равенства матриц (2.72) видим, что α11Χ11 + α12Χ21 = 1> Ι α11Χ12 + α12Χ22 = ^> α21Χ11 +α22Χ21 = 0> [α21Χ12 +α22Χ22 = ^ то есть нахождение элементов обратной матрицы эквивалентно в рассматриваемом примере решению двух СЛАУ с одной и той же матрицей А, но с различными правыми частями. В общем виде для матрицы п*п требуется решить η СЛАУ вида Ах; =δ; , j = \,2,...,n, (2.73) xll x12 х21 х22 1 О О 1 1 О О 1 (2.72)
Прямые методы решения систем линейных алгебраических уравнений 65 τ где xJ = xl5x2,,..., хи; —у'-й столбец обратной матрицы, а δ; — вектор с компонентами , fl, если г = /, δ/ = J [О, если г φ j. Систему (2.73) можно решить, например, методом LU-разложения. В процессе прямого хода получаются и запоминаются матрицы L и U . В процессе обратного хода решаются системы Ly; = δ', yJ = yl},y2],...,yn] T, (2.74) Ux(j) = yU). (2.75) При решении систем (2.74) и (2.75) можно существенно сократить число действий, если учитывать вид векторов δ J и у J . Так, очевидно, для (2.74) ytJ = О, если г < j, yjj=T> и 1 ί,-1 , '=7 + 1 7 + 2,. Σ ky/cj v.k=j j Аналогичные формулы можно получить и для (2.75). Элементы обратной матрицы можно вычислить, используя преобразования Гаусса — Жордана [27]. Для этого исходная матрица дополняется единичной матрицей и расширенная таким образом матрица преобразуется по методу Гаусса—Жордана. В результате исходная матрица преобразуется в единичную, а дополняющая единичная — в обратную. 2.9. Оценка погрешностей решений, получаемых прямыми методами Оценку погрешности прямых методов решения проведем с использованием понятия обусловленности СЛАУ. Используем оценки, приведенные в [18]. Простейший вариант метода Гаусса — схема единственного деления — не гарантирует вычислительную устойчивость из-за возможности неограниченного роста элементов матрицы в процессе преобразования. От этого недостатка свободен метод Гаусса с выбором главного элемента по столбцу, для которого справедлива оценка относительной погрешности решения δ χ </ л cond Α ·ε, (2.76) где f η =С η φ η , С η — медленно растущая функция (степенная с небольшим показателем), зависящая от порядка системы η; φ η < 2п~ , ε — машинный эпсилон.
66 Глава 2 Из (2.76) видно, что при φ η = 2" и большом η задача может оказаться плохо обусловленной. Практически существенный рост элементов матрицы происходит очень редко. Значение коэффициента роста в большинстве случаев не превышает 8—10, и если СЛАУ хорошо обусловлена, то погрешность оказывается малой. Оценка (2.76) имеет скорее методическое, чем практическое значение. Если оценка обусловленности возможна (см. разд. 1.3.2), то оценка / η крайне затруднена. Метод Гаусса с выбором главного элемента по всей матрице дает существенное замедление роста элементов матрицы. Известна [18] оценка φ η <\.%η ' п", что значительно меньше φ η = 2"~ . Для многих задач φ η <η . Методы, использующие ортогональные преобразования (методы вращений и отражений), обладают очень хорошей численной устойчивостью. Например, для QR- разложения оценка (2.76) справедлива с коэффициентом f η =6η . Это свойство можно проиллюстрировать следующим образом. Известно [4], что число обусловленности ортогональной матрицы при использовании спектральной нормы равно единице. Поэтому спектральное число обусловленности матрицы не меняется при ее умножении на ортогональную матрицу. 2.10. Решение систем с прямоугольными матрицами 2.10.1. Постановка задачи наименьших квадратов. Нормальные уравнения Пусть в результате эксперимента построена таблица х,, J, приближенных значений функции у. Из некоторых соображений, например из физического смысла функции или внешнего вида экспериментальной зависимости, выбран вид функции у = ψ χ . Функция ψ χ содержит ряд числовых параметров. Требуется так выбрать эти параметры, чтобы функция у = \\ι χ в некотором смысле наилучшим образом отображала экспериментальную зависимость. Часто для аппроксимации результатов эксперимента используется линейная модель у = Фт χ =σιΦι χ +α2φ2 χ +... + amqm x , (2.77) где ψι χ ,...,9m x — заданные базисные функции, аъ...,ат — искомые параметры (модель является линейной, так как искомые параметры входят в нее линейно). Наиболее простой линейной моделью (2.77) является полиномиальная модель Фт χ =а1+а2х + ... + атхт~ .
Прямые методы решения систем линейных алгебраических уравнений 67 Φι х\ Φΐ х2 Φΐ хп φ2 χχ φ2 χ2 Φ2 Χη ·· <?m Xl ·· Φ™ χ2 ·· Φ», *Β _ , а = «1 α2 _i7m_ , У = У\ Уг Уп. Если потребовать, чтобы Фт х; =J,, /' = 1,2,...,и, то искомые параметры αχ,α2,..., ctm могут быть найдены из решения системы линейных уравнений Ра = у, (2.78) где (2.79) Как правило, система (2.78)—(2.79) строится для полиномиальной модели. Так как обычно η > т (число значений данных больше степени полинома), то система (2.78)—(2.79) является переопределенной: число уравнений превосходит число переменных. Найти вектор а, точно удовлетворяющий системе, вообще говоря, невозможно. Более того, это нецелесообразно, так как тогда полином будет повторять ошибки эксперимента. Необходимо сгладить экспериментальные зависимости. Сглаживающий полином должен быть выбран таким образом, чтобы минимизировать некоторую меру расхождения между полиномом и экспериментальными данными. Обычно используют критерий наименьших квадратов [28], минимизирующий евклидову норму вектора невязки г с компонентами η = Фт xj — yj . τ В методе наименьших квадратов необходимо найти вектор я рый при фиксировг значение функции рый при фиксированном наборе функций срь ср2,..., φ]η обеспечивает минимальное У Φ ί=1 ■yt (2.80) Так как минимизируется сумма квадратов, то метод назван методом наименьших квадатов. Мы рассматриваем линейный метод наименьших квадратов. Простейший метод решения задачи наименьших квадратов основан на решении нормальной системы уравнений. Используя (2.79), запишем (2.80) в виде l|2 п { т У Ι = Σ Σα,ψ j^j 'Уг Ра-у (2.81) Формирование нормальной системы уравнений основано на использовании необходимого условия экстремума функции / : ^- = 0, к = 1,2,..„т. (2.82) Вычисляя частные производные (2.82) с учетом (2.81), получаем ;=1 Σ2 Σα;Φ U=i J^J -у, да. Σ^,Φ υ=ι j^j -у, 0.
68 Глава 2 η ί т Σ Σ°/Ф./ xi -у, '■=iU=1 φ* χ, ΣΣα;Φ; χ* Φ* х* = Σφ* х* Я> к = 1,2,...,т. (2.83) i=ly=l i=l Изменяя порядок суммирования в (2.83), получаем систему линейных алгебраических уравнений — нормальную систему метода наименьших квадратов: т ( η \ η Σ ΣΦ; х, Фа х, aj=Ty,(?k x, , k = \,...,m. (2.84) /=iV/=i J ;=1 В матричной форме система (2.84) имеет вид РтРа = Рту. (2.85) Матрица Ρ Ρ системы (2.85) является квадратной матрицей размера тхт, симметричной и положительно определенной (если матрица Ρ невырожденная). Поэтому система (2.85) может быть решена известными методами. Однако нормальная система может оказаться плохо обусловленной, а полученное решение настолько искаженным ошибками в исходных данных и ошибками округления, что не может быть использовано. Плохая обусловленность матрицы Ρ возникает потому, что очень часто система базисных функций φι φ2 ... φ]η оказывается близкой к линейно зависимой. В случае линейной зависимости базисных функций мат- Τ τ—г рица Ρ Ρ является вырожденной [18]. Поэтому нормальные системы применяют при т <5 [18], что позволяет, однако, решить многие практические задачи сглаживания экспериментальных зависимостей. 2.10.2. Использование QR-разложения для решения задачи наименьших квадратов QR-разложение при решении задач наименьших квадратов более трудоемко, чем другие прямые методы, но дает более точные решения. Кроме того, оно позволяет решать вырожденные системы. Рассмотрим переопределенную систему (2.78). Необходимо найти вектор а, минимизирующий евклидову норму невязки г = |у - Ра| . Пусть Q — ортогональная матрица размером и χ и . Рассмотрим преобразование QTPa = QTy. (2.86) Пусть s = QTyQTPa = QT у-Pa =QTr есть вектор невязки преобразованной системы (2.86). Так как матрица Q ортогональна, то ||s| = г . Таким образом, для заданного вектора а невязка преобразованной системы (2.86) имеет ту же норму, что и невязка исходной системы (2.78).
Прямые методы решения систем линейных алгебраических уравнений 69 Следовательно, вектор а минимизирует г тогда и только тогда, когда он минимизирует ||s||. Поэтому обе переопределенные системы имеют одно и то же решение задачи наименьших квадратов. Используем QR-разложение для системы (2.78). Предварительно рассмотрим QR- разложение для неквадратных матриц [20]. Пусть матрица А имеет размер пхт , п>т. Дополним матрицу А произвольной матрицей А до квадратной матрицы А I А размером пхп . Применим к матрице А QR-разложение: A = QR. где Q — ортогональная матрица, R — верхняя треугольная матрица. Представим R R ! Τ , где R — матрица размером пхт . Тогда А ! А R ! Τ откуда А = QR . Так как R — верхняя треугольная матрица, то R: где R верхняя треугольная матрица тхт. То есть мы получили QR-разложение прямоугольной матрицы. Подбирать конкретную матрицу А нет нужды. Производится QR-разложение матрицы А, и процесс останавливается после т шагов, когда будут преобразованы все столбцы исходной матрицы. Тогда систему (2.78) можно привести к виду QTPa = QTy, или где с : QTQRa = QTy Ra (2.87) QTy вектор размером т χ 1. Если матрица Ρ имеет полный ранг, то задача наименьших квадратов для переопределенной системы (2.78) имеет единственное решение, которое можно найти, решая невырожденную систему Ra = c. (2.88) Напомним, что ранг матрицы равен числу линейно независимых столбцов, или, что то же самое, числу линейно независимых строк. Другими словами, ранг матрицы равен наибольшему из порядков миноров матрицы, отличных от нуля. Будем обозначать ранг матрицы rank А (часто применяется обозначение rang А, пришедшее из немецкого языка). У матрицы полного ранга, у которой число столбцов не меньше числа строк, все строки линейно независимы; если же число строк не меньше числа столбцов, то линейно независимы столбцы. Известно [20], что если матрица Ρ имеет полный ранг, то матрица R невырождена. Если матрица Ρ имеет полный ранг, то решение задачи наименьших квадратов для переопределенной системы (2.78) можно найти, решая невырожденную систему (2.88).
70 Глава 2 Для доказательства рассмотрим невязку системы (2.87) без учета погрешности вычислений: с d - R 0 а = с Ra d Тогда ί=1 ~ II2 и ιι2 ■Ra + d . (2.89) Выражение (2.89) достигает минимума, когда c-Ra = 0, то есть на решении системы (2.88). Если матрица Ρ не имеет полного ранга, то матрица R оказывается вырожденной: по крайней мере один из ее диагональных элементов равен нулю. В этом случае можно использовать QR-разложение с выбором ведущего столбца [20, 23]. Ведущие столбцы выбираются таким образом, чтобы диагональные элементы матрицы R были максимальными по абсолютной величине. На первом шаге вычисляется евклидова норма каждого столбца матрицы. Первый столбец и столбец с максимальной нормой меняются местами. Далее первый шаг выполняется по выбранному алгоритму QR-разложения (обычно используют метод отражения). На втором шаге вычеркиваются (исключаются из рассмотрения) первый столбец и первая строка матрицы, полученной на первом шаге. В оставшейся матрице выбирается столбец с максимальной нормой. Второй столбец и столбец с максимальной нормой меняются местами. Столбцы переставляются целиком, а не только их часть, принадлежащая непреобразованной подматрице. Поэтому результат перестановки будет таким же, как и при перестановке столбцов до QR-разложения. Преобразования второго шага идут так же, как и в алгоритме без перестановки столбцов. На третьем шаге рассматривается подматрица, образованная вычеркиванием двух первых строк и столбцов (столбцы переставляются целиком). Такой процесс продолжается т шагов, до тех пор, пока все элементы оставшейся подматрицы станут равными нулю. Ранг матрицы может быть заранее неизвестен. В результате нулевые диагональные элементы матрицы R окажутся в правом нижнем углу матрицы R. Естественно, необходимо также строить матрицу перестановки столбцов Рс. Тогда матрица R примет вид R R и О R 12 О где Rj γ — невырожденная верхняя треугольная матрица гхг, г Запишем полученную задачу наименьших квадратов в виде Ru | R12 о I о ранг матрицы Ρ (2.90)
Прямые методы решения систем линейных алгебраических уравнений 71 где векторы aj и q имеют размер г . Система (2.90) имеет бесконечное множество решений. Вектору а2 можно присвоить произвольное значение. Тогда вектор Άγ однозначно определяется из решения системы Rllal =cl ~1*12а2 · Таким образом, задача наименьших квадратов для переопределенной системы всегда имеет решение. Если rank Ρ <т, то задача имеет бесконечное множество решений. Обычно полагают а2 = 0. После вычисления aj необходимо использовать матрицу перестановок столбцов по формуле (2.11). Однако в эти теоретические рассуждения при практической реализации вклинивается сложность, которая заключается в том, что из-за погрешностей вычислений диагональные элементы матрицы R, теоретически равные нулю, получают малые ненулевые значения. Это приводит к большим погрешностям, от которых можно избавиться, используя сингулярное разложение. 2.10.3. Использование сингулярного разложения Для любой вещественной матрицы А размера пхт произведения А А и АА являются квадратными матрицами размеров тхт и пхп . Собственные числа матриц А А и АА вещественны и неотрицательны (некоторые из них могут быть нулевыми). Известно [4], что ненулевые собственные числа матриц А А и АА совпадают. Сингулярными числами [4] (от лат. Singularis — отдельный, особый) вещественной матрицы размера пхт А называются арифметические значения квадратных корней из общих собственных чисел матриц Ат А и ААТ. Если η > т, то на практике сингулярные числа матрицы А удобно определять, используя собственные числа матрицы А А, а если η < т , то матрицы АА . Так как мы рассматриваем, прежде всего, переопределенные матрицы, то будем определять сингулярные числа по матрице А А. Если матрица А является квадратной и симметричной, то А А = АА и модули собственных чисел равны сингулярным числам. Для положительно определенных матриц собственные и сингулярные числа совпадают. То есть понятие сингулярного числа является обобщением понятия собственного числа матрицы. Будем обозначать сингулярные числа буквой σ и нумеровать в порядке убывания: aj > σ2 >... > σ^ . Количество ненулевых сингулярных чисел матрицы А совпадает с ее рангом (ранги матриц А, АТА и ААТ равны) [29]. Произвольная матрица А размера пхт может быть представлена в виде сингулярного разложения или SVD-разложения (от англ. Singular Value Decomposition) [20, 29, 30]: A = ULVT, (2.91)
72 Глава 2 где Σ — матрица размера η χ т , у которой на диагонали стоят сингулярные числа aj > σ2 Ξ>... > ok , к = rank A , а все остальные элементы — нули; U и V — ортогональные матрицы размеров пхп и тхт соответственно. Столбцы iii,u2, ···, ии матрицы U называются левыми сингулярными векторами матрицы А. Столбцы vj, v2,..., vm матрицы V называются правыми сингулярными векторами матрицы А . Сингулярные векторы являются ортонормированными [20, 29], то есть имеют единичную евклидову норму и попарно ортогональны [4]. Поясним структуру матрицы Σ . Если η >т , матрица имеет блочную структуру *"*т О где Tim — квадратная диагональная матрица размера тхт с элементами aj > σ2 >... > ат. Если η < т, то Σ = Σ„ j 0 , где Σ„ — квадратная диагональная матрица пхп с элементами о^ >σ2 >...>аи . Заметим, что если матрица имеет неполный ранг, то последовательность σ дополнена нулями. Получение сингулярного разложения мы рассмотрим после изучения способов вычисления собственных значений матриц. А сейчас предположим, что сингулярное разложение известно, и рассмотрим некоторые применения SVD [13, 14, 20]. Как уже отмечалось, ранг матрицы совпадает с числом ее ненулевых сингулярных чисел. Если А — квадратная матрица пхп , то detА = σ^2...ση, так как определитель произведения матриц равен произведению определителей, определитель ортогональной матрицы по модулю равен единице, а определитель диагональной матрицы равен произведению диагональных элементов. Если гапкА<и, то det А = 0, так как на диагонали матрицы Σ будут нулевые элементы. Число обусловленности прямоугольной матрицы А может быть определено отношением наибольшего aj и наименьшего σ^ ненулевых сингулярных чисел: cond A = aj l<5k . Таким образом, понятие числа обусловленности обобщается на прямоугольные матрицы. Рассмотрим использование SVD-разложения для решения переопределенной задачи наименьших квадратов (2.78) в общем случае, когда rank Ρ = r <m. Пусть имеется разложение вида (2.91): Ρ = ΙΙΣντ. (2.92) При сделанных допущениях матрица Σ имеет вид Σ ! О О I О где Σ = diag ολ σ2 ... σΓ
Прямые методы решения систем линейных алгебраических уравнений 73 Так как умножение на ортогональную матрицу не изменяет евклидову норму вектора, то с учетом сингулярного разложения (2.92) можно записать евклидову норму невязки как Ра UTy- ■ ULVTa UV Обозначим с = = UTy и ζ = V а . Тогда Ра Σζ -Σ с, ί=1 ■Σ VTa m i=r+\ (2.93) В (2.93) учтено, что ненулевая подматрица Σ матрицы Σ имеет размер гхг, а векторы сиг имеют размер mxl. Выражение (2.93) принимает минимальное значение при С- = -Ч / = 1,2, (2.94) σ, При этом компоненты решения zu i = r + \,...,m могут принимать произвольные значения. Выбор zf = 0, i = r + \,...,т дает решение а с минимальной нормой, называемое псевдорешением. Действительно, решение системы (2.78) равно а = Vz, матрица V ортогональна, поэтому |а| = |z|. Таким образом, задача минимальных квадратов имеет единственное псевдорешение. Как видно из (2.94), наличие малых сингулярных чисел приводит к большим погрешностям Zj. На практике все сингулярные числа, меньшие некоторой малой величины, заменяются нулями, а соответствующие значения ζ, полагаются равными нулю. Такой прием называется TSVD— Truncated Singular Value Decomposition [30, 31]. В простейшем случае сингулярные числа, меньшие абсолютной величины погрешности задания элементов матрицы, считаются равными нулю. Поэтому SVD-разложение всегда позволяет оценить численный ранг матрицы в неполно- ранговых задачах наименьших квадратов. Например, в MATLAB функция rank вычисляет ранг матрицы как количество сингулярных значений, превышающих машинную точность, умноженную на максимальную размерность матрицы. Введя блочное представление векторов с d , ζ = ζ w где сиг — векторы размером mxl,ас иг — векторы размером г χ 1, запишем алгоритм решения неполноранговой задачи наименьших квадратов с использованием SVD-разложения [20]: 1. Вычисляем :UTy 2. Находим ζ = Σ с
74 Глава 2 3. Полагаем w = 0, размерностью т-r χ 1. ι 4. Полагаем ζ = —- w 5. Вычисляем а = Vz . Сингулярное разложение значительно сложнее QR-разложения, но позволяет достаточно надежно определять численный ранг в неполноранговых задачах наименьших квадратов. Понятие SVD-разложения позволило ввести обобщение обратной матрицы — псевдообратную матрицу Мура—Пенроуза (Moor—Penrose Pseudoinverse) [20, 24, 29]. Для прямоугольной матрицы А, возможно, неполного ранга, псевдообратная матрица имеет вид A+=VZ+UT, где Σ Σ"1 ! О О | О Зачастую, например в [20], используют следующее обозначение псевдообратной матрицы: А'. С помощью псевдообратной матрицы решение произвольной СЛАУ Ах = b запишется в виде χ = Α^ = νΣ+υτΙ). (2.95) Выражение (2.95) приводит к тому же результату, что и описанный алгоритм решения неполноранговой задачи наименьших квадратов с использованием SVD-разложения. То есть А+ играет роль обратной матрицы. С помощью псевдообратной матрицы можно переопределить число обусловленности прямоугольной матрицы А [4]: cond A =11 All А' Псевдообратная матрица — это инструмент теоретического исследования. Так же как и в случае обратной матрицы, решение в виде (2.95) практически не применяется. 2.11. Реализация прямых методов в MATLAB 2.11.1. Некоторые функции матричных вычислений и реализации прямых методов в MATLAB Сначала перечислим некоторые функции MATLAB, реализующие операции линейной алгебры. Основные матричные операции записываются в форме, практически совпадающей с математической записью операций. Естественно, при этом выполняются все правила операций. Например, сложение и вычитание матриц а+в, а-в, умножение матриц а*в, умножение матрицы на скаляр а*А, транспонирование матрицы А'. Возведение квадратной матрицы в степень аап (или npower(A,n))
Прямые методы решения систем линейных алгебраических уравнений 75 вычисляется как произведение η матриц, если η целое положительное число, и как произведение η обратных матриц, если η целое отрицательное число (формально с использованием собственных чисел и векторов определено и возведение в матричную степень). MATLAB поддерживает также покомпонентные операции над массивами одинаковых размеров: умножение а.*в, деление а. /в и возведение в степень а. лп (или power (Α,η)). Покомпонентные операции отличаются наличием точки в записи операции и выполняются над соответствующими элементами массивов, а не по правилам матричных вычислений. Функция det (А) вычисляет определитель квадратной матрицы. Определитель вычисляется с использованием LU-разложения. Функция rank (А) вычисляет ранг матрицы. Функция norm(A,p) с различными значениями параметра ρ вычисляет нормы векторов и матриц. Значение параметра ρ соответствует номеру нормы из разд. 2.1, при этом знак оо обозначается как inf. Например, функция norm(F,inf) вычисляет кубическую норму вектора F. Вызов norm (А) означает вычисление второй нормы. Скалярное произведение векторов (столбцов или строк) одинаковой и длины х,у =х у = 'Y_lxiyi вычисляется функцией dot(x,y). Для векторов в трех- ί=1 мерном пространстве определена функция векторного произведения cross (а,Ь). Функция inv(A) вычисляет обратную матрицу. Функция cond(A,p) находит число обусловленности матрицы а с использованием нормы р. Функция condest (А) вычисляет нижнюю оценку числа обусловленности матрицы а для первой нормы. Для определения собственных векторов и чисел служит функция [R,D]=eig(A), где R — матрица собственных векторов, d — диагональная матрица собственных чисел. Функция eig(A) возвращает вектор собственных чисел матрицы. Рассмотрим основные возможности системы MATLAB по прямым методам решения линейных уравнений и разложению матриц. Более подробную информацию можно получить в справочной системе и в книгах, например в [32, 33]. Операция \, или функция mldivide предназначена для решения СЛАУ. Решение СЛАУ Ах = b производится командой х=а\ъ или вызовом функции x=mldivide (а,Ь) , где а — двумерный массив, хранящий матрицу А, ь и χ — одномерные массивы, хранящие вектор правой части b и вектор решения χ. Операция \ реализуется следующим образом [32]. Если матрица А диагональная, то решение получается делением компонентов вектора b на диагональные элементы матрицы. Если матрица квадратная и ленточная, то применяется специальный алгоритм на основе метода Гаусса. Если матрица А является треугольной или может быть приведена к треугольной матрице перестановкой строк и столбцов, то система решается методом подстановки. Если матрица не является треугольной, но является симметрич- 1 Векторное произведение двух векторов в трехмерном евклидовом пространстве — это третий вектор, перпендикулярный плоскости, которая содержит исходные векторы, длина которого равна произведению длин векторов на синус угла между ними. Если два вектора а и b определены своими декартовыми координатами а = а аг аз и b = Ъ Ъг Ьз , то их векторное произведение равно axb = a b — аЪ ,аЪ —аЪ,ab —аЪ 2 3 32'31 13'12 21
76 Глава 2 ной и имеет положительные диагональные элементы, то MATLAB пытается применить разложение Холецкого и решить две системы с треугольными матрицами. Если матрица хессенбергова, но не разреженная, то применяется сведение к системе с треугольной матрицей. Если матрица квадратная, но перечисленные выше методы применить не удалось, то используется метод LU-разложения. Разреженные матрицы предварительно преобразуются с целью уменьшения заполнения матриц L и U . Если А — прямоугольная матрица, то используется QR-разложение, учитывающее возможный разреженный характер матрицы. Таким образом, операция \ или функция mldivide представляют достаточно сложный решатель (solver). Операция \ не позволяет пользователю управлять процессом решения. Кроме того, на многочисленные проверки при решении больших систем тратится достаточно много времени. Функция linsolve решает СЛАУ и позволяет пользователю выбрать метод решения, описав свойства матрицы. В простейшем случае обращение к функции имеет вид x=linsolve(A,b). При таком вызове в случае квадратной матрицы используется LU-разложение, а в случае прямоугольной матрицы — QR-разложение. Для задания свойств матрицы используется управляющая структура, которую обозначим opts (можно использовать любое допустимое имя): x=linsolve(A,b,opts). Структура может иметь поля, описывающие свойства матрицы: lt — нижняя треугольная матрица, ит — верхняя треугольная, uhess — хессенбергова, sym — симметричная, posdef — положительно определенная, rect — прямоугольная, transa — функции передается транспонированная матрица. Поля могут принимать значения true (истина) или false (ложь). Можно задавать не все поля. Допустимые сочетания значений полей управляющей структуры можно найти в справочной системе MATLAB. Функция не проверяет указанные свойства матрицы, что ускоряет решение, но может привести к ошибкам при неправильном указании ее свойств. Если матрица плохо обусловлена или имеет неполный ранг, то выводится предупреждение. Если в вызове функции задать второй выходной параметр, например [x,r]=linsolve(A,b,opts), то это сообщение не выводится, а второй выходной параметр для прямоугольной матрицы равен рангу, а для квадратной матрицы — величине, обратной оценке числа обусловленности матрицы. Выдаваемая оценка числа обусловленности может не совпадать с результатом функции cond. Рассмотрим пример. Систему Χι ~г Хо ~Г Xq — 1; Χι ~г .ΖΧο ~г Ζ,Χη = ,Ζ; х1 + 2х2 + Зх, = 3 можно решить с помощью следующей последовательности команд: » А=[1 1 1; 12 2; 12 3]; » Ь=[1; 2; 3]; » х=А\Ь X = О о 1
Прямые методы решения систем линейных алгебраических уравнений 77 Используем функцию linsolve и учтем симметрию матрицы: » opts.SYM=true; » [x,r]=linsolve(A,b,opts) 0.0417 В данном случае значение оценки числа обусловленности совпадает с результатом применения функции cond(A,l): » l/r ans = 24 » cond(A,l) ans = 24 Функция оценки числа обусловленности condes t (А) дает такой же результат: » condest(A) ans = 24 Функция condest вычисляет оценку нижней границы числа обусловленности по первой норме. В MATLAB существует операция /, или функция mrdivide(b,A). Запись у=ь/А означает решение СЛАУ вида уА = b , где b — вектор-строка, у — вектор-строка. Естественно, что при одинаковых компонентах вектора b решения этой системы и СЛАУ Ах = b не совпадают. Для решения систем линейных алгебраических уравнений можно использовать функцию rref — приееденно-ступенчатая форма матрицы (reduced row echelon form). Ступенчатая матрица — матрица, имеющая т строк и η столбцов, у которой первые г диагональных элементов ненулевые, r<min m,n , а элементы, лежащие ниже диагонали, и элементы последних т — г строк равны нулю: Ί\η Ί2η Ί3η «11 0 0 0 0 «12 «22 0 0 0 «13 «23 «33 0 0 0 «lr «2г «Зг arr 0 0 0 0 0 0 0 о о
78 Глава 2 Функция R=rref (А) приводит матрицу а к ступенчатой форме с использованием исключения Гаусса—Жордана с выбором ведущего элемента по столбцу. По умолчанию используется следующее значение порога для принятия решения о малости исключаемого элемента: tol = max(size(A) *eps*norm(A,inf)), где eps=2.2204e-016 — минимальное положительное число с плавающей точкой. Функция R=rref (A, tol) использует заданное значение порога. Например: » А=[1 -2 1; 2 -5 -1; -7 0 1]; » R=rref (А) R = 10 0 0 10 0 0 1 Чтобы решить систему линейных алгебраических уравнений с квадратной неособенной матрицей А и вектором правой части b , необходимо сформировать расширенную матрицу, объединив А и b , и используя функцию rref, привести расширенную матрицу к ступенчатому виду. Последний столбец полученной матрицы представляет решение системы. Например: » А=[1 -2 1; 2 -5 -1; -7 0 1]; » Ь=[2; -1; -2]; » R=rref([А Ь]) R = 1.0000 0 0 0.5200 0 1.0000 0 0.0800 0 0 1.0000 1.6400 Для проверки найдем невязку полученного решения: » r=b-A*R(: ,4) г = 1.0е-015 * 0 -0.1110 0 Невязка мала, значит, получено решение. В общем случае вызов функции имеет вид [r, jb] = rref (A, tol), где кроме ступенчатой матрицы r возвращается вектор jb, обладающий следующими свойствами: □ г = length (jb) может служить оценкой ранга матрицы а; □ при решении систем линейных уравнений Ах = ь переменные x(jb) являются связанными переменными; □ столбцы а (:, jb) определяют базис матрицы а; □ матрица R(l : r, jb) —единичная.
Прямые методы решения систем линейных алгебраических уравнений 79 Например: » А=[1 11; 10-2; 21 -1]; » [R, jb]=rref (А) R = 10-2 0 13 0 0 0 jb = 1 2 Решим СЛАУ с введенной матрицей и вектором правой части » Ь=[-6; 4; 18]; » [R, jb] =rref ([А Ь]) R = 10-20 0 13 0 0 0 0 1 jb = 12 4 Данная система не имеет решения, так как последнее уравнение имеет вид Oxj + 0х2 + Ох, = 1, что невозможно ни при каких значениях χ. В данном случае вектор jb содержит номер последнего столбца (со свободными членами). Теперь рассмотрим СЛАУ, имеющую бесконечно много решений: » А=[1 1 1 ;1 0 -2 ;2 1 -1 ]; » Ь=[6;4;10]; » [R, jb] =rref ([А Ь]) R = 10-24 0 13 2 0 0 0 0 jb = 1 2 Система имеет бесконечно много решений, так как последнее уравнение имеет вид Oxj + Oxj + Ox, = 0 и выполнено при всех χ. В данном случае длина вектора jb меньше размера матрицы. LU-разложение основано на треугольном разложении матриц A = LU, где L — нижняя треугольная матрица, U — верхняя треугольная матрица.
80 Глава 2 Если решается система Ах = Ь, (2.96) то, подставляя (2.24) в (2.96), получаем Ux = y, Ly = b Таким образом, вместо решения СЛАУ (2.96) необходимо последовательно решить систему (2.26) с нижней треугольной матрицей и систему (2.25) с верхней треугольной матрицей. LU-разложение реализуется функцией lu, вызываемой следующим образом: [l,u,p]=1u(А), где l и и — нижняя и верхняя треугольные матрицы, Ρ — матрица перестановок строк. Матрица перестановок учитывает возможные перестановки строк матрицы А в ходе треугольного разложения (2.24). Матрица перестановок получается из единичной матрицы перестановкой соответствующих строк. Перестановка строк эквивалентна умножению системы (2.96) слева на матрицу перестановок Ρ РАх = РЬ В результате разложения получаем PA = LU, (2.97) а вместо систем (2.26) и (2.25) надо решать системы Ly = Pb. (2.98) Ux = y. Внимание! В системе MATLAB используются иные алгоритмы реализации Ш-разложения, QR-разложения и разложения Холецкого, чем простейшие алгоритмы, приведенные в данном пособии. Поэтому результаты, полученные применением функций MATLAB и программированием ранее описанных методов, в общем случае могут не совпадать. Рассмотрим пример: » А=[1 4 1 3; 0 -1 3 -1; 3 10 2; 1-251] А = 1 4 0 -1 3 1 1 -2 » Ь=[1;2;3;4] 1 2 3 4 1 3 0 5 3 -1 2 1
Прямые методы решения систем линейных алгебраических уравнений 81 » L = и = Ρ = [L,U,P]= 1.0000 0.3333 0.3333 0 3.0000 0 0 0 0 1 0 0 =lu(A) 0 0 0 1 0 1.0000 -0.6364 -0.2727 1.0000 3.6667 0 0 1 0 0 0 1. 0. 1. 5. 0 0 1 0 0 0 .0000 .5806 0 .0000 .6364 0 1. 2. 2. 1. -1. 0 0 0 .0000 .0000 .3333 .8182 .4194 Для проверки правильности разложения найдем матрицу LU : » ai=l*u ΑΙ = 3.0000 1.0000 1.0000 0 1. 4. -2. -1. Найдем матрицу » А2=Р*А ДО — ΆΖ. — 3 1 1 4 1 -2 0 -1 0000 0000 0000 0000 РА: 0 1 5 3 1, 5, 3, 2 3 1 -1 0 .0000 .0000 .0000 2. 3. 1. -1. .0000 .0000 .0000 .0000 Таким образом, выполняется равенство (2.97). Так как матрица перестановок является ортогональной, то есть Ρ = Рт, то А = PTLU : » аз=р■*l*u A3 1. 3. 1. .0000 0 .0000 .0000 4. -1. 1. -2. .0000 .0000 .0000 .0000 1. 3. 5. .0000 .0000 0 .0000 3. -1. 2. 1. .0000 .0000 .0000 .0000 Значит, разложение произведено правильно.
82 Глава 2 Для решения системы преобразуем вектор правой части: » ы=р*ь ы = 3 1 4 2 Используя операцию \, последовательно решаем две системы с полученными ранее треугольными матрицами: » y=L\bl У = 3.0000 о 3.0000 0.2581 » x=U\y X = 1.1364 -0.0455 0.5909 -0.1818 Для проверки решим систему с помощью операции \ и вычислим невязку решения: » х1=А\Ь xl = 1.1364 -0.0455 0.5909 -0.1818 » R=b-A*x R = 1.0е-015 * 0.1110 -0.4441 0 0.4441 Решения совпали (по крайней мере, в пределах точности короткого формата), а невязка получилась очень малой. Существует формат вызова функции [l,u,p,q]=1u(a), применимый только для разреженных матриц, хранящихся в формате sparse array (см. разд. 2.11.2).
Прямые методы решения систем линейных алгебраических уравнений 83 При использовании такой функции дополнительно возвращается матрица Q перестановки столбцов. В этом случае PAQx = Pb, Ρ AQ = LU На практике удобно пользоваться вызовом функции lu в формате [l,u]=1u(a). При этом функция производит необходимые перестановки строк, возвращаемая матрица l является произведением нижней треугольной матрицы метода LU- разложения на транспонированную матрицу перестановок, что следует из (2.98). Поэтому матрица l не является треугольной, но приводится к нижней треугольной перестановкой строк. Рассмотрим пример: » [L,U]=lu(A) L = 0.3333 0 1.0000 0.3333 тт — и — 3.0000 0 0 0 » L*U ans = 1.0000 0 3.0000 1.0000 1.0000 -0.2727 0 -0.6364 1.0000 3.6667 0 0 4.0000 -1.0000 1.0000 -2.0000 0, 1. 1. 5, 1. 3, 5, 0 .5806 0 .0000 0 .0000 .6364 0 .0000 .0000 0 .0000 1. 2. 2. 1. -1. 3. -1. 2. 1. 0 .0000 0 0 .0000 .3333 .8182 .4194 .0000 .0000 .0000 .0000 Функция chol осуществляет разложение Холецкого для положительно определенной матрицы А : А = R R, где R — верхняя треугольная матрица. MATLAB поддерживает несколько форм обращения к функции chol. Простейший вариант имеет вид R=chol (A). Если матрица А не является положительно определенной, то выдается сообщение об ошибке. В форме [R,p]=choi(A) возвращается р=о в случае положительно определенной матрицы и р>0 в противном случае, причем сообщение об ошибке не выдается. QR-разложение реализует разложение А = QR , где Q — ортогональная матрица, R — верхняя треугольная матрица. В простейшем виде обращение к функции QR- разложения имеет вид [Q,R]=qr(A). С учетом ортогональности матрицы Q решение системы имеет вид x=r\ (с *Ь). QR-разложение применимо к прямоугольным матрицам порядка лхт . Пусть матрица А имеет полный ранг. В этом случае матрица Q имеет размер η χ η, а матри-
84 Глава 2 ца R имеет размер пхт . Часто решаются переопределенные системы, когда у прямоугольной матрицы системы число строк η больше числа столбцов т . В этом случае лучше использовать экономную модификацию вызова функции qr: [Q,R]=qr (Α,Ο). Тогда вычисляются только первые т столбцов матрицы Q. Матрица Q имеет размер ихи,а матрица R — тхт. Если матрица А не имеет полного ранга, то матрица R оказывается вырожденной: по крайней мере один из ее диагональных элементов равен нулю. В этом случае применяется QR-разложение с выбором ведущего столбца, реализуемое в форме [Q,R,p]=qr(A). Такая форма вызова возвращает матрицу Q, верхнюю треугольную матрицу R с убывающими по модулю диагональными элементами и матрицу ρ перестановок столбцов. Тогда разложение имеет вид AP = QR и решается система QRxj = b. Вектор х1 находится из решения системы Rjq = Q b . Переход к решению χ исходной системы производится по формуле χ = Pxj. В самом деле, преобразованная система имеет вид APxj = b, xj = Р~ A" b = Р~ χ, откуда χ = Pxj. Для матриц неполного ранга применима также экономная форма [Q,R,p]=qr (Α,Ο), которая возвращает вектор-строку р, описывающую перестановку столбцов матрицы. Тогда разложение имеет вид а(: ,p)=q*r, где запись а(: ,р) означает перестановку столбцов матрицы а в порядке, указанном вектором р. Чтобы в этом случае перейти к решению исходной системы, необходимо сформировать матрицу перестановок столбцов Р1, переставив столбцы единичной матрицы ε в соответствии с вектором р, что можно сделать, подав команду ρι=ε (:, р) . Тогда xl=R\ (Q' *Ь), x=Pl*xl. QR-разложение применимо и к матрицам, представленным в разреженном формате, но в этом случае не используется перестановка столбцов. MATLAB поддерживает множество других разложений (см., например, [33]). Сингулярное разложение произвольной матрицы А порядка пхт — это разложение вида А = USV , где U — ортогональная матрица порядка η χ η ; S — диагональная матрица порядка пхт , на диагонали которой расположены сингулярные числа матрицы А (это собственные числа матрицы А А); V — ортогональная матрица порядка тхт. Сингулярное разложение позволяет находить псевдорешение несовместной системы уравнений. Псевдорешение — это вектор, который при подстановке в систему дает минимальный по евклидовой норме вектор невязки. Использование сингулярного разложения обладает большей, чем другие методы, устойчивостью к погрешностям округления и погрешностям задания коэффициентов и правой части системы. Сингулярное разложение реализуется функцией [u,s,v] = svd(A). На сингулярном разложении основано вычисление псевдообратной матрицы Мура—Пенроуза, реализуемое функцией в = pinv (A). Тогда псевдорешение несовместной системы имеет вид х=в*ь.
Прямые методы решения систем линейных алгебраических уравнений 85 Рассмотрим решение с использованием сингулярного разложения переопределенной системы 1 3 5 7 Находим сингулярное разложение » [U,S,V]=svd(A) и = -0.15248323331020 -0.82264747222566 -0.34991837180796 -0.42137528768458 -0.54735351030573 -0.02010310314350 -0.74478864880349 0.38116908139757 S = 14.269095499261486 2 4 6 8 х = 1 2 3 4 -0.39450102228383 0.24279654570436 0.69790997544278 -0.54620549886330 0 0 0.626828232417542 0 0 Л Г — 0 0 V — -0.641423027995072 0.767187395072177 -0.767187395072177 -0.641423027995072 -0.37995913387759 0.80065587951006 -0.46143435738734 0.04073761175487 Анализируя матрицу S , видим, что ранг матрицы системы равен г = 2 и равен числу столбцов матрицы т = 2 . То есть необходимо решить полноранговую переопределенную систему. Используем алгоритм решения неполноранговой системы, приняв г = т. Выделяем диагональную матрицу, соответствующую Σ : » S1=S(1:2,1:2) SI = 14.269095499261486 0 0 0.626828232417542 Τ Вычисляем вектор с = U b : » с=и'*ь с = -5.473535103057271 -0.201031031435029 0.000000000000000 0 Выделяем подвектор с размером 2x1: » cl=c(l:2) cl = -5.473535103057271 -0.201031031435029
86 Глава 2 Находим ζ = Σ с : » zl=si\cl zl = -0.383593697536088 -0.320711513997535 Вектор ζ имеет размер, равный числу столбцов, поэтому он не требует дополнения. Вычисляем решение χ = Vz : » x=V*zl χ = 0.000000000000001 0.499999999999999 Для проверки рассчитаем кубическую норму вектора невязки » по2лп_х=поллп(Ь-А*хДп£) norm_x = 8.881784197001252е-016 Норма вектора невязки достаточно мала. Для сравнения получим решение с помощью решателя СЛАУ: » х1=А\Ь xl = 0.000000000000001 0.499999999999999 Решение полностью совпало с предыдущим. Получим также решение по методу QR-разложения: » [Q,R]=qr(A) Q = -0.10910894511800 -0.82951506200625 -0.39450102228383 -0.37995913387760 -0.32732683535399 -0.43915503282684 0.24279654570436 0.80065587951006 -0.54554472558998 -0.04879500364743 0.69790997544278 -0.46143435738734 -0.76376261582597 0.34156502553199 -0.54620549886330 0.04073761175487 R = -9.165151389911680 -10.910894511799622 0 -0.975900072948535 0 0 0 0 » x=R\Q' *Ь χ = 0.000000000000000 0.500000000000000 Для данного простого примера решения с использованием сингулярного разложения и QR-разложения практически совпали. При решении сложных неполноранго-
Прямые методы решения систем линейных алгебраических уравнений 87 вых систем сингулярное разложение дает лучшие результаты за счет более точного определения вычислительного ранга. Продемонстрируем применение псевдообратной матрицы для решения рассматриваемой СЛАУ: » №=pinv(A) W = -1.00000000000000 -0.49999999999998 0.00000000000002 0.49999999999998 0.84999999999999 0.44999999999998 0.04999999999999 -0.34999999999998 » x=W*b χ = 0.000000000000000 0.500000000000000 Решение совпало с полученным ранее. 2.11.2. Хранение и обработка разреженных матриц Разреженные матрицы в MATLAB можно хранить с использованием специального типа данных sparse array. Массивы типа sparse array хранят номера строк и столбцов ненулевых элементов и сами ненулевые элементы. Нулевые элементы не хранятся. Функция sparse позволяет получить из полной матрицы ее компактное представление: » А=[4 1 0 0 1 О 14 10 0 0 0 14 0 0 0 0 0 0 4 0 1 10 0 0 4 1 0 0 0 114]; » AS=sparse(A) AS = (1,1) 4 (2,1) 1 (5.1) 1 (1.2) 1 (2,2) 4 (3.2) 1 (2.3) 1 (3.3) 4 (4.4) 4 (6.4) 1 (1.5) 1
88 Глава 2 (5,5) 4 (6.5) 1 (4.6) 1 (5,6) 1 (6,6) 4 Функция sparse возвращает индексы (строка, колонка) и значения ненулевых элементов. С помощью команды whos можно увидеть затраты памяти на хранение матрицы в двух рассмотренных форматах. В данном простейшем примере выигрыш памяти небольшой, но для реальных разреженных матриц экономия, как правило, очень велика. » whos A AS Name Size Bytes Class Attributes A 6x6 288 double AS 6x6 220 double sparse Функция [i, j,m]=find(A) возвращает три вектора: индексов (i,j) и значений ненулевых элементов. Вызов find без третьего выходного параметра (т) возвращает два вектора индексов ненулевых элементов. Вызов в форме [i]=find(A) возвращает вектор индексов ненулевых элементов, при этом матрица рассматривается как вектор-столбец, образованный объединением столбцов исходной матрицы. В качестве аргумента данной функции можно использовать условие. Тогда выводятся индексы элементов, удовлетворяющих условию, а вместо значений элементов выводятся единицы. Например, выведем индексы элементов, равных 4 (оператор [i j m] формирует матрицу из трех векторов для более компактного представления результатов): » [i, j,m]=find(A=4) ; [i j m] ans = 111 2 2 1 3 3 1 4 4 1 5 5 1 6 6 1 Функция AF=full(AS) возвращает полное представление разреженной матрицы. Функция spy (as) отображает шаблон матрицы, то есть показывает расположение ненулевых элементов матрицы (этот график называют еще спай-графиком — от англ. spy plot), или портретом матрицы. В функции можно задавать тип и размер маркеров (их можно также изменить в графическом окне). Например, вызов функции » spy (AS) выводит показанный на рис. 2.2 график. В нижней части графика выводится число ненулевых элементов матрицы, которые можно получить также функцией nnz (as) .
Прямые методы решения систем линейных алгебраических уравнений 89 1- * · 0 12 3 4 5 6 7 ГЕ = 16 Рис. 2.2. Визуализация разреженной матрицы С помощью функции sparse разреженная матрица в форме массива sparse array может быть создана И другим способом: AS=sparse(irow, jcol, nzer, m, η). Здесь irow и jcol — векторы номеров строк и столбцов, содержащих ненулевые элементы, nzer — вектор ненулевых элементов, тип — размеры полной матрицы. Номера строк, столбцов и ненулевые значения могут быть указаны в произвольном (но совпадающем для всех трех векоторов) порядке. Нулевые значения вектора nzer пропускаются при создании компактной формы хранения матрицы. Если указаны одинаковые позиции (номера столбца и строки) для нескольких ненулевых элементов, то в указанную позицию записывается их сумма. Например: » irow=[l 25123234615645 6] » jcol=[l 11222334455566 6] » nzer=[4 111411441141114] » ANN=sparse(irow, jcol, nzer, 6, 6) ; » AFF=f ull (ANN) AFF = 4 1 0 0 1 0 1 4 1 0 0 0 0 1 4 0 0 0 0 0 0 4 0 1 1 0 0 0 4 1 0 0 0 1 1 4 Для функции sparse может быть задан шестой входной аргумент элементов, выбираемых из irow , jcol и nzer. количество
90 Глава 2 Обращение к элементу разреженной матрицы происходит так же, как и к элементу плотной матрицы: в результате операции a(i, j) =с получаем а, = с . Все рассмотренные функции MATLAB являются универсальными и применимы как к заполненным, так и к разреженным матрицам, хранящимся в форме массива sparse array. Так как при хранении матриц в разреженном формате действия над нулевыми элементами не производятся, это дает значительную экономию времени. Значения математических функций от разреженных матриц также являются разреженными матрицами. Обратите внимание: если функция определена при нулевом значении аргумента (простейший пример — косинус), то результатом применения такой функции будет полностью заполненная матрица, хранящаяся в форме sparse array, что нерационально, так как хранятся не только все элементы матрицы, но и все индексы. Если необходимо применить функцию только к ненулевым элементам разреженной матрицы а, то используется функция spfun (fun, А), где fun — указатель на функцию. Например, для вычисления экспоненты от ненулевых элементов можно вызвать функцию spfun (■ ехр■ ,А) или spfun(@ехр,А). Результаты выполнения операций над матрицами, одна из которых хранится в обычном формате, а другая — в разреженном, достаточно очевидны с математической точки зрения. Например, при перемножении таких матриц результат будет представлен в обычном формате. С помощью функции issparse(A) можно проверить, хранится ли матрица в разреженном формате. Функция возвращает 1 ("истина") для разреженных матриц и 0 ("ложь") в противном случае. Функция spalloc (m, n, nzmax) возвращает пустую разреженную матрицу размера т χ η с максимальным числом ненулевых элементов nzmax, например, » Al=spalloc(6,8,10) ΑΙ = All zero sparse: 6-by-8 Пустую разреженную матрицу можно создать и другим способом: задав пустые векторы irow, jcol, nzer, например, » irow=[]; » jcol=[] ; » nzer=[]; » A2=sparse(irow, jcol, nzer, 6, 8) A2 = All zero sparse: 6-by-8 Единичную разреженную матрицу размером тхп можно создать функцией speye(m,n). Функция speye(n) создает квадратную разреженную матрицу размером η χ η . Очень многие практические задачи, например решение краевых задач для дифференциальных уравнений в частных производных методами конечных разностей и конечных элементов, приводят к ленточным матрицам, часто положительно
Прямые методы решения систем линейных алгебраических уравнений 91 определенным. Для компактного хранения ленточных матриц используется диагональное хранение матриц. Например, матрицу » А1= [410000 14 10 0 0 0 14 10 0 0 0 14 10 0 0 0 14 1 0 0 0 0 14]; можно представить в диагональной форме, занося в столбцы матрицы В1 диагонали матрицы А1, начиная с нижней диагонали: » В1= [14 0 14 1 14 1 14 1 14 1 0 4 1]; Недостающие элементы побочных диагоналей дополняются нулями внизу столбца для нижних побочных диагоналей и вверху столбца для верхних побочных диагоналей. Необходимо также создать вектор, устанавливающий соответствие между столбцами матрицы В1 и номерами диагоналей матрицы А1 (главная диагональ имеет номер 0, нижние диагонали нумеруются отрицательными числами, а верхние — положительными, абсолютное значение номера диагонали растет по мере удаления от главной диагонали): » d=[-l о lb- Для корректного построения ленточной матрицы необходимо соблюдать согласование между столбцами матрицы, хранящей диагонали, и элементами вектора соответствия. Функция spdiags преобразует диагональную форму хранения к форме sparse array: » A2=spdiags(Bl, d, 6, 6) Ά2 = (1,1) 4 (2.1) 1 (1.2) 1 (2,2) 4 (3.2) 1 (2.3) 1 (3,3) 4 (4.3) 1 (3.4) 1 (4,4) 4
92 Глава 2 (5.4) 1 (4.5) 1 (5,5) 4 (6.5) 1 (5.6) 1 (6,6) 4 Эта же функция spdiags, которой в качестве аргумента передается обычная заполненная матрица, формирует матрицу с диагональным хранением и вектор с информацией о расположении диагоналей: » [В2, d2]=spdiags(Al) В2 = 14 0 14 1 14 1 14 1 14 1 0 4 1 d2 = -1 0 1 Это сработает и для матрицы, далекой от диагональной, но имеет смысл использовать только для ленточных матриц. Мы уже знаем, что разложение Холецкого, примененное к ленточной матрице, представляет собой треугольную матрицу, ширина полуленты которой равна ширине полуленты исходной матрицы. Для больших ленточных положительно определенных матриц целесообразно переставить столбцы матрицы (а так как матрица симметричная, то и строки), чтобы ширина ленты разложения была минимальна. Эта операция называется упорядочением (переупорядочением) [17]. В MATLAB реализованы наиболее эффективные алгоритмы упорядочения. Так, функция p=symrcm(A) реализует так называемое симметричное обратное упорядочение Катхилл—МакКи (Elizabeth Cuthill-James McKee). Это упорядочение минимизирует ширину ленты исходной симметричной матрицы. Функция возвращает вектор упорядоченности р, содержащий номера столбцов (и строк) переупорядоченной матрицы. Рассмотрим пример [32]. Зададим матрицу » А=[4 1 0 0 1 О 14 10 0 0 0 14 0 0 0 0 0 0 4 0 1 10 0 0 4 1 0 0 0 114];
Прямые методы решения систем линейных алгебраических уравнений 93 Преобразуем матрицу в разреженный формат, и найдем разложение Холецкого и построим спай-график матрицы R1 (рис. 2.3): » AS=sparse (А) ; » Rl=chol (AS) ; » spy(Rl) Из рис. 2.3 видно, что матрица содержит 13 элементов и довольно широкую ленту. Применим упорядочение Катхилл—МакКи: » pl=symrcm(AS) pi = 3 2 15 6 4 Получим разложение Холецкого для упорядоченной матрицы. Для этого в качестве индексов матрицы укажем вектор перестановок pi: » R2=chol (AS (pi,pi)) ; Спай-график spy(R2) матрицы R2 (рис. 2.4) показывает, что матрица содержит 11 ненулевых элементов, а полуширина равна 2. В данном простом примере эффект от сокращения числа ненулевых элементов не столь показателен Для больших разреженных матриц эффект может быть очень большим (см. систему помощи" Matlab\Mathematics\Sparse Matrix Operations) • · · - » » » » » • * » » 3 А nz=13 3 4 nz-11 Рис. 2.3. Разложение Холецкого без упорядочения Рис. 2.4. Разложение Холецкого после упорядочения В MATLAB реализованы и другие методы упорядочения. Например, функция p=symamd (А) возвращает вектор упорядоченности ρ симметричной положительно определенной матрицы а. При этом разложение Холецкого матрицы а (р ,р) будет более разреженным, чем разложение матрицы а Такое упорядочение автоматиче-
94 Глава 2 ски применяется решателем \ для положительно определенных матриц. В более ранних версиях имелась устаревшая функция symmmd, вместо которой рекомендуется использовать symamd. Функция p=colamd(A) возвращает такой вектор упорядоченности ρ столбцов несимметричной матрицы, что LU-разложение матрицы а(: ,р) будет более разреженным, чем разложение матрицы а. Такое упорядочение автоматически применяется решателем \ для разреженных несимметричных матриц. Аналогично, имеется устаревшая функция colmmd. Надо учитывать, что алгоритмы упорядочения являются эвристическими и не дают гарантии минимального заполнения матриц. Однако для большинства реальных задач эти алгоритмы дают хорошие результаты. Рассмотрим решение СЛАУ с использованием упорядочения. Как показано в разд. 2.2, преобразование матрицы А с помощью матриц перестановки строк SROW и столбцов SCOL записывается в виде SROWASCOL . Матрицы SROW и SCOL получаются из единичной матрицы перестановкой строк и столбцов в соответствии с вектором перестановок ρ, формируемым функцией упорядочения матрицы. В случае симметричных матриц SROW = SCOL и SCOL = SROW . Вместо исходной СЛАУ Ах = b решается преобразованная система S^^ASq^Xj = S^^b . Перестановка строк матрицы требует перестановки элементов вектора правой части SROj,vb. Причем в MATLAB вектор правой части можно просто и эффективно переупорядочить с помощью вектора перестановок: ь (р). Легко показать, что решение любым способом преобразованной системы равно Xj = SqqLx , откуда получаем решение исходной системы χ = Scc,/,xi . Из этих рассуждений видно, что для преобразований необходимы вектор перестановок и матрица перестановок столбцов. Рассмотрим пример. Решим систему с матрицей предыдущего примера » А=[4 1 0 0 1 О 14 10 0 0 0 14 0 0 0 0 0 0 4 0 1 10 0 0 4 1 0 0 0 114]; и вектором правой части » Ь=[1 2 3 4 5 6]' ; Вектор перестановок pi и множитель Холецкого R2 упорядоченной матрицы уже получены в предыдущем примере. Создадим разреженную единичную матрицу и матрицу перестановок столбцов: » E=speye(6) ; » S_COJ>=E (: ,pl) ; Далее по описанному алгоритму находим решение СЛАУ: » y2=R2' \Ь (pi) ; » z2=R2\y2;
Прямые методы решения систем линейных алгебраических уравнений 95 » x2=S_COL*z2 х2 = -0.0910 0.3576 0.6606 0.7338 1.0065 1.0649 Для проверки находим решение с помощью решателя. Напомним, что решатель автоматически использует упорядочение для разреженных матриц: » x=AS\b X = -0.0910 0.3576 0.6606 0.7338 1.0065 1.0649 Возможен вариант вызова функции разложения Холецкого для разреженной матрицы [R,p,s] = с1ю1(А),гдек—множитель Холецкого преобразованной матрицы R' *r = s ■ *a*s и для квадратной матрицы р=0 (мы не рассматриваем возможный вариант неквадратной матрицы): » [R3 ,р, S ] =chol (AS) ; Множитель Холецкого R3 отличается от R2, так как функция chol применяет другую функцию упорядочения amd. Тогда решение СЛАУ находится последовательностью команд: » y3=R3' \ (S' *Ь) ; » z3=R3\y3; » x3=S*z3 хЗ = -0.0910 0.3576 0.6606 0.7338 1.0065 1.0649 MATLAB содержит большое количество функций для работы с разреженными матрицами. Список этих функций можно получить командой » help sparfun Часть из них рассмотрена в данном параграфе. Функции, реализующие итерационные алгоритмы и неполную факторизацию, будут рассмотрены в главе 3, посвященной итерационным методам решения СЛАУ.
96 Глава 2 MATLAB позволяет создавать множество разреженных и плотных тестовых матриц. Перечень элементарных матриц и матричных операций (Elementary matrices and matrix manipulation) можно вывести командой » help elmat В частности, в этот перечень входят специализированные матрицы (Specialized matrices). Имеется также обширная коллекция тестовых матриц, построенная на основе коллекции Никласа Хайэма (Nicholas J. Higham) из университета Манчестера (Великобритания). Содержание этой коллекции можно посмотреть по команде » help gallery В Интернете представлены интересные коллекции тестовых матриц, например коллекция университета Флориды (University of Florida Sparse Matrix Collection — http://www.cise.ufl.edu/research/sparse/matrices). Весьма полезной для изучения методов решения СЛАУ и отладки соответствующих программ является функция delsq, формирующая разреженную матрицу, соответствующую пятиточечной конечно-разностной аппроксимации отрицательного Лапласиана, то есть оператора L и = Такая матрица получается при дх2 ду2 конечно-разностной аппроксимации уравнений Лапласа и Пуассона с граничными условиями Дирихле (на границе заданы значения искомой функции). Обращение к функции имеет вид A=delsq(numgrid(REGiON,m))), где а— результирующая матрица, numgrid — функция формирования точек двумерной сетки узловых точек размера тхт. Форма области задается параметром region, который принимает значения некоторых символов (см. help numgrid). Так как в граничных узлах задаются известные граничные условия, то в общем случае, например, для квадрата, 2 матрица а имеет размерность т-2 . Зададим матрицу размера 36 для квадрата и отобразим ее спай-график (рис. 2.5): » Bl=delsq (numgrid (' S' , 8)) ; » spy(Bl) В данном примере матрица никак не упорядочена, но изначально имеет ярко выраженную ленточную структуру. Повторим эксперимент для той же области, но теперь произведем упорядочение по методу вложенных сечений [17]. Матрица имеет совершенно другую структуру (рис. 2.6): » B2=delsq(numgrid('Ν' ,8)) ; » spy(B2) При изучении численных методов и отладке программ вектор правой части может задаваться произвольно. Но неудачный выбор этого вектора может затруднить анализ (решение будет слишком большим или малым). Можно использовать простой прием для получения решения, состоящего из одних единиц. Пусть решается СЛАУ Ах = Ь. Если Ь= А1+А2+... + Аи , где А,, /' = 1,2,...,η — столбцы мат-
Прямые методы решения систем линейных алгебраических уравнений 97 рицы, то решение равно х= 111...1 . Действительно, если С= Q С2 Сп , где С,, / = 1,2,..., η— столбцы матрицы, то ВС= BQ ВС2 ВСИ . По определению А~ А = Ε, где Ε — единичная матрица. Значит Ε. Откуда Ά. r\.i -Ао ... Ά. Ά. r\.i Ά. -^*-0 · · · Ά -^*-p A_1A!=1 0 ··· 0 0T, A_1A2=0 1 ··· 0 0T и т. д. Поэтому решение равно х = А А, +А9 +... +А„ "Г 0 0 0 + "0" 1 0 0 + · · + "0" 0 0 1 = т 1 1 1 10- 15- 25- 30 · 35 - Ид» * • *» *· ♦ в* * ■ Ч *%· Ч Ч Чи Ч * т* * Ч *в« Ч % it» % ч ·% ч V it» V 4 *β« ν ч ч* Ч *Чи. ί 5 18 1S 20 25 30 Э£ πζ = 156 u 5 18 15 28 25 38 35 { » ν* * ■ it*· * **· β * tt*· * •Л» * η» *·* *·- ν·:· · . :·.··.*:. ·*·**» η» * * % *it I 5 10 15 20 25 30 35 гк = 156 Рис. 2.5. Матрица конечно-разностной аппроксимации Лапласиана без упорядочения Рис. 2.6. Матрица конечно-разностной аппроксимации Лапласиана после упорядочения Рассмотрим пример: » А=[4 1 0 0 1 О 14 10 0 0 0 14 0 0 0 0 0 0 4 0 1 10 0 0 4 1 0 0 0 114];
98 Глава 2 » bl=(sum(A')) ' Ы = 6 6 5 5 б б » х=А\Ы χ = 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 В примере используется факт, что функция sum возвращает вектор-строку, содержащую сумму элементов столбцов матрицы. 2.11.3. Примеры программ Отметим, что примеры программ в данном пособии ни в коей мере не являются эталонами. Оптимизация программ по времени выполнения и занимаемой памяти не проводилась. Более того, в целях лучшего понимания автор сознательно шел на упрощения программ. Примерами тщательно оптимизированных программ могут служить исходные тексты функций MATLAB. Главные программы имеют следующую структуру имени: samN_xx, где ν — номер главы лекционного курса, хх — порядковый номер программы в пределах главы. Начнем с простейшей программы решения СЛАУ с верхней треугольной матрицей (листинг 2.1). | Листинг 2.1. Прогримма sam2_01 решения СЛАУ с верхней треугольной мнтрицей % Решение СЛАУ с верхней треугольной матрицей % Главная программа clear; % Очистка рабочего пространства clc; % Очистка командного окна % Пример матрицы и правой части disp('Матрица решаемой системы') А=[3 -2 1 -1 0 4-12 0 0 2 3 0 0 0 5]
Прямые методы решения систем линейных алгебраических уравнений 99 disp('Вектор правой части') Ь=[ 8 -3 11 15] % Обращение к функции решения СЛАУ с верхней треугольной матрицей disp('Решение системы') x=backsub(A, b) disp('Невязка'); r=b-A*x Программа вызывает функцию backsub решения СЛАУ с верхней треугольной матрицей (листинг 2.2). I Листинг 2.2. Функция backsub решения СЛАУ с верхней треугольной мнтрицей function x=backsub(A,b) % Функция решения СЛАУ с верхней треугольной матрицей % Вход - А - верхняя треугольная матрица размера пхп % - b - вектор размера nxl % Выход - χ - решение системы уравнений n=length(b); % Размер вектора x=zeros(η,1); % Формирование массива нулей nxl % Вычисление решения обратной подстановкой x(n)=b(n)/A(n,n); for k=n-l:-l:l x(k)=(b(k)-A(k,k+l:n)*x(k+l:n))/A(k,k); end В результате выполнения программы получаем: Матрица решаемой системы А = 3-2 1-1 0 4-12 0 0 2 3 0 0 0 5 Вектор правой части b = 8 -3 11 15
100 Глава 2 Решение системы χ = 2 -2 1 3 Невязка г = О О О О Главная программа метода Гаусса (листинг 2.3) похожа на предыдущую программу, но использует функцию gauss (листинг 2.4), реализующую метод Гаусса. ! Листинг2.3. Программа sam2_02 решения СЛАУ методом Гаусса % Метод Гаусса решения СЛАУ % Главная программа clear; clc; % Пример матрицы и правой части disp('Матрица решаемой системы') А=[4 8 4 О 15 4-3 14 7 2 1 3 0-2] disp('Вектор правой части') Ь=[ 8 -4 10 4] [х,fl]=gauss(A,b);% Вызов метода Гаусса if fl disp('Решение') χ disp('Невязка'); r=b-A*x end
Прямые методы решения систем линейных алгебраических уравнений 101 \ Листинг 2.4. Функция gauss function [x,flag]=gauss(A,b) % Реализует метод Гаусса с выбором главного элемента по столбцу, % использует функцию backsub решения СЛАУ с треугольной матрицей % Вход - А - матрица пхп % - b - вектор правой части % Выход - χ - вектор решения % - flag - признак вырожденности матрицы А % flag=l - матрица не вырождена, flag=0 - матрица вырождена) % Инициализация вектора решения χ и временного вектора С [N, N]=size(A); x=zeros(Ν, 1); C=zeros(l, N+l); % Временный вектор-строка B=[A b]; % Расширенная матрица flag=l; epsilon=le-15; % Малая величина для определения вырожденности матрицы А % Прямой ход for s=l:N % s - номер шага % Выбор главного элемента для непреобразованной части столбца ρ % Y-максимальный элемент одномерного массива abs(В(s:N,s)) % j-номер максимального элемента в этом массиве [Y,j]=max(abs(B(s:N,s))); % Меняем местами строки s и j+s-1 С=В(s,:); % строка s B(s,:)=B(j+s-l,:); В (j+s-1,:)=C; if abs(В(s,s))<=epsilon disp('Матрица А вырождена'); flag=0; % Признак вырожденности матрицы break % Выход из цикла end % Процесс исключения для столбца s В(s,s:N+l)=В(s,s:N+l)/В (s,s); for k=s+l:N m=B(k,s)/B(s,s) ; B(k,s:N+l)=B(k,s:N+l)-m*B(s,s:N+l); end end if flag % Для невырожденной матрицы % Обратная подстановка x=backsub(B(l:N,1:N),B(1:N,N+1)); end
102 Глава 2 Функция gauss (листинг 2.4) реализует метод Гаусса с выбором главного элемента по столбцу. Если после выбора главного элемента направляющий элемент матрицы по абсолютной величине меньше малого числа epsilon, то это свидетельствует о вырожденности матрицы. Результат работы программы имеет вид: Матрица решаемой системы А = 4 8 4 0 15 4-3 14 7 2 13 0-2 Вектор правой части b = 8 -4 10 4 Решение χ = -21 15 -7 10 Невязка г = 0 0 0 0 Пример sam2_03.m (листинг 2.5) демонстрирует попытку решения СЛАУ с вырожденной матрицей. \ Листинг 2.5. Программа sam2_03 решения СЛАУ с вырожденной матрицей методом | Гаусса % Метод Гаусса решения СЛАУ % Главная программа % Попытка решения СЛАУ с вырожденной матрицей clear; clc; % Пример матрицы и правой части disp('Матрица решаемой системы')
Прямые методы решения систем линейных алгебраических уравнений 103 % Вырожденная матрица А=[1 2 3 4 5 6 7 8 9] disp('Вектор правой части') Ь=[ 1 2 3] [х,fl]=gauss(A,b);% Вызов метода Гаусса if fl disp('Решение') χ disp('Невязка'); r=b-A*x end В результате получаем: Матрица решаемой системы А = 12 3 4 5 6 7 8 9 Вектор правой части b = 1 2 3 Матрица А вырождена Проверим, что вырожденность матрицы не обнаруживается сравнением направляющего элемента с нулем (из-за погрешностей вычислений направляющий элемент имеет очень малое значение, сравнимое с машинным эпсилон, но не равен нулю). Для этого установим точку останова в функции gauss в строке 27 disp ('Матрица а вырождена'); и выведем значение направляющего элемента: К» abs(B(p,p)) ans = 7.771бе-01б Программа sam2_04 .m (листинг 2.6) реализует метод LU-разложения. | Листинг 2.6. Прогримма sam2_04 решения СЛАУ методом LU-разложения % Метод LU-разложения решения СЛАУ % Главная программа clear;
104 Глава 2 clc; % Пример матрицы и правой части disp('Матрица решаемой системы') А=[1 4 1 3 0-1 3-1 3 10 2 1-2 5 1] disp('Вектор правой части') Ь=[1;2;3;4] [L,U,Р,flag]=lu_fact(A);% Вызов LU-разложения if flag==0 di sp('Матрица вырождена') else disp('Результаты LU-разложения') L U Ρ disp('Проверка правильности разложения') LU=P'*L*U disp('Решение системы Ly=P*b') y=forwsub(L,P*b) disp('Решение системы Ux=y') x=backsub(U, y) disp('Невязка') r=b-A*x end Разложение матрицы решаемой системы на верхнюю треугольную матрицу и с единичной диагональю, нижнюю треугольную матрицу l с выбором главного элемента по столбцу и формированием матрицы перестановок ρ производится функцией lu_fact (листинг 2.7). | Листинг 2.7. Функция lu_fact реализации LU-разложения function [L,U,P,flag]=lu_fact (A) % LU-разложение матрицы А % Вход - А - невырожденная матрица пхп % Выход - L - нижняя треугольная матрица, % - U - верхняя треугольная матриц с единичной диагональю % - Ρ - матрица перестановок строк % - flag=l - матрица не вырождена % - flag=0 - матрица вырождена
Прямые методы решения систем линейных алгебраических уравнений 105 [N, N]=size(A); Р=еуе(N); L=zeros(Ν,Ν); U=eye(N); % Формирование единичной диагонали матрицы U flag=l; % Признак невырожденности матрицы epsilon=le-15; % Малая величина для определения вырождения матрицы for r=l:N % Вычисление элементов столбца г матрицы L (на месте элементов А) for i=r:N s=0; for k=l:r-l s=s+A(i,k)*A(k,r) ; end A(i,r)=A(i,r)-s; end % Выбор главного элемента для столбца г % Υ - максимальный элемент одномерного массива abs(A(r:N,r)) % j - номер максимаьного элемента в массиве abs(A(r:N,r)) [Υ,j]=max(abs(A(r:N,r))); if j~=l % Требуется перестановка строк % Перестановка строк г и г+j-l матрицы А С=А(г,:); % Запоминание строки г А(г,:)=A(r+j-l,:);%г-номер строки в А, j-номер строки в A(r:N,r) A(r+j-l,:)=C; % Перестановка строк в матрице перестановок Ρ С=Р(г,:); % Запоминание строки г Ρ(г,:)=Р(г+j-l,:);%1-номер строки в А, j-номер строки в A(r:N,r) P(r+j-l,:)=C; end % Проверка вырожденности матрицы if abs(A(r,r))<=epsilon flag=0; return % Выход из функции end % Вычисление элементов строки г матрицы U (на месте элементов А) if r~=N % Диагональ матрицы U равна 1 for i=r+l:N s=0; for k=l:r-l s=s+A(r,k)*A(k,i) ; end A(r,i) = (A(r,i)-s)/A(r,r);
106 Глава 2 end end end for i=l:N L(i,l:i)=A(i,l:i); U(i,i+l:N)=A(i,i+l:N); End В функции lu_fact (листинг 2.7) реализована модификация изложенного в разд. 2.4 алгоритма с выбором главного элемента по столбцу. Элементы матриц L и U строятся на месте исходной матрицы А (единичные диагональные элементы матрицы U не хранятся). На каждом шаге г вычисляются элементы /;г столбца г матрицы L и размещаются на местах элементов ajr . Если max|/;r I = / г , то строки г и у меняются местами. Затем вычисляются элементы uri строки г матрицы U и размещаются на местах элементов ari. Вырожденность матрицы решаемой системы определяется аналогично методу Гаусса с выбором главного элемента по столбцу: a1T<z, где ε = 10 . При обнаружении вырожденности матрицы устанавливается выходная переменная flag=o. Проверка правильности разложения учитывает матрицу перестановок: А = Ρ LU. Обратите внимание, что количество перестановок строк равно числу нулевых элементов диагонали матрицы Ρ, без учета элемента рт (последняя строка не переставляется). После расчета матриц Lh U функция forwsub (листинг 2.8) реализует решение СЛАУ Ly = Pb . ! Листинг 2.8. Функция forwsub решения СЛАУ с нижней треугольной матрицей function x=forwsub(A,b) % Решение системы линейных алгебраических уравнений % с нижней треугольной матрицей % Вход - А - нижняя треугольная матрица размера пхп % - b - вектор размера пхп % Выход - χ - решение системы уравнений n=length(b); % Размер вектора x=zeros(п,1); % Формирование массива нулей nxl х(1)=Ь(1)/А(1,1); for k=2:n x(k)=(b(k)-A(k,l:k-l)*x(l:k-l))/A(k,k); end Вектор решения х исходной системы получается как решение СЛАУ Ux = у с помощью уже рассмотренной функции backsub (листинг 2.2).
Прямые методы решения систем линейных алгебраических уравнений 107 Результаты работы программы имеют вид: Матрица решаемой системы А = 1 0 3 1 4 -1 1 -2 Вектор правой b = 1 2 3 4 Результаты L = 3.0000 1.0000 1.0000 0 тт — и — 1.0000 0 0 0 Ρ = 0 1 0 0 LU- 0 0 0 1 1 3 0 5 части 3 -1 2 1 -разложения 0 3.6667 -2.3333 -1.0000 0.3333 1.0000 0 0 1 0 0 0 Проверка правильности LU = 1.0000 0 3.0000 1.0000 4.0000 -1.0000 1.0000 -2.0000 Решение системы Ly=P*fc У = 1.0000 0 0.5323 -0.1818 5. 3. 0. 1. 0 0 1 0 0 0 .6364 .2727 0 .2727 .0000 0 разложения 1. 3. 5. ) .0000 .0000 0 .0000 -1. 0. 0. 0. 1. 3. -1. 2. 1. 0 0 0 .4194 .6667 .6364 .3226 .0000 .0000 .0000 .0000 .0000
108 Глава 2 Решение системы Ux=y χ = 1.1364 -0.0455 0.5909 -0.1818 Невязка г = 1.0е-015 * 0 0.2220 0.4441 О Программа sam2_05.m (листинг 2.9) демонстрирует попытку LU-разложения вырожденной матрицы. I Листинг 2.9. Прогримма sam2_05 решения СЛАУ с вырожденной матрицей методом ; Ш-разложении % Метод LU-разложения решения СЛАУ % Главная программа % Попытка решения вырожденной системы clear; clc; % Пример матрицы и правой части disp('Матрица решаемой системы') disp('Вектор правой части') А=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] disp('Определитель матрицы') det (A) disp('Вектор правой части') Ь=[1;2;3;4] [L,U,Р,flag]=lu_fact(A);% Вызов LU-разложения if flag==l di sp('Матрица вырождена') else disp('Результаты LU-разложения') L U Ρ
Прямые методы решения систем линейных алгебраических уравнений 109 disp('Проверка правильности разложения') LU=P'*L*U disp('Решение системы Ly=P*b') y=forwsub(L, P*b) disp('Решение системы Ux=y') x=backsub(U, y) disp('Невязка') r=b-A*x end В результате получаем: Матрица решаемой системы А = 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Определитель матрицы ans = 4.7332е-030 Вектор правой части b = 1 2 3 4 Матрица вырождена Обратите внимание, что определитель матрицы в данном примере очень мал, но не равен нулю, что объясняется погрешностями вычислений. 2.12. Задания для лабораторных и самостоятельных работ В зависимости от степени подготовки читателя задания можно выполнять с использованием стандартных функций MATLAB (за исключением метода LDL - разложения) и с использованием разработанных самостоятельно программ. В любом случае программа должна быть по возможности универсальной, рассчитанной на решение определенного класса задач. Исходные данные задания следует рассматривать как один из тестовых примеров. При решении задач следует учесть возможную разреженность матриц. Обязательно проверить правильность результатов, например, расчетом невязки, сравнением с результатами, полученными с помощью стандартных функций или аналитически.
110 Глава 2 1. Решить методом Гаусса СЛАУ с матрицей 4.00 0.09 0.04 0.02 0.24 3.00 -0.08 0.02 -0.08 -0.15 4.00 0.04 0.16 -0.12 0.06 -10.00 и вектором правой части b = 8 9 20 1 2. Решить СЛАУ Ах=Ь методом LU-разложения, если 3.81 2.25 5.31 9.39 0.28 1.32 6.38 2.45 1.28 4.58 0.98 3.35 0.75" 0.49 1.04 2.28 , ь = "Г 1 1 1 3. Решить СЛАУ Ах = b методом LU-разложения, если -10-10 -1 4 -1 0 4 0 0 0 0 4 0 0 -1 0 -1 4 О О О О -1 О О О О -1 О 4 О О О О О -1 О О 4 -1 4 О -1 О -1 0" 0 0 0 0 -1 0 -1 4 , ь = Г 2 3 4 5 6 7 8 9 учесть разреженность матрицы А . 4. Решить методом Холецкого СЛАУ с матрицей, определяемой функцией delsq при т = 32. Вектор правой части вычислить как сумму столбцов матрицы. 5. Решить методом Гаусса СЛАУ с разреженной матрицей 50x50 1 О О О 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ·· 0 ·· -1 ·· 2 ·· 0 ·· 0 ·· • 0 ■ 0 • 0 ■ 0 • 2 ■ -1 0 0 0 0 -1 2
Прямые методы решения систем линейных алгебраических уравнений 111 6. Решить методом Гаусса СЛАУ с матрицей и вектором правой части b 10 16 0 16 0 0 b = -16 97 -36 0 -36 0 8 9 0 -36 180 0 0 -64 16 -16 0 0 97 -36 0 45 81 0 0 -36 0 0 -64 -36 0 234 -81 -81 433 τ 288 . 7. Решить методом Гаусса—Жор дана СЛАУ с матрицей "3.0 0.7 0.2 0.2" 0.6 5.0 0.5 0.5 1.3 0.3 3.5 0.4 0.3 0.3 0.4 4.0 τ и вектором правой части b = 4 5 —5 5 8. Решить СЛАУ Ах=Ь методом Гаусса — Жордана, если 3.82 1.02 0.75 0.81" 1.05 4.53 0.98 1.53 0.73 0.85 4.71 0.81 0.88 0.81 1.28 3.50 , ь = "15.655" 22.705 23.480 16.110 9. Решить методом прогонки СЛАУ с матрицей 100 χ 100 2-10 0 ··· 0 0 -12-10 ··■ 0 0 0-12-1 ··· 0 0 -1 2 ■■■ 0 0 0 0 0 0 0 0 0 · 0 · • 2 ■ -1 -1 2
112 Глава 2 10. Решить методом LU-разложения СЛАУ с матрицей 40 -16 0 -16 0 О -16 97 -36 0 -36 О О -36 180 О О -64 -16 О О 97 -36 О О -36 0 -36 234 -81 О 0 -64 0 -81 433 и вектором правой части b = 8 9 16 45 81 288 11. Решить СЛАУ Ах = b методом Холецкого, если 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ·· 0 ·· -1 ·· 2 ·· 0 ·· 0 ·· • 0 ■ 0 • 0 ■ 0 • 2 ■ -1 0 0 0 0 -1 2 1 о о о учесть ленточную структуру матрицы А 12. Решить СЛАУ Ах = Ь методом Ы)Ьт-разложения, если 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ·· 0 ·· -1 ·· 2 ·· 0 ·· 0 ·· • 0 ■ 0 • 0 • 0 • 2 ■ -1 0 0 0 0 -1 2 1 о о о учесть ленточную структуру матрицы А .
Прямые методы решения систем линейных алгебраических уравнений 113 13. Решить СЛАУ Ах = Ь методом Холецкого, если 4-10 0 ■■■ 0 О" -14-10 ··· 0 0 0-14-1 ··■ О О -1 4 ··· О О О О О О -1 4 учесть ленточную структуру матрицы А . 14. Решить СЛАУ Ах = Ь методом LU-разложения, если "14.0 1.5 0.9 0.8] Г 16" -1.0 23.0 2.2 1.7 24 Ь = 0.4 1.2 13.0 0.7 -11 1.1 1.1 1.9 18.oJ |_ 12 15. Решить СЛАУ Ах = Ь методом LU-разложения, если 5.0 0.2 0.3 0.2 7 0.2 8.0 0.3 0.5 . 9 0.3 0.3 5.5 0.4 0.2 0.5 0.4 6.0 16. Используя LU-разложение, вычислить определитель матрицы 40 -16 0 -16 О О -16 О -16 О О 97 -36 О -36 О -36 180 О О -64 О О 97 -36 О -36 О -36 234 -81 О -64 О -81 433 17. Решить СЛАУ Ах = Ь методом Холецкого, если 0.26 -0.09 О -0.09 О О -0.09 0.48 -0.16 О -0.16 О О -0.16 0.77 О О -0.25 -0.09 О О 0.70 -0.28 О О -0.16 О -0.28 1.17 -0.44 0 0 -0.25 0 -0.44 2.14 , ь = "0.08" 0.07 0.36 0.32 0.28 1.44
114 Глава 2 18. Решить СЛАУ Ах = Ь методом Холецкого, если 5 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 6 0 0 0 0 0 0 0 0 0 0 1 6 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 5 а порядок решаемой системы равен 1024. 19. Найти матрицу, обратную заданной 8.301 2.625 4.100 1.903 3.926 8.458 7.787 2.460 3.773 7.211 8.041 2.280 2.211 3.657 1.697 6.993 20. Решить СЛАУ Ах = Ь методом Холецкого, если -4 6 1 0 0 0 1 -4 6 -4 0 0 1 -4 6 0 0 0 1 -4 0 0 0 0 1 -4 6 -4 5 21. Решить методом прогонки СЛАУ с матрицей, определяемой функцией delsq при т = 32. Вектор правой части вычислить как сумму столбцов матрицы.
Прямые методы решения систем линейных алгебраических уравнений 115 22. Решить методом прогонки СЛАУ Ах = b, если 5 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 6 0 0 0 0 0 0 0 0 0 0 1 6 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 5 порядок решаемой системы равен 128. 23. Решить методом QR-разложения СЛАУ Ах = b, если 1 4 7 10 13 2 5 8 11 14 3" 6 9 12 15 , ь = Использовать метод вращений. Чему равен ранг матрицы? Решить систему с применением функции svd, сравнить результаты. 24. Решить методом QR-разложения СЛАУ Ах = b, если 1 4 7 10 13 2 5 8 11 14 3" 6 9 12 15 , ь = Использовать метод отражений. Чему равен ранг матрицы? Решить систему с применением функции svd, сравнить результаты. 25. Решить методом QR-разложения СЛАУ с матрицей размером 32x32, элементы которой представляют случайные числа, равномерно распределенные в интервале от 0 до 1. Вектор правой части равен сумме столбцов матрицы.
116 Глава 2 2.13. Вопросы и задания для самопроверки 1. Какие из рассмотренных прямых методов применимы для невырожденных матриц общего вида, а какие — только для положительно определенных? 2. Какие из рассмотренных прямых методов применимы для решения систем с прямоугольными матрицами? 3. Как при реализации метода Гаусса можно обнаружить вырожденность матрицы решаемой системы? 4. Как получить решение СЛАУ, если производились перестановки строк и столбцов? 5. Как формируются матрицы перестановки строк и столбцов? 6. Как хранятся в MATLAB разреженные матрицы? 7. Что такое упорядочение матрицы? 8. Объясните структуру диагонального хранения ленточных матриц в MATLAB. 9. Какие из рассмотренных методов не увеличивают ширину ленты матрицы? 10. Постройте алгоритмы (например, в виде блок-схемы или пошагового описания) и структуры данных для следующих методов: • метод Гаусса с выбором главного элемента; • метод Гаусса—Жордана; • метод LU-разложения; • метод Холецкого; • метод прогонки; • вычисление определителей с использованием одного из треугольных разложений матрицы; • вычисление обратной матрицы с использованием LU-разложения; • QR-разложение, метод вращений; • QR-разложение, метод отражений; • решение переопределенных систем с использованием сингулярного разложения. 11. Получите расчетные формулы для метода Холецкого в случае симметричной положительно определенной пятидиагональной матрицы (за пределами ленты вычисления не проводить). 12. Верно ли, что QR-разложение с использованием метода отражений работает быстрее метода вращений? 13. Как методом QR-разложения решается переопределенная СЛАУ с матрицей, не имеющей полного ранга?
Прямые методы решения систем линейных алгебраических уравнений 117 14. В чем преимущества использования сингулярного разложения при решении переопределенных систем? 15. Как в процессе решения переопределенной СЛАУ можно найти вычислительный ранг матрицы? Библиографический список к главе 2 1. Босс В. Лекции по математике: линейная алгебра. Т. 3.— М.: КомКнига, 2005. —224 с. 2. Воеводин В. В. Линейная алгебра. — СПб.: Лань, 2006. — 416 с. 3. Воеводин В. В., Воеводин Вл. В. Энциклопедия линейной алгебры. Электронная система ЛИНЕАЛ. — СПб.: БХВ-Петербург, 2006. — 544 с. 4. Воеводин В. В., Кузнецов Ю. А. Матрицы и вычисления. — М.: Наука, 1984. — 320 с. 5. Гантмахер Ф. Л. Теория матриц. — М.: Наука, 2010. — 560 с. 6. Годунов С. К. Лекции по современным аспектам линейной алгебры. — Новосибирск: Научная книга, 2002. — 216 с. 7. Ильин В. Α., Позняк Э. Г. Линейная алгебра. — М.: ФИЗМАТЛИТ, 2002. — 320 с. 8. Канатников А. Н., Крищенко А. Н. Линейная алгебра. — М.: МГТУ им. Баумана, 2006.— 336 с. 9. Стренг Г. Линейная алгебра и ее приложения. — М.: Мир, 1980. — 454 с. 10. Тыртышников Е. Е. Матричный анализ и линейная алгебра. — М.: ФИЗМАТЛИТ, 2007.— 480 с. 11. Фаддеев Д. К., ФаддееваВ. Н. Вычислительные методы линейной алгебры. — СПб.: Лань, 2002.— 736 с. 12. Хорн Р., Джонсон Ч. Матричный анализ. — М.: Мир, 1989. — 655 с. 13. Шевцов Г. С. Линейная алгебра: теория и прикладные аспекты. — М.: Финансы и статистика, 2003. — 576 с. 14. Шевцов Г. С, Крюкова О. Г., Мызникова Б. И. Численные методы линейной алгебры. — М.: Финансы и статистика: ИНФРА-М, 2008. — 480 с. 15. Писсанецки С. Технология разреженных матриц. — М.: Мир, 1988. — 410 с. 16. Тьюарсон Р. Разреженные матрицы. — М.: Мир, 1977. — 190 с. 17. Джордж Α., Лю Дж. Численное решение больших разреженных систем уравнений. — М.: Мир, 1984. — 333 с. 18. Амосов Α. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы. — М.: Издательский дом МЭИ, 2008. — 672 с.
118 Глава 2 19. Самарский Α. Α., Николаев Е. С. Методы решения сеточных уравнений. — М.: Наука, 1978. — 592 с. 20. Уоткинс Д. С. Основы матричных вычислений.— М.: БИНОМ. Лаборатория знаний, 2006. — 664 с. 21. Азиз X., Сеттари Э. Математическое моделирование пластовых систем. — Ижевск: РХД, 2004.— 416 с. 22. Икрамов X. Д. Численные методы для симметричных линейных систем. — М.: Наука, 1988. — 160 с. 23. Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999. — 548 с. 24. ВержбицкийВ. М. Численные методы (линейная алгебра и нелинейные уравнения). — М.: ООО "Издательский дом "ОНИКС 21 век", 2005. — 432 с. 25. Уилкинсон Дж. Алгебраическая проблема собственных значений. — М.: Наука, 1970. — 564 с. 26. Ортега Дж., Пул У. Введение в численные методы решения дифференциальных уравнений. — М.: Наука, 1986. — 288 с. 27. Шуп Т. Прикладные численные методы в физике и технике.— М.: Высшая школа, 1990. — 255 с. 28. Лоусон Ч., Хенсон Р. Численное решение задач метода наименьших квадратов. — М.: Наука, 1986. — 232 с. 29. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения. — М.: Мир, 2001. —430 с. 30. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. — М.: Мир, 2001. — 575 с. 31. Леонов А. С. Решение некорректно поставленных обратных задач: Очерк теории, практические алгоритмы и демонстрации в MATLAB. — М.: Книжный дом "ЛИБРОКОМ", 2010. — 336 с. 32. Ануфриев И. Е., Смирнов А. Б., Смирнова Е. Н. MATLAB 7 / И. Ε. Ануфриев. — СПб.: БХВ-Петербург, 2005. — 1104 с. 33. Кетков Ю. Л., Кетков А. Ю., Шульц Μ. Μ. MATLAB 7. Программирование, численные методы. — СПб.: БХВ-Петербург, 2005. — 752 с.
Глава 3 Итерационные методы решения систем линейных алгебраических уравнений 3.1. Дискретизация задач математической физики и особенности решения систем алгебраических уравнений Существует очень большой класс задач, требующих решения систем линейных алгебраических уравнений (СЛАУ) с большими разреженными матрицами. Такие системы появляются, например, при решении методами конечных разностей и конечных элементов краевых задач математической физики, описываемых дифференциальными уравнениями в частных производных (ДУЧП). Эти задачи возникают при проектировании различных машин, ракет, самолетов, кораблей, зданий и множества других объектов, при моделировании различных процессов, в том числе и весьма сложных, например ядерных взрывов, климата, природных и техногенных катастроф. Рассмотрим простейшие модельные задачи, чтобы понять возникающие проблемы и необходимость применения нового класса методов решения этих СЛАУ — итерационных методов. Детали решения ДУЧП можно найти в многочисленных книгах по данной тематике, например в пособии [1]. Начнем рассмотрение с одномерной задачи, описываемой уравнением ^4 = / х, 0<х</, (3.1) dx с граничными условиями и О =щ, и I =ит . (3.2) Простейшую задачу (3.1)—(3.2) можно решить аналитически, но для иллюстрации мы используем метод конечных разностей. Для этого разобьем отрезок 0, / на более мелкие отрезки с шагом h = l/m . При этом мы получим узловые точки (узлы) х0 = 0, χγ = h, x2 = 2/г,..., хт = mh, или х1 = ih, i = 0,1, 2,..., т. Совокупность таких
120 Глава 3 узлов называется сеткой. Будем искать решение задачи в узлах сетки. Из метода конечных разностей известно приближение для второй производной d2u и хгЧ -2и xi +u хг+1 (3.3) dxz ' hz Подставив (3.3) в (3.1), будем рассматривать полученное выражение как точное равенство (при этом возникает погрешность дискретизации): -Щ_\ + 1Щ -h2/,, 4+1—н Л, (3-4) где и, = и х, , f,=f χ, . Выражение (3.4) справедливо при i = l,2,...,m-l. При ζ = 0 и i-m решение равно граничным условиям (3.2). В результате получается система из т — \ линейного уравнения с т-\ неизвестным. Известные граничные значения, фигурирующие в уравнениях для ζ = 0 и г =т, перенесем в правую часть. В результате получим СЛАУ с матрицей (нулевые элементы не показаны) 2 -1 -1 2 -1 2 -1 -1 -1 2 -1 2 (3.5) и вектором правой части -A2/ xj + ~h2f x2 -h2f х3 ~h2f xm- т-2 ~h2f х, т-\ ^иг, Матрица (3.5) является ленточной, симметричной и положительно определенной. Для решения СЛАУ с такой матрицей прекрасно подходят прямые методы прогонки и Холецкого. Теперь рассмотрим двумерное уравнение Пуассона в некоторой области Ω с границей 5Ω : д2и д2и г ^ ,-, ^ч — + — = -/ χ в Ω (3.6) dxz с граничными условиями дуг и = ? на 5Ω. (3.7)
Итерационные методы решения систем линейных алгебраических уравнений 121 Решим задачу (3.6)—(3.7) методом конечных разностей. Для простоты возьмем в качестве области Ω квадрат: Ω = 0, / χ 0, / . Примем шаг сетки h = l/т одинаковым для обоих измерений. Тогда получим множество узловых точек сетки хг, j = ih,jh , где hj = ОД,···, т . Простейший вариант сетки для т-А показан на рис. 3.1. L 7 4 i , ,S S , 2 9 ,6 τ, 1 1 ι ' ► Рис. 3.1. Пример сетки Проведем аппроксимацию уравнения (3.6) на введенной сетке. Частная производная д и/дх аппроксимируется выражением (3.3) при зафиксированном значении переменной у и х,-ъУ] ~2и Х^У] +и х,+ъУ] д2и i? x-y· - * Аналогично аппроксимируется производная д и/ду и x;,J;_i -2u x,,yj +u x,,yJ+1 д2 о и x,,yj (3.8) (3.9) д/ J /г Подставляя (3.8) и (3.9) в уравнение (3.6) и используя обозначения и„ =и x,,j, , f„ = f x^y: , получим для внутренних узловых точек (i,j = \,2,...,m — \) систему 2 2 из т — \ уравнений с т — \ неизвестными и;-, i, j = 1,2,...,т-\ (3.10) ~Щ-\,} -Щ,}-\ + 4иу -uiJ+\ -ui+\j =h fy, i,j = \2,...,m-\. Каждое уравнение (3.10) содержит пять неизвестных, входящих в пятиточечный шаблон, показанный на рис. 3.1 жирным крестом. Для приграничных узлов члены уравнений, содержащие граничные условия, следует перенести в правую часть.
122 Глава 3 Для записи системы в матричной форме Au = b необходимо упорядочить неизвестные и компоненты правой части для их расположения в векторах и и b (в отличие от (2.2), обозначим вектор неизвестных как и , поскольку χ обозначает в модельной задаче координату). Для этого пронумеруем внутренние узловые точки. В модельной задаче узлы можно нумеровать по строкам, как показано на рис. 3.1, столбцам, диагоналям. Как мы увидим далее, можно нумеровать узлы не подряд, а например, в шахматном порядке. Пронумеровав узлы, получим запись СЛАУ в матричной форме (пустые места матрицы соответствуют нулевым элементам, вектор правой части учитывает граничные условия) V/1+2g" h2f2+g h2f,+2g h2f4+g h2f5 h2f6+g h2f1+2g h2f*+g h2f9+2g 4 -1 -1 -1 4 -1 -1 -1 4 -1 -1 4 -1 -1 -1 -1 4 -1 -1 -1 -1 4 -1 -1 4 -1 -1 -1 4 -1 -1 -1 4 щ u2 u3 u4 u5 u6 Uj 4 \_u9 = (3.11) Матрица системы (3.11) имеет размеры т-\ χ т-\ ленточной и состоит из блоков размерами т — \ χ т — \ В -Е О А является симметричной -Е О В -Е -Е В где Ε — единичная матрица, В трехдиагональная матрица 4 -1 В -1 4 -1 -1 4 Порядок системы существенно возрос по сравнению с одномерным случаем. Если взять т = 101, то шаг получится равным h = //101 (это довольно грубое приближение, поскольку погрешность использованной нами аппроксимации имеет порядок 9 2 4 Oh ). При этом потребуется решать СЛАУ из п= т-\ =10 уравнений. А если /?7 = 1001 и h = //1001, то порядок системы возрастет до η = 10 . Если в одномерном случае полуширина ленты матрицы, которая заполняется при решении методом Холецкого, равна 2, то в двумерном случае полуширина ленты равна
Итерационные методы решения систем линейных алгебраических уравнений 123 s = т (хотя в ленте и много нулей). Оценим затраты памяти для решения СЛАУ. 2 2 Матрица А сильно разрежена: при порядке т-\ χ т-1 она содержит менее 5 га-1 ненулевых элементов (в каждой строке содержится не более пяти ненулевых элементов). Более того, в модельной задаче нет необходимости хранить исходную матрицу, так как регулярный шаблон определяет матрицу. Однако использование метода Холецкого требует хранить полуленту целиком, так как нулевые элементы могут стать ненулевыми. Для хранения полуленты необходим объем па- 2 3 мяти в V — ns — т — 1 т&т чисел. По сравнению с объемом памяти для хранения исходной разреженной матрицы это существенные затраты. Оценим затраты на вычисления. Известно [2], что метод Холецкого для ленточных матриц требует по- 9 2 9 рядка О η операций с плавающей точкой (флопов), где η = т -1 &т — порядок системы. Это означает, что при увеличении порядка системы в к раз число 9 9 операций возрастет в к раз. В [3] дается оценка числа операций 0.5и . Таким образом, затраты памяти и время счета существенны и резко растут при увеличении точности расчетов (при уменьшении шага сетки). Рассмотрим теперь трехмерное уравнение Пуассона д и д и д и —Т + —Т + —T = ~f х дх2 ду2 dz2 с граничными условиями (3.7). Взяв в качестве области решения куб со стороной / и проведя рассуждения, аналогичные рассуждениям для двумерного слу- 3 з 2 чая, получим матрицу порядка η — т -1 хт с полушириной ленты т . Решение такой системы методом Холецкого потребует 0.5и «0.5я? операций, а для хранения полуленты потребуется хранить т чисел. Для трехмерной сетки с шагом h = //101 получается матрица порядка η «10 с шириной полуленты 10 . Для хранения полуленты потребуется хранить 10 чисел, а для решения системы ме- 12 тодом Холецкого потребуется 0.5x10 операций. Уменьшение шага вдвое увеличит время счета в 64 раза, а затраты памяти в 32 раза. Таким образом, даже для простейшей модельной задачи прямой метод Холецкого оказывается практически неприемлемым. Описанные модельные задачи относятся к процессам в однородной среде. Рассмотрим уравнение д ( ди\ д \ ди^ σ Х,У — ν — σ х,у — + — -f(x,y) (3.12) дх\ дх J ду^ ду с граничными условиями (3.7). Коэффициент σ χ,у в (3.12) отражает свойства среды, зависящие от координат. Используя регулярный конечно-разностный шаб-
124 Глава 3 лон (одинаковый для всех узлов сетки), разностную аппроксимацию для фиксированного внутреннего узла xi, j ■ можно записать в виде [4] ai,jui,j -ai+l,Jui+l,J -ai-lJui-l,J -ai,J+lui,J+l -аг,}-\иг,}-\ = fi,j , (3·13) где _o(x1+h/2,yJ) _o(x1-h/2,yJ) _o(x1,yJ+h/2) _o(x1,yJ-h/2) "t,j+i- h2 » "t,j-i- h2 a,,j = a,+i,j + a,-\,j + a,,J+i + <*t,j-\, ft,} = f(x,,yjl Запись вида σ(χ; +h/2,y ) означает вычисление функции σ в точке с координатами χ = х- + /г/2, у = уj ■ Считая узел хг, у - произвольным, получаем уравнения во всех внутренних узлах сетки. Для модельной задачи (3.13) также можно не хранить разреженную матрицу системы разностных уравнений. Учтем, что матрица системы разностных элементов симметричная, тогда коэффициенты разностной схемы можно хранить в виде двух двумерных массивов Ах и А . Элемент Axj- — это коэффициент, связывающий узел i,j с узлом г+ 1,7 . Элемент AyjJ- — это коэффициент, связывающий узел i,j с узлом /,7 + 1 · Диагональный элемент ап в стационарной задаче хранить не нужно: он может быть вычислен как сумма коэффициентов, входящих в шаблон. Такой же прием можно применять в случае более сложных граничных условий и сложной геометрии области решения. При использовании нерегулярных шаблонов необходимо хранить координаты узловых точек, входящих в шаблон каждого узла, и соответствующие разностные коэффициенты. Используемый в системе MATLAB компактный формат хранения разреженных матриц позволяет не хранить в разреженной матрице нулевые элементы и не производить с ними действий. При использовании такого формата следует программным путем сформировать матрицу системы разностных уравнений, задавая индексы и значения ненулевых элементов матрицы. Дальнейшая работа с такой матрицей ничем не отличается от работы с плотной матрицей. Однако следует учесть дополнительные затраты времени и памяти на работу с разреженным форматом хранения. Реальные краевые задачи неизмеримо сложнее рассмотренных модельных задач. Реальные задачи в большинстве случаев трехмерны и нестационарны и решаются на множестве временных шагов, то есть на каждом шаге времени решается трехмерная задача. Области решения, как правило, носят нерегулярный характер и не могут быть описаны аналитически. Например, при моделировании обтекания крыла самолета воздушным потоком необходимо воспроизвести крыло со всеми кон-
Итерационные методы решения систем линейных алгебраических уравнений 125 структивными особенностями . Поэтому современные системы, решающие краевые задачи, или включают средства трехмерного геометрического моделирования, или имеют средства взаимодействия со специализирующимися на этом прикладными программными пакетами. Реальные задачи описываются более сложными уравнениями и граничными условиями, чем рассмотренные модельные примеры. В частности часто приходится рассматривать неоднородные среды, большинство реальных задач являются нелинейными. Зачастую задачи являются некорректными, например обратные задачи. В современных подходах зачастую используются нерегулярные адаптивные сетки, изменяющиеся в ходе решения с целью получения решения с заданными свойствами. Для решения таких задач приспособлены рассматриваемые в данной главе итерационные алгоритмы решения СЛАУ. Конечно, итерационные алгоритмы с успехом применяются и для решения несложных систем, но современные алгоритмы разработаны именно для решения СЛАУ с большими разреженными матрицами. 3.2. Основные теоретические положения итерационных методов Пусть решается СЛАУ (2.2) Ах = Ь с вещественной невырожденной квадратной матрицей А. В итерационных методах, исходя из некоторого начального прибли- 0 О I 2 к жения χ , строится последовательность векторов χ ,χ ,х ,...,х ,..., где к — номер итерации (приближения). Эта последовательность векторов должна * — 1 0 · к * сходиться к точному решению χ = A b СЛАУ при любом χ lim x = χ . к—>оо В этом случае итерационный процесс называется сходящимся. С использованием матричных обозначений классические итерационные методы [2, 3, 5] могут быть описаны следующим образом. Представим квадратную невырожденную матрицу А в виде Α = Μ-Ν, (3.14) где Μ — невырожденная матрица, называемая расщепляющей матрицей [2, 3, 5], а представление (3.14) называется расщеплением матрицы А. С использованием понятия расщепления перепишем СЛАУ Ах = b в виде Мх = Nx + b или Сложность решаемых реальных задач иллюстрируется следующими достижениями, рекордными на момент подготовки пособия. В декабре 2008 г. при решении методом конечных элементов статической линейной пространственной задачи механики деформируемого твердого тела для крыла самолета, находящегося под действием изгибающих нагрузок, компания Siemens PLM Software с помощью системы NX NASTRAN решила примерно 500 млн линейных алгебраических уравнений (http://www.fea.ru/FEA_news_1360.html). 15 августа 2010 г. в центре суперкомпьютерных вычислений в Галисии (Испания) была решена задача определения важной характеристики радиолокационной системы — эффективной площади отражения. При этом решалась СЛАУ, содержащая миллиард неизвестных (http://www.cesga.es/Rle/proyectos/Prensa/PRESS_RELEASE_ONE_BILLION_RECORD.pdf).
126 Глава 3 χ = Μ Νχ + Μ b . Тогда одна итерация итерационного метода определяется следующим образом: Мх/С+1 =Шк + Ь, или xk+1 =M_1Nx/c +M_1b=Cx/c +d, (3.15) где С = М"^ = Е-М-1А (3.16) называется итерирующей матрицей {матрицей перехода, матрицей коррекции), d = М~ b , Ε — единичная матрица, χ — приближение решения на k-й итерации. Выражение (3.15) означает, что на каждой итерации должна решаться СЛАУ Mx/c+1 =Nx/c +b, (3.17) поэтому матрица Μ должна быть такой, чтобы эта система легко решалась. С другой стороны, для быстрой сходимости желательно брать Μ « А и N « 0 . Если взять Μ = А , то решение будет получено за одну итерацию. Но тогда, как видно из (3.17), итерационный процесс формально сведется к решению исходной системы. Поэтому так никогда не делают. В простейших итерационных методах Μ является единичной или диагональной матрицей. В итерационных методах широко используется понятие невязки решения (residual) rk =b-Ax/c . (3.18) Невязка— это разность между правой и левой частями СЛАУ при подстановке в систему приближенного решения. Невязка характеризует степень близости приближения к решению и связана с погрешностью решения. Действительно, к к * к * ,- г =Ь-Ах =А χ -х , где χ —точное решение системы. То есть ошибка решения после к итераций Δ = χ - χ формально может быть рассмотрена как к к решение системы АА = г . Но оценка погрешности таким методом практически неприменима, так как столь же трудоемка, как решение исходной задачи. С использованием понятия невязки итерация (3.15) может быть описана в виде xk+l =Cxk +d= Е-М_1А хк + M_1b = x* + M_1r* . (3.19) Итерационный процесс строится следующим образом. Исходя из вектора начального приближения χ , на первой итерации по формуле (3.15) вычисляется первое приближение χ . На второй итерации, исходя из первого приближения, вычисля- 2 О ется второе приближение χ и т. д. Очень часто принимают χ = 0 . Если, исходя из особенностей задачи, удается определить более точное значение χ , то для достижения решения потребуется меньше итераций.
Итерационные методы решения систем линейных алгебраических уравнений 127 Итерационный процесс называется сходящимся, если при любом начальном приближении lim χ =х , где χ —точное решение системы (2.2). Это означает, что к—>оо в сходящемся итерационном процессе точное решение достигается за бесконечно большое число итераций. Практически итерационный процесс останавливается после некоторого числа итераций, тем самым вносится методическая погрешность. Различные критерии останова итерационных процессов будут рассмотрены позже. Рассмотрим сходимость итерационного процесса. После каждой итерации имеется r k k * k * ошибка Δ = χ - χ — разность между неизвестным точным решением χ и приближенным решением после к итераций. В сходящемся итерационном процессе Δ —> О при к —> да . Выведем условия сходимости. Очевидно, что точное решение, удовлетворяющее системе Ах = b, удовлетворяет и системе Mx*=Nx*+b. (3.20) Вычитая из (3.20) выражение (3.17), получаем ΜΔ = ΝΔ . Следовательно, д*+1 =САк ^ (3.21) где, как и ранее, С = M_1N = Ε - Μ"1 Α. Так как (3.21) справедливо для всех к, то Δ = СА , Δ =С Δ , ..., Δ =ССЛ . Независимо от начального приближения Δ ζ —> О при £ —> да , если Сс —>0 . Для этого необходимо и достаточно, чтобы все собственные значения итерирующей матрицы были по модулю меньше единицы [6]. Максимальный из модулей собственных значений матрицы А называется спектральным радиусом р(А) матрицы А. Тогда необходимое и достаточное условие сходимости имеет вид р(С)<1. (3.22) Часто на практике применяют достаточное условие сходимости [6]: для сходимости итерационного процесса достаточно, чтобы какая-либо норма матрицы С была меньше единицы |С|<1. (3.23) Известно, что собственные значения матрицы по модулю не превосходят любую из ее норм [6]. Тогда из (3.23) вытекает условие (3.22). к Доказывается [3], что для достаточно больших к выполняется Аш ρ с , то есть сходимость линейна с коэффициентом сжатия ρ С . Чем меньше ρ С , тем быстрее сходятся итерации. Рассмотренные соображения учитываются в асимптотической скорости сходимости итерационного процесса [3] i?(C) = -lnp, где ρ — спектральный радиус итерирующей матрицы С .
128 Глава 3 В случае сходящегося итерационного процесса при бесконечно большом числе итераций и при отсутствии погрешностей округлений приближенное решение χ стремится к точному решению χ системы (2.2). В реальности итерационный процесс всегда конечен, и нужно выбрать условие окончания итерационного процесса (критерий останова). Например, итерационный процесс можно закончить, если выполняется одно из условий k-l ^ь к к-\ χ -х <ε 2' <ε 3' b <ε4, (3.24) (3.25) (3.26) (3.27) где ε,, /' = 1, 2, 3, 4 — заданные малые числа ... — произвольная норма. В условиях (3.24)—(3.27) удобно использовать кубическую норму векторов. Для проверки условия окончания итерационного процесса целесообразно применять условия (3.25) или (3.27), в которых используются относительные нормы, чем исключается зависимость от абсолютной величины решения. Однако малое значение ε^ в условиях (3.24)—(3.27) не гарантирует малой погрешности решения. Итерационные методы предназначены для решения СЛАУ с разреженными матрицами. Реальные программы, реализующие итерационные методы, используют разреженный формат хранения матриц и производят вычисления только с ненулевыми элементами матриц. Для многих несложных задач, например, таких, как рассмотренные в разд. 3.1 модельные задачи, можно вообще не хранить матрицы. Одним из преимуществ MATLAB являются методы хранения и обработки разреженных матриц, позволяющие формально работать с разреженными матрицами как с обычными плотными, но сводящие к минимуму затраты памяти и времени на работу с нулевыми элементами матриц. Матричная форма упрощает запись и исследование итерационных методов. Поэтому будем использовать матричную форму записи итерационных методов, не учитывая форму хранения матриц. Естественно, относительно несложные задачи можно решать итерационными методами, применяя полное хранение матриц. Более того, итерационные методы можно применять для решения СЛАУ с плотными матрицами (если выполняются условия сходимости для этих матриц). Целесообразность применения итерационных методов в этих случаях должна быть обоснована. Оценим погрешность, возникающую при замене бесконечного итерационного процесса конечным числом к итераций, то есть рассмотрим методическую погреш-
Итерационные методы решения систем линейных алгебраических уравнений 129 ностъ итерационного процесса. Погрешностями округления пренебрежем. Так как Ах = b, где χ — точное решение СЛАУ (2.2), то А х :АА Ь-Ах (3.28) где Δ ζ — погрешность приближенного решения после к итераций. Из (3.28) получаем Ак < А"1 к г (3.29) то есть при использовании условия (3.26) и большой норме обратной матрицы абсолютная погрешность решения может оказаться большой даже при малой величине критерия останова ε . Из (3.29), а также очевидного неравенства b < A и условия (3.27) получаем <cond A < cond А · ε. то есть для плохо обусловленной матрицы относительная погрешность решения может быть значительно больше ε . Чтобы гарантировать решение с относительной погрешностью Ах ; ε вместо условия (3.27) следует использовать условие (3.30) cond A которое означает, что для многих практических задач итерационный процесс необходимо заканчивать при чрезвычайно малых значениях относительной нормы невязки. Условие (3.30) справедливо для любого метода решения. В [7, 8] даны условия окончания некоторых популярных итерационных процессов, гарантирующих заданную погрешность решения. Еще более сложные оценки получаются при использовании в условиях окончания итерационного процесса поправок решения (3.24), (3.25). Так, из (3.19) получаем к+\ к л/г-1 к -χ = Μ г :М X к+\ (3.31) Из (3.28) и (3.31) находим Ак = А_1М хШ и с учетом условия (3.24) получаем Μ <cond Α 4τ-^ε .
130 Глава 3 Погрешности округления в итерационных методах меньше сказываются на результате, чем в прямых методах. Сходящиеся итерационные процессы являются устойчивыми к погрешностям округления, то есть не происходит их накопления. Однако это не означает, что, увеличивая число итераций, можно достичь сколь угодно малой погрешности решения. Из-за погрешностей округления существует некоторая окрестность решения, после попадания в которую дальнейшего уточнения прибли- к жения решения χ не происходит с ростом числа итерации. Рассмотрение итерационных методов начнем с классических методов (методы Ричардсона, простой итерации, Зейделя, последовательной верхней релаксации). При рассмотрении будем придерживаться терминологии, принятой в [5]. 3.3. Метод Ричардсона В методе Ричардсона (L. F. Richardson) итерационный процесс решения СЛАУ (2.2) строится по формуле х^хЫ +гЫ =хЫ + b-Αχ*-1 = Е-А хЫ +Ь, (3.32) где г с —невязка (3.18). Формула (3.14) показывает, что расщепляющая матрица в методе Ричардсона равна М = Е, а Ν = Ε - А , где Ε — единичная матрица. Тогда итерирующая матрица равна С = Е-А. (3.33) В покомпонентной записи формула метода Ричардсона (3.32) имеет вид х«=хГ)+^"1), г = 1,2,...,п, (3.34) где невязка рассчитывается по формуле ггк~1 =bi-t°iAk~1\ / = 1,2,...,и. (3.35) Метод Ричардсона реализуется на компьютере следующим образом. Исходными данными являются матрица А, хранящаяся в виде двумерного массива или более сложной структуры данных в случае разреженной матрицы, и вектор правой части b , хранящийся в виде одномерного массива. Для некоторых задач, как мы увидим на примере модельной задачи, матрицу А можно не хранить. Необходимы также два массива для хранения векторов χ и χ . В массиве для хранения χ задается начальное приближение χ — 0 . Можно задать χ — b — это экономит одну итерацию. Алгоритм решения состоит из ряда итераций. В начале каждой итерации рассчитывается невязка по формуле (3.35) и проверяется условие окончания итерационного процесса, например (3.27). Если условие окончания ите- к-\ рационного процесса выполняется, то процесс заканчивается, а х принимается за решение системы. В противном случае по формуле (3.34) рассчитывается вектор
Итерационные методы решения систем линейных алгебраических уравнений 131 нового приближения χ . Вектор χ записывается на место вектора χ и происходит переход к следующей итерации, то есть снова рассчитывается невязка и т. д. Рассмотрим условие сходимости метода Ричардсона. Максимальное и минимальное собственные значения итерирующей матрицы С являются стационарными точками отношения Рэлея Сх,х R С,х = —, х,х рассматриваемого как функция от χ. С учетом (3.33) получим Е-А х,х х,х - Αχ,χ R С,х = = — — = 1-R Α,χ , χ, χ χ, χ что устанавливает связь между собственными значениями матриц С и А . Условие сходимости (3.22) примет вид ρ С =тах |ΐ-ληώι Α |,|ΐ-ληιαχ Α | <1, (3.36) где Хт;„ А и λ„„ν А — минимальное и максимальное собственные значения ^ 111111 llldX матрицы А. Если А — симметричная и положительно определенная матрица, то условие сходимости имеет вид λΠΜΧ(Α) <2. Можно использовать достаточное условие сходимости Ε - А < 1, которое в случае положительно определенной матрицы А принимает вид ||А|| < 2 . (3.37) Очевидно, что условия (3.36) или (3.37) выполняются далеко не для всех матриц. Для обеспечения сходимости и повышения скорости сходимости используют итерации со сглаживанием, включающие итерационный параметр {множитель сглаживания) τ : х'с =х'с-1 +тг*-1 . (3.38) Тогда расщепляющая матрица М = -Е,а N = - Ε - А . Итерирующая матрица име- τ τ ет вид С = Ε - τΑ . В общем виде расщепляющая матрица со сглаживанием равна Μ = τ~ Μ, а итерирующая матрица равна С = Ε - τΜ~ Α . На практике значение τ находят подбором. Для положительно определенных матриц оптимальное значение τ равно [5] τ = . (3.39) ληώι(Α) + ληιαχ(Α) Из-за сложности вычисления собственных чисел эта оценка имеет скорее теоретическое значение.
132 Глава 3 Рассмотрим применение метода Ричардсона к решению модельной задачи. Используя (3.10), запишем выражение невязки (3.35) для узла i,j сетки: rij =h fy+ ui-lj + uu-\ ~4u'j + "/,/+1 + "/+i,y ' ',7 = 12,...,m-1. (3.40) Граничные значения и , необходимые при вычислениях в примыкающих к границе узлах сетки, берутся из граничных условий. Для этого можно сформировать два двумерных массива (размера т + \ χ т + 1 ) и ии приближений к решению, каждый элемент которых соответствует узлу сетки. Элементам, соответствующим граничным узлам, присваиваются значения граничных условий. В процессе итераций эти элементы не изменяются. Аналогично строится массив невязки. Новое приближение для узла i, j при использовании сглаживания вычисляется по формуле ф=$-1)+т#-1\ i,j=l,2,.,m-l. Для метода Ричардсона обход узлов сетки возможен в любом порядке. Доказывается [3], что для данной модельной задачи оптимальное значение τ = 0.25, при котором метод Ричардсона для модельной задачи совпадает с рассматриваемым в следующем параграфе методом Якоби. Для других задач оптимальное значение итерационного параметра (множителя сглаживания) должно вычисляться или подбираться. Для рассматриваемой модельной задачи не нужно формировать матрицу. Вектор правой части при таком подходе явно не используется. Если требуется вектор правой части, например, для вычисления нормы правой части в критерии останова итерационного процесса, то значения правой части в виде двумерного массива можно вычислить как невязку при нулевом начальном приближении решения. Действительно, г = b — Au , значит г = b если и = 0. Нуле- г „ к-\ вое начальное приближение строится как двумерный массив и , элементы которого, соответствующие граничным узлам, равны граничным значениям, а все остальные элементы равны нулю. Для разностных уравнений вида (3.13) выражение (3.40) примет вид к-\ , 2 г к-\ к-\ к-\ к-\ к-\ r1} =h Jlj+a^jU^j +aiJ_lujJ_l -aUjutj +aiJ+lujJ+l +aI+ljuI+lj . Все остальные вычисления ничем не отличаются от рассмотренных. Метод Ричардсона обладает низкой скоростью сходимости, но его можно рассматривать как хорошую основу построения других методов. 3.4. Методы простой итерации и Якоби В методе простой итерации [7] систему (2.2) Ах = Ь предварительно приводят к виду, удобному для итераций: χ = Вх + с, где χ — искомый вектор; Вис — новые матрица и вектор.
Итерационные методы решения систем линейных алгебраических уравнений 133 Итерационный процесс строится по формуле xk =Bxkl + с, £ = 1,2,... (3.41) Для сходимости процесса (3.41) для итеририующей матрицы В должно выполняться условие (3.22) или (3.23). Легко увидеть, что метод Ричардсона с итерационным параметром τ можно трактовать как метод простой итерации с матрицей В = Ε - τΑ , где Ε — единичная матрица. Разумное приведение системы к удобному для итераций виду является нетривиальной задачей. Самый простой прием состоит в следующем. Предполагая, что матрица А невырождена и все аи ^0 (в противном случае можно переставить строки матрицы), преобразуем систему (2.1) к виду __α12 _α13 _ _«i„ h Лу — Л*2 Λ3 · · · χγι ~ι~ ·> ап ап ап ап _ а 21 а2Ъ а2п Ъ2 -хп + ΛΊ1 "22 а22 а22 (3.42) Ίη\ „ ап2 „ апп-\ „ ,К Λι Λο . . . Л-т-г—1 "г Ч л2 ... л.п_х апп апп ап ИЛИ А а и Ь, Хг=~Т,—х<+—, /' = 1,2,..., п. Так поступают в методе Якоби (С. Jacobi), то есть компоненты вектора χ находят по формуле xi*=-t^*"1)+-. г = \,2,...,п. (3.43) Часто (см., например [1,6]) методы простой итерации и Якоби считают синонимами. Реализация метода Якоби очень похожа на реализацию метода Ричардсона. В методе Якоби также необходимо хранить векторы χ их, однако расчет невязки в явном виде не требуется. В качестве условия окончания итерационного процесса часто используют условия (3.24) или (3.25). Для исследования сходимости метода Якоби используем расщепление, для чего представим матрицу А в виде A = M-N = D-(CZ+Q/), (3.44) где D = [a„] —диагональная матрица;
134 Глава 3 0 0 0 ... 0 a2l О О О 731а320 ... О О а12 а13 аы ... аХп О 0 а23 а24 0 0 0 -'34 Л2п ЛЪп 0 0 0 0 о (3.45) _ап1ап2ап3...0_ То есть расщепляющая матрица равна M = D, а матрица N равна N = (C^ +Си). Исходя из (3.44), можно записать метод Якоби в матричной форме хк =Όι Q+Q -и х +D b E-D_1A xi_1 +D V тогда итерирующая матрица равна C = D-1(CL+Q/) = E-D-1A. (3.46) (3.47) Отметим, что запись (3.46) нужна только для теоретического исследования, реализуется метод Якоби с использованием покомпонентной формулы (3.43). Для сходимости метода Якоби должны выполняться условия (3.22)—(3.23) для матрицы перехода (3.47). Достаточным условием сходимости является диагональное преобладание матрицы А: к?„ > ΣΚΙ :1, 2, ···," 7=1' Из (3.46) видно, что метод Якоби совпадает с методом Ричардсона, примененным к преобразованной (предобусловленной) системе ϋ_1Αχ = ϋΛ. (3.48) Преобразование (3.48) заключается в делении каждого уравнения СЛАУ (2.2) на αΉ Ψ 0. Для преобразованной системы (3.48) формула метода Ричардсона имеет вид хк =xkl +(D~1b-D~1Ax* 1 )= E-D^A хк 1 +ϋΛ; (3.49) то есть (3.49) совпадает с (3.46). Решая преобразованную систему (3.48) методом Ричардсона, можно ввести итерационный параметр τ , что повысит скорость сходимости. Отметим, что метод Якоби сходится значительно быстрее метода Ричардсона. Рассмотрим применение метода Якоби к решению модельной задачи. Выражая и^ из уравнения (3.10), получим аналог выражения (3.43): к 1 к-\ к-\ к-\ к-\ , 2 — U- , ■ 4-М. ■ , 4-И. .., 4-М.., . +Г ' 4 4-Х,j ^»t,j-\ к-\ 'i+lj i,j = \,2,...,m-\
Итерационные методы решения систем линейных алгебраических уравнений 135 При вычислениях в приграничных точках граничные значения берутся из граничных условий. Для этого, как и в методе Ричардсона, необходимо сформировать два двумерных массива и и и приближений к решению. В остальном реализация метода Якоби для модельной задачи аналогична реализации метода Ричардсона. 3.5. Методы Зейделя и последовательной верхней релаксации 3.5.1. Метод Зейделя Метод Зейделя (P. L. von Seidel), или метод Гаусса—Зейделя, как и метод Якоби, основан на преобразовании (3.42), однако при вычислении х; при г>\ исполь- k Ш (к) зуются уже найденные приближения х^ , χ, ' 2 , ...,х>_{,тоесть Лк) Лк) а 12 Jk-\) "13 Jk-\) -Χ, а\п Х{к-Х) | °\ а и а и а и а и а 21 JX) "23 Лк-Х) -X, а 22 а 22 а2п (*-1) Ь2 (λОЛ (Л '22 22 Jk) ап\ Y(k) _ £и2 Лк) _ _ апп-\ (к) _^_ х1 х2 · · · хи-1 + апп апп апп апп Метод Зейделя легко программируется. Для его реализации необходим один массив для хранения вектора χ. Вначале в этот массив помещаются значения начального приближения. В каждой итерации вычисления сводятся к расчету х,, /' = 1,2,..., п, по формуле / λ 1 " χ, = Σαυχ]+δ, ап 7=1 (3.50) и к записи Xj на старое место в массиве χ. В качестве условия окончания итерационного процесса в методе Зейделя обычно используют условия (3.24)—(3.25). Для вычисления нормы поправки к решению к-\ до записи компонента нового приближения к решению необходимо найти компонент вектора поправки решения Δχ, к-\
136 Глава 3 Для исследования сходимости запишем метод Зейделя в матричной форме, используя представление А = Б-(С^ +Си), где D = [a„] — диагональная матрица; CL и Cjj определяются (3.45). Тогда х<*> = D^x^ + D^x^ + D >b = = D-! C^+C/^+b. (3'51) Отсюда видим, что D-CL xW=Ct/x(*-1)+b, то есть матрица расщепления равна Μ = D - CL, а итерационный процесс в матричной форме имеет вид х(к)= o_Cl -1C[/X(*-i)+ d_Cz -!b (3.52) Из (3.52) видно, что сходимость метода Зейделя определяется спектральным радиусом матрицы перехода С= D-C^ Си . Известно [9, 10], что метод Зейделя сходится в случае симметричной положительно определенной матрицы А решаемой системы (2.2). Отметим, что запись (3.52) метода Зейделя в матричной форме используется только для исследования метода. Программная реализация метода Зейделя строится на основе покомпонентной записи (3.50). Рассмотрим применение метода Зейделя к модельной задаче (3.6)—(3.7). Метод Зейделя использует один массив, и необходимо учитывать порядок обхода узловых точек в пределах одной итерации. Если обходить узловые точки по строкам, то формула метода Зейделя имеет вид k+l 1 k k+l k k+l , 2 r ,λ „ι u,j =4 ui+ij+ui-ij +ui,j+i+ui,j-i +h fij ■ (3·53) В методе Зейделя важен порядок обхода узловых точек. Эта особенность будет рассмотрена при изучении метода последовательной верхней релаксации, который является развитием метода Зейделя и нашел широкое применение при решении систем разностных уравнений. 3.5.2. Метод последовательной верхней релаксации Если матрица А решаемой системы СЛАУ симметрична и положительно определена, то можно использовать метод последовательной верхней релаксации [5], или SOR-метод (от англ. successive over relaxation). Это один из распространенных итерационных методов, что объясняется его высокой скоростью сходимости и простотой реализации. Релаксацией называют процесс коррекции уравнения путем изменения одного из входящих в него неизвестных. В SOR-методе при вычислении χ, + по той же формуле (3.50), как и в методе Зейделя, находится промежуточное
Итерационные методы решения систем линейных алгебраических уравнений 137 значение, которое обозначим как х\ζ+ '. Затем находится очередное приближение решения х^+1)=хР+шхр+1/2)-х« , (3.54) где ω — коэффициент релаксации. В остальном реализация SOR-метода не отличается от реализации метода Зейделя. Для исследования метода запишем выражение (3.54) в виде xf+1>= l-ω x«+coxf+1/2\ (3.55) Так как х\с+ ' вычисляется как в методе Зейделя, то, используя (3.51), запишем SOR-метод в матричной форме: х^ = (1 - ω)χ« + coD"1 CLx(/c+1) + Сих<*> + b или E-cuD-1Cl χ Ir1 „Д/(;+1) (1-cu)E + cuD_1C и t^+ooD-'b Умножая последнее выражение слева на D и проводя элементарные преобразования, получаем ω J У ω следовательно, матрица расщепления SOR-метода равна М = —D-CL и ω N = D + Си . Тогда матрица перехода SOR-метода согласно (3.16) равна ω Си=М-^ = ^-Б-С^ p^D + C^. (3.56) SOR-метод сходится, если спектральный радиус матрицы Ссо (3.56) меньше единицы. Известно [2,5] неравенство для спектрального радиуса матрицы Сга: ρ Ссо > ω — 1 . Известно, что для симметричной положительно определенной матрицы А SOR-метод сходится, если 0 < ω < 2 . Как правило, коэффициент релаксации берется из диапазона 1<ω<2, что соответствует верхней релаксации. При ω = 1 SOR-метод переходит в метод Зейделя. При 0 < ω < 1 метод называется методом нижней релаксации. Обычно значение коэффициента релаксации ω подбирают экспериментально, при этом следует учитывать, что для целых классов задач оптимальные (то есть обеспечивающие минимальное число итераций) значения ω мало отличаются друг от друга. Как и в методе Зейделя, матричное представление SOR-метода используется только для теоретических исследований. Расчеты ведутся по формуле (3.54).
138 Глава 3 Известен алгоритм вычисления близкого к оптимальному значения ω [5]. Рассмотрим без доказательств этот алгоритм. Известно [2, 5] соотношение между собственными числами μ матрицы перехода метода Якоби и собственными числами λ матрицы перехода SOR-метода: 2 2 2 λ + ω -1 =λωμ . Оптимальным коэффициентом релаксации ω t будет такое значение, при котором спектральный радиус ρ Сга матрицы перехода Сщ (3.56) будет минимален. Известно, что оптимальное значение ω равно 2 ω opt 1 + Vb (3.57) μι где μ1 — максимальное собственное значение матрицы перехода метода Якоби. Известна также связь между коэффициентом релаксации ω < ω t, при котором выполнялась итерация, значениями ρ Сга и μ1: РСС ωμ1 + ^/ω2μ^ - 4 ω -1 (3.58) Для евклидовых норм векторов поправок решения существует оценка Ρ Со. Ак) _ Лк-1) ,(*-!) к-2 (3.59) Оценки (3.58) и (3.59) стабилизируются после некоторого числа итераций. Тогда можно построить следующую адаптивную процедуру оценки коэффициента релаксации. Проделывается некоторое число (5—10) итераций метода Зейделя (ω = 1), затем в каждой (£+1)-й итерации вычисляется значение ω по следующему алгоритму 1. По (3.59) оценивается ρ Сга . 2. Из (3.58) находится 1 μι k-1^. Р Ссо +ω k-l ■1 ω 3. По (3.57) рассчитывается ω приближение к оптимальному значению ω opt Практически, если получается 1 - μ1 < 0 , то следует принять ω ζ = ω 4. Выполняется итерация SOR-метода со значением ω
Итерационные методы решения систем линейных алгебраических уравнений 139 В качестве условия окончания итерационного процесса можно использовать условия (3.24)—(3.25). Известна [5] оценка абсолютной погрешности решения k+i * 1 k+i -χ 1-рС s -χ (3.60) где χ — точное решение СЛАУ. В качестве ρ Cs в (3.60) можно использовать оценку (3.59). Рассмотрим применение SOR-метода к модельной задаче (3.6)—(3.7). Если обходить узловые точки по строкам, то формула (3.55) имеет вид k+l Л к О) к к+\ к к+\ , 2 г иц = l-ω иц +- и^+и^ +ич+1+ичЛ +h f4 . Результаты выполнения SOR-метода зависят от порядка обхода сеточных узлов. Различное упорядочение сеточных узлов приводит к различным методам. Рассмотренная нами построчная нумерация узлов модельной задачи называется естественным упорядочением. Известна модификация SOR-метода, называемая симметричным методом последовательной верхней релаксации — SSOR-метод (symmetric successive over relaxation). Каждая итерация SSOR-метода состоит из двух шагов. На первом шаге выполняется итерация SOR-метода с прямым упорядочением, то есть расчет xi идет от г: = 1 до i = n . На втором шаге выполняется SOR-метод с обратным упорядочением, то есть расчет идет от ί = п до i = 1. При выборе оптимального значения ω SSOR-метод обеспечивает большую скорость сходимости, чем SOR-метод [5], но, естественно, SSOR-метод более трудоемок. 1 16 6 21 11 14 4 19 9 24 1 П^ 2 17 7 22 12 15 5 20 10 25 3 18 8 23 13 - "красный" узел (R), - "черный" узел (В). Рис. 3.2. Пример красно-черного упорядочения узлов сетки
140 Глава 3 SOR-метод, как и метод Зейделя, при естественном упорядочении является последовательным и не допускает распараллеливания. Однако специальное упорядочение сеточных узлов позволяет распараллелить эти методы [3, 11]. Модификация метода последовательной верхней релаксации (часто называется "модифицированный метод последовательной верхней релаксации (MSOR)") в простейшем случае использует "красно-черное" упорядочение (часто называют черно-белым упорядочением). Пример упорядочения для модельной задачи показан на рис. 3.2. Из рис. 3.2 видно, что каждый узел имеет в качестве своих соседей, входящих в разностный шаблон, только узлы другого цвета. Поэтому можно параллельно выполнить одну итерацию в узлах одного цвета, а затем — в узлах другого цвета. При использовании более сложных разностных шаблонов применяют многоцветное упорядочение, разбивающее узлы более чем на два множества. 3.6. Блочные и асинхронные итерационные методы Пусть матрица решаемой СЛАУ представлена в блочном виде 41 L21 42 L22 \пг L2m vml Am2 ''' Ami где блоки Αη на главной диагонали — квадратные невырожденные матрицы. Тогда СЛАУ Ах = b можно представить в блочном виде 41 L21 42 L22 \т Чт х1 х2 Хт = h К Кг (3.61) ml m2 где Xj и bj обозначают части векторов χ и b соответствующей длины. Блочные итерационные методы выглядят так же, как и обычные, но вместо элементов матриц и векторов в них участвуют блоки матриц и подвекторы, а операция деления формально заменяется умножением на обратную матрицу (реально решается СЛАУ с соответствующей матрицей). Например, блочный итерационный метод Якоби решения СЛАУ (3.61) сводится к решению т систем вида А;7х;- к+\ 7=1 J*' (3.62) Системы (3.62) должны эффективно решаться прямыми методами. Например, для матрицы (3.11) модельной задачи матрицы Ай представляют собой трехдиаго-
Итерационные методы решения систем линейных алгебраических уравнений 141 нальные матрицы и для решения систем (3.62) можно использовать метод прогонки. Так как неизвестные в блочных методах выражаются неявно, их относят к неявным итерационным методам (другие виды неявных итерационных методов будут рассмотрены далее). Достаточно популярными блочными итерационными методами являются итерации по линиям. В этих методах блок соответствует одной линии узловых точек сетки. Обычно используют блочную модификацию методов Зейделя или последовательной верхней релаксации. Рассмотрим идею метода на примере метода Зейделя для модельной задачи (3.6)—(3.7). Если рассмотреть одну строку сетки (см. рис. 3.1), то разностные уравнения, соответствующие узлам строки сетки, содержат только три неизвестных, которые надо найти на итерации к +1 . Например, для строки j - . - „ k+l k+l k+l „ k+l и столбца j необходимо найти и] х , и,у , и;+1 . Переменная и] ,_j уже определена на итерации к +1 или является граничным условием для первой строки. Переменная и. . j определена в предыдущей итерации к или является граничным условием для последней строки. Поэтому запишем для строки j сетки СЛАУ с трехдиагональной матрицей А;х/+1=Ь;> (3.63) где χ —приближение k + l вектора решения для строки j сетки. Из (3.10) видим, что для внутренней строки j и внутренней точки г уравнение системы (3.63) имеет вид k+l . k+l k+l k+l k , 2 r -U,-l,j + 4u,j -"/+l,y =u,,j-l +uu}+l+h fij- Для приграничных точек известные значения решения переносятся в правую часть. Система (3.63) легко решается методами прогонки или Холецкого. Таким образом, итерация метода Зейделя для модельной задачи сводится к решению систем вида (3.63) для внутренних строк сетки. Условие останова итераций ничем не отличается от условия для обычного метода Зейделя. В методе последовательной верхней релаксации по строкам (LSOR) решение системы (3.63) дает промежуточное значение χ ζ . Новое приближение χ ζ вычисляется аналогично (3.54): xf+1)=xf +ω xf+1/2>-xf . Если нумеровать строки через одну, то LSOR легко распараллеливается. Блочные итерационные алгоритмы используются при декомпозиции (разбиении) области решения на части [2]. Декомпозиция используется, если задача не помещается в памяти компьютера и решается по частям. Декомпозиция применяется также при решении на параллельных системах. Покажем идею метода декомпозиции на простейшей модельной задаче. Пусть решается задача вида (3.6)—(3.7) в прямо-
142 Глава 3 угольнике. Разобьем область решения на две подобласти S^ и S2 (рис. 3.3). Используем простейший пятиточечный шаблон и равные шаги по осям. Каждую подобласть расширяем одним столбцом узлов, расположенных в другой области: Подобласть Si расширяем столбцом Ω12 , а подобласть S2 расширяем столбцом Ω21. Выполняем одну итерацию на расширенной подобласти ^, используя в качестве граничных условий на Ω12 решение в S2 на предыдущей итерации. Можно выполнить несколько итераций в расширенной подобласти Si, возможно также решение одним из прямых методов. Затем аналогичная процедура проводится для расширенной подобласти S2, после чего снова для 5Ί и т. д. Процесс заканчивается, когда для каждой подобласти выполняется критерий останова. В параллельной реализации [12] расчеты в каждой расширенной подобласти выполняет отдельный процессор. После каждой итерации необходимо синхронизировать данные — процессоры должны обменяться значениями решения на линиях Ω12 и Ω21. Рис. 3.3. Пример декомпозиции области решения Синхронизация требует дополнительных затрат времени. Но синхронизацию можно исключить, используя асинхронные итерационные алгоритмы [13]. При реализации асинхронного алгоритма каждый процессор обновляет значение соответствующих компонентов решения, используя доступную ему в данный момент времени информацию о других компонентах решения, полученную от других процессоров или из общей памяти. Доказано [13], что асинхронный итерационный процесс сходится, если сходится итерационный процесс в "синхронной" реализации. 3.7. Методы спуска Эти методы называют методами вариационного типа, потому что определение оптимальных итерационных параметров в этих методах эквивалентно минимизации некоторого квадратичного функционала [14].
Итерационные методы решения систем линейных алгебраических уравнений 143 Пусть решается система (2.2) с симметричной положительно определенной матрицей А. Докажем, что решение этой системы может быть сведено к минимизации функционала J У =^уТАу-утЬ, (3.64) то есть вектор, минимизирующий (3.64), будет точным решением системы Ах = b . Для доказательства преобразуем (3.64) с учетом очевидных равенств: Ах = Ь, χ Ау = у Ах : It τ 1 τ τ 1 τ 1 τ J у =—у Ау-у Ь=—у Ау-у Ах + —χ Ах χ Αχ = -утАу--утАх--хтАу + -хтАх )--хтАх= (3.65) 2 2 2 2 J 2 1 тл ! тА = — у-х А у-х χ Ах. 2 2 1 χ Так как член — χ Ах не зависит от у, то значение J у будет минимально, если 1 τ минимален член — у-х Ау-х. Этот член в силу положительной определенности матрицы А положителен при у - χ φ О и достигает своего минимума, равного нулю, тогда и только тогда, когда у = χ. В методах спуска уравнение Ах = b решается путем минимизации функционала J у . Минимизация производится итерационным путем: строится последователь- г „012 г Т k+l τ k r ность приближении χ , χ , χ ,... так, чтобы J χ < J x . Ьсли на некоторой итерации получается малое значение нормы невязки Ь-Ах* то итерации /с -π- /с /с+\ прекращаются, и χ принимается за решение. Переход от χ κ χ выполня- k k ется в два этапа: сначала находится вектор ρ направления перехода от χ к k+l k+l r к к χ , а затем χ выбирается как точка на прямой χ + αρ , где а — вещественное число. Таким образом к+\ к к /~ ^ s\ х =х +сх/ср . (3.66) В методе скорейшего {наискорейшего) спуска направление движения выбирается противоположным направлению градиента VJ функционала (3.64), то есть движение производится в направлении антиградиента. Это объясняется тем, что локально функционал убывает при движении в этом направлении быстрее всего.
144 Глава 3 Вычислим градиент VJ дух ду2 ду„ (3.64) в компонентной форме а/ а/ а/пТ Для этого запишем функционал ι η η η J У\,Уг,-,Уп = Τ Σ Σ aijУ1У3 ~ ТРгУг , Li=\]=\ i=\ где С1ц — элементы матрицы А . Вычислим компоненты градиента VJ : 3J " ^—=lLamjyj-bm^ т = \,2,...,п. (3.67) В выражении (3.67) учтено, что ненулевые производные дают только слагаемые вида ajmyjym, amjymyj и Ътут при j = 1, 2,..., т,..., η . Учтена также симметрия матрицы А : ajm = am]-. Матричная запись градиента с учетом (3.67) имеет вид VJ у =Ау-Ь, то есть градиент функционала равен невязке с противоположным знаком, так что в качестве направления движения может быть взят вектор невязки. Определение итерационного параметра ak представляет собой задачу одномерной минимизации. Рассмотрим функционал φ α =J χ +αρ , (3.68) который является новым значением функционала (3.64) после одной итерации при изменении вектора решения в направлении антиградиента. В качестве ак имеет смысл выбрать то значение, для которого выполняется равенство φ α/ζ = min φ α . α Преобразуем (3.68) с учетом (3.64): τ k k φ α = J χ +αρ = 1 Τ Τ A k к ι к к к к ■ = — χ +αρ Αχ +αρ -χ +αρ b = 2 (3.69) ί к ί . к α η. i α £ χ £ α к ί . к = —χ Αχ Η—ρ Αχ Η—χ Ар ч ρ Αρ - 2 2 2 2 2 к Τ, к Τ, τ к к Τ к ОС к Τ Λ к -х b-αρ b=Jx -αρ г ч ρ Ар , где г = b — Ах — невязка на к-й итерации.
Итерационные методы решения систем линейных алгебраических уравнений 145 Полученное выражение представляет собой квадратный полином относительно α. и его единственный минимум может быть найден из условия <^φ α k τ k k τ. k „ -ρ г + ар Ар = 0, da откуда получаем α = -Ρ— - = - — . (3.70) р/ТАр/с Ар*,ρ* Так как ρ = г , то оптимальное значение итерационного параметра равно k k *k~Г—. (3.71) Ar ,r Таким образом, (3.66) можно переписать как χ =x +OLkr , (3.72) где ak вычисляется по формуле (3.71). Преобразуя (3.72), получаем - Ах = b - Ах - а/сАг или rk+l =rk -а/сАг/с . (3.73) Выражение (3.73) позволяет вычислять невязку на каждой итерации без вычисле- ния произведения Ах Скорость сходимости метода скорейшего спуска относительно невысокая — примерно такая же, как у метода Ричардсона с оптимальным значением итерационного параметра [7]. Но метод скорейшего спуска не требует сложного вычисления или подбора оптимального итерационного параметра. Рассмотрим применение метода скорейшего спуска для решения модельной задачи (3.6)—(3.7). Алгоритм, естественно, не изменится, но все векторы будем представлять в виде двумерных массивов. Исходя из (3.10), можно записать формулу для компонентов вектора невязки в виде к у h / + ^_1;. +ии]_х-Аиц +ujJ+1+uj+lJ, i,j = l,2,...,m-l. (3.74) При использовании для вычисления невязки выражения (3.73) достаточно по формуле (3.74) рассчитать невязку начального приближения г . Произведение q = Ar ζ ,
146 Глава 3 необходимое для (3.73) и вычисления итерационного параметра (3.71), рассчитывается по формуле к к к л к к к Л ~ л Чц =-r,-i,j-r,,j-i+4r,j -ri,J+i-ri+ij> hj = l,2,...,m-l. m-lm-l . Скалярное произведение г ζ ,г находится по формуле Σ Σ гц ·> скалярное к к m-lm-l ^ ^ произведение Аг ,г вычисляется по формуле Σ Σ Чц гг/ ■ Новое прибли- жение к решению согласно (3.72) формируется по формуле к+1 _ к к ХЦ ~ХЦ +(Xkri] ■ Особенности проверки критерия окончания итерационного процесса были рассмотрены в реализации метода Ричардсона для модельной задачи. Скорость сходимости метода скорейшего спуска падает с ухудшением обусловленности решаемой системы, что хорошо иллюстрирует геометрическая интерпретация метода [3]. Мы доказали, что решение СЛАУ эквивалентно минимизации функционала J у (3.65). Значение J у будет минимально, если минимален член τ у - χ А у - χ . Учитывая симметрию и положительную определенность матри- цы А, построим сингулярное разложение А = UAU , где U — ортогональная матрица, Λ — диагональная матрица, диагональные элементы которой равны положительным собственным значениям матрицы А. Произведем замену перемен- ных ζ = U у - χ . Фактически мы сделали ортогональное преобразование координат. После проделанных преобразований минимизация J у (3.65) эквивалентна минимизации функционала J ζ =ζτΛζ = Χλίζ,2, (3.75) ы где λ^ — собственные числа матрицы А, η — порядок матрицы. Геометрический смысл метода скорейшего спуска рассмотрим для случая η = 2 . Тогда линии уровня функционала (3.75) J z1; z2 = с, где с = const, имеют вид λ^ι + λ2ζ2 = с, то есть являются концентрическими эллипсами (напомним, что каноническое урав- 2 2 Ζ1 ζ1 ι \ нение эллипса при совпадении его осей с осями координат имеет вид — + — = 1). α Ъ Ортогональное преобразование координат ζ = U у - χ означает поворот вокруг центра с сохранением длин и углов. Поэтому линии уровня функционала (3.64) будут эллипсами той же формы, но повернутыми относительно начала координат.
Итерационные методы решения систем линейных алгебраических уравнений 147 Решение СЛАУ определяет начало координат. Полуоси эллипсов равны yjc/λι и у1с/Х2 , а их отношение равно -^/λ2/λ1 . Мы знаем, что спектральное число обусловленности матрицы равно отношению наибольшего сингулярного числа к наименьшему. Для симметричной положительно определенной матрицы собственные числа совпадают с сингулярными числами, следовательно, отношение полуосей эллипсов равно Jcond A . Таким образом, чем хуже обусловленность матрицы, тем более вытянутыми будут линии уровня функционала (3.64). На рис. 3.4 показана геометрическая иллюстрация метода скорейшего спуска для η = 2 . Из точки начального приближения ζ происходит движение в направле- о у, нии, ортогональном линии уровня, проходящей через точку ζ . Движение происходит до точки ζ , в которой J z имеет минимум на выбранном направлении движения. В точке ζ линия движения касается некоторой линии уровня. Даль- 1 неишее движение ортогонально линии уровня в точке ζ и направлению предыдущего движения. Таким образом происходит движение к точному решению, расположенному в центре концентрических эллипсов. Рис. 3.4. Геометрическая иллюстрация метода скорейшего спуска Если матрица А плохо обусловлена, то линии уровня будут сильно вытянутыми эллипсами. В теории оптимизации такой характер функционала называется овражным [15, 16]. Как видно из рис. 3.4, направление градиентного спуска оказывается почти перпендикулярным "дну оврага". Приближения к решению оказываются расположенными то на одном, то на другом "склоне оврага". Вместо движения по "дну оврага" к точке минимума ζ , траектория спуска совершает зигзагообразные движения. Поэтому скорость сходимости метода оказывается очень низкой. Характер спуска не зависит от размерности пространства. Для системы порядка η поверхности уровня будут гиперэллипсоидами, форма которых зависит от обусловленности системы. Кроме метода скорейшего спуска известны и другие методы спуска [7, 14, 17]. Так, в методе минимальных невязок спуск также происходит по направлению невязки,
148 Глава 3 а итерационный параметр ик выбирается из условия минимума нормы к+\ заданной норме при к Это означает, что при фиксированной норме невязки итерационный параметр обеспечивает минимальную норму невязки на следующей итерации. При этом используется евклидова норма вектора ν = J ν, ν . k+l Выберем параметр ак из условия минимума нормы Вычисляя квадрат евклидовой нормы обеих частей равенства (3.73) и учитывая принятое определение нормы вектора, получим 2 к+\ к+\ к+\ - ouAr - ou Ar к к г ,г ^ а к к 2 * к А к ■2а/с Аг ,г +ак Аг ,Аг Норма невязки к+\ к+\ достигает своего минимума в точке ак, в которой дак = О . Эта производная равна нулю при а,, а к к Аг ,г а к * к Аг ,Аг (3.76) Метод минимальных невязок сходится с той же скоростью, что и метод скорейшего спуска. При плохой обусловленности матрицы СЛАУ методу свойственны те же проблемы, что и методу скорейшего спуска. Классические итерационные методы можно рассматривать как методы спуска [6]. Метод Ричардсона в простейшей форме (3.32) представляет метод спуска с постоянным параметром и далеко не всегда обеспечивает достижение минимума функционала (3.64). Метод Ричардсона с подбираемым параметром (3.38) реализует неточный поиск минимума в направлении спуска. Так как метод Яко- би совпадает с методом Ричардсона, примененным к преобразованной (предобу- словленной) системе (3.48), то он также является методом спуска. В методах Зейделя и последовательной верхней релаксации производится координатный спуск. Один шаг координатного спуска — это спуск в направлении одного из стандартных единичных векторов el5 e2,..., еи . Одна итерация этих методов представляет собой η шагов координатного спуска (п — порядок СЛАУ). Рассмотренная геометрическая интерпретация метода спуска объясняет низкую скорость сходимости класссических итерационных методов в случае плохой обусловленности СЛАУ.
Итерационные методы решения систем линейных алгебраических уравнений 149 3.8. Предобусловливатели Как мы уже увидели, при плохой обусловленности СЛАУ итерационные процессы сходятся очень медленно. Чтобы улучшить обусловленность, СЛАУ Ах = Ь заменяется системой М^Ах = М4Ь . (3.77) Матрица Μ называется предобусловливателем (англ. preconditioning), а преобразование (3.77) называется предобуслоелиеанием, иногда используют термины "пред- обуславливание", "переобуславливание" [2, 3, 5, 7]. Хотя система (3.77) эквивалентна системе Ах = b, собственные числа преобразованной матрицы М~ А отличаются от собственных чисел матрицы А . В разд. 1.3.2 приведена оценка числа обусловленно- |λ(Α)| сти через отношение собственных чисел матрицы: cond(A) > р^-. Таким обра- λ(Α) . ι ν Ί mm зом, если матрица М~ А предобусловленной системы (3.77) будет иметь меньший диапазон изменения абсолютных величин собственных чисел, то предобусловлен- ная система будет лучше обусловлена. Матрица Μ должна быть близка к матрице А и обладать свойствами: □ матрица Μ симметрична и положительно определена; □ матрица М~ А хорошо обусловлена; □ СЛАУ с матрицей Μ легко решается. Явно реализовать преобразование (3.77) нецелесообразно из-за сложностей вычисления обратной матрицы. Кроме того, СЛАУ (3.77) имеет несимметричную матрицу, что затруднит решение. Однако легко увидеть, что предобусловливатель Μ представляет собой расщепляющую матрицу (3.14) итерационного процесса. Действительно, пусть А = - Μ-Ν , τ тогда по аналогии с (3.15) Mx/c+1 =Nx/c +тЬ, xk+l =М^ Μ-τΑ xk + тМ_1Ь = х* +τΜ_1 b-Ax/c /с -л я — 1 /с /с А /с = χ + τΜ г = χ + τΔχ , (3.78) где г = b — Ах — невязка исходной СЛАУ на k-й итерации, Δχ = Μ г — поправка к решению. Выражение (3.78) совпадает с формулой (3.38) метода Ричардсона для преобразованной системы (3.77). Из (3.78) видно, что использование предобусловливателя требует определения вектора поправки как решения СЛАУ МАх/с =гк , (3.79) откуда вытекает требование к предобусловливателю.
150 Глава 3 Те же результаты можно получить из так называемого канонического вида итерационного процесса [7, 14] М— xk+1 -xk + Axk = b, (3.80) Ч где А и b — матрица и вектор решаемой системы; Μ — некоторая невырожденная матрица; хк — итерационный параметр; к — номер итерации. Если Μ = Ε — единичная матрица, то (3.80) принимает вид — хк+1 -хк +Ахк =Ъ (3.81) Ч и называется явным итерационным методом, так как в нем очередное приближение явно выражается через предыдущее: к+\ к ι . к к к х =х +хк Ь-Ах =х +ЧГ ' где г ζ — невязка (ср. с (3.72)). Если Μ φ Ε, то итерационный метод называется неявным, так как требует на каждой итерации решения вспомогательной системы уравнений (3.79). Выбор предобусловливателя является сложной задачей. Требования к предобуслов- ливателю противоречивы: выбор Μ = А минимизирует число обусловленности преобразованной матрицы М~ А, но делает решение системы (3.79) столь же трудным, что и решение исходной системы. Выбор Μ = Ε делает решение системы (3.79) тривиальным, но не изменяет число обусловленности преобразованной СЛАУ. Известны различные способы предобусловливания [2, 3]. Если диагональные элементы матрицы А сильно различаются, то можно использовать диагональный предобусловлива- телъ Якоби Μ = diag ап, α22, ■■-,#„„ · Ранее (см. (3.48)) было фактически доказано, что метод Якоби представляет собой метод Ричардсона с диагональным предобу- словливателем. Блочные итерационные методы используют блочно-диагональные предобусловливатели (3.62). SSOR-расщепление представляет собой выполнение одной или нескольких итерации SSOR к СЛАУ ΑΔχ = г . Выполнение ограниченного числа итераций эквивалентно точному решению системы (3.79) с матрицей М, близкой к матрице А . Использовать SOR в качестве предобусловливателя не следует, так как его расщепляющая матрица не симметрична. Если матрица А является разреженной, то в качестве предобусловливателей используют неполную факторизацию [11, 18] матрицы А. Неполная факторизация сохраняет разреженный характер исходной матрицы А, что упрощает хранение матриц и решение систем. Для матриц А общего вида используется ILU- факторизация (Incomplete LU). Как известно, в случае разреженных матриц LU- факторизация приводит к появлению ненулевых элементов матриц L и U в тех местах, где в матрице А стояли нули. ILU-факторизация сохраняет портрет матрицы, то есть на месте нулевых элементов исходной матрицы А сохраняются
Итерационные методы решения систем линейных алгебраических уравнений 151 нулевые элементы в разложении. Матрицы неполной факторизации, естественно, отличаются от матриц полной факторизации. В случае ленточных симметричных положительно определенных матриц А используется неполная факторизация Хо- лецкого. Как известно, факторизация Холецкого сохраняет ленточный характер исходной матрицы, но нулевые элементы внутри ленты могут стать ненулевыми. Неполная факторизация Холецкого или сохраняет портрет исходной матрицы, или заполнение нулевых элементов исходной матрицы происходит при превышении элементом разложения некоторого заданного порога. Известны неявные двухслойные итерационные методы вариационного типа [7, 14, 17], отличающиеся от ранее рассмотренных способом вычисления итерационного параметра хк . Так, в неявном методе скорейшего спуска итерационный параметр вычисляется по формуле xk= rk ,Axk / ΑΔχ* ,Δχ* , (3.82) итерационный параметр в неявном методе минимальных невязок имеет вид τλ=ΑΔχ*,Γ* /αΔχ^,ΑΔχ* . (3.83) В выражениях (3.82) и (3.83) поправка к решению Δχ с определяется как решение системы (3.79). Новое приближение решения находится по формуле k+ι k . k χ = χ + τ/ζΑκ 3.9. Методы подпространств Крылова 3.9.1. Краткие сведения из функционального анализа и линейной алгебры Понятие пространства Предварительно вспомним некоторые понятия линейной алгебры и функционального анализа1. Пространство — это множество некоторых объектов (чисел, функций и т. д.), между которыми устанавливаются определенные соотношения, аналогичные соотношениям в элементарном трехмерном пространстве. Функциональное пространство — это пространство, элементами которого являются функции или числовые последовательности. Множество X называется метрическим пространством, если каждой паре его элементов хну поставлено в соответствие расстояние между 1 Излагаемый материал не претендует на математическую строгость и полноту. Строгое изложение затрагиваемых вопросов можно найти в книгах по функциональному анализу, например, в [19, 20], по линейной алгебре [6, 17, 21—24], краткое изложение основных положений функционального анализа можно найти в [25], краткое изложение основных положений линейной алгебры можно найти в [26].
152 Глава 3 элементами χ и у (метрика пространства X) рх х,у . Метрика — это функция двух аргументов, удовлетворяющая аксиомам метрики: Π рх х,у >0, рх х,у = 0 тогда и только тогда, когда х-у (аксиома тождества); Π ρχ х,у =рх у,х (аксиома симметрии); Π ρχ х,у <рх χ,ζ +ρχ z,y (аксиома или неравнество треугольника). Если ясно, о каком метрическом пространстве идет речь, то вместо рх у, ζ пишут ρ у,ζ . Элементы метрического пространства также называют точками. На одном и том же множестве метрику можно ввести по-разному, при этом получаются разные метрические пространства. Поэтому, точнее говоря, метрическое пространство представляет собой пару Х,р , состоящую из множества X и метрики р. Пусть имеется множество icJ. Расстоянием от точки χ до множества А называется число ρ χ,Α = inf ρ χ, у , где inf ■ означает точную нижнюю границу. Множество Ε , состоящее из элементов x,y,z,..., называется линейным пространством над скалярным полем Л, если в нем определены операции сложения (х + у еЕ) и умножения на скаляр (ХхеЕ при λе Л). Линейное пространство называют также векторным пространством, а его элементы — векторами. Операции сложения и умножения на скаляр должны удовлетворять следующим аксиомам: □ х + у = у + х (коммутативность сложения); □ х + у + ζ = х+ у + ζ (ассоциативность сложения); □ λ μχ = λμχ (ассоциативность умножения); □ λ + μχ = λχ + μχ, λ х + у =Хх + Ху; Π существует элемент 0 е Ε, такой, что χ + 0 = χ; □ 1·χ = χ,0·χ = 0 (слева 0 — скаляр, справа — элемент множества Ε ). В качестве скаляров в линейном пространстве обычно берутся вещественные или комплексные числа. В первом случае пространство называется вещественным (действительным) линейным пространством, во втором — комплексным линейным пространством. Примерами линейных пространств являются множество вектор-столбцов, множество матриц. Линейное пространство X называется нормированным пространством, если на множестве его элементов хеХ определена вещественная функция, называемая нормой. Норма обозначается ||х|| и должна удовлетворять условиям (ср. с определением нормы вектора в разд. 2.1): □ |х| > 0 , и если |х| = 0, то χ = 0 ; □ |λχ| = |λ|·|χ|; □ |х +j|<|x| + |j|.
Итерационные методы решения систем линейных алгебраических уравнений 153 В нормированном пространстве можно определить метрику по правилу ρ χ, у = |х - j||. Скалярное произведение элементов χ и у вещественного линейного пространства определяется как функция х,у , принимающая вещественные значения и удовлетворяющая условиям: □ χ, χ > 0, х,х=0 тогда и только тогда, когда х = 0 ; □ х,у = у,х ; □ x + y,z = χ,ζ + у,ζ ; □ λχ, у = λ χ, у для любого вещественного λ . Вещественное линейное пространство, в котором введено скалярное произведение х,у , называется евклидовым. Скалярное произведение порождает норму |х| = J х, х и соответствующую метрику, так что евклидово пространство— частный случай нормированного пространства. В линейной алгебре широко используется понятие пространства арифметических векторов. Арифметическим вектором х= х1,х2,...,хп называется упорядоченная совокупность η чисел х15х2,...,хи, называемых компонентами арифметического вектора. Для арифметических векторов определены операции сложения векторов и умножения вектора на число (скаляр): для любых векторов х= х1,х2,...,х„ , у= уъу2,...,уп и любого числа α по определению х + у= х1+у1,х2+у2,...,х„+у„ , αχ= ахьах2,...,ахи . Множество арифметических векторов, для которых определены операции сложения и умножения на число, называется арифметическим (координатным) пространством R" или пространством арифметических векторов. Пространство R" является нормированным. В нем могут быть введены нормы, рассмотренные в разд. 2.1: η ||AHl Zj|a/|' ;=1 Скалярное (внутреннее) произведение в R" определяется формулой х,у ='Yuxiyi ■ i=\ Скалярное произведение порождает норму |x|L, которую часто называют длиной вектора χ и обозначают |х|. Можно также ввести косинус угла между ненулевыми х,у векторами χ и у по формуле cos(cp) = . . . . . 4 = ( " 2λ 1/2 ·> IIх! = max|x;
154 Глава 3 Для положительно определенной матрицы А индуцированное скалярное (внутреннее) произведение или энергетическое скалярное произведение определяется следующим образом: х,у = Ах, у =у Ах = х Ау . Скалярное произведение, индуцированное положительно определенной матрицей А, обладает теми же свойствами, что и "стандартное" скалярное произведение (которое индуцировано единичной матрицей Е). С энергетическим скалярным произведением связана энергетическая норма |х| = J х,х . Термин "энергетическая" в названии нормы 1 связан с тем, что в задачах теории упругости член — у, у представляет запасен- 2 А ную в деформированной структуре энергию напряжения. Базисы и операторы Вектор у пространства М" линейно выражается через векторы х1,х2,..., хт el", если его можно представить в виде линейной комбинации этих векторов, то есть записать в виде у = щх^ + а2х2 +... + ытхт. Числа щ, а2, ■.., о.т называются коэффициентами линейной комбинации. Система векторов х1,х2,..., хт el" называется линейно независимой, если из того, что щх^ +а2х2 +... + атхт = О следует равенство нулю всех коэффициентов щ = 0, а2 = 0,..., аи = 0. Система векторов, которая не является линейно независимой, называется линейно зависимой. Система векторов х^,х2,..., хт е!" линейно зависима тогда и только тогда, когда хотя бы один вектор системы лине й- но выражается через остальные векторы системы. Конечная подсистема заданной системы векторов называется максимальной линейно независимой, если эта подсистема линейно независима, а добавление к ней хотя бы одного нового вектора системы делает ее линейно зависимой. Каждый вектор системы линейно выражается через векторы ее максимальной линейно независимой подсистемы. Любые две максимальные линейно независимые подсистемы данной системы содержат по одинаковому числу векторов. Базисом линейного пространства называют максимальную линейно независимую систему векторов е15е2,...,еи этого пространства. Линейное пространство называется конечномерным, если оно обладает хотя бы одним конечным базисом. В линейной алгебре изучаются конечномерные линейные пространства, а пространства, в которых любой базис содержит бесконечное число элементов, изучаются в функциональном анализе. Конечномерное пространство может обладать многими базисами, но число векторов в каждом базисе будет одинаковым. Это число называется размерностью пространства. Если η — размерность пространства X, то это записывается как dim X — η . Пространство при этом называется η -мерным и обозначается X" (используют также обозначение Х„). Размерность арифметического пространства
Итерационные методы решения систем линейных алгебраических уравнений 155 - η . В пространстве R" часто в качестве базиса используют систему равна dim! векторов е1= 1,0,0,...,0,0 \ е2= 0,1,0,...,0,0 \ ..., еи= 0,0,0 которая называется естественным базисом пространства К" . Если линейное пространство X" обладает базисом v: vl5v2 вектор χ е X" единственным образом представляется в виде 5 "5 "5 " * "5 ? 0,1 \„, то любой X = X1V1+X2V2+... + X„V„= Vj V2 ... \„ · Χι Х2 ··· Х„ · Числа х1,х2,...,хи называются координатами вектора χ в базисе. v1,v2,...,vw Вектор τ х\ х2 называют столбцом координат вектора χ в базисе, ν При выбранном базисе векторы полностью определяются своими координатами. Обычно вектор отождествляется со столбцом своих координат. Операции сложения векторов и умножения вектора на число сводятся к операциям над их координатами. Рассмотрим преобразование координат при переходе от базиса к базису. Пусть в пространстве R" заданы два базиса v1,v2,...,vw и wl5w2,...,ww . Каждый вектор w; базиса wl5w2,...,ww как вектор пространства R" может быть разложен по базису vbv2,. W, W- W, ,V, +W9,V9 +...+W„iV 11*1 "21v2 n\ vn' WnVi +WooV9 +...+W„9V "12 "1 "22T2 h2th' (3.84) Матрица, составленная из столбцов координат векторов w в базисе vl5v2, w- 11 W 12 W- In W 21 W 22 W 2n W„ W„ W„ vn\ wn2 называется матрицей перехода от базиса v1,v2,...,vw к базису wl5w2,...,ww. Пусть V = Vj v2 ... v„ — матрица, векторы-столбцы которой представляют собой векторы базиса v1,v2,...,vw, аналогично, матрица W = Wj w2 ... w„ составлена из векторов-столбцов базиса wl5w2,...,ww. Тогда соотношение (3.84) между базисами можно записать в матричном виде W = VC . Матрица С обратима, поэтому V = WC . Любой вектор χ е R" линейно выражается через векторы обоих базисов, то есть х = xlVl +x2v2 +... + х„х„ =ylwl +y2w2 +...+ynwn
156 Глава 3 Связь между столбцами координат xv = jq х2 ... хп и xw = ух у2 ... уп вектора χ в базисах \ъ\2,...,\п и wbw2,...,w„ имеет вид xv=Cv^wxw> xw = CyH>wxv> гДе Cv^.w — матрица перехода от базиса V= Vj v2 ... у„ к базису W = Wj w2 ... w„ . Если каждому вектору χ е К" ставится в соответствие единственный вектор у е Шт , то говорят, что задан оператор, действующий из пространства R" в пространство Шт. Если исходное и конечное пространства совпадают, то говорят об операторе, действующем в R" . Результат действия оператора φ на вектор χ обозначают у = φχ , при этом у называют образом вектора χ, вектор χ называют прообразом вектора у . Множество элементов пространства R"1, которые являются образом хотя бы одного элемента, называют образом оператора. Оператор φ, действующий в пространстве R" , называется линейным оператором, если для любых х, у из Iй и для любого числа α справедливы равенства φχ + y =φχ + ер у и φ αχ =αφχ . Если под χ и у понимать векторы-столбцы координат, то любой линейный оператор можно записать как умножение на некоторую матрицу А : у = Ах . Эта запись связывает вектор-столбец у координат образа с вектором-столбцом χ координат прообраза. Здесь А — квадратная матрица, столбцами которой являются координаты образов соответствующих базисных векторов некоторого базиса в R" . Если линейный оператор φ в базисе V имеет матрицу Αν , то в базисе W он имеет, вообще говоря, другую матрицу Aw. Матрицы оператора в разных базисах связаны соотношением Aw = Cy^wAyCv^w' где Cv^>w — матрица перехода от базиса V к базису W . Матрицы Aw и Av называются подобными. Линейный оператор φ может действовать из пространства Хп с базисом V в пространство Ym с базисом W . Такому оператору соответствует прямоугольная матрица Awy размера тхп . Столбцами матрицы А^уу являются столбцы координат образов векторов базиса V, взятые в базисе W . При переходе в пространстве Хп от базиса V к базису V и от базиса W к базису W в пространство Ym матрица оператора φ в новых базисах Awv связана с матрицей А^уу соотношением Awy = Cw^,wAwvCv^.v'' где CW->W' и Су_>у' — матрицы перехода от одного базиса к другому. Матрицы Awv и А^уу называются эквивалентными.
Итерационные методы решения систем линейных алгебраических уравнений 157 Подпространства Подпространством в R" называется непустое подмножество S из R" такое, что для любых векторов v,we5 и скаляра eel имеем v + weS и с\ е S. Число к называется размерностью линейного подпространства S и обозначается dim S = к, если в подпространстве S существует система из к линейно независимых векторов, а любые к + \ векторов линейно зависимы. Из определения нетрудно увидеть, что к <η . Линейной оболочкой векторов vj, v2,..., vm, обозначаемой как span v1,v2,--.,vm , называется множество всевозможных линейных комбинаций qvj + c2v2 +... + cmvm. Линейную оболочку векторов называют еще подпространством, порожденным системой векторов vl5 v2,..., \т или подпространством, натянутым на систему векторов vj, v2,..., vm. Линейная оболочка является подпространством в R" . Матрицей проектирования, или проектором пространства X на его подпространство Υ называется матрица А, такая, что, во-первых, при всех хеХ выполняется Ах е7 и, во-вторых, при всех у е Υ верно Ау = у . Векторы х,уе Ж" называются ортогональными, если х, у = 0 . Система xl5 х2,..., хк векторов из пространства К" называется ортогональной, если векторы системы попарно ортогональны. Ортогональная система ненулевых векторов линейно независима. Система векторов называется ортонормированной, если векторы системы попарно ортогональны и имеют единичную длину. Базис пространства R" называется ортонормированным базисом, если он образует ортонормированную систему. Естественный базис пространства R" является ортонормированным базисом. В ортонормированном базисе е15е2,...,еи выполняются условия [О при i Φ у, [1 при ι = j. Пусть S — произвольное подпространство в R" . Ортогональное дополнение к S обозначается как S (произносится как перпендикулярное к S) и определяется как множество векторов из R" , ортогональных к S : S = хеК" х,у = 0 для всех у е S . Ортогональное дополнение любого множества является подпространством. Если S — произвольное подпространство в К" , то для любого вектора хеК" существуют однозначно определенные векторы s e S и s e S , такие, что χ = s + s . Векторы s и s называются ортогональными проекциями χ на S и S .
158 Глава 3 Понятие наилучшего приближения Рассмотрим понятие наилучшего приближения. Если S — подпространство пространства R", то вектор χ е S называется вектором наилучшего приближения для вектора у е Ж" посредством векторов подпространства S, или ближайшим к у вектором подпространства S, если для любого вектора ζ е S выполнено неравенство у-х < y-z . Другими словами, χ е S называется ближайшим к у вектором, если |у-х| = min|y-z|. zeS Можно показать, что наилучшим приближением к вектору у на подпространстве S будет ортогональная проекция у на это подпространство. Другими словами, наилучшим приближением к вектору у на подпространстве S будет единственный вектор χ из S, для которого ошибка у-х ортогональна каждому вектору из S. Приближения могут измеряться как в евклидовой, так и в энергетической норме. В последнем случае задача о наилучшем приближении имеет следующее решение. Пусть Η — некоторая положительно определенная матрица. Если х, у = 0 , то векторы χ и у называются Η -ортогональными и это записывается как χ _Ι_Η у . Пусть Η е К"х" — положительно определенная матрица, у е Ж" и S — подпространство в Ш" . Тогда существует единственный вектор хе S, для которого ||у - х|| = min|y - z|| . При этом у-х _Ι_Η ζ для всех ζ е S . 3.9.2. Проекционные методы Идея проекционных методов [27—30] состоит в том, что решение системы линейных алгебраических уравнений находится итерационным методом в некоторых подпространствах пространства Ш" . Чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. Пусть решается система Ах = b с квадратной невырожденной матрицей А и ненулевым вектором b, составленными из действительных чисел. Имеются два подпространства К d R" и IcR". Требуется найти вектор χ еК , который обеспечивает решение системы, оптимальное относительно подпространства L, то есть требуется выполнение условия Петрова—Галёркина1 Αχ,ζ = b,z для любого ζ е L . (3.85) 1 Георгий Иванович Петров (18 (31) мая 1912 — 13 мая 1987) — российский ученый, специализировавшийся в области гидроаэромеханики и газовой динамики. Борис Григорьевич Галёркин (20 февраля (4 марта) 1871 — 12 июля 1945) — российский инженер и математик, работавший в области теории упругости.
Итерационные методы решения систем линейных алгебраических уравнений 159 Вектор χ называется обобщенным решением системы Ах = Ь [20]. Используя определение вектора невязки г = b - Ах, запишем (3.85) в виде b-Αχ,ζ = г,ζ =0 для любого ζ е L . (3.86) Выражение (3.86) означает ортогональность вектора невязки подпространству L: г _L L . Таким образом, необходимо найти вектор χ е К , такой, что г = b — Ах _L L . То есть поставленная задача является задачей проектирования решения χ на подпространство К ортогонально подпространству L. о * Пусть для системы Ах = b известно приближение χ к точному решению χ . Требуется уточнить это приближение поправкой 8<еК , так, чтобы невязка уточненного решения была ортогональна подпространству L: b-Ax +5-LZ. Невязка уточненного решения имеет вид rnew = Ь - А Х° +5 =Г° -Αδ, где г = b — Ах — исходная невязка. Условие Петрова—Галёркина тогда можно записать так: rnew,z = г -Αδ,ζ =0 для любого ζ е L . (3.87) Пусть подпространства К и L имеют одинаковую размерность dimK = dimL = m . Пусть V = vb ..., vm — матрица размера пхт , столбцы которой формируют базис подпространства К и аналогично W= wb...,wm —матрица размера η χ т , столбцы которой формируют базис подпространства L . Запишем новое приближение решения в виде х1 =χ° +δ = χ° +Vy, (3.88) где у — вектор коэффициентов разложения вектора δ по базису V : δ = Vy . Вектор ζ е L также разложим по базису: ζ = Wq . Тогда из условия ортогональности (3.87) получаем r° -AVy,Wq = WT r° -AVy ,q =0. Так как q φ 0, то получаем систему уравнений для вектора у : WTAVy = WTr ° . Если предположить, что матрица W AV (которая имеет размер тхт) неособенна, то у= WTAV " WTr ° (3.89) и новое приближение решения имеет вид χ1 = χ ° + V WTAV " WTr ° . (3.90)
160 Глава 3 Из (3.90) следует, что подпространства К и L, а также их базисы должны выбираться так, чтобы матрица W AV была неособенной, что не гарантировано, даже когда матрица А неособенна [27]. В двух практически важных случаях неособен- ность матрицы W AV гарантируется, если матрица А и подпространства К и L удовлетворяют любому из двух условий: □ А положительно определена и L = К ; □ А произвольная неособенная и L = АК. Тогда матрица В = W AV неособенная для любых матриц базисов V и W подпространств К и L соответственно. Рассмотрим сначала первый случай. Пусть V — любой базис подпространства К и W — любой базис подпространства L. Так как L и К одинаковы, W всегда можно выразить как W = VG, где G — неособенная матрица преобразования базисов размера тхт. Тогда B = WTAV = GTVTAV Так как А положительно определена, то она является неособенной [3]. Тогда Vх AV также является неособенной как матрица, подобная матрице А. Матрица В будет неособенной как произведение неособенных матриц. Теперь рассмотрим второй случай. Пусть V — произвольный базис К и W — произвольный базис L . Так как L = АК, то W можно записать как W = AVG , где G — неособенная матрица преобразования базисов размера тхт. Тогда В = WTAV = GT AV T AV Так как А — неособенная матрица размера η χ η, то матрица AV имеет пол- т ный ранг и, значит, AV AV неособенная. Это доказывает, что В неособенная матрица. В общем виде алгоритм проекционного итерационного метода выглядит так: 1. Выбрать пару подпространств К и L. 2. Найти базисы V= \1,...,\m и W= w1;...,wm для К и L. 3. Вычислить г = b - Ах . 4. Найти у= WTAV " WTr . 5. Положить χ = χ + Vy . 6. Если не достигнуты условия сходимости, повторить, начиная с п. 1. Как мы увидим далее, в реальных алгоритмах нет необходимости формировать τ -1 матрицу W AV Мы пока не доказали, что алгоритм проектирования подпространств приводит к решению СЛАУ. В разд. 3.7 было доказано, что решение СЛАУ с симметричной
Итерационные методы решения систем линейных алгебраических уравнений 161 положительно определенной матрицей эквивалентно минимизации функционала (3.64). Исходя из (3.65), вектор χ является решением СЛАУ Ах = b, если он минимизирует функционал ошибки 1 ** * 1*1* J x = — χ — χ Αχ —χ χ Ах 2 2 (3.91) где χ — точное решение СЛАУ. Так как слагаемое — χ Αχ не зависит от х, то минимизация функционала (3.91) эквивалентна минимизации функционала Ε χ = χ —χ Α χ —χ χ —χ (3.92) где χ —χ энергетическая норма. Теперь докажем следующее утверждение [27, 30]. Если матрица А симметрична и положительно определена, a L = К (подпространства L и К совпадают), то задача проектирования решения СЛАУ на подпространство К , исходя из начального приближения χ , эквивалентна задаче минимизации функционала (3.92) на подпространстве К . Для доказательства учтем, что при L=K базисы можно выбрать, чтобы выполнялись соотношения V = W , и предположим, что они так и выбраны. Так как уточненное решение, полученное из приближения χ , мы обозначили χ + Vy , то функционал ошибки (3.64) равен τ Ε γ = χ +Vy Ax +Vy -2bT χ +Vy = 0 T λ Ο Τ,τΤ . О О Т Λ,τ = х Ах +yVAx +х A Vy + + yTVTAVy-2bTx° -2bTVy (3.93) 0 л uT x A-b 0 ,Τ 0 ~ χ -b x +2 J 0 λ uT x A-b ν Vy + yTVTAVy J ο τ ο .το ~ ο τ ,τ τ „τη, r χ -bx -2 r Vy + y V AV y. В (3.93) учтены симметрия матрицы: А = А, свойства скалярного произведения: τ τ ТО ТО ТО ОТ b χ + Vy b = b x + Vy b, Vy Ax = χ A Vy и выражение вектора невязки начального приближения: г = b — Ах
162 Глава 3 Функционал (3.92) является строго выпуклым. Поэтому для определения вектора у, минимизирующего функционал, достаточно решить систему VE у = 0 , где VE у — вектор градиента функционала (3.93), равный [6] VE у =2VTAVy-2VTr ° (3.94) Приравнивая (3.94) к нулю, получим у= VхAV_ VTr° . (3.95) Выражение (3.95) совпадает с выражением (3.89) при V = W . Таким образом, проекционное уравнение (3.89) является эквивалентной формулировкой задачи минимизации функционала ошибки на подпространстве L = K . Рассмотрим теперь СЛАУ с произвольной невырожденной матрицей А и подпространство L = АК. Докажем [27, 30], что в этой ситуации задача проектирования решения СЛАУ на подпространство К ортогонально подпространству L, исходя из начального приближения χ , эквивалентна задаче минимизации функционала II ■■ 2 невязки Ε χ = b - Ах на подпространстве К . Для доказательства учтем, что при условии L = АК базисы можно выбрать, чтобы выполнялось соотношение W = AV . Подставив это соотношение в (3.89), получим у= VTATAV " VTATr ° . (3.96) Выражение (3.96) показывает, что рассматриваемая ситуация эквивалентна выбору L=K для симметризованной СЛАУ А Ах = A b . Матрица А А является положительно определенной. Энергетическая норма для матрицы А А и вторая норма связаны соотношением «х-х = Α Α χ χ , χ χ = Α χ χ , Α χ - χ = Иата (з.97) II l|2 = Αχ-b , Αχ-b = b-Αχ , b-Ax =||b-Ax|| Учитывая (3.97) и применяя к симметризованной системе предыдущий результат, получаем сформулированное утверждение. Мы рассмотрели основной шаг проектирования. Итерационные методы используют последовательность таких проектирований. Как правило, новый шаг проектирования использует новую пару множеств L, К и начальное приближение, равное новому приближению, полученному на предыдущем шаге. В простейшем случае в качестве подпространств L и К выбирают одномерные пространства. Пусть К = span ν и L = span w , где ν и w — два вектора. Тогда новое приближение строится по формуле k+l k k χ =χ +(%ν
Итерационные методы решения систем линейных алгебраических уравнений 163 Коэффициент ak находится из условия Петрова—Галеркина (3.87), которое при- k . к к п к к . к к п мет вид г -a/cAv ,w = U, или г ,w -ak Αν ,w = 0, откуда ak = r ,w / Αν ,w . Примем ν =w =r c , то есть в качестве одномерного подпространства возьмем вектор невязки. Тогда ак = г , г / Аг , г , значит, мы получили метод скорейшего спуска. Ьсли выбрать ν = г и w = Аг , то ак = Аг , г / Аг , Аг , что соответствует методу минимальных невязок. 3.9.3. Подпространства Крылова Эффективные проекционные методы можно построить, если в качестве подпространств выбрать подпространства Крылова (крыловские подпространства, англ. — Krylov subspace) [27—30]. Идею таких подпространств предложил в 1931 г. Алексей Николаевич Крылов — русский кораблестроитель, специалист в области механики, математик . Для целого положительного т , заданных вектора ν и матрицы А т -е подпространство Крылова Кт Α, ν , порожденное матрицей А и вектором ν, определяется следующим образом: Кт Α, ν = span ν, Αν, Α2ν,..., Am_1v . То есть подпространством Крылова называется множество всевозможных линейных комбинаций векторов ν, Αν, Αν,..., Αν . В качестве вектора ν обычно выбирается невязка начального приближения г К идее использования подпространств Крылова можно прийти следующим образом [28]. Рассмотрим итерационный метод Ричардсона, в котором новое приближение строится по формуле хк =хк-1 +ГЫ , (3.98) к-\ , . к-\ где г = b - Ах — невязка. Тогда (3.98) можно представить в виде к 0 0 1 2 Аг—1 ,~ „„ч х =х +г +г +г +... + Г (3.99) Умножив обе части равенства (3.98) на —А и прибавив b , получим Ь-Ах* =Ь-Ах*-1 -Аг*-1 = Е-А хкЛ , 1 Крылов, А. Н. О численном решении уравнения, которым в технических вопросах определяются частоты малых колебаний материальных систем // Известия АН СССР, отделение математических и естественных наук. 1931, №4. —с. 491—539.
164 Глава 3 где Ε — единичная матрица. Значит, невязку на к-й итерации можно выразить через невязку начального приближения: г4 = Е-АгЫ = Е-А4г°. (3.100) После подстановки (3.100) в (3.99) получаем к 0 X = X + (k-i Л Σ Ε-Α J и=° ) г° . (3.101) Можно считать, что χ получается из χ уточнением поправкой δ к 0 с. к х =х +о Из (3.101) видно, что δ* espan γ0,Αγ0,Α2γ°,...,ΑαΛ0 =Кк А, г ° , то есть поправка ищется в подпространстве Крылова. 3.9.4. Методы ортогонализации Процедура Грама—Шмидта В главе 2 мы познакомились с такими ортогональными преобразованиями, как вращения Гивенса и отражение Хаусхолдера. В проекционных методах ортогона- лизация используется для построения базисов. В основе такой ортогонализации лежит ортогонализация (процесс, процедура) Грама—Шмидта (Jorgen Pedersen Gram, Erhard Schmidt) [3, 31]. Процедура Грама—Шмидта позволяет от любой линейно независимой системы векторов vj, v2, ■ ■ ■, \т е Шп перейти к ортонормиро- еанной системе векторов ql5 q2,..., q;„ et", таких, что линейные оболочки, натянутые на первые к векторов из этих двух наборов, совпадают при всех к : span q1 =span vj , span q1;q2 =span v1;v2 , span q1;q2,q3 =span v1;v2,v3 , (3.102) span q1,q2,...,qm Чтобы удовлетворить условию span qj = span Vj , возьмем qj кратным vj. Условие ортонормированное™ требует выполнения равенства IqJ =1. Примем 1 II II τ qj =—Vj, где rn = vJ . 1ак как векторы vl5 v2,..., v.„ линейно независимы, то ПМ llz 1 Vj ^0, следовательно, rn ^0. Из равенства q1=—Vj следует, что qj e span Vj , П1
Итерационные методы решения систем линейных алгебраических уравнений 165 значит span ql cz span vl . С другой стороны, из равенства ν\=>\ι(1ι следует, что Vj e span q1 , следовательно, span vj cj span qj . Такое может быть только при равенстве подпространств span q1 = span vj . На втором шаге найдем вектор q2, такой, что q2 ортогонален qj, |q2| =1 и span qb q2 =span v1; v2 . Используем графическую иллюстрацию [3] (рис. 3.5). Рис. 3.5. Вычисление q2 На рис. 3.5 пространство span v1;v2 представляет собой плоскость страницы. Необходимо построить такой вектор q2, что векторы qj и q2 образуют ортонорми- рованное множество, линейной оболочкой которого является плоскость страницы. Из рис. 3.5 видно, что можно построить вектор q2, лежащий в плоскости страницы и ортогональный вектору qj, вычитая из v2 вектор qj, умноженный на некоторый множитель: Ч2=У2"П2ЧЬ (3.103) где г12 — скаляр, который должен быть выбран так, чтобы q2,qj = 0 . Коэффициент г12 найдем из условия ортогональности векторов q2 и q^. Для этого умножим (3.103) скалярно на вектор qj q2,4i = v2,4i ~r\2 Ч\Л\ ■ (3.104) II μ 2 Учитывая, что qi,qi =||q1|L =1, из (3.104) и условия q2,qj =0, получаем ru= v2,qi . Определим вектор q2 - — q2, где r22 = q2 , причем q2^0 и, соответственно, r22 2 г22 φ 0 . Действительно, в противном случае из (3.103) имеем v2 = aj24i e sp^m 4i ·
166 Глава 3 Но из линейной независимости векторов vj и v2 следует, что v2£span vj =span q1 . Очевидно, что |q2|2 =1 и qi,q2 =0. Покажем, что span qi,q2 =span v1;v2 .Действительно, qjespan vj с span v1;v2 . Кроме того, q2espan qi,v2 =span vbv2 . Так как ql e span v1;v2 и q2espan v1;v2 , имеем span ql5q2 с span v1;v2 . С другой стороны, vjespan ql с span ql5q2 и v2 =r12q1 +q2 =r12qi +%q2 espan ql5q2 . Эти соотношения показывают, что span q1;q2 =span v1;v2 . Рассмотрим к-й шаг процедуры. Допустим, что уже найдены ортонормированные векторы qbq2,..., q^ ι такие, что span q1,q2,...,q! =span \1,\2,...,\l , i = 1, 2, ...,k-l. Определим вектор qk. Аналогично (3.103) найдем вектор qk: k-l 4k=vk-Trik<li- (3·105) Коэффициенты rjk найдем из условия ортогональности вектора qk векторам q;, j = \,2,...,к-\, то есть из условия q/c,q7 = 0, J= 1> 2, ...,к-\. Для этого умножим (3.105) скалярно на вектор q : v*,q.,- "Σ% Я/,Яу =05 J = l,2,...Д-1. (3.106) Из условия ортонормированности векторов имеем qk, q =0 при к Ф j и qk, q7 =1 при £ = у'. Тогда из (3.106) получаем r&= yk,qj , 7=1,2,...Д-1. (3.107) Легко доказать, что qk Φ 0 . Действительно, предположив, что q/c = 0 , из (3.105) к-\ получим \к = Σ rjkqj e span qb q2,..., qyt_1 . Но это противоречит линейной незави- i=l симости векторов vb v2,..., \к, из которой следует, что \k <£ span v1; v2,..., vk_l = = span ql, q2,..., qkA . Положим rkk = \qk ||2 > 0 , тогда q*=— % (3-108) Несложно проверить (см., например, [3]), что при таком построении векторов выполняется условие span q1,q2,...,q/i; =span v1; v2,..., \k .
Итерационные методы решения систем линейных алгебраических уравнений 167 Существует прямая связь между процедурой Грама—Шмидта и QR-разложением: ортогонализация Грама—Шмидта эквивалентна QR-разложению. Действительно, из (3.105) с учетом (3.108) получаем к yk=Trik4i, к = 1,2,..., т. Если обозначить через V= \1,\2,---,Ут е1"хж и Q= q1;q2,...,qm е!"ш матрицы, столбцы которых представляют соответствующие векторы, а матрицу коэффициентов записать в виде еЖтхт, (3.109) то преобразование Грама—Шмидта запишется в матричном виде V = QR , где R — верхняя треугольная матрица с положительными элементами на главной диагонали (так как rkk >0), Q — изометрическая матрица (матрица, столбцы которой ортонормированы). С помощью процедуры Грама—Шмидта можно вычислить QR-разложение матрицы V полного ранга. Для этого следует применить процедуру Грама—Шмидта к столбцам vj, v2, ■·■, v;„ матрицы V. В результате получим множество ортонор- мированных векторов qb q2,..., qm, являющихся столбцами матрицы Q, и коэффициенты rik, из которых по формуле (3.109) строится матрица R. С другой стороны, QR-разложение можно применить для ортонормирования векторов. Пусть необходимо ортонормировать линейно независимые векторы vj, v2, ■■·, vm ■ Построим матрицу V= v1,v2,...,vm . Построим QR-разложение матрицы V. Это разложение является единственным. Столбцы матрицы Q представляют собой искомые ортонормированные векторы. Таким образом, ортогонализация Грама— Шмидта эквивалентна QR-разложению. Описанная процедура Грама—Шмидта оказывается численно неустойчивой. Ошибки округления приводят к потере ортогональности векторов q . Известна модифицированная процедура Грама—Шмидта, которая является численно устойчивой. В классической процедуре Грама—Шмидта сначала по формуле (3.107) вычисляются все коэффициенты rik, а затем по (3.105) вычисляется qk. В модифицированной процедуре коэффициенты rik вычисляются по одному. Как только вычислен коэффициент ru = \k,q^ , он сразу используется для обновления \к : \к =У/С- Ц_иЧ\. При этом вектор \к оказывается ортогонален ql. Следующий коэффициент г2/с вычисляется с использованием \к вместо \к, то есть берется R Ί1 '12 ■■■ '\т 0 >22 ■■■ Г2т 0 0 ... Г
168 Глава 3 r2k= vk 'Ч2 · После этого обновляется \к : \к = \к -r2kq2- Вектор \к орто- 2 тонален ик qj и к q2. Далее используем \к для вычисления гзк и т. д. Доказывается [3, 31], что вектор \к после нормировки дает искомый вектор qk. Тогда модифицированная процедура Грома—Шмидта для вычисления qk имеет вид: 1. Положить \к =\к. 2. В цикле по i = \,2,...,k — \ выполнить: • положить rjk = V£,q,- ; 3. 4. i i-l • найти \к =\к -η Вычислить rkk = Найти qk=—\k k-l k-l 'kk Известно [3], что без учета погрешностей округления модифицированная и классическая процедуры Грама—Шмидта дают одинаковые результаты. Процедура Арнольди Для построения ортонормированных базисов в подпространствах Крылова популярна процедура (ортогонализация) Арнольди (Amoldi W. Ε.) [3, 32]. Пусть необходимо построить ортонормированный базис qb q2, ..·, qm в пространстве Крылова Кт А, ух . По определению имеем Кт A,vj =span wbw2,...,wm , где Wj = vj, w2 = Avj, w3 = Av2 = A2Vj, ..., wm = &\тЛ = Α"ιΛ\λ. Если бы нам были известны векторы wb w2,..., wm, то ортонормированный базис qi,q2, ■ ■-, qm можно построить, используя процедуру Грама—Шмидта. Но нам известны лишь вектор Vj, матрица А и т . Идея процедуры Арнольди состоит в том, что для нахождения вектора qk+l при известных векторах qb q2,..., qk необходимо вычислить вектор Aq^ и ортонормировать этот вектор относительно qb q2,..., qk . Сперва положим q^ = τ—й—Vj. Рассмотрим поиск вектора qk в предположении, что 1Ы12 предыдущие k-l векторов qb ..., qk_l уже построены, то есть при \<i,j<k-l fO, i * U q,-,q, = ; . (ЗЛЮ)
Итерационные методы решения систем линейных алгебраических уравнений 169 Вектор qk найдем путем ортогонализации Грама—Шмидта вектора Aq^. Сначала находим ненормализованный вектор k-l q>t = Aq>t-i - Σ^д-1Ч/ ^ (зли) где hj k_i — коэффициенты, которые должны быть определены из условия ортогональности. Для проверки условия ортогональности qk всем предыдущим векторам умножим (3.111) скалярно на q;, j = 1, 2,...,k -1, и приравняем результат к нулю: к-1 АЧ*-ьЧу "ΣΑα-ΐ Ч/»Чу =0· (3.112) i=l Из (3.110) и (3.112) получаем hj,k-i= Mk-i,4j ■ (3·113) Найденный вектор осталось отнормировать: Чк=тЧк> гДеА*=1Ы12· (3.114) Таким образом, вычисления ведутся по формулам (3.111), (3.113), (3.114) и не требуют нахождения векторов w. Результат ортогонализации совпадает с результатом процедуры Грама—Шмидта, примененной к векторам ν^Αν^.,.,Α ~ νι. На практике применяют ортогонализацию Арнольди на базе модифицированной процедуры Грама—Шмидта [28], в алгоритм которой добавляется единственное умножение на матрицу А . Для вычисления qk при известных 4ι,-·->4£-ΐ нужно: 1. Положить w = Aq^.j. 2. В цикле по i = 1,2, ...,к — 1 выполнить: • найти hik_x = w,q^ ; • положить w = w — hj £_ι4,- · 3. Вычислить hkk_i =|w| . 4. Найти qk = w. h,k-\ Согласно [28], для коэффициентов ортогонализации введена двойная индексация. В этих обозначениях цикл алгоритма можно записать в виде к-1 Кк-Лк = АЧк-1 - Σ hi,k-i<ii (3·115) i=l
170 Глава 3 Рассмотрим матричное представление алгоритма Арнольди. Из (3.111) и (3.114) получаем k+l аЯ* = Е^аЯ/, к = 1,2,...,т. (3.116) Для представления (3.116) в матричной форме введем матрицы Qm = 4ΐ>42> ■•■'4m ' Η m+\,m hn hl2 h2\ A22 0 /7, '32 0 0 о о h \,m-\ \m h 3,m-l 3 m "m,m—l "mm 0 h m+\,m (3.117) Матрица Hm+lm (3.117) представляет собой прямоугольную верхнюю матрицу Хессенберга (см. разд. 2.7.3) со строго положительными элементами на поддиаго- нали. Выражение (3.116) в матричной форме примет вид AQm = Qm+iHm+lm . (3.118) Выражение (3.118) отражает связь между матрицей А, вектором ql (первым столбцом матрицы Q;))) и векторами и коэффициентами, получаемыми в процедуре Арнольди. Если выделить строку т +1 матрицы Нт+1 и столбец т + \ матрицы Q;„+1, то (3.118) можно записать в виде AQm = QmHm + qm+11^0,0,. .-,hm+lm J = QmHm + f{m+\hm+^mtm, (3.119) где em — m -й вектор стандартного базиса в Шт. Выполняется также равенство QTaQ;„=H;„. (3.120) Действительно, умножая (3.119) слева на Qm, получим Τ Τ Τ Τ Т —1 так как вследствие ортогональности матрицы Q;)) имеем Q;„Q;„ = Q;„ Q;„ = Ε, где Ε — единичная матрица. Q^qm+i = [ qi,qOT+i , 42>4»?+ι >■■■> Чт>Чт+1 ] =0, так как вектор q +1 ортогонален векторам qb q2,..., q;„ .
Итерационные методы решения систем линейных алгебраических уравнений 171 Вследствие ортонормированности базиса q выполняется равенство , 7 = 1,2, Q«q 7ИЧу поскольку Q;))q 7ИЧу яьЯу , 42,ч j 4y.qy ,/и, 4m>4j (3.121) Если матрица А является симметричной, то матрица Хессенберга Ή. в процедуре Арнольди (3.119) является симметричной трехдиагональной (это вытекает из свойств преобразования симметричной матрицы в форму Хессенберга) Н„ а, βι βι ou β, m—\ β»?-1 ОС™ (3.122) Из (3.111) и (3.122) получается соотношение 4*+ι=Α4*-α*4*-β*-ΐ4*-ΐ· После нормировки получаем β*4*+ι = АЧ* ~ak<lk -β*-Λ*-ι· (3.123) Этот специальный случай процедуры Арнольди называется симметричной процедурой Ланцоша (Kornel Lanczos) [3]. В (3.123) коэффициент ак вычисляется как в обычной процедуре Арнольди (3.113). Вычислять коэффициент β^_j не требуется, так как он равен нормирующему коэффициенту, вычисленному на предыдущем шаге, что следует из симметрии матрицы Ниг. Таким образом, в случае симметричной матрицы резко сокращается объем вычислений. Недостатком алгоритма является возможная потеря ортонормальности векторов из-за накопления ошибок округления. Биортогонализация Ланцоша Ортогонализация Ланцоша выгодно отличается объемом вычислений от ортогона- лизации Арнольди, но применима только для симметричных матриц. Оказывается, можно построить алгоритм ортогонализации с короткими рекуррентными формулами в случае несимметричных матриц, если вместо требования ортогональности векторов использовать более слабое условие, известное как биортогональность [3, 27, 28]. Векторы vl5 v2, ·.·, v;„ и wb w2,..., wm называются биортогоналъными, если vi;w- =0 при ΐΦ]. При у^=\^ условие биортогональности сводится к условию ортогональности. Пусть векторы vj и Wj таковы, что v^Wj =1. Построим системы векторов т т , ν, и w,- ._. по формулам v,+l = Av," - α,"ν," - β/V/-1» ν0 = ° > (3.124)
172 Глава 3 α,- = ■ ν, Αν,- ν/> ,w, -w,- W,- wi+i = ATwi ~aiwi ~ftwM> w0=0, (3.125) (3.126) β,.= '-^, β1=0. (3.127) V,_i ,■№,-_! Тогда системы ν,- ._. и w,- окажутся биортогональными. Каждая из систем mm „ — — векторов v; и w,- является линейно независимой и образует базис в ATm A,vj и Кт A ,wj . Отметим, что в рассмотренной процедуре не используется нормирование. Процедура построения векторов по формулам (3.124)— (3.127) называется биортогонализацией Ланцоша. Докажем по индукции биортогональность систем ν,- ._. и w,- . Пары векторов Vj и Wj являются биортогональными. Пусть построены биортогональные наборы векторов у γ, ν2, ■ ■ ■, ν,- и Wj, w2, ■ ■ ■, w,- . Докажем, что вектор νί+1, построенный по формулам (3.124)—(3.127), ортогонален векторам w1,w2,--,w; , то есть v/+i>w/t =0> k = \,2,...,i. Для доказательства умножим (3.124) скалярно на w^ : vi+i>w* = Avi»wA "аг vi>w* "ft ν,-ΐ^ί · (3.128) Если к = i, то по предположению индукции ν,^,λν, = 0 , и с учетом (3.126) выражение (3.128) примет вид Av,-,w,- v;+i,w; = Av;,w, v,,w, =0. To есть векторы vi+l и w^ ортогональны. Для случая к <i преобразуем (3.128), учитывая, что по предположению наборы векторов v1,v2,---,v; и wl5w2, ...,w;- являются биортогональными, то есть ν,-,λν^ =0 для к <i. Учтем также, что из свойств скалярного произведения Τ следует равенство Av;,w/i; = ν,,Α w^ , а из (3.125) следует, что ATWyt = wk+l + ci^w* + Pytwyt_1: vi+i>w* = v^ATw/c -β, v^.Wi = = ^г,ч/к+1+акч/к+$кч/кЛ -β,. νμ1^4 = (3.129) = v^w/c+i +a/c v^wi +fe v^wi-i "ft v.q.wt .
Итерационные методы решения систем линейных алгебраических уравнений 173 При k<i — \ по предположению индукции все четыре скалярных произведения в (3.129) обращаются в ноль. При k = i — \ равны нулю второе и третье скалярные произведения. Тогда с учетом (3.127) получаем fi+\^i-\ β, ν, /-1.W/-1 V W ',-lw,-l Vi.w,-i Аналогично доказывается, что \k, w;+1 = 0 для к = 1, 2,..., i. Теперь докажем, что каждая из систем ν, ._. и w,- является линейно незави- симой и образует базис в Кт A,Vj и Кт A ,γ/ι . Из (3.124) следует, что span v1,v2,---,vm =^m A,Vj как множество всевозможных линейных комбинаций векторов ν, Αν, Α2ν,..., Α'"_1ν . Из (3.125) следует span w1; w2,..., wm = Km A1,·^ . Докажем линейную независимость векторов vj, v2, · ■ ·, v;„. Предположим, что векторы Vj, v2, ■ ■ -, v;„ являются линейно зависимыми, тогда Υινι+γ2ν2 + ...+γ;„ν;) 0. (3.130) Умножая (3.130) скалярно на wk, k = l,2,...,m и учитывая доказанное условие биортогональности v;,w/i; =0, 1фк, получаем У к vk,v/k =0, к = 1,2,...,т, что при ненулевом yk противоречит условию биортогональности. Поэтому все коэффициенты γ должны быть нулевыми. Аналогично доказывается линейная независимость векторов Wj, w2,..., wm. Формула (3.124) является частным случаем формулы (3.115), где из всей суммы оставлены только два последних слагаемых. Аналогично, формула (3.125) является частным случаем формулы (3.115), записанной для матрицы А и вектора Wj. Коэффициенты ортогонализации (3.126)—(3.127) одинаковы для формул (3.124) и (3.125). По аналогии с равенством (3.119) можно записать [27] (3.131) где У, 1>ν2,- . ν ' πι A\m = V Τ +ν ,е τ иг иг Ύ m+Wm ' ATW =W Τ +w ,ет "иг "иг иг ™ m+l m' , Wm= wl5w2, Τ = πι Щ β2 β3 α2 W ' " πι ■> β3 а»г-1 Р»г Р»г а»г
174 Глава 3 Из-за накопления ошибок округления может возникнуть ситуация, когда v;,w; =0. При этом продолжение процесса невозможно, так как невозможно вычислить коэффициенты разложения. Это является основным недостатком биортогонализации Ланцоша. На практике точное равенство достигается редко, но малость знаменателя в (3.126)—(3.127) приводит к нарастанию ошибок вычислений. 3.9.5. Метод сопряженных градиентов Напомним идею проекционных методов решения систем линейных алгебраических уравнений Ах = b с квадратной невырожденной матрицей А . Имеются два подпространства К α Ж" и La Ж" . Необходимо найти решение χ е К , оптимальное относительно подпространства L. Это означает, что невязка решения должна быть ортогональна подпространству L : г = b - Ах _L L . Если через V и W обозначить матрицы, составленные из векторов базисов подпространств К и L, то итерационный процесс нахождения приближения решения может быть построен по формуле (3.90): xk+l =xk +V WTAV " WTr* . (3.132) Широкое применение получили проекционные методы, использующие в качестве подпространства К подпространство Крылова размерности больше единицы. Для вычисления базисов используются различные методы ортогонализации. Такие методы называются методами подпространств Крылова, или методами крыловского типа (англ. Krylov Subspace Methods). В отечественной литературе методы подобного типа называют еще вариационными итерационными методами [14, 33]. Алгоритмы методов подпространств Крылова включают два этапа: 1. Построение базиса в подпространстве Крылова. 2. Вычисление корректирующей поправки. Для вычисления корректирующей поправки возможны три подхода [33]: 1. Подход Ритца—Галёркина. При этом невязка строится ортогонально к подпространству Крылова. Этот подход используется в таких методах, как метод сопряженных градиентов (CG) и метод полной ортогонализации (FOM). 2. Подход минимума невязок. На каждой итерации минимизируется норма вектора невязки. Подход используется в методе минимальных невязок на подпространствах Крылова (MINRES) и в обобщенном методе минимальных невязок (GMRES). 3. Подход Петрова—Галёркина. Методы этого класса основаны на построении биортогонального базиса. Это метод бисопряженных градиентов (BiCG), стабилизированный метод бисопряженных градиентов (BiCGSTAB) и метод квазиминимизации невязки (QMR).
Итерационные методы решения систем линейных алгебраических уравнений 175 Методы подпространств Крылова хорошо зарекомендовали себя при решении СЛАУ, так как обладают следующими важными свойствами: □ они численно устойчивы, благодаря использованию техники ортогонали- зации; □ они эффективны для систем с разреженными матрицами большой размерности, так как самой трудоемкой операцией этих методов является умножение матрицы на вектор. Элементы матрицы не изменяются; □ методы применимы для решения систем с несимметричными матрицами. Рассмотрение методов крыловского типа начнем с наиболее популярного метода — метода сопряженных градиентов (англ. CG— Conjugate Gradient Method). Пусть решается система Ах = Ь с симметричной положительно определенной матрицей. В этом методе К = L = Кт (А, г ), где г = b — Ах — невязка начального приближения. В разд. 3.9.2 было доказано, что в случае симметричной и положительно определенной матрицы А и совпадения подпространств L и К задача проектирования решения СЛАУ на подпространство эквивалентна задаче минимизации функционала Ε χ А х (3.133) на подпространстве К . Минимизация функционала (3.133) представляет собой задачу минимизации энергетической нормы ошибки е где χ точное решение. Ранее в разд. 3.7 было доказано, что вектор χ является решением СЛАУ Ах = b, если он минимизирует функционал ошибки (3.133). Пусть в подпространстве span Pi, Рг= ■ ■ ■= P>t известен А-ортогональный базис, то есть Арг,ρj = О при i^j и р1 = г искать в виде, аналогичном (3.88): Очередное приближение решения будем к 0 с- 0 χ-ι х =х +о = х + 2_,u-iPi, i=\ где δ — вектор поправки. Коэффициенты о^ разложения δ по базису определим из условия ортогональности невязки г ζ подпространству L : г _L L . Невязка равна Ь-Ах Ь-А f о к ^ χ +2,α,ρ -χ ° -А]Га;р; ;=1 Условие ортогональности имеет вид к о г ,Р, Щ APj'Pj =0> J = l2, (3.134)
176 Глава 3 о г ,Pj откуда аг■= , j = l,2,...,k. Для вычисления приближения к решению ΑΡ,,Ρ; и коэффициентов α удобнее рекуррентная форма. Очевидно хк =хкЛ + akpk, (3.135) откуда г ζ =г -а/сАр/с (3.136) к-\ г Р/с а* = . (3.137) АРьР/с При этом ошибка приближения δ = χ — χ будет А -ортогональна векторам ρ A5*,Pj =0, j = l,2,...,™. (3.138) Для доказательства (3.138) учтем, что кЬк =гк , (3.139) так как г с =Ь-Ах ς =Αχ -Αχ ς =Αδ с . Подставляя (3.139) в равенство г ς ,pj = 0 , которое следует из (3.134), получаем (3.138). Построим рекуррентный алгоритм для нахождения базиса р1; р2, ■ ■ ■, Ρ/ζ на основе процедуры Грама—Шмидта для энергетического скалярного произведения [3]. По аналогии с (3.105) имеем Р*=г*-1 -Σο,-ΐ,,Ρ,, (3.140) ;=1 где коэффициенты ck_y должны быть такими, что рк _1_А р, при i = 0,...,к -I. Покажем, что р^ φ 0 при г Φ 0 . Действительно, умножая скалярно (3.140) на г и учитывая условие ортогональности (3.134), получаем к-\ к-\ к Л У I Ръг = r x ~Lck-i,i Pir к-\ Г 2 (3.141) 2 Поэтому рк,г >0 при г ф0, откуда рк Φ0 . Поэтому пока невязка не равна нулю, можно получать новые векторы базиса.
Итерационные методы решения систем линейных алгебраических уравнений 177 Используя (3.140), запишем условие А-ортогональности ρ^,Ρ? А = 0 ПРИ i = 0,...,k — l и учтем, что по условиям векторы рь р2, ..., рц образуют А-ортогональный базис, то есть Арг,ρ =0 при ί =£ j : k-l РьР, = r*~\p, -Eca-u Р«>Р; А (3.142) г Р, ~ck-i,j Ρj,Pj k-l ' ° A "■''■'J ' J'1 J A Равенство (3.142) выполняется, если k-l Г ,Ρ; ck-u= ±, 7 = 0,1,...,£-1. (3.143) Ру.Ру а Вычисления по формулам (3.140) и (3.143) требуют запоминания всех предыдущих направлений поиска. Можно доказать, что для симметричных положительно определенных матриц А все с/с_1 равны нулю, кроме с/с_1 /с_1. Поэтому Pk = r h~l ~ ск-\,к-\Рк-\, (3 ·144) где k-l r ,Vk-\ ск_и_х = ±. (3.145) Рк-ъРк-\ А Докажем справедливость выражения (3.144). Для этого надо доказать ряд положений. Сначала докажем, что после j шагов в методе сопряженных градиентов (при г ζ Φ 0 в каждой итерации) выполняется равенство span рьр2,...,ру-+1 =spanr°,r ,...,rJ =Kj+l A,r ° . (3.146) Доказательство проведем по индукции. Равенство (3.146) выполняется при 7 = 0, так как pj = г . Предположим, что подпространства совпадают при j — к, и докажем, что они будут совпадать при j = к + \. Первым делом докажем, что span r , г ,...,г <^Кк+2 А,г (3.147) В силу сделанных предположений достаточно доказать, что г е Кк+2 ^,г Используем выражение (3.136): г =г — ос^Ар^.. Вектор г представляет собой линейную комбинацию векторов г и Ар По предположению
178 Глава 3 г е Kk+l А, г с Кк+2 А, г . Также по предположению pk e Kk+l A, r = 0.0 хк 0 = span г , Аг ,..., А г , поэтому получаем л л0 л £+10 ^ л0 Ap^espan Аг ,..-,А г сл4+2 А,г Каждое слагаемое линейной комбинации векторов, составляющих г , принадлежит подпространству Kk+2 A, r , поэтому к+\ к . ту . 0 г =г -акА$кеКк+2 А,г что доказывает (3.147). Теперь докажем, что span Ρι,...,ρ^+г cspan г ° ,..., г + (3.148) В силу сделанных предположений р^ е span г ,...,г при /' = 0,1,..., & + 1, по- 0 к+\ u этому достаточно доказать, что p^espan r ,...,г . Но, как следует из (3.140), вектор рк+2 представляет собой линейную комбинацию векторов г и р; при i = 0,1,..., к +1, откуда pi+2 e span г ,..., г Сравнивая (3.147) и (3.148), видим, что все три интересующие нас подпространства вложены друг в друга. Они окажутся равны, если совпадают их размерности. Размерность пространства Kk+2 A,r не превосходит к+ 2. Векторы рь...,pi+2 отличны от нуля и ортогональны в смысле энергетического скалярного произведения. Поэтому они линейно независимы и образуют базис в пространстве span p1; ...,р/с+2 , размерность которого тем самым равна к+ 2. Отсюда следует, что все три подпространства имеют размерность к + 2 и, значит, они равны. Покажем, что невязки, получаемые в методе сопряженных градиентов, являются взаимно ортогональными. Мы уже отмечали, что из (3.134) следует г ,р =0 . Отсюда и из равенства подпространств (3.148) следует ортогональность невязок k | 0 1 к-\ , ~ г _1_ г , г ,..., г при всех к . Отсюда следует г·7' ±Kj A,r° , j = l,2,... Теперь докажем, что при j = 0,1,...,к — 2 определенные в (3.143) коэффициенты ск-\ равны нулю, то есть что выполняется (3.144). Для этого нужно доказать, что
Итерационные методы решения систем линейных алгебраических уравнений 179 г ,ρ =0 при j = 0,1, ...,к — 2. Так как в силу симметрии матрицы А А г , ρ = г , Ар , достаточно доказать, что г ζ _1_ Ар при j < к -1. 7 A J J Из (3.146) имеем p^ espan pl,...,pJ = span г ,...,AJ~ r . Поэтому Ap^espan Ar ,...,AJr czKj+\ A,r =span r ,...,r Так как невязка г с ортогональна г ,..., г J при j < к — 1, то г _1_ Ар при j<k-\. Отметим, что можно доказать эквивалентность рассмотренной процедуры построения векторов Pi, Pi, p2, ■ ■ · и симметричной процедуры Ланцоша (см., например, [2, 3]). Метод сопряженных градиентов в случае положительно определенной матрицы А размером пхп при отсутствии ошибок округления позволяет получить решение не более чем за η итераций. Действительно, после п — \ шагов η ненулевых невязок г , г ,..., г составят ортогональный базис в Ж" . После η шагов вследствие доказанной ортогональности невязок имеем г _1_г при i = 0,1, ...,п — 1, что означает ортогональность вектора г полному базису пространства. Известно (см., например, [3]), что полному базису пространства ортогонален только нулевой вектор, так что г = 0 . Нулевое значение вектора невязки означает, что достигнуто решение: е =0, χ = χ. То есть метод сопряженных градиентов теоретически может рассматриваться как прямой метод. С учетом погрешностей вычислений целесообразно рассматривать его как итерационный. Практически приемлемую точность решения можно получить за число итераций, гораздо меньшее η. Поясним происхождение названия метода: "метод сопряженных градиентов". Два вектора, ортогональные в смысле энергетического скалярного произведения, называются сопряженными (точнее, А -сопряженными). Таким образом, векторы р1,р1,р2,·-· являются сопряженными. Термин "градиент" возник из того, что эти векторы используются как направления градиентного поиска (см. (3.135)) минимума функционала (3.133) [2]. В дальнейшем при описании алгоритма метода сопряженных градиентов будем называть векторы Ρι,Ρι,Ρ2,-·- направлениями поиска (движения). В итерациях метода сопряженных градиентов направление движения определяется по (3.144), а коэффициент ск_Хк_х — по (3.145). Новое приближение решения находится по (3.135), а коэффициент ак — по (3.137). Однако вычисления можно
180 Глава 3 упростить. Прежде всего, отметим, что невязку целесообразно вычислять по (3.136). Можно упростить вычисление ак. Из (3.141) имеем к-\ к-\ к-\ г ,pk = г ,г Тогда коэффициент ak можно вычислять по формуле к-\ к-\ Щ=—— · (3.149) APbPi Нахождение ак по формуле (3.149) исключает подсчет г ,рк . Теперь упростим выражение для коэффициента ск_х k_x. Учтем ортогональность векторов невязок: г ,г =0 . Тогдаиз (3.136) и (3.149) получаем k-2 k-2 Г ,Г к-\ к-\ к-2 к-\ . к-\ г ,г = г ,г Ap/c_l5r АР*-ьР*-1 к-2 к-2 Г ,Г = АР/с-ьг AP/t-l>P/t-l откуда с учетом симметрии матрицы А и выражения (3.145) для ск_Хк_х получаем . к-\ . к-\ к-\ к-\ Ар/с_1,г Аг ,рк_х г ,г Αρ/^,ρ/^ Αρ/^,ρ/^ -к-2 .к-2 -к-Lk-l ■ Обозначим г ,г к-\ к-\ P*-i=^*-u-i = к_2 к_2 · (3-150) Тогда вместо (3.144) имеем Vk =*k~l + β*-ιΡ*-ι· (3-151) Вычисления по формуле (3.150) не требуют нахождения новых скалярных произведений. С учетом сделанных упрощений алгоритм метода сопряженных градиентов строится следующим образом.
Итерационные методы решения систем линейных алгебраических уравнений 181 На "нулевой" итерации выполняются подготовительные действия: 1. Полагается к = О . 2. По заданному начальному приближению χ (обычно χ = 0) вычисляется невязка г =b — Ах 3. В качестве направления движения выбирается Pj = г На первой и следующих итерациях (к = 1, 2,...,) выполняются следующие действия: 4. Вычисляется номер текущей итерации к = к +1. 5. Вычисляется коэффициент к-i к-\ I . «*= г >г / АРъР* · 6. Находится новое приближение решения к к-\ χ =х +а/ср/с. 7. Вычисляется новая невязка г =г — а/сАр/с. 8. Проверяется условие окончания итерационного процесса, например, *||/|ьц^в. Если условие выполнено, то алгоритм завершается. 9. Вычисляется коэффициент о к к I к-1 к-\ βλ= г ,г / г ,г 10. Определяется новое направление движения P/c+i=r/c +Э/Л>/с· 11. Переход на шаг 4. 12. Конец алгоритма. Следует также отметить связь решения системы линейных алгебраических уравнений методом сопряженных градиентов с одноименным методом многомерной оптимизации [7, 15, 16, 34]. Очень часто применяют предобуслоеленный метод сопряженных градиентов. Если использовать предобусловливание, например В~ Ах = В b, то матрица В~ А в общем случае не будет симметричной и положительно определенной, и к преобразованной системе нельзя формально применить метод сопряженных градиентов. Однако известно [24, 29], что в случае симметричных положительно определенных матриц А и В матрица В~ А является симметричной положительно
182 Глава 3 определенной относительно скалярного произведения х, у = Вх, у . Действительно В *Ax,y = Ах,у = х,Ау = χ,Β Β Ά у = Вх, В Ά у = х,В >АУ в в что говорит о симметрии матрицы В~ А относительно скалярного произведения х,у = Вх,у . Положительная определенность следует из соотношения: В Αχ,χ = Αχ,χ >0 . в Поэтому систему В Ах = В b можно решать с помощью метода сопряженных градиентов, заменив всюду обычное скалярное произведение .,. на .,. . Тогда алгоритм предобуслоеленного метода сопряженных градиентов имеет следующий вид [24,29]. На "нулевой" итерации выполняются подготовительные действия: 1. Полагается к = О . 2. По заданному начальному приближению χ (обычно χ = 0) вычисляется невязка г = b — Ах 3. Решается система Bs = г 4. В качестве направления движения выбирается Pj = s На первой и последующих итерациях выполняются следующие действия: 5. Вычисляется номер текущей итерации к = к +1. 6. Находится новое приближение решения χ = χ +а/ср/с, где k-i к-\ I . 7. Вычисляется новая невязка г =г — а/сАр/с. 8. Проверяется условие окончания итерационного процесса, например, "Ун**· Если условие выполнено, то алгоритм завершается. 9. Решается система Bs/c =rk . (3.152) 10. Определяется новое направление движения ρ =s +Э/ср/с, где 0 к к I к-\ к-\ β£= s ,r J s ,г 11. Производится переход на шаг 5. 12. Конец алгоритма.
Итерационные методы решения систем линейных алгебраических уравнений 183 Так как матрица А решаемой системы симметрична и положительно определена, то при решении вспомогательной системы (3.152) обычно используют неполную факторизацию Холецкого. Рассмотренные формулы метода сопряженных градиентов называют двучленными, в отличие от трехчленных формул метода сопряженных градиентов [5, 14, 35]. Использование трехчленных формул показывает, что метод сопряженных градиентов является трехслойным, то есть для нахождения нового приближения χ исполь- г к-\ к-2 зуются два предыдущих приближения χ их Покажем идею получения трехчленных формул. Из (3.135) и (3.151) имеем к к-\ к-\ к-\ 0 χ =х +акрк=х +ак г + β*-ΐΡ*-ΐ · Из (3.135) получаем рА1 = α^ χ -χ .Окончательно к к-\ к-\ о ак к-\ к-2 х = х + а/сг + pyt_1 —— χ - χ ак-1 V ак-\ ) а,, Кк-\ Известны [5, 14, 35] различные трехчленные формулы метода сопряженных градиентов. Рассмотрим без доказательства неявный метод сопряженных градиентов (вывод формул можно найти в [14]). Сохраним обозначения, принятые в [14]. На "нулевой" итерации выполняются действия в соответствии с двухслойным алгоритмом: 1. По заданному начальному приближению χ (обычно χ = 0) вычисляется 1 о , . о невязка : г = b - Ах 2. Решается уравнение для поправки Δχ : ΒΔχ = г 3. Вычисляется το по формуле неявного метода скорейшего спуска τ0 = г ,Δχ / ΑΔχ ,Δχ 4. Находится новое приближение решения χ =χ +τ0Δχ На первой и последующих итерациях (к = 1, 2,...) выполняются действия в соответствии с трехслойным алгоритмом: 5. Вычисляется невязка г = b - Ах В [25] используется формула невязки г ° = Ах - b .
184 Глава 3 6. Проверяется условие окончания итерационного процесса, например к\\/\\Ч^- Если условие выполняется, то алгоритм завершается. 7. Находится поправка решения ΒΔχ =г 8. Вычисляются итерационные параметры Ч = Δχ<*+V*> / W*+1>,Ax<*+1) , α,, Δχν 1 Tit-ία*.! Δχ^,ι·^1) αη 9. Находится новое приближение решения k+l --akx(k)+ \-ak хЫ +ЧакАх(к+1). 10. Производится переход на шаг 5. 11. Конец алгоритма. В трехчленных формулах явного метода сопряженных градиентов В = Ε и не к+\ требуется вычислять поправку Δχ tT1 . В алгоритме явного метода исключаются шаги 2 и 7, во всех формулах надо заменить Δχ на г с . Для выбор В справедливы все соображения, приведенные для двучленных формул. 3.9.6. Методы подпространств Крылова для несимметричных и знаконеопределенных задач FOM — метод полной ортогонализации Серьезную проблему представляет решение систем с несимметричными и неположительно определенными матрицами. Казалось бы, эта проблема легко решается с помощью трансформации Гаусса и перехода к нормальной системе: А Ах = A b . Матрица преобразованной системы А А является симметричной и положительно определенной, и преобразованную систему можно решать любым рассмотренным методом. Принципиальным недостатком применения трансформации Гаусса является увеличение числа обусловленности преобразованной матрицы А А. При использовании второй нормы матриц число обусловленности матрицы А А равно квадрату числа обусловленности матрицы А [27]. Кроме того, теряется свойство разреженности и резко растут затраты памяти и времени на одну итерацию. Поэтому для реальных плохо обусловленных систем трансформация Гаусса практически неприменима. Известно множество методов крыловских подпространств для
Итерационные методы решения систем линейных алгебраических уравнений 185 несимметричных и положительно неопределенных матриц [2, 3, 27, 28, 36—39]. Отличия от метода сопряженных градиентов состоят в использовании более сложных алгоритмов построения ортогональных векторов и минимизации других функций. Ограничимся рассмотрением основных идей итерационных алгоритмов в подпространствах Крылова. Самым общим алгоритмом решения СЛАУ на подпространствах Крылова является метод полной ортогонализации (FOM — Full Ortliogonalization Method) или метод Арнольды (Amoldi's Method for Linear Systems) [27]. Пусть решается СЛАУ Ах = b с неособенной матрицей А (никакие условия симметрии и положительной определенности на матрицу не накладываются). Пусть K = L = Kk A,r , где Kk A, r =span г ,Аг ,Аг ,..., А г ,r =b-Ax — вектор невязки начального приближения. Решение будем строить, исходя из условия Галеркина г* =Ь-Ах^ 1^ А,г° . (3.153) Для построения базиса подпространств Крылова используется процедура Арнольди (см. разд. 3.9.4). В процедуре Арнольди в качестве vj используется нормированный вектор невязки начального приближения о (3.154) νι=Γ°/β, β = Приближение к решению строится по формуле (3.90) х* =х° +VWTAV^WTr°, (3.155) где V и W — матрицы, составленные из векторов базисов подпространств Крылова. Так как К = L , то V = W . Как было показано в разд. 3.9.4, матрица №к = W AV будет являться матрицей в верхней форме Хессенберга (3.120). В силу (3.154) и τ о (3.121) W1!·" =ββ!. Тогда вместо (3.155) получаем х'с =х° +βνΗ^ν (3.156) Матрицы V и №к в (3.156) формируются с помощью процедуры Арнольди. Вектор Щ е1 находится как решение СЛАУ с матрицей Hk в верхней форме Хессенберга, что не представляет собой сложную задачу. Недостатком метода является необходимость хранения всех векторов базисов. При этом размерность подпространства к, обеспечивающая приемлемую точность решения, например, по норме невязки, заранее неизвестна. Максимальная размерность подпространства Крылова теоретически равна порядку решаемой системы и может быть очень большой. Для решения этой проблемы используется перезапускаемый метод полной ортогонализации (Restarted FOM), который также называют FOM(m). В этом методе заранее выбирается некоторая размерность т
186 Глава 3 подпространства Крылова, относительно небольшая по сравнению с порядком решаемой системы. После того как получено приближение χ , по норме невязки проверяется точность приближения. Если необходимая точность не достигнута, то процесс повторяется с вектором χ в качестве начального приближения. Используется также метод неполной ортогонализации (ЮМ — Incomplete Orthogonaliza- tion Method) [27]. В этом методе очередной вектор базиса строится ортогональным не ко всем ранее найденным векторам базиса, а только к к предыдущим векторам (к необходимо подбирать). MINRES — метод минимальных невязок на подпространствах Крылова Если матрица А является симметричной, но не определенной положительно, то невозможно применять формулу (3.151), справедливую, как мы доказали, только для положительно определенных матриц. В этом случае можно использовать симметричную процедуру Ланцоша. Симметричная процедура Ланцоша применима для симметричных матриц независимо от их положительной определенности. С использованием симметричной процедуры Ланцоша построение последовательности векторов поиска производится по экономичной рекуррентной формуле (3.123). Далее необходимо определить способ нахождения приближения в подпространстве Крылова. В методе сопряженных градиентов минимизируется энергетическая норма ошибки eJ Ае J ,e J . Если матрица не является положительно опре- А \ деленной, то энергетическая норма не имеет смысла, поскольку величина под знаком квадратного корня может оказаться отрицательной. Нужен другой критерий для построения решения. В частности можно минимизировать евклидову норму невязки. Алгоритм, использующий симметричную процедуру Ланцоша для вычисления ρ/ζ и минимизацию нормы невязки для решения СЛАУ с симметричными, но не положительно определенными матрицами, называется методом минимальных невязок на подпространствах Крылова (MINRES — MINimal RESiduals) [37, 40]. Для решения СЛАУ с симметричными, но не положительно определенными матрицами применим метод SYMMLQ— Symmetric LQ method [37, 40]. В этом методе строятся подпространства Крылова с помощью симметричной процедуры Ланцоша. Поправка к приближению вычисляется на основе условия Галеркина (3.153). Для формирования вектора поправки применяется LQ-разложение — ортогональное разложение, аналогичное QR-разложению, где L — нижняя треугольная матрица. GMRES — обобщенный метод минимальных невязок В обобщенном методе минимальных невязок (GMRES — General Minimal RESiduals), применимом к системам с несимметричными матрицами, подпространства К и L связаны равенством L = АК, где К — подпространство Крылова Kk A,Vl , ν1=Γ°/β, β: ο г . Для построения ортонормированного базиса 2
Итерационные методы решения систем линейных алгебраических уравнений 187 подпространства К используется ортогонализация Арнольди. Поправка к приближению решения строится на основе минимизации евклидовой нормы невязки. В разд. 3.9.2 было доказано, что задача проектирования решения СЛАУ на подпространство К ортогонально подпространству L, исходя из начального приближе- 0 ния χ , эквивалентна задаче минимизации евклидовой нормы невязки на подпространстве К . Если приближение к решению представить в виде (3.88) χ ζ =χ +ν^γ^, то с учетом (3.154) и (3.118) получим rk =b-A x° +Укук =r° -AV/cy/c = С учетом ортонормированное™ базиса аналогично (3.121) легко показать, что Vyt+1v1 = ej. Так как матрица \^+1 ортонормированна, выполняется \l = Vyt+1e1 и невязка имеет вид rk = PV/t+1e1-V/t+1H/t+uy/t=V/t+1 pei-H/c+uy/c . (3.157) На каждой итерации необходимо минимизировать евклидову норму невязки, которая, с учетом того, что матрица \^+1 составлена из ортонормированных векторов, имеет вид " '[Н^-Н^у^. (3.158) Выражение (3.158) достигает минимума при Pej — Н/с+1/су = 0 . Значит, необходимо решить СЛАУ Н*+иу*=(Зе1· (3.159) Матрица Н/с+1 k имеет размерность к +1 χ к и представляет собой верхнюю матрицу Хессенберга. Для решения такой системы применяют QR-разложение (см. разд. 2.10.2). С учетом формы матрицы наиболее простым вариантом являются вращения Гивенса (см. разд. 2.7.1). Применение метода вращений для решения системы (3.159) приводит к системе Щ+\,кУк = PQ*ei, где матрица R^+i/j получена использованием метода вращений и имеет нулевую последнюю строку. Отбрасывая у матрицы 'R-^+ik последнюю строку и у вектора PQ^ej последний элемент, получаем для определения yk СЛАУ с верхней треугольной матрицей, которая легко решается. Недостатком GMRES является необходимость хранения всех базисных векторов подпространства Крылова. Этот недостаток устранен в перезапускаемом GMRES (Restarted GMRES), или GMRES(m), где т — натуральное число, меньшее порядка
188 Глава 3 решаемой системы. После того как получено приближение χ , по норме невязки проверяется точность приближения. Если необходимая точность не достигнута, то процесс повторяется с вектором χ в качестве начального приближения. Теоретическая оценка размерности подпространства Крылова неизвестна. Если взять размерность слишком маленькой, то метод сходится очень медленно или даже не сходится (особенно для неположительно определенных систем), если же т велико, тогда сильно увеличивается вычислительная работа и требования к памяти. BiCG — метод бисопряженных градиентов Недостатком алгоритмов, позволяющих решать СЛАУ с несимметричными матрицами, является сложность вычисления ортогональных векторов и необходимость хранения всех векторов. Алгоритм бисопряженных градиентов (BiCG — BiConju- gate Gradient, иногда [27, 28] используют сокращение BCG) является обобщением алгоритма сопряженных градиентов на случай несимметричных матриц и работает с короткими рекурсивными формулами, как и метод сопряженных градиентов [27, 41]. Алгоритм BiCG использует свойство А-бисопряженности, или просто бисо- пряженности. Системы векторов pj,..., p;„ и pj,..., pm называются бисопряжен- ными, если Арг,р =0 при ίφ j . В алгоритме BiCG в качестве пространства К используется пространство Крылова Кк А, г , а в качестве пространства L — F Л ~0 0~0ηττ 012 пространство Кк А , г , где г , г ^ 0. Наряду с векторами г , г , г 0 12 Λ „ и ρ , ρ , ρ ,... генерируются последовательности двойственных векторов ~ 0 ~ 1 ~ 2 ~ 0 ~ 1 ~ 2 ^ г г ,г ,г ,... и ρ ,ρ ,р ,.... Ьисопряженность эквивалентна биортогональности относительно энергетического скалярного произведения. Поэтому для нахождения векторов базисов ρ и ρ можно применить биортогонализацию Ланцоша с использованием энергетического скалярного произведения вместо обычного. Так как при биортогонализации Ланцоша базис строится по трехчленным формулам, то полученный метод не требует хранения всех векторов базиса. Алгоритм BiCG имеет следующий вид [27]. На нулевом шаге выполняются подготовительные действия: 1. По заданному начальному приближению χ (обычно χ = 0) вычисляется невязка г = b - Ах 2. Выбирается вектор f , удовлетворяющий условию г ,? φ 0 . На практике обычно берут г = г 3. Полагается р(0) =г(0) и р(0) =г(0). 4. Устанавливается £ = 0.
Итерационные методы решения систем линейных алгебраических уравнений 189 Затем на каждой итерации к = О,1,2,... выполняется следующее: к к I к к 5. Вычисляется ак = г , г / Ар , ρ 6ТТ к+\ к к . Находится χ = χ + а/ср Γη -ρ» к+\ к А к I. Рассчитываются невязка г =г — а/сАр и сопряженный вектор ~ к+\ ~ к ,T-i r г = г — α/ζ Α ρ . Ьсли выполняется условие остановки, например к+\ Г < ε, то алгоритм завершается. В противном случае находится г, к+\ ~ к+\ / к ~ к $к= г ,r J r ,г 8 т-» /с+1 /с+1 г> к . Вычисляются вектор ρ = г + р/ср и двойственный к нему вектор ~ к+\ ~ к+\ г, ~ к Ρ =г +Э/СР 9. Увеличивается номер итерации £ = к +1. 10. Осуществляется переход к шагу 5. 11. Конец алгоритма. В алгоритме BiCG возможно аварийное завершение, если Ар ,р =0, так как тогда невозможно вычислить ак. В случае несимметричных матриц алгоритмы крыловских подпространств, в частности алгоритм BiCG, не минимизируют норму невязки, а только обеспечивают ортогональность невязки подпространству Крылова. В результате невязка может вести себя хаотично, а ведь норма невязки используется для остановки итерационного процесса. Метод квазиминимальных невязок (QMR — Quasi-Minimal Residual) [42] использует короткие формулы BiCG, а для построения приближения к решению использует минимизацию функционала, связанного с невязкой. Идея метода основана на выражении (3.157). В методе GMRES матрица \^+1 составлена из ор- тонормированных векторов, поэтому получаем (3.158). В процедуре Ланцоша матрица \^+1 не является ортонормированной. Тем не менее в [42] построение решения основано на минимизации функционала Ше^ - Hi+1 ^y J . CGS — квадратичный метод сопряженных градиентов Каждый шаг алгоритмов BiCG и QMR требует умножения матриц А и А на векторы. При этом результаты этих операций напрямую не используются в решении; они нужны лишь для вычисления используемых в алгоритме скаляров, например скаляров α и β для BiCG. С другой стороны, вычисление А может представлять сложную задачу. В некоторых приложениях матрица А может явно не фор-
190 Глава 3 мироваться. Например, при решении дифференциальных уравнений в частных производных формируются параметры и шаблон разностной аппроксимации, а матрица системы часто явно не сформирована. Транспонирование затруднено и при реализации на параллельных системах с распределенной памятью: каждый вычислительный узел хранит часть матрицы, из которой нельзя получить нужную часть транспонированной матрицы, и требуется дополнительный обмен информацией с другими узлами. Поэтому разработаны итерационные методы, не использующие транспонирование матриц (Transpose-Free Methods). Алгоритм CGS (Conjugate Gradient Squared) [27] разработан на основе BiCG, но исключает транспонирование матриц и сокращает время решения по сравнению с BiCG. Идея метода основана на выражении невязки на k-й итерации через невязку начального приближения (3.100) с использованием матричного полинома г* =ц>к А г ° , (3.160) где ц>к А — некоторый полином степени к , причем φ0 А = 1. Аналогично имеем ρέ=Ψ4ΑΓ°, (3.161) где \\)k A — полином степени к Так как в алгоритме BiCG векторы г ' и ρ определены теми же самыми ре- к к . . Τ куррентными соотношениями, что иг и ρ , в которых А заменена на А , получаем г =щ А г , ρ =ψ/ζ А г . (3.162) С учетом (3.160)—(3.162) коэффициент ак алгоритма BiCG принимает вид к ~ к *0 *Т~0 2А0~0 г ,г ц>к А г ,ц>к А г ц>к А г ,г а,, Аналогично, β*=- Ар к ,р к Αψ/ζ А г ° , ψ/ζ Ат г ° ΑψΙ А г ° , f ° к+1 ~ к+1 л 0 л Τ ~ 0 2 Λ 0 ~ 0 г ,г φλ+1 А г ,ср/с+1 А г φλ+1 А г ,г к ~ к *0 *Т~0 2А0~0 г ,г ц>к А г ,ц>к А г ц>к А г ,г Так как ак и $к используются для нахождения векторов г , ρ , f и ρ , то можно построить алгоритм, использующий квадраты некоторого полинома. Например, вектор невязки будет иметь вид г* =ц>1 А г ° . (3.163)
Итерационные методы решения систем линейных алгебраических уравнений 191 Следуя [27], примем рекуррентные соотношения для полиномов <Р*+1 А = Ф* А ~akAVk A · (3.164) Ψ*+ι Α = Ф*+1 А + β*Ψ* А (3.165) Квадраты полиномов (3.164)—(3.165) имеют вид Φ*+ι A = Ф* А ~2akA9k A Ψ* α +α^Α2Ψέ Α , (3.166) Ψ*+ι А = Ф*+1 а + 2Э/Л+1 а Ψ* α + β*Ψ* α · (3.167) Для упрощения вычислений преобразуем член ф/с Α ψ^ А с учетом (3.165): Ψ к А Ψ А А = Ф* А Ф* А + β^-ίΨΑ-Ι А = (3.168) = Ф* Α + β*-ΐΦ* Α Ψ*-ΐ Α · Тогда (3.166) можно записать как Ф*+1 А =Ф/с А "2а/сА φ| Α +βλ_1φ* А ψ^ А + + α|Α2ψ* А = (3.169) = Ф* А ~акА 2ΨΪ а +2Э/с-1Ф/с А Ψ*-ι А "а/сА¥/с А · Для члена ср/с+1 Α ψ^ А выпишем отдельное рекуррентное соотношение, которое с учетом (3.164) и (3.168) примет вид <Р*+1 А Ψ к А = Ф* а + β*-ιΦ* а Ψ*-ι А ~акАУк А · (3.170) Выражение (3.167) оставим без изменений. Рекуррентные соотношения (3.169), (3.170) и (3.167) являются основой алгоритма. Определим векторы (3.171) (3.172) (3.173) Из (3.171)—(3.173), а также из (3.167), (3.169) и (3.170) получаем г =г -αλΑ 2r +2pyt_1qyt_1-aytAp 4k=r'C +$к-1<1к-1-ЩАРк , к+\ к+\ ~п п2 к Ρ =г + 2βλςλ+βλρ . Определим вспомогательный вектор dk = 2г к +2^к_^Л -а/сАр /с . Ч* к г к Ρ = = Φα+ι 2 :ф£ = ψ* А А А Ψ* 0 0 А г 0
192 Глава 3 Тогда, чтобы вычислить приближенное решение на к-й итерации, начиная с начального приближения χ и полагая г = b - Ах ,р =r , q0=0, β0=0 и беря в качестве г произвольное значение (обычно принимают г = г ), нужно использовать формулы к ~ О /. к ~ О ak = г ,г / Ар ,г dk = 2г к +2β/,_ι4/,_1 -а/сАр к , Я*=г* +$к-1Чк-1-акАРк , к+\ к . х =х +akak, к+\ к . . г =r -a/cAd/c, 0 к+\ ~ 0 / к ~ О Алгоритм можно еще упростить, если ввести вспомогательный вектор u/c=r/c +β/,_ι4/,_ι. Тогда ак=ик+Чк, Чк=ик~акАРк , РШ =»i+i+Pi Чк+$кРк и в результате вектор ά/ζ больше не нужен. Окончательно алгоритм CGS имеет следующий вид. На подготовительной стадии выполняется несколько шагов: 1. По заданному начальному приближению χ (обычно χ =0) вычисляется невязка г = b - Ах 2. Выбирается вектор г , удовлетворяющий условию г ,г φ 0 . На практике часто берут г = г 3. Полагается ρ =u0=r 5ς0=0πΑ: = β0 = 0. Затем выполняются итерации при к = 0,1,2, 4. Находится ак = г ,г / Ар ,г 5. Вычисляется qk = uk - ak Ар ζ . 6π к+\ к . Полагается χ =х +ак ик +({к .
Итерационные методы решения систем линейных алгебраических уравнений 193 7. Подсчитывается г =r -oc^A u^+q^ . Если выполняется условие остановки, например k+l г < ε, то работа завершается. oD о k+l ~ 0 / k ~ О о. Вычисляется β^ = г ,г / г ,г 9. Находится ик+1 =r k+l + $kqk . 10. Полагается ρ k+l = щ+1 + βλ q^. + βΑρ * . 11. Увеличивается номер итерации к = к +1. 12. Осуществляется переход к шагу 4. 13. Конец алгоритма. В алгоритме CGS отсутствует умножение на транспонированную матрицу и не формируются векторы f и ρ , поэтому алгоритм CGS быстрее, чем BiCG. Недостатком CGS является более сильное влияние ошибок округления, чем в BiCG, так как полиномы (и ошибки округления) возводятся в квадрат. Поэтому невязка может вести себя нестабильно. Из методов, не использующих транспонирование матриц, известен также TFQMR — Transpose-Free Quasi-Minimal Residual method [27]. Этот метод построен на основе метода минимальных невязок. BiCGSTAB — устойчивый алгоритм бисопряженных градиентов Устойчивый алгоритм бисопряженных градиентов (BiCGSTAB — Biconjugate Gradient Stabilized) — построен на основе алгоритма CGS, но не допускает накопления погрешностей округления [27, 36] и нестабильного поведения невязки. Вместо представления невязки в форме (3.163) в BiCGSTAB векторы невязки имеют вид Γέ=%ΑφέΑΓ°, (3.174) где ф/с А — тот же полином, что и в алгоритме CGS, 9^ А — новый полином, который определяется рекурсивно на каждой итерации с целью "стабилизации" или "сглаживания" поведения сходимости алгоритма. Полином 9^ А определен рекуррентным соотношением θ*+1 А = Е-со/сА \ А , (3.175) где Ε — единичная матрица. Скаляр ω^ в (3.175) нужно определить. Начальные значения соответствующих рекуррентных отношений выбираются как в алгоритме CGS. Не определяя пока
194 Глава 3 коэффициент ω^, найдем рекуррентное выражение для Qk Α φ/ζ Α , учитывая (3.164) (аргументы для сокращения записи опущены): θ*+ι<Ρ*+ι = Е " ®кА &к<?к+1 = Ε " ω/Λ θ/Λ " ак А&к Ψ к ■ (ЗЛ 76) Из (3.165) и (3.175) получаем hVk = h <Р* + β*-ΐΨ*-ΐ = h9k + β/c-i Ε - щ^А θ*_ιΨ*-ΐ. (3.177) Определим векторы rk = φΙι A% A r ° , Pa = h A Ψα A r ° · С учетом (3.176) и (3.177) получаем рекуррентные соотношения гк+Х = Е-ш/сА θλφλ-αλΑθλψλ г° = = Ε-ω,Α Vp,r° -αλΑθλΨλΓ° = (3.178) = Е-ш/сА r/c -a/cAp/c , Ρ*+ι = θ*+ιΨ*+ιΓ ° = θ*+ιΦ*+ι + β* Ε-ωλΑ θΛ r° = = rk+l +β/ζ Е-со/сА P/t. Теперь определим скаляры Эь аА и ωΑ· В алгоритме BiCG п А+1 - А+1 I к ~ к τ-, р^ = г ,г / г ,г . Векторы невязки выражаются через матричные полиномы (3.160): г = ц>к А г , г с = ц>к А г . Тогда βΑ = Ρ^+ι/Ρα , где А0 аТ~0 .20-0 /01 -,пч Ра = Фа А г 'Фа А г = Фа А г г (3.179) Но мы хотим избежать возведения полинома в квадрат, поэтому не должны использовать вектор ф£ А г . Рассмотрим вспомогательный коэффициент ~ о τ ~ о рк = ф£ А г ,Qk А г , который с учетом (3.174) легко вычисляется: Аоп.т~о о* * о~о А ~ о /т, ОПч Рк= Фа а г А А г = % А Фа А г >г = г ,г (3.180) τ ~ о Раскроем полином 9t A f в этом скалярном произведении: Рк ί 0 /с . Τ к ~ 0 /с . Τ к~Х ~ 0 φ* Α Γ",ηι А1 г +Л; A1 f +... . (3.181) Доказывается [27, 36], что по построению вектор φ^ А г ортогонален всем τ т ~ о векторам А г при т<к . Поэтому в скалярном произведении (3.181) будет
Итерационные методы решения систем линейных алгебраических уравнений 195 τ ~ о присутствовать только высшая степень A f , и (3.181) можно переписать в виде Pk ^ а 0 k . χ k ~ О щ А г ,τ)! А г V Проводя аналогичные преобразования выражения (3.179), получаем о то( о^то Pk = <Р* А г ,Ф/с А г = щ А г ,у! А г (3.182) (3.183) где yj — старший коэффициент полинома φ/ζ А Сравнивая (3.182) и (3.183), видим, что Pk л О Ц\ ЛТ ~ О k k Ή ι * о л τ ~ о Ц\ —- q>k A r ,q>k A r =—т-рк. Υι Υι (3.184) Раскрывая полиномы 9^+1 и &t в (3.175), получаем ц^ = -oytr|1 . Подставляя к+1 к (3.165) в (3.164) и раскрывая полиномы, находим у^ =—о.ку^ . Тогда из (3.184) P/t+i _ ak P/t+i Pk ak Pk Как было показано, β^ = p^+i/P/t => откуда о _ а/с P/t+1 Р/с - Г , Щ Pk где pi+1 и pk вычисляются согласно (3.180). Найдем рекуррентную формулу для ak. В алгоритме BiCG ou к ~ к Αρ^,ρ^ . Подставляя полиномы, получаем а,, л ° лТ ~ 0 Αψ/ζ А г ° , ψ/ζ Ат г ° Как и в предыдущем случае, полиномы в скалярных произведениях в числителе и в знаменателе могут быть заменены их старшими членами. Однако в этом случае
196 Глава 3 О Τ О Τ О ведущие коэффициенты для φ^ А г , ψ^ A f и 9ус A f одинаковы [27], поэтому л О 4Т -0 . 0ОЛТ~0 Ц>к А r ><P* A r Ф/с А г ,θ7, А г α к л л 0 л Τ ~ О л лОплТ~0 A\\ik А г ,ψλ А г A\\ik A r ,9t A r о л л 0-0 А% AftAr°.f° Так как г = φ^ А 9^ А г и р^ = 9^ Α ψ^ А г , то к ~ о г ,г а/г = . А ~ 0 Ар/с,г Параметр ω^ выберем так, чтобы минимизировать евклидову норму невязки на каждой итерации (то есть применим метод минимальных невязок). Перепишем уравнение (3.178): г = Ε-ω^Α s^, где s/i;=r ζ -а/сАр/с. Тогда оптимальное значение ω^ имеет вид ω Ask'sk Ask,Ask Формулу для приближения решения получим из (3.178): rk+l =sk-akAsk=rk -a/cAp/c-ffl/cAs/c, откуда, раскрывая формулу невязки г с = b - Ах с , получаем к+\ к χ =х +akpk+(uksk. Окончательно алгоритм BiCGSTAB можно записать так. На подготовительной стадии выполняется несколько шагов: 1. По заданному начальному приближению χ (обычно χ = 0) вычисляется 0 и л 0 невязка г = b - Ах 2. Выбирается вектор г , удовлетворяющий условию г ,г φ 0 . На практике a ~ 0 0 часто берут г = г 3. Полагается р0 =г , 4. Устанавливается счетчик итераций к = 0 .
Итерационные методы решения систем линейных алгебраических уравнений 197 Далее выполняются итерации при к = О,1, 2,... ~ о г 5. Находится ак = г ,г / Арь 6. Полагается s^ =r c -а/сАр/с. 7. Вычисляется ω!ζ = As^s^ / As^As^ 8. Находится новое приближение χ =χ +а/ср/с+ro/cs/i;. 9. Подсчитывается невязка г ζ = sk — ω/ζAs/i;. Если выполняется условие остановки, например к+\ Г < ε, то алгоритм завершается. k+l ~ О г г ' Ot/ 10. Находится β^ = к ~ 0 ω,, 11. Вычисляется pk+l =rk+l + βλ ρ^. - сакАрк . 12. Увеличивается номер итерации к — к + \. 13. Происходит переход к шагу 5. 14. Конец алгоритма. Все рассмотренные методы крыловских подпространств могут использоваться с предобуслоелиеателями [27]. Например, для симметричных матриц целесообразно использовать неполную факторизацию Холецкого, а для матриц общего вида можно применить неполное LU-разложение (ILU). 3.10. Итерационные методы решения нормальных систем линейных алгебраических уравнений Напомним, что нормальная система линейных алгебраических уравнений имеет вид АтАх = АтЬ. (3.185) Мы знаем, что переходить к системе (3.185) от системы Ах = Ь с прямоугольной матрицей нецелесообразно, по крайней мере для больших плохо обусловленных систем, так как число обусловленности матрицы А А равно квадрату числа обусловленности А, и переход к системе (3.185) приведет к накоплению погрешностей и ухудшению сходимости. Однако необходимость в решении нормальной системы (3.185) возникает в линейной задаче метода наименьших квадратов. В главе 2 мы рассмотрели прямые
198 Глава 3 методы решения задачи наименьших квадратов. Сейчас рассмотрим итерационные методы решения этой задачи. Но прежде вспомним некоторые свойства нормальных систем (см., например, [7]). Вектор χ минимизирует величину |Ах —bll то есть является решением задачи наименьших квадратов, тогда и только тогда, когда он является решением нормальной системы (3.185). Матрица А А симметрична, и если столбцы матрицы А линейно независимы, то матрица А А положительно определена. Матрица А А вырождена тогда и только тогда, когда столбцы матрицы А линейно зависимы. Нормальная система (3.185) имеет единственное решение, когда столбцы матрицы А линейно независимы. При решении нормальной системы (3.185) можно перейти к решению системы Ах = b с матрицей общего вида и применить соответствующие итерационные методы подпространств Крылова. Но эти методы достаточно сложны и требуют больших затрат памяти. Используем относительно несложные итерационные алгоритмы, но модифицируем их таким образом, чтобы они не работали явно с плохо обусловленными матрицами вида А А [27, 36, 43]. В точной арифметике эти методы математически эквивалентны решению системы (3.185), но в реальных вычислениях они не допускают большого накопления погрешностей и плохой сходимости. Рассмотрим наиболее часто встречающуюся задачу, когда матрица А имеет размеры тхп, т > η. Известна также другая форма нормальных систем АА у = b , которую применяют в случае т<п . Решение исходной системы в этом случае равно χ = А у . Методы решения этой задачи рассмотрены в [27, 43]. Итерация метода Ричардсона, примененного к нормальной системе (3.185), имеет вид хк =хк-1 +τ ATb-ATAx*_1 . (3.186) Элементарное преобразование (3.186) дает хк =хк-1 +τΑΤ b-Ax*"1 . (3.187) Этот метод часто называют методом Ландвебера (Landweber's method). В точной арифметике формулы (3.186) и (3.187) эквивалентны. Но (3.187) не работает с матрицей АТА. Для получения формулы итерации метода Якоби решения систем нормальных уравнений вспомним, что метод Якоби совпадает с методом Ричардсона, примененным к предобусловленной системе (3.48). Из (3.48) и (3.187) при τ = 1 получаем xk =xk-1 +D-1AT(b-Ax/c-1) = x/c-1 +O-1Arrk-1 , где D — диагональная матрица, составленная из диагональных элементов матрицы А А; г =Ь-Ах ζ —невязка на (&-1)-й итерации.
Итерационные методы решения систем линейных алгебраических уравнений 199 Пусть матрица А имеет размеры тхп . Обозначим через а,, / = 1,2,..., η столбцы матрицы А . Предположим, что все столбцы А отличны от нуля. Легко проверить, что диагональные элементы матрицы D равны Т II 1|2 Оц = аг аг = ||аг ||2 · Для записи итерации метода Якоби в покомпонентной форме учтем, что г -й ком- . Т k-\ r T k-\ rr понент вектора А г может быть записан в виде а, г .1 огда х? =xik~1 +-^^гкЛ . (3.188) Обратите внимание, что для вычисления г -го компонента нового приближения решения (3.188) требуется весь вектор не аяз/ш г с~ . В методе Зейделя расчет ведется по той же формуле, что и в методе Якоби. Отличие состоит в том, что компоненты нового приближения вычисляются последовательно и полученные компоненты нового приближения используются в пределах одной итерации для уточнения других компонентов. Если обозначить через е^ г -й столбец единичной матрицы, то есть вектор-столбец, содержащий единственную единицу в строке г, то запись итерации метода Зейделя имеет вид к к-\ ί χ к-Ι -ίο /τι nm χ> =χ> +]Г~м2"ег'аг'Гг' ' г=1'2' ···'"· (3.189) Ы12 Запись вида х; означает вектор, у которого изменяется только г -й компонент. Т к—1 Выражение е,-а,-г в (3.167) обеспечивает изменение только /-го компонента вектора приближения решения. Для вычисления х;+1 необходимо обновить невязку. Из (3.189) получаем к к-\ -Ι Τ ' Ь-Ахг =Ь-Ахг -А егаг гг Ы12 или т к-\ к-\ к-\ я Г- / / Г'+1 _Г' й Й2-Я' · 1а/|2 Заметим, что для формирования / -го компонента вектора приближения решения нужен только i -й столбец матрицы А, а матрица А А явно не используется. Метод последовательной верхней релаксации (SOR) для нормальных систем уравнений получается введением релаксационного параметра ω в метод Гаусса—Зейделя к _ к-\ ω τ к-\ Ы12
200 Глава 3 т к-\ к-\ к-\ Я Г- ri+1 =гг -ω ' ' яг, i = \,2,...,п. 1а4 Рассмотрим алгоритм метода сопряженных градиентов для метода наименьших квадратов (CGLS — Conjugate Gradient Method for Least-Squares). За основу возьмем алгоритм метода сопряженных градиентов, рассмотренный в разд. 3.9.5, формально заменив матрицу А на А А. Чтобы не использовать плохо обусловленную матрицу Τ к Τ Τ к Τ к А А учтем, что невязка нормальной системы г = A b — А Ах = Α ζ , где ζ ζ = b — Αχ ζ . Учтем также свойство скалярных произведений: А Ар/с,р/с = Ар/с,Ар/с . Тогда алгоритм CGLS примет следующий вид. На "нулевой" итерации выполняются подготовительные действия: 1. Полагается к = 0 . 2. По заданному начальному приближению χ (обычно χ = 0) вычисляется о,Ло о Ато невязка: ζ = b - Αχ , г = Α ζ 3. В качестве направления движения выбирается Pi = г На первой и дальнейших итерациях (к = 1,2,...) выполняются следующие действия: 4. Вычисляется номер текущей итерации к = к +1. 5. Вычисляется коэффициент к-\ к-\ I . . «*= г >г / АРкЛРк 6. Находится новое приближение решения к к-\ χ =х +а/ср/с. 7. Вычисляется новая невязка ζ =ζ — α^Αρ^, г =Α ζ 8. Проверяется условие окончания итерационного процесса, например, Если условие выполняется, то алгоритм завершает работу. 9. Вычисляется коэффициент „ к к I к-\ к-\ %= г ,r J г ,г 10. Определяется новое направление движения Pk+i=rk +$кРк- 11. Осуществляется переход на шаг 4. 12. Конец алгоритма.
Итерационные методы решения систем линейных алгебраических уравнений 201 Сходимость рассмотренных итерационных методов решения нормальных систем определяется свойствами матрицы А А. Отметим, что рассмотренные методы фактически решают СЛАУ с несимметричными прямоугольными матрицами, осуществляя неявно переход к нормальной системе. Для решения систем с несимметричными прямоугольными матрицами популярен алгоритм LSQR— Least Squares QR [36, 44]. В этом случае поправка к приближению решения находится путем минимизации квадрата евклидовой нормы невязки, то есть линейным методом наименьших квадратов: mm b-Ax В LSQR применен "ослабленный метод наименьших квадратов" (damped least-squares) mm Га] [λΕ χ — Гь] oj (3.190) где Ε — единичная матрица; λ — произвольная константа. Вектор х, минимизирующий (3.190), удовлетворяет системе Ε А -λΕ (3.191) где г = b Ax — невязка. Методом Ланцоша строится базис подпространства Крылова так, чтобы невязка вспомогательной системы (3.191) была ортогональна базису. Доказано [44], что очередной вектор базиса находится из решения СЛАУ с прямоугольной нижней двухдиагональной матрицей. Для решения этой СЛАУ используется QR-разложение. Метод LSQR в точной арифметике эквивалентен CGLS , но дает лучшие результаты для плохо обусловленных систем [36]. Во многих приложениях, например при численном решении систем линейных уравнений в теории упругости и гидродинамике или в задачах наименьших квадратов с ограничениями, необходимо решать невырожденные системы линейных уравнений с симметричной незнакоопределенной матрицей блочной структуры [27, 45] (3.192) где А — симметричная положительно определенная матрица, В — прямоугольная матрица. Такая задача называется седловой (термин произошел из теории математического программирования). Наиболее известным методом решения системы (3.192) является метод Узавы (Uzawa's method) [27, 45]. В самом общем виде метод Узавы строится следующим образом. Запишем систему (3.192) в покомпонентной форме iAu + Bp = f, J T (3.193) А В Вт 0 и Р. = Г _ф_ [В и = ф.
202 Глава 3 Определим из первого уравнения системы (3.193) компонент u = A * f-Bp и подставим во второе уравнение BTA-1Bp = BTA-1f-(p, (3.194) решая которое, можно определить ρ . Отметим, что матрица А положительно оп- Τ —1 ределена по условиям задачи. Матрица В А В также является положительно определенной. Метод Узавы в простейшем виде представляет собой итерационный процесс, состоящий из двух шагов. На первом шаге каким-либо методом решается первое уравнение системы (3.193) Au* =f-Bp/c -1 На втором шаге методом Ричардсона решается система (3.194) к к-\ к-\ к-\ -τ,Ί » -1<- -τ,Ί » -1τ» k-l ρ =ρ +тг =ρ +τΒΑί-φ-ΒΑ Βρ k-\ „Ύ a -lr a -It» k-\ k-\ „Ύ k-\ = ρ +τ Β A f-A Βρ -φ =ρ +τ Β u -φ . Подробнее с современными методами решения седловых задач можно ознакомиться в [45]. 3.11. Итоговые замечания В данной главе мы рассмотрели наиболее популярные алгоритмы решения систем линейных алгебраических уравнений. Следует отметить, что решение систем линейных алгебраических уравнений является интенсивно развиваемым направлением, и вне нашего поля зрения остались многие методы решения таких задач. Например, не рассмотрены метод Чебышева, методы расщепления (неявные методы переменных направлений). С этими методами можно познакомиться, например, в [5, 10, 14]. Некоторое представление о современном состоянии и тенденциях развития методов решения систем линейных алгебраических уравнений можно получить из работ [2, 38, 46, 47]. В настоящее время основное внимание уделяется решению больших систем линейных алгебраических уравнений, которые получаются в результате ко- нечноразностной и конечноэлементной аппроксимации краевых задач, описываемых дифференциальными уравнениями в частных производных. Также интенсивно развиваются так называемые бессеточные методы [48, 49] решения таких задач. В этих методах решение задачи ищется в виде взвешенной суммы базисных функций, а весовые коэффициенты находятся в результате решения системы линейных алгебраических уравнений, получаемых из условия равенства нулю невязки решения в некоторых контрольных точках. Для решения больших систем алгебраиче-
Итерационные методы решения систем линейных алгебраических уравнений 203 ских уравнений, возникающих из краевых задач, в основном используются итерационные методы в подпространствах Крылова. Одними из самых эффективных по времени и затратам памяти методов решения краевых задач, описываемых дифференциальными уравнениями в частных производных, являются многосеточные методы [2, 50, 51]. В основе многосеточных методов лежат вычисления на последовательности сеток. Схематично идея простейшего двухсеточного метода выглядит следующим образом. На точной сетке производится несколько итераций решения конечноразностной или конечноэле- ментной системы, находятся приближение решения и невязка. Невязка пересчиты- вается на грубую сетку, на которой находится поправка к решению. Полученная поправка интерполируется на точную сетку. Полученное на точной сетке решение корректируется с помощью поправки. Используя скорректированное решение, на точной сетке производится несколько итераций для подавления ошибки интерполяции, рассчитывается невязка. На грубой сетке с помощью невязки формируется поправка и т. д. до достижения требуемого показателя точности. Глобальной тенденцией развития методов вычислений является распараллеливание вычислений, что зачастую требует не просто разработки параллельных реализаций известных методов, но и создания принципиально новых методов. 3.12. Реализация итерационных методов в MATLAB 3.12.1. Некоторые функции реализации итерационных методов в MATLAB Все реализованные в системе MATLAB итерационные методы относятся к методам в подпространствах Крылова. Рассмотрим наиболее популярные методы, реализованные в MATLAB. Функция peg реализует предобуслоеленный метод сопряженных градиентов. Обращение к функции позволяет решить СЛАУ Ах = b с симметричной положительно определенной матрицей А . Простейшее обращение к функции имеет вид х=рсд(А,Ъ). При таком обращении предобусловливатель не применяется. Начальное приближение представляет собой нулевой вектор. Итерационный процесс продолжается до тех пор, пока относительная евклидова норма невязки станет меньше или равной 1е-б или число итераций превысит максимально допустимое значение. По умолчанию максимально допустимое число итераций равно min(n,20), где η — порядок системы. Обращение вида [х,flag,relres,iter,resvec]=pcg(A,b,tol,maxit,xO) также не использует предобусловливатель, но задает допустимую погрешность вычислений по относительной норме невязки tol, максимально допустимое число итераций maxit и вектор начального приближения хО. Кроме вектора решения χ функция возвращает флаг (признак) flag, указывающий на достижение решения: если достигнута точность tol за число итераций, не превышающее maxit, то flag=o;
204 Глава 3 если точность не достигнута за максимально допустимое число итераций, то flag=l; если вспомогательная СЛАУ с матрицей предобусловливателя не может быть решена из-за плохой обусловленности, то flag=2; если два последовательных приближения решения оказались одинаковыми, то flag=3; если одна из величин в процессе выполнения процедуры вышла за пределы допустимых чисел в компьютере, то flag=4. Параметр relres устанавливается равным достигнутой относительной норме невязки решения. Параметр iter возвращает число итераций, выполненных функцией. Параметр resvec возвращает евклидовы нормы невязок на каждой итерации, начиная с невязки начального приближения, в форме вектора длиной iter+l. Вектор норм невязок позволяет построить зависимость нормы невязки от номера итерации. Функция peg может использовать предобуслоелиеателъ. Вызов функции в этом Случае имеет ВИД [х,flag,relres,iter,resvec]=pcg(A,b,tol,maxit,M,xO), где М — матрица предобусловливателя. Так как метод сопряженных градиентов применяется для положительно определенных матриц, то в качестве предобусловливателя обычно применяют неполную факторизацию Холецкого. Неполная факторизация Холецкого реализуется функцией choline, обращение к которой имеет вид R=cholinc(A,droptol), где а — факторизуемая матрица, a droptoi — порог разреженности. Порог разреженности — это минимальное значение элемента факторизованной матрицы, при котором он приравнивается нулю. Нулевой порог разреженности означает, что на месте нулевых элементов исходной матрицы будут нулевые элементы матрицы факторизации, то есть число ненулевых элементов не увеличится после приближенной факторизации. Вызов функции в этом случае имеет вид R=cholinc (А, ■ о ■). При использовании неполной факторизации Холецкого обращение к функции peg имеет ВИД [х,flag,relres,iter,resvec]=pcg(A,b,tol,maxit,R' ,R,xO) . Рассмотрим примеры. Решим СЛАУ с матрицей, полученной в результате конечно- разностной аппроксимации оператора Лапласа в квадрате. Такая матрица формируется функцией, рассмотренной в разд. 2.11.2. Пример спай-графика ("портрет" матрицы) такой матрицы приведен на рис. 2.5. Для примера возьмем область размером 2 л = 22 узловых точек. Размерность матрицы в этом случае равна п — 2 = 400 . Вектор правой части возьмем состоящим из единиц: » п=22; » A=delsq (numgrid (' S' ,η)) ; » b=ones (length (A) , 1) ; Попытаемся решить СЛАУ, задав все параметры функции peg по умолчанию: » [х,flag,relres,iter,resvec]=pcg(A,b); За 20 итераций, задаваемых по умолчанию, получить решение не удалось: » flag flag = 1
Итерационные методы решения систем линейных алгебраических уравнений 205 » relres relres = 0.0057 » iter iter = 20 Решим ту же СЛАУ, задав допустимую погрешность вычислений tol=l0-6, а предельное число итераций равным 400: » [х,flag,relres,iter,resvec]=pcg(A,b,le-6,400); Решение достигается за 32 итерации: » flag flag = 0 » iter iter = 32 » relres relres = 4.6868e-007 При исследовании итерационных алгоритмов большой интерес представляет зависимость относительной нормы невязки от номера итерации. График такой зависимости легко получить, применив возвращаемый параметр resvec функции peg » semilogy(0:iter,resvec/norm (b)); » grid » xlabel('Номер итерации') » ylabel('Относительная норма невязки') » legend('Метод CG') Результат представлен на рис. 3.6. Так как относительная норма невязки при нулевом начальном приближении меняется от 1 до заданного малого значения в критерии останова итераций, используется логарифмический масштаб графика по оси ординат (функция semilogy). Параметр resvec представляет собой вектор евклидовых норм невязок на каждой итерации. Для получения относительных норм невязок вектор нормируется: resvec/norm (Ь) . Исследуем влияние предобуслоелиеателей на итерационный процесс. Произведем неполную факторизацию Холецкого с нулевым порогом разреженности и с поро- том разреженности, равным 10 : » R=cholinc(А,'0') ; » Rl=cholinc(A,le-3) ; Постройте самостоятельно и сравните спай-графики матриц r и ri.
206 Глава 3 I 10 1Пшшшншшш!шшшйшшшшшшшшшшУкш^ _L _L м is 20 Номер итерации 25 30 35 Рис. 3.6. Зависимость относительной нормы невязки от номера итерации для метода сопряженных градиентов 10 ■"■■■"■з-"""-"1" .] —ε*—CG неполная факторизация, droptoNO * CG неполная факторизация, droptol=0 10 15 20 25 Номер итерации Рис. 3.7. Зависимость относительной нормы невязки от номера итерации при различных предобусловливателях
Итерационные методы решения систем линейных алгебраических уравнений 207 Теперь решим нашу систему без использования предобусловливателя и с использованием предобусловлителей r и ri. Построим графики изменения относительных норм невязок для этих трех вариантов решения » [x,flagl,relresl,iterl,resvecl]=pcg(A,b,le-6,400); » [x2,flag2,relres2,iter2,resvec2]=pcg(A,b,le-6,400,R' ,R) ; » [xl,flagl,relresl,iterl,resvecl]=pcg(A,b,le-6,400); » [x3,flag3,relres3,iter3,resvec3]=pcg(A,b,le-6,400,Rl',R1); » semilogy(O:iterl,resvecl/norm(b),... 0:iter2,resvec2/norm(b) , '-o' ,0:iter3,resvec3/norm(b) ,'-*') ; » grid » xlabel('Номер итерации') » ylabel (' Относительная норма невязки') » legend('CG','CG, неполная факторизация, droptol=0',... 'CG, неполная факторизация, droptol=0') Результат представлен на рис. 3.7. Из рис. 3.7 видно, что применение неполной факторизации существенно сокращает число итераций. К тому же небольшое увеличение порога разреженности резко сокращает число итераций. Это объясняется тем, что матрица предобусловливателя приближается к исходной матрице системы. Но увеличение порога разреженности увеличивает число ненулевых элементов и затраты памяти (с помощью функции nnz определите число ненулевых элементов в матрицах R и Rl). Решение СЛАУ с произвольными квадратными несимметричными матрицами представляет серьезную проблему. Для решения таких систем предназначена функция bicg, реализующая метод бисопряженных градиентов. Обращение к функции bicg точно такое же, как и к функции peg (показаны все параметры): [х,f lag,relres,iter,resvec] =bicg(A,b, tol ,maxit ,M1 ,M2, xO), где матрица предобусловливателя имеет вид m=mi*m2. В качестве предобусловливателя в случае несимметричных матриц обычно применяется неполное LO-разложение. В простейшем случае обращение к функции неполного LU-разложения имеет вид [L,u]=luinc(A,droptol). Для каждого столбца получающихся треугольных матриц элементы, не превышающие локального порога разреженности, исключаются. Локальный порог разреженности — это произведение порога разреженности на норму соответствующего столбца исходной матрицы. В процессе неполного LU-разложения на диагоналях треугольных матриц могут возникать нулевые элементы. Тогда треугольные матрицы становятся особенными и не могут использоваться в качестве предобусловливателя. В такой ситуации выдается предупреждение. В этом случае необходимо уменьшить порог разреженности. Обращение к функции bicg при использовании в качестве предобусловливателя неполного LU-разложения имеет вид [χ,flag,relres,iter,resvec]=bicg(A,b,tol,maxit,L,U,xO) . Рассмотрим пример. В качестве матрицы А используем несимметричную тестовую матрицу west0479, имеющую сложную разреженную структуру (рис. 3.8).
208 Глава 3 О so 100 150 200 250 300 350 400 450 О- 100 290 300 400 пг = 1SS7 Рис. 3.8. Спай-график матрицы west0479 В качестве вектора правой части используем сумму столбцов матрицы. Решением в этом случае является единичный вектор (см. разд. 2.11.2): » load west0479; » A=west0479; » b=sum(A,2) ; Функция sum (A, 2) осуществляет суммирование по второй размерности двумерного массива а, то есть по столбцам матрицы. Попытаемся решить такую систему методом бисопряженных градиентов: » [х,flag,relres,iter,resvec]=bicg(A,b); » flag flag = 1 Заданная точность не достигнута. Обратите внимание, что в этом случае возвращаемый параметр iter равен нулю: » iter iter = 0 Построим график зависимости относительной нормы невязки от номера итерации на 20 выполненных по умолчанию итерациях: » semilogy (0:20,resvec/norm (b)) » grid » xlabel('Номер итерации') » ylabel (' Относительная норма невязки')
Итерационные методы решения систем линейных алгебраических уравнений 209 10 b = = = = = = * = = = = = = d = = = = = = =l= = = = = = =fc = = == = = Jt = = = = = = d = = = = = = J= = = = = ==fc = = = = = = t 0 2 4 6 8 10: 12 14 16 18 2β Номер итерации Рис. 3.9. Зависимость относительной нормы невязки от номера итерации для метода бисопряженных градиентов Как отмечалось в разд. 3.9.6, поведение невязки в методе бисопряженных градиентов может носить нерегулярный характер, что иллюстрирует рис. 3.9. Попытаемся решить СЛАУ с использованием предобусловливателя в форме неполного LU-разложения с порогом разреженности 1е-5: » [Ll,Ul]=luinc(A,le-5) ; Warning: Incomplete upper triangular factor has 1 zero diagonal. It cannot be used as a preconditioner for an iterative method. Полученное предупреждение означает, что верхний треугольный множитель имеет один нулевой элемент на диагонали. Такое разложение не может быть использовано для итерационного метода. Уменьшим порог разреженности: » [Ll, Ul ] =luinc (А, 1е- 6) ; Решим систему методом бисопряженных градиентов: » [х,flag,relres,iter,resvec]=bicg(A,b,le-6,400,L1,U1); » flag flag = 0 Построим зависимость относительной нормы невязки от номера итерации: » semilogy(0:iter,resvec/norm (b)) » grid » xlabel('Номер итерации') » ylabel('Относительная норма невязки')
210 Глава 3 Номер итерации Рис. 3.10. Зависимость относительной нормы невязки от номера итерации для предобусловленного метода бисопряженных градиентов Зависимость относительной нормы невязки от номера итерации для предобусловленного метода бисопряженных градиентов (рис. 3.10) говорит о хорошей и устойчивой сходимости метода. Попытка решить рассматриваемую СЛАУ устойчивым методом бисопряженных градиентов не увенчалась успехом: » [х,flag,relres,iter,resvec]=bicgstab(А,Ь); » flag flag = 1 С использованием предобусловливателя система успешно решена: » [х,flag,relres,iter,resvec]=bicgstab(A,b,le-6,20,L1,U1); » flag flag = 0 Функция bicgstab вычисляет относительные нормы невязки в промежуточной точке между двумя итерациями. Поэтому » iter iter = 0.5000 » relres relres = 8.3806e-007
Итерационные методы решения систем линейных алгебраических уравнений 211 Это говорит о том, что относительная норма невязки 10 достигается меньше, чем за одну итерацию. Решим систему до очень малой относительной нормы невязки, равной 10~ » [x,flag,relres,iter,resvec]=bicgstab(A,b,le-15,20,Ll,Ul); График зависимости относительной нормы невязки от номера итераций (рис. 3.11) построим с учетом особенности функции bicgstab: массив номеров итераций формируем с шагом, равным 0,5. » semilogy(0:0.5:iter,resvec/norm(Ь)) » grid » xlabel('Номер итерации') » ylabel('Относительная норма невязки') 10 10" 10 10" 10 о 10 „-'Л 10" a.s 15 2 2 £ Номер итерации 3,5 45 Рис. 3.11. Зависимость относительной нормы невязки от номера итерации для предобусловленного устойчивого метода бисопряженных градиентов Рисунок 3.11 свидетельствует об очень высокой эффективности устойчивого метода бисопряженных градиентов. В системе MATLAB реализованы и другие итерационные методы. В версии MATLAB R2010b реализованы следующие методы: bicg— метод бисопряженных градиентов (Biconjugate gradients method); bicgstab — стабилизированный метод бисопряженных градиентов (Biconjugate gradients stabilized method); bicgstabi (Biconjugate gradients stabilized (1) method) — вариант bicgstab, внешне отличается выводом оценки невязки через четверть итерации; csg — квадратичный метод сопряженных градиентов (Conjugate gradients squared method); gmres — обобщенный
212 Глава 3 перезапускаемый метод минимальных невязок (Generalized minimum residual method with restarts); lsqr — метод LSQR; minres — метод минимальных невязок (Minimum residual method); peg — предобусловленный метод сопряженных градиентов (Preconditioned conjugate gradients method); qmr — метод квазиминимальных невязок (Quasi-minimal residual method); symmlq— симметричный метод LQ (Symmetric LQ method); tfqmr — метод квазиминимальных невязок без транспонирования (Transpose-free quasi-minimal residual method). 3.12.2. Примеры программ В качестве примеров рассмотрим реализацию классических итерационных алгоритмов и явного метода сопряженных градиентов (двучленные формулы). Главная программа sam3_0l.m (листинг 3.1) задает матрицу решаемой системы, вектор правой части и реализует несколько методов решения СЛАУ с симметричными положительно определенными матрицами. Главная программа использует функцию iter (А,Ь), которая отображает простейшее меню, позволяющее вызвать методы Ричардсона, Якоби, Зейделя, последовательной верхней релаксации (SOR), минимальных невязок, сопряженных градиентов. Функция iter (А,Ь) выводит результаты решений, в том числе в виде графиков. Каждый график выводится в отдельное графическое окно. Это позволяет проводить многократные эксперименты, меняя параметры итерационных процессов. Каждый эксперимент идентифицируется своим номером. Каждый метод реализован в виде отдельной универсальной функции. Во всех методах критерий окончания итераций использует относительную норму невязки, что позволяет сравнивать разные методы. В данном примере все методы реализованы при нулевом начальном приближении (функции методов предусматривают произвольное начальное приближение). | Листинг3.1. Главная программа sam3_01.m % Примеры итерационных методов решения СЛАУ Ах=Ь % с симметричными положительно определенными матрицами. % Применяется функция x=iter(A,f) , реализующая методы Ричардсона, Якоби, % Зейделя, последовательной верхней релаксации (SOR), % минимальных невязок, сопряженных градиентов. % Во всех методах используется нулевое начальное приближение. % Во всех методах для проверки условия окончания итераций используется % относительная норма невязки. % Возможно многократное решение системы разными или одним способом. % Результирующие графики отображаются в отдельных окнах, что позволяет % сравнивать скорости сходимости методов. clear % Очистка рабочего пространства clc % Очистка командного окна close all % Закрытие всех окон
Итерационные методы решения систем линейных алгебраических уравнений 213 Р(' 10 -2 -1 0 0 0 0 0 0 0 0 0 Матрица -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 решаемой 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 СЛАУ 0 0 0 -1 -2 6 -2 -1 0 0 0 0 ') 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 -1 0 0 0 0 0 0 0 0 -1 -2 6 -2 0 0 0 0 0 0 0 0 0 -1 -2 10] disp('Вектор правой части') Ь=[55555555555 5]' η = length (b); % Расчет длины вектора b хО = zeros (η,1); % Обнуление начального приближения iter (А,Ь,х0); % Реализация итерационных методов Назначением функции iter (А,Ь) (листинг 3.2) является выбор с помощью меню одного из итерационных методов, запрос исходных данных и вывод результатов. В приведенном ниже тексте функции используются переносы операторов на следующую строку (символы "..."). В исходном тексте функции переносы можно не использовать. При решении СЛАУ, требующем большого числа итераций, целесообразно использовать логарифмический масштаб по оси абсцисс, отражающей номер итерации (функции loglog, semilogx). Но при этом не будут отображаться значения нулевой итерации (начального приближения). В методе сопряженных градиентов на последней итерации не вычисляется коэффициент β, что нашло отражение при построении соответствующего графика. I Листинг 3.2. Функция iter function iter(A, b,x0) % Функция выбора метода решения, запроса исходных данных, % обработки и вывода результатов. % Выводится номер эксперимента с каким-либо методом. % Графическое окно с результатами эксперимента имеет тот же номер. Н=0; % номер эксперимента while 1 p=menu (' Решение СЛАУ итерационными методами' , ' Метод Ричардсона' ,... ' Метод Якоби' , ' Метод Зейделя' , ' SOR-метод' ,... ' Метод минимальных невязок' , ' Метод сопряженных градиентов' ,... 'Выход');
214 Глава 3 switch p case 1 % Метод Ричардсона Н=Н+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод Ричардсона') tol = input('Введите требуемую точность решения: ' ) ; maxit = input('Введите максимальное число итераций: '); % для матрицы из sam3_01 оптимальное значение 0.1774 tau = input ('Введите итерационный параметр: ' ) ; [х,flag,relres,iter,resvec]=richardson(A,b,tol,maxit,xO, tau); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п', relres, iter) end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п', relres, iter) disp('Решение методом Ричардсона'); χ figure; % График изменения относительной нормы невязки semilogy(0:iter, resvec / norm (b,inf)) grid on; title('Метод Ричардсона')% Заголовок окна xlabel ('Номер итерации'); ylabel ('Относительная норма невязки'); end disp('Нажмите Enter') pause case 2 % Метод Якоби Н=Н+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод Якоби') tol = input('Введите требуемую точность решения: '); maxit = input('Введите максимальное число итераций: '); [х,flag,relres,iter,resvec] = jacobi(A,b,tol,maxit,x0); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп', relres, iter)
Итерационные методы решения систем линейных алгебраических уравнений 215 end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п', relres, iter) disp('Решение методом Якоби'); χ figure; % График изменения относительной нормы невязки semilogy (0:iter, resvec / norm (b,inf)) grid on; title('Метод Якоби')% Заголовок окна xlabel ('Номер итерации'); ylabel ('Относительная норма невязки'); end disp('Нажмите Enter') pause case 3 % Метод Зейделя Н=Н+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод Зейделя') tol = input('Введите требуемую точность решения: '); maxit = input('Введите максимальное число итераций: '); [х,flag,relres,iter,resvec] = seidel(A,b,tol,maxit,xO); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп', relres, iter) end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп' , relres, iter) disp('Решение методом Зейделя'); χ figure; % График изменения относительной нормы невязки semilogy(0:iter, resvec / norm (b,inf)) grid on; title('Метод Зейделя')% Заголовок окна xlabel ('Номер итерации'); ylabel ('Относительная норма невязки');
216 Глава 3 end disp('Нажмите Enter') pause case 4 % Метод последовательной верхней релаксации (SOR) Н=Н+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод последовательной верхней релаксации (SOR)') tol = input('Введите требуемую точность решения: ' ) ; maxit = input('Введите максимальное число итераций: '); omega=input('Введите коэффициент релаксации='); [х,flag,relres,iter,resvec] = sor(A,b,tol,maxit,xO,omega); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп', relres, iter) end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп', relres, iter) disp('Решение SOR-методом'); χ figure; % График изменения относительной нормы невязки semilogy (0:iter, resvec / norm (b,inf)) grid on; title('SOR-метод')% Заголовок окна xlabel ('Номер итерации'); ylabel ('Относительная норма невязки'); end disp('Нажмите Enter') pause case 5 % Метод минимальных невязок Н=Н+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод минимальных невязок') tol = input('Введите требуемую точность решения: '); maxit = input('Введите максимальное число итераций: '); [х,flag,relres,iter,resvec,t]=min_residual(A,b,tol,maxit,xO); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки
Итерационные методы решения систем линейных алгебраических уравнений 217 %е за %и итераций\п', relres, iter) end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п', relres, iter) disp('Решение методом минимальных невязок'); χ figure; subplot(2,1,1); % График изменения относительной нормы невязки semilogy (0:iter, resvec / norm (b,inf)) grid on; title('Метод минимальных невязок')% Заголовок окна xlabel ('Номер итерации'); ylabel ('Относительная норма невязки'); subplot(2,1,2); plot(1:iter,t); grid on; xlabel ('Номер итерации'); ylabel ('Итерационный параметр'); end disp('Нажмите Enter') pause case 6 % Метод сопряженных градиентов H=H+1; fprintf(1,'ХпЭксперимент %u\n', Η) disp('Метод сопряженных градиентов') tol = input('Введите требуемую точность решения: '); maxit = input('Введите максимальное число итераций: '); [х,flag,relres,iter,resvec,alpha,beta]=con_grad(A,b,tol,maxit,xO); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п' , relres, iter) end if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итерацийХп' , relres, iter) disp('Решение методом сопряженных градиентов'); χ
218 Глава 3 figure; subplot(3,1,1) ; % График изменения относительной нормы невязки semilogy(0:iter, resvec / norm (b,inf)) grid on title('Метод сопряженных градиентов')% заголовок окна xlabel('Номер итерации') % Надпись по оси X ylabel('Относ, норма невязки')% Надпись по оси Υ % График alpha subplot(3,1,2); plot(1:iter,alpha) ; grid on xlabel('Номер итерации') % Надпись по оси X ylabel('alpha')% Надпись по оси Υ % График beta subplot(3,1,3) ; plot(l:iter-l,beta) ; xlabel('Номер итерации') % Надпись по оси X ylabel('beta')% Надпись по оси Υ grid on end disp('Нажмите Enter') pause case 7 % Выход disp('Окончание экспериментов') break end end Обращение к функциям, реализующим итерационные методы, имеет вид [х,flag,relres,iter,resvec, ...] =pcg(А,Ь, tol,maxit, xO,...), где а и ь — матрица и вектор правой части решаемой системы; tol — требуемая точность решения (допустимая относительная кубическая норма невязки); maxit — максимально допустимое число итераций; хО — вектор начального приближения; χ — вектор решения; flag — признак, указывающий на достижение решения: если достигнута точность tol за число итераций, не превышающее maxit, то flag=l, иначе flag=o; relres — достигнутая относительная норма невязки решения; iter — число итераций, выполненных функцией; resvec — кубические нормы невязок на каждой итерации, начиная с невязки начального приближения, в форме вектора длиной iter+l. Вектор невязок позволяет построить зависимость нормы невязки от номера итерации. Конкретные функции могут иметь дополнительные параметры, рассматриваемые ниже.
Итерационные методы решения систем линейных алгебраических уравнений 219 Функции, реализующие итерационные методы, построены по описанным в данной главе алгоритмам. Во всех функциях сначала находится невязка начального приближения. Редкая ситуация, когда начальное приближение является решением с допустимой погрешностью, не рассматривается. В данной ситуации будет проделана одна итерация. При каждой итерации находится новое приближение, возможно, с использованием невязки предыдущего приближения. Затем находится невязка нового приближения. Причем невязка находится даже в тех методах (Якоби, Зей- деля, последовательной верхней релаксации), в которых она не применяется для формирования нового приближения. Это позволяет сравнивать разные методы по величине нормы невязки. Далее вычисляется отношение кубических норм невязки и вектора правой части, которое используется для проверки критерия окончания итерационного процесса. В функции richardson (листинг 3.3), реализующей метод Ричардсона, используется дополнительный входной параметр tau — итерационный параметр. I Листинг 3.3. Функция richardson function [x,flag,relres,iter,resvec] = richardson (A,b,tol,maxit,xO, tau) % Метод Ричардсона % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - A, b - матрица и вектор правой части (соответственно) % - tol - требуемая точность (относительно нормы невязки) % - tau - итерационный параметр % - maxit - максимальное число итераций % - хО - начальное приближение % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag=l, если достигнута % точность tol в пределах числа итераций maxit; flag = 0, если за % число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - число проделанных итераций % - resvec - вектор полученных невязок о о χ = хО; flag = 0; nb=norm(b, inf) ; % Норма вектора правой части г=Ь-А*х; % Расчет невязки начального приближения nr = norm (r,inf); % Норма невязки resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit χ = χ + tau * г; % Вычисление очередного приближения
220 Глава 3 r=b-A*x; % Расчет невязки очередного приближения nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end end Функция jacobi (листинг 3.4) реализует метод Якоби. ! Листинг 3,4. Функция jacobi function [x,flag,relres,iter,resvec] = jacobi (A,b,tol,maxit,xO) % Метод Якоби % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - A,b - матрица, вектор правой части (соответсвенно) % - tol - требуемая точность (относительно нормы невязки) % - maxit - максимальное число итераций % - хО - начальное приближение % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag=l, если достигнута % точность tol в пределах числа итераций maxit; flag = 0, если за % число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - число проделанных итераций % - resvec - вектор полученных невязок χ = хО; flag = 0; N=length(b) ; nb=norm(b,inf) ; % Норма вектора правой части г=Ь-А*х; % Расчет невязки начального приближения nr = norm (r,inf); % Норма невязки resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit % Уточнение решения xk=x; for j=l:N x(j)=(b(j)-A(j,[l:j-l,j+l:N])*xk([l:j-l,j+l:N]))/A(j,j); end
Итерационные методы решения систем линейных алгебраических уравнений 221 г=Ь-А*х; % Расчет невязки нового приближения nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end end Функция seidel (листинг 3.5) реализует метод Зейделя. ! Листинг 3,5. Функция seidel function [x,flag,relres,iter,resvec] = seidel(A,b,tol,maxit,xO) % Метод Зейделя % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - A,b - матрица, вектор правой части (соответственно) % - tol - требуемая точность (относительно нормы невязки) % - maxit - максимальное число итераций % - хО - начальное приближение % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag = 1, если достигнута % точность tol в пределах числа итераций maxit; % flag = 0, если за число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - число проделанных итераций % - resvec - вектор полученных невязок χ = хО; flag = 0; N=length(b) ; nb=norm(b,inf) ; % Норма вектора правой части г=Ь-А*х; % Расчет невязки начального приближения nr = norm (r,inf); % Норма невязки resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit % Уточнение решения for j=l:N x(j)=(b(j)-A(j,[l:j-l,j+l:N])*x([l:j-l,j+l:N]))/A(j,j); end r=b-A*x; % Расчет невязки нового приближения
222 Глава 3 nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end end В функции sor (листинг 3.6), реализующей метод последовательной верхней релаксации (SOR), используется дополнительный входной параметр omega — постоянный коэффициент релаксации. I Листинг 3.6. Функция sor function [x,flag,relres,iter,resvec] = sor(A,b,tol,maxit,xO,omega) % Метод последовательной верхней релаксации (SOR) % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - A,b - матрица, вектор правой части (соответственно) % - tol - требуемая точность (относительно нормы невязки) % - maxit - максимальное число итераций % - хО - начальное приближение % - omega - коэффициент релаксации % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag = 1, если достигнута % точность tol в пределах числа итераций maxit; % flag = 0, если за число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - число проделанных итераций % - resvec - вектор полученных невязок χ = хО; flag = 0; N=length(b) ; nb=norm(b,inf) ; % Норма вектора правой части г=Ь-А*х; % Расчет невязки начального приближения nr = norm (r,inf); % Норма невязки resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit % Уточнение решения for j=l:N xk=x(j); % запоминание старого значения решения
Итерационные методы решения систем линейных алгебраических уравнений 223 xl=(b(j)-A(j,[l:j-l,j+l:N])*x([l:j-l,j+l:N]))/A(j,j); χ(j)=xk+omega*(xl-xk); end r=b-A*x; % Расчет невязки нового приближения nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end end В функции min_residual (листинг 3.7), реализующей метод минимальных невязок, используется дополнительный выходной параметр t — вектор значений итерационного параметра на каждой итерации, позволяющий построить зависимость итерационного параметра от номера итерации. i ЛИСТИНГ 3.7. Функция minresidual i i function [x,flag,relres,iter,resvec,t] = min_residual(A,b,tol,maxit,xO) % Метод минимальных невязок (residual) % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - A,b - матрица, вектор правой части (соответственно) % - tol - требуемая точность (относительно нормы невязки) % - tau - итерационный параметр % - maxit - максимальное число итераций % - хО - начальное приближение % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag = 1, если достигнута % точность tol в пределах числа итераций maxit; % flag = 0, если за число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - число проделанных итераций % - resvec - вектор полученных невязок % - t - вектор значений итерационного параметра на каждой итерации χ = хО; flag = 0; nb=norm(b, inf) ; % Норма вектора правой части г=Ь-А*х; % Расчет невязки начального приближения nr = norm (r,inf); % Норма невязки
224 Глава 3 resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit % Уточнение решения tau=dot(A*r,r)/dot(A*r,A*r); % Вычисление итерационного параметра t(iter)=tau;% Результирующий вектор итерационного параметра χ = χ + tau * г; %Вычисление нового приближения г=Ь-А*х; % Расчет невязки нового приближения nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end end В функции con_grad (листинг 3.8), реализующей двучленные формулы явного метода сопряженных градиентов, используются два дополнительных выходных параметра: alpha и beta — векторы значений итерационных параметров α и β на каждой итерации. ! Листинг 3.8. Функция congrad function [x,flag,relres,iter,resvec,alpha,beta]=con_grad(A,b,tol,maxit,xO) % Явный метод сопряженных градиентов (двучленные формулы) % ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ: % - А,Ь - матрица, вектор правой части (соответственно) % - tol - требуемая точность (относительно нормы невязки) % - tau - итерационный параметр % - maxit - максимальное число итераций % - хО - Начальное приближение % ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: % - χ - вектор решения % - flag - признак достижения решения (flag = 1, если достигнута % точность tol в пределах числа итераций maxit; % flag = 0, если за число итераций maxit точность tol не достигнута) % - relres - достигнутая относительная норма невязки % - iter - Число проделанных итераций % - resvec - Вектор полученных невязок % - alpha, beta - векторы значений итерационных параметров на каждой % итерации
Итерационные методы решения систем линейных алгебраических уравнений 225 χ = хО; flag = О; N = length(b); nb = norm(b,inf); % Норма вектора правой части г = Ь-А * х; % Расчет невязки начального приближения ρ = г; % Направление движения nr = norm (r,inf); % Норма невязки resvec (1) = nr; % Результирующий вектор невязок for iter = 1 : maxit В = dot (r, r) ; alpha_k = B/dot(A*p,p); % Коэффициент альфа alpha(iter) = alpha_k;% Для графика alpha χ = x+alpha_k*p; % Новое приближение решения г = r-alpha_k*A*p; % Расчет невязки нового приближения nr = norm (r,inf); % Норма невязки resvec (iter+1) = nr; % Результирующий вектор невязок relres = nr / nb; % Достигнутая относительная норма невязки if relres <= tol % Проверка условия окончания процесса flag = 1; break; end beta_k = dot(г,г)/В; % Коэффициент бета beta(iter) = beta_k; ρ = r+beta_k*p;% Новое направление end Решим различными методами систему, приведенную в главной программе (матрицу и вектор правой части, естественно, можно изменить, учитывая, что все рассматриваемые методы работают с положительно определенными матрицами). Решать систему будем до относительных кубических норм невязки, равных 0.001. После запуска главной программы появляется меню (рис. 3.12). Выбираем первый пункт: Метод Ричардсона. В командном окне программа указывает номер эксперимента и предлагает ввести итерационный параметр. Для рассматриваемой системы оптимальное значение итерационного параметра, вычисленное по формуле (3.39), равно 0.1774. Для других матриц итерационный параметр необходимо подбирать. Зададим tau=o. 17: Эксперимент 1 Метод Ричардсона Введите критерий окончания процесса: 0.001 Введите максимальное число итераций: 1000 Введите итерационный параметр: 0.17
226 Глава 3 Решен СЛАУ in~ pa нны методам Метод Ρ чардс на МетодЯкоби Метод Зеиделл SOR-метод Метод ал ных невязок Метод сопряж нных градиентов Выход Рис. 3.12. Меню В командное окно выводятся результаты вычислений: Решение достигнуто Достигнута относительная норма невязки 9.929611е-004 за 107 итераций Решение методом Ричардсона χ = 3.1658 7.8198 11.0189 13.5518 15.2075 16.0423 16.0423 15.2075 13.5518 11.0189 7.8198 3.1658 Нажмите Enter В графическое окно 1 выводится график зависимости относительной нормы невязки от номера итерации (рис. 3.13) Обратите внимание, что для данной задачи в течение нескольких первых итераций кубическая норма вектора невязки не изменяется В этом можно убедиться, анализируя в режиме отладки вектор невязки После нажатия клавиши Enter происходит возврат в меню (рис. 3.12) и можно решить систему любым доступным методом Последовательно выполним все пункты меню. Графики результатов решения представлены на рис. 3.14—3.18.
Итерационные методы решения систем линейных алгебраических уравнений 227 Метод Ричардсона 40 6Q 80 Номер итерации 100 120 Рис. 3.13. Результаты решения методом Ричардсона 40 6Q 80 Номер итерации 120 Рис. 3.14. Результаты решения методом Якоби
228 Глава 3 Метод Зейделя О И 20 30 40 50 60 Номер «терацш Рис. 3.15. Результаты решения методом Зейделя SOR-метод "№ t=:=:::=:t=======rtr===rr=rt===:::::(:=r=====ir=r===rrir====:::i Q 2 4 Б S 10 12 14 16 Номер итерации Рис. 3.16. Результаты решения методом последовательной верхней релаксации (значение коэффициента релаксации, равное 1.5, подобрано экспериментально)
Итерационные методы решения систем линейных алгебраических уравнений 229 ш 10 т 10' 0.19 0.18 \~ 0.17 0 -2 -* "~*~-*-^ Метод минимальных невязок I i χ 0.16 2Q 40 63 SO Номер итерации 40 6Q 80 Напер итераций 1СЙ 120- «ΟΡΜΟ. 3.17. Результаты решения методом минимальных невязок ГО 4Г>^ 10 10 Метнд сопряженных градиентов 2 3 4 Номер итерации ι 1 1 1 1 г J I I L 1 15 2 2.5 3 3.5 4 4.5 5 5.5 6 Номер итерации "т г" I I 1 1.5 2 2.5 3 3.5 4 4.5 Номер итерации Рис. 3.18. Результаты решения методом сопряженных градиентов
230 Глава 3 Результаты экспериментов подтверждают известные соотношения между скоростями сходимости различных методов. Метод Ричардсона с близким к оптимальному итерационным параметром и метод Якоби дают примерно одинаковое число итераций. Примерно столько же итераций потребовал метод минимальных невязок. Но этот метод позволяет автоматически определять итерационный параметр. Обратите внимание, что значение итерационного параметра колеблется вблизи оптимального значения для метода Ричардсона. Более чем в два раза сокращается число итераций при использовании метода Зейделя. Выделяется своей простотой и эффективностью метод последовательной верхней релаксации, но он требует подбора коэффициента релаксации. Как и следовало ожидать, самым эффективным из рассмотренных методов оказался метод сопряженных градиентов, потребовавший всего 6 итераций. Программа sam3_02.m (листинг 3.9) демонстрирует решение СЛАУ с матрицей, полученной в результате конечно-разностной аппроксимации оператора Лапласа в квадрате, методом сопряженных градиентов (функция con_grad). Используется область размером η = 22 узловых точек. Размерность матрицы в этом случае равна 2 п - 2 = 400. Для экономии памяти и ускорения вычислений матрица преобразована в разреженный формат с помощью функции sparse. Вектор правой части состоит из единиц. \ Листинг3.9. Программа sam3_02 % Пример решения СЛАУ с разреженной матрицей СЛАУ с матрицей, % полученной в результате конечно-разностной аппроксимации % оператора Лапласа в квадрате, явным методом сопряженных градиентов % (двучленная формула). % Вектор правой части состоит из единиц, clear % Очистка рабочего пространства clc % Очистка командного окна close all % Закрытие всех окон п=22; % Число узловых точек % Матрица, полученная в результате конечно-разностной аппроксимации % оператора Лапласа в квадрате А= delsq(numgrid('S',η)); AS = sparse(A),·% AS - матрица в разреженном формате хранения b = ones(length(A),1); % Правая часть из единиц хО = zeros(length(A),1); % Нулевое начальное приближение tol = 1е-6; % Точность maxit = 1000; % Максимальное число итераций [х,flag,relres,iter,resvec,alpha,beta] = con_grad(A,b,tol,maxit,xO); if flag == 0 % Решение не достигнуто disp ('Решение не достигнуто') fprintf(1, 'ХпДостигнута относительная норма невязки %е за %и итераций\п', relres, iter) end
Итерационные методы решения систем линейных алгебраических уравнений 231 if flag == 1 % Решение достигнуто disp ('Решение достигнуто') fprintf (1, ' ХцЦостигнута относительная норма невязки ... %е за %и итераций\п', relres, iter) figure; subplot(3,1,1) ; % График изменения относительной нормы невязки semilogy (0:iter, resvec / norm (b,inf)) grid on title('Метод сопряженных градиентов')% Заголовок окна xlabel('Номер итерации') % Надпись по оси X ylabel('Относ, норма невязки')% Надпись по оси Υ % График alpha subplot(3,1,2); plot(1:iter,alpha); grid on xlabel('Номер итерации') % Надпись по оси X ylabel('alpha')% Надпись по оси Υ % График beta subplot(3,1,3) ; plot(l:iter-l,beta); xlabel('Номер итерации') % Надпись по оси X ylabel('beta')% Надпись по оси Υ grid on end Результаты представлены на рис. 3.19. Они еще раз свидетельствуют о высокой скорости сходимости метода сопряженных градиентов. 1СГЭ «° 1С"'3 о Метод сопряженных градиентов 10 15 20 25 Номер итерации 30 3S « 15 20 25 Номер итерации 30 3S Т~~- 10 1S 20 25 Номер итерации 30 3S Рис. 3.19. Результаты решения методом сопряженных градиентов разностного аналога уравнения Лапласа
232 Глава 3 3.13. Задания для лабораторных и самостоятельных работ 1. Решить методами Ричардсона и Якоби СЛАУ Ах = b, если , ь = "Г 2 3 4 5 6 7 8 9 4 -1 0 -1 0 0 0 0 0 -1 4 -1 0 -1 0 0 0 0 0 -1 4 0 0 -1 0 0 0 -1 0 0 4 -1 0 -1 0 0 0 -1 0 -1 4 -1 0 -1 0 0 0 -1 0 -1 4 0 0 -1 0 0 0 -1 0 0 4 -1 0 0 0 0 0 -1 0 -1 4 -1 Сравнить методы. 2. Решить методами Зейделя и последовательной верхней релаксации СЛАУ Ах = b, если 4 -1 0 -1 0 0 0 0 0 -1 4 -1 0 -1 0 0 0 0 0 -1 4 0 0 -1 0 0 0 -1 0 0 4 -1 0 -1 0 0 0 -1 0 -1 4 -1 0 -1 0 0 0 -1 0 -1 4 0 0 -1 0 0 0 -1 0 0 4 -1 0 0 0 0 0 -1 0 -1 4 -1 0 0 0 0 0 -1 0 -1 4 Сравнить методы. 3. Решить методом последовательной верхней релаксации СЛАУ с матрицей, определяемой функцией delsq при т = 32. Вектор правой части вычислить как сумму столбцов матрицы. Коэффициент релаксации подобрать. 1 2 3 4 5 6 7 8 9
Итерационные методы решения систем линейных алгебраических уравнений 233 4. Решить методом последовательной верхней релаксации СЛАУ с разреженной матрицей 50x50: " 1 о о о 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ■ 0 ■ -1 ■ 2 ■ 0 ■ 0 ■ ■ 0 ■ 0 ■ 0 ■ 0 ■ 2 ■ -1 0 0 0 0 -1 2 ^ -1 Коэффициент релаксации подобрать. 5. Решить методом сопряженных градиентов СЛАУ с разреженной матрицей размером 50x50: " 1 0 0 0 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ■ 0 ■ -1 ■ 2 ■ 0 ■ 0 ■ ■ 0 ■ 0 ■ 0 ■ 0 ■ 2 ■ -1 0 0 0 0 -1 2 -1 Сравнить с решением, полученным с помощью функции ред. 6. Решить методом сопряженных градиентов СЛАУ с матрицей, определяемой функцией delsq при т = 22 . Вектор правой части вычислить как сумму столбцов матрицы. 7. Решить методом скорейшего спуска СЛАУ с матрицей, определяемой функцией delsq при т = 22 . Вектор правой части вычислить как сумму столбцов матрицы. 8. Решить предобусловленным методом сопряженных градиентов СЛАУ с матрицей размером 100x100: " 1 о о о 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 ■ 0 ■ -1 ■ 2 ■ 0 ■ 0 ■ ■ 0 ■ 0 ■ 0 ■ 0 ■ 2 ■ -1 0 0 0 0 -1 2
234 Глава 3 В качестве предобусловливателя использовать стандартную функцию неполного разложения Холецкого. Исследовать влияние порога разреженности на скорость сходимости. 9. Решить предобусловленным методом сопряженных градиентов СЛАУ с матрицей, определяемой функцией delsq при т = 22 . Вектор правой части вычислить как сумму столбцов матрицы. В качестве предобусловливателя использовать стандартную функцию неполного разложения Холецкого. Исследовать влияние порога разреженности на скорость сходимости. 10. Решить методами минимальных невязок и Ричардсона СЛАУ Ах = b " 1 5 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 6 0 0 0 0 0 0 0 0 0 0 1 6 -4 1 0 0 0 0 0 0 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 1 -4 6 -4 0 0 0 0 0 0 1 -4 5 1 если порядок решаемой системы равен 1024. В методе Ричардсона подобрать значение итерационного параметра. 3.14. Вопросы и задания для самопроверки 1. Какие из рассмотренных итерационных методов применимы для решения больших разреженных систем, если матрица системы является: • симметричной и положительно определенной; • симметричной, но не положительно определенной; • несимметричной и знаконеопределенной? 2. В чем преимущества итерационных методов перед прямыми методами при решении разреженных систем высокого порядка? 3. Что такое матрица расщепления? 4. Сформулируйте общее условие сходимости итерационных методов. 5. Какие вы знаете критерии останова итерационных процессов? 6. Как оценить методическую погрешность итерационного процесса?
Итерационные методы решения систем линейных алгебраических уравнений 235 7. Постройте алгоритмы, например, в виде блок-схемы или пошагового описания решения модельной задачи конечно-разностной аппроксимации для следующих методов: • Ричардсона; • Якоби; • Зейделя; • последовательной верхней релаксации. 8. В чем преимущество метода сопряженных градиентов перед методами спуска? 9. Как выбираются предобусловливатели? 10. Почему метод сопряженных градиентов применим только для систем с симметричными положительно определенными матрицами? 11. Почему метод сопряженных градиентов относится к методам подпространств Крылова? 12. Какие методы подпространств Крылова применимы для решения СЛАУ с матрицами общего вида? 13. Сравните алгоритмы бисопряженных градиентов и устойчивый алгоритм би- сопряженных градиентов. 14. В чем заключается сложность решения нормальных систем уравнений? 15. Приведите примеры итерационных методов решения систем нормальных уравнений. Библиографический список к главе 3 1. Формалев В. Ф., Ревизников Д. Л. Численные методы. — М.: Физматлит, 2004. — 400 с. 2. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения. — М.: Мир, 2001. —430 с. 3. Уоткинс Д. С. Основы матричных вычислений.— М.: БИНОМ. Лаборатория знаний, 2006. — 664 с. 4. Самарский А. А. Теория разностных схем. — М.: Наука, 1989. — 616 с. 5. Хейгеман Л., Янг Д. Прикладные итерационные методы. — М.: Мир, 1986. — 448 с. 6. Фаддеев Д. К., Фаддеева В. Н. Вычислительные методы линейной алгебры. — СПб.: Лань, 2002.— 736 с. 7. Амосов Α. Α., Дубинский Ю. Α., Копченова Н. В. Вычислительные методы. — М.: Издательский дом МЭИ, 2008. — 672 с. 8. Молчанов И. Н. Критерии окончания итерационных процессов// Вычислительные процессы и системы / Под ред. Г. И. Марчука. Вып. 6. — М.: Наука, 1988. — с. 225—232.
236 Глава 3 9. Молчанов И. Н. Машинные методы решения прикладных задач. Алгебра, приближение функций. — Киев: Наукова думка, 1987. — 288 с. 10. Самарский Α. Α., ГулинА. В. Численные методы математической физики.— М.: Научный мир, 2003. — 316 с. 11. Ортега Дж. Введение в параллельные и векторные методы решения линейных систем. — М.: Мир, 1991. — 367 с. 12. Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования. — М.: Вильяме, 2003. — 512 с. 13. Нестеренко Б. Б., МарчукВ. А. Основы асинхронных методов параллельных вычислений. — Киев: Наукова думка, 1989. — 176. 14. Самарский Α. Α., Николаев Е. С. Методы решения сеточных уравнений. — М.: Наука, 1978. — 592 с. 15. Васильев Ф. П. Численные методы решения экстремальных задач. — М.: Наука, 1988. —552 с. 16. Сухарев А. Г., Тимохов А. В., Федоров В. В. Курс методов оптимизации. — М.: ФИЗМАТЛИТ, 2005. — 368 с. 17. Шевцов Г. С, Крюкова О. Г., Мызникова Б. И. Численные методы линейной алгебры. — М.: Финансы и статистика: ИНФРА-М, 2008. — 480 с. 18. Ильин В. П. Методы неполной факторизации для решения алгебраических систем. — М.: Наука, 1995. — 288 с. 19. Федоров В. М. Курс функционального анализа. — М. Лань, 2005. — 352 с. 20. Лебедев В. И. Функциональный анализ и вычислительная математика.— М.: ФИЗМАТЛИТ, 2005. — 296 с. 21. Воеводин В. В. Линейная алгебра. — СПб.: Лань, 2006. — 416 с. 22. Воеводин В. В., Кузнецов Ю. А. Матрицы и вычисления. — М.: Наука, 1984. — 320 с. 23. Ильин В. Α., Позняк Э. Г. Линейная алгебра. — М.: ФИЗМАТЛИТ, 2002. — 320 с. 24. Тыртышников Е. Е. Матричный анализ и линейная алгебра. — М.: ФИЗМАТЛИТ, 2007.— 480 с. 25. Босс В. Лекции по математике. Т. 5. Функциональный анализ. — М.: КомКни- га, 2005. —216 с. 26. Босс В. Лекции по математике: линейная алгебра. Т. 3 / В. Босс. — М.: Ком- Книга, 2005. — 224 с. 27. Saad Y. Iterative Methods for Sparse Linear Systems. — SIAM, 2003. — 546 p. 28. Баландин Μ. Ю., Шурина Э. П. Методы решения СЛАУ большой размерности. — Новосибирск: Изд-во НГТУ, 2000. — 70 с.
Итерационные методы решения систем линейных алгебраических уравнений 237 29. Тыртышников Е. Е. Методы численного анализа.— М.: Изд. центр "Академия", 2007. — 320 с. 30. Бахвалов Н. С, Корнев Α. Α., Чижонков Е. В. Численные методы. Решения задач и упражнения. — М.: Дрофа, 2009. — 393 с. 31. Лоусон Ч., Хенсон Р. Численное решение задач метода наименьших квадратов. — М.: Наука, 1986. — 232 с. 32. Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999. — 548 с. 33. Крукиер Л. Α., Лапшина О. А. Численное сравнение вариационных методов решения СЛАУ, получаемых при конечно-разностной аппроксимации уравнения конвекции-диффузии // Математическое моделирование. — 2004, том 16, № 4. — с. 23—32. 34. Гилл Ф., МюррейУ., РайтМ. Практическая оптимизация. — М.: Мир, 1985. — 509 с. 35. Кузнецов Ю. А. Метод сопряженных градиентов, его обобщения и применения // Вычислительные процессы и системы.— Вып. 1. М.: Наука, 1983.— с. 267—301. 36. Vorst van der Η. Iterative Krylov Methods for Large Linear Systems. — Cambridge: Cambridge University Press, 2003. — 232 p. 37. Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods / R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R. Pozo, С Romine, H. Van der Vorst. — Philadelphia: SIAM, 1994 // http://www.netlib.org/linalg/html_templates/Templates.html 38. Вайс Р., Подгаецкая И., ХефнерХ., Шонауер В. Итерационные методы решения систем линейных уравнений, от прошлого к будущему // Математическое моделирование. — 2001, т. 13, № 2. — с. 39—50. 39. Ильин В. П. Методы бисо пряже иных направлений в подпространствах Крылова // Сибирский журнал индустриальной математики. — 2008, т. XI, № 4 (36). — с. 47—60. 40. Paige С. С, Saunders Μ. A. Solution of sparse indefinite systems of linear equations // SIAM J. Numerical Analysis. — 1975, vol. 12. — p. 617—629. 41. Fletcher R. Conjugate gradient methods tor indefinite systems // Proceedings of the Dundee Biennal Conference on Numerical Analysts 1074. — New York: Springer Verlag, 1975. —p. 73—89. 42. Freund R. W., Nachtigal N. M. QMR: A Quasi-Minimal Residual Method for Non- Hermitian Linear Systems // Numerische Mathematik.— Berlin: Springer, 1991, vol. 60, No. 1. —p. 315—339. 43. Dahlquist G., BjoeckA. Numerical Mathematics and Scientific Computation. Vol. 2, 3. — SIAM, Philadelphia. 1999. — 673 p.
238 Глава 3 44. Paige С. С, Saunders M. A. LSQR: An Algorithm for Sparse Linear Equations and Sparse Least Squares // ACM Transactions on Mathematical Software. — 1982, vol. 8. No. 1. —p. 43—71. 45. Быченков Ю. В., Чижонков Е. В. Итерационные методы решения седловых задач. — М.: БИНОМ. Лаборатория знаний, 2010. — 349 с. 46. Лаевский Ю. М. О некоторых итогах развития современной вычислительной математики // Вычислительные технологии. — 2002, том 7. № 2. — с. 74—83. 47. Saad Y., Van der Vorst Η. A. Iterative solution of linear systems in the 20th century // Journal of Computanional and Applied Mathemetics. 2000. No. 123. — p. 1—33. 48. Liu G. R., GuY. T. An Introduction to Meshfree Methods and Their Programming. — Springer, 2005. — 479 p. 49. Толстых А. И., Широбоков Д. А. Бессеточный метод на основе радиальных базисных функций // Журнал вычислительной математики и математической физики. — 2005, т. 45, № 8. — с. 1498—1505. 50. Шайдуров В. В. Многосеточные методы конечных элементов. — М.: Наука, 1989.— 288 с. 51. Ольшанский М. А. Лекции и упражнения по многосеточным методам.— М.: ФИЗМАТЛИТ, 2005. — 168 с.
Глава 4 Вычисление собственных значений и собственных векторов матриц 4.1. Собственные пары матриц и их свойства Рассмотрим некоторые положения, связанные с вычислениями собственных значений и векторов [1—12]. Собственным значением {собственным числом) матрицы А называется число λ , при котором существует ненулевое решение системы Αχ = λχ. (4.1) Вектор-столбец χ называется собственным вектором матрицы А, отвечающим собственному значению λ . Пара λ, χ называется собственной парой матрицы А . Множество всех собственных значений матрицы А называется спектром матрицы А . Векторы из (4.1) называются правыми собственными векторами. Можно определить другой набор собственных векторов-строк у, которые умножаются на матрицу слева и удовлетворяют равенству уА = λy . Такие векторы называются левыми собственными векторами. Транспонируя это соотношение, можно увидеть, что каждый левый собственный вектор матрицы А является правым собственным век- Τ τ—г тором транспонированной матрицы А . Поскольку детерминант матрицы А равен детерминанту транспонированной матрицы А , собственные значения для правых и левых собственных векторов будут одними и теми же. В дальнейшем будем использовать только правые собственные векторы. Иногда рассматривается обобщенная задача на собственные значения Ах = λΒχ , где В — квадратная матрица, причем существует обратная матрица В~ . В этом случае λ называют собственным числом матрицы А относительно матрицы В . Задачи на собственные значения возникают при определении собственных частот колебаний электрических и механических систем. Например, задача определения собственных колебаний пластины после конечно-разностной аппроксимации сводится к задаче (4.1), в которой собственные числа связаны простой зависимостью с собственными частотами колебаний, а собственные векторы определяют форму (моду) собственных колебаний. Задачи на собственные значения возникают также при исследовании многих алгоритмов. Так, мы уже знаем, что многие свойства итерационного процесса определяются собственными числами матрицы перехода.
240 Глава 4 Традиционно систему (4.1) переписывают в виде (Α-λΕ)χ = 0, (4.2) где Ε — единичная матрица. Однородная система (4.2) имеет решение χ Φ 0, если άεΐ(Α-λΕ) = 0. (4.3) Раскрывая (4.3), получим характеристическое (вековое) уравнение степени η (η — порядок матрицы А): χ" + Αλ»-ΐ + ρ2ιΓ~2 +... + РпЛХ + рп=0. (4.4) Уравнение (4.4) имеет η корней (с учетом их кратности), поэтому каждая квадратная матрица имеет η собственных чисел λΐ5 λ2, ..., λη. Если матрица А симметрична, то все ее собственные числа вещественны. Если матрица несимметрична, то возможно наличие комплексных собственных чисел. При наличии комплексных собственных чисел каждому из них соответствует комплексно-сопряженное собственное число той же кратности . Отметим некоторые свойства собственных чисел и векторов. Если λ, χ — собственная пара матрицы А, с Φ О — некоторое число, то λ, сх также является собственной парой матрицы А . Для доказательства умножим (4.1) на с φ О, получим А сх =λ сх . (4.5) Равенство (4.5) означает, что каждому собственному числу соответствует бесчисленное множество собственных векторов, отличающихся лишь скалярным множителем. Собственными числами диагональных и треугольных матриц являются их диагональные элементы. Если А — треугольная матрица, то матрица Α- λΕ также является треугольной. Так как определитель треугольной матрицы равен произведению диагональных элементов, то из (4.3) имеем уравнение корни которого равны ап, а22, ·.., ат. Аналогично утверждение доказывается для диагональных матриц. Из линейной алгебры известно, что если vj, v2,..., ν^ — собственные векторы матрицы А, соответствующие различным собственным значениям λΐ5 λ2,..., Xk, то векторы Vj, v2,..., \y- линейно независимы. Если μ, χ — собственная пара матрицы А - ρΈ , то μ + ρ, χ — собственная пара матрицы А . То есть прибавление к матрице А некоторого кратного единичной матрицы смещает спектр исходной матрицы и не изменяет собственные векторы. Действительно, по условию имеем А-рЕ χ = μχ . (4.6)
Вычисление собственных значений и собственных векторов матриц 241 Рассмотрим равенство (4.1) при λ = μ + ρ: Ах= μ + ρ χ. (4.7) Равенство (4.7) эквивалентно (4.6), следовательно, справедливо. Кроме того, пара μ + ρ, χ является собственной парой матрицы А . Если λ,χ —собственная пара обратимой матрицы А, то <— ,х> —собственная пара матрицы А~ . Для доказательства умножим равенство (4.1) слева на — А~ . λ Получим — χ — А~ χ , что подтверждает рассматриваемое свойство. λ Матрица А размером и χ и называется матрицей простой структуры, или недефектной, если у нее существует η линейно независимых собственных векторов. Матрица, не являющаяся матрицей простой структуры, называется дефектной. Если матрица η χ η имеет η различных собственных значений, то она является матрицей простой структуры. При вычислении собственных чисел и векторов симметричных матриц мы будем использовать отношение Рэлея (Rayleigh Quotient) Λ(Α,χ) = ^Ξ>, (4.8) (χ, χ) где χ Φ 0 . Если χ — собственный вектор матрицы А, то R(A, x) — собственное число матрицы А. Для доказательства образуем скалярное произведение из (4.1): Αχ,χ =λ χ,χ . (4.9) Из отношения Рэлея (4.8) имеем (Ах,х) = Л(А,х)(х,х). (4.10) Сравнивая (4.9) и (4.10), видим, что X = R А, х . Минимум евклидовой нормы вектора г = Ах - λχ для любого фиксированного ненулевого вектора χ достигается при λ = R А, х . Это означает, что если χ является некоторым приближением к собственному вектору матрицы, то отношение Рэлея (4.8) дает наилучшее приближение к соответствующему собственному числу матрицы. Докажем это утверждение для вещественных симметричных матриц. Рассмотрим квадрат евклидовой нормы невязки II 1|2 2 г = Αχ — λχ,Αχ — λχ = Αχ, Αχ — 2λ Αχ,χ +λ χ,χ =q λ χ, χ, 2 Αχ, Αχ где q λ =λ -2XR Α, χ + . χ, χ II Ι|2 Так как χ,χ >0,το г достигает минимума при минимуме q λ , который достигается при λ = R Α, χ .
242 Глава 4 Если А — симметричная матрица, то [1] ее минимальное и максимальное собственные значения можно найти как ληιίη =mini? Α, χ , ληιαχ =maxi? Α, χ ; кроме х^О ' х^О того, grad R Α, χ = 0 , если χ — собственный вектор матрицы А . На практике часто требуется найти одно или несколько собственных чисел и векторов. Например, часто возникает задача определения минимального или максимального по модулю собственного числа. В механике, например, наиболее опасно явление резонанса, которое появляется при совпадении частоты внешних колебаний с минимальной собственной частотой конструкции. Такие задачи относятся к частичной проблеме собственных значений. Иногда требуется решить полную проблему собственных значений — найти все собственные числа и векторы матрицы. Причем частичная проблема собственных значений существенно проще полной проблемы, и для ее решения известны специфические алгоритмы. Известны прямые методы решения проблемы собственных значений, основанные на решении характеристического уравнения (4.4), и итерационные методы. Прямые методы [12] применимы только для совсем небольших матриц. Одна из причин неприменимости прямых методов даже для относительно небольших матриц, имеющих порядок несколько десятков, заключается в плохой обусловленности многочленов высокой степени [1]. Из-за плохой обусловленности коэффициенты характеристического уравнения вычисляются с большими ошибками, что приводит к полному искажению информации о собственных значениях. Поэтому в настоящее время прямые методы практически не применяются для решения реальных задач, и мы рассмотрим только итерационные методы. При решении полной проблемы собственных значений будем использовать преобразования подобия, позволяющие преобразовать матрицы к треугольному виду. А для треугольных матриц, как мы видели, нет проблем определения собственных значений. Сначала рассмотрим вещественные матрицы. Матрицы АеМ"х" и BeМ"х" называются подобными, если существует невырожденная матрица подобия Ρ , такая что В = Р~ АР . Преобразование подобия можно рассматривать как переход к новому базису (к новой системе координат) в пространстве η -мерных векторов. Для доказательства рассмотрим вектор у , полученный применением матрицы А к вектору χ, то есть у = Ах . Перейдем к новому базису (произведем замену переменных) χ = Рх' и у =Ру'. Тогда равенство у = Ах примет вид у' = Р АРх', то есть в новом базисе преобразование осуществляется не матрицей А, а подобной матрицей Ρ АР . Подобные матрицы А а В имеют один и тот же набор собственных чисел, что легко проверить, рассматривая характеристический многочлен для матрицы В и учитывая, что определитель произведения квадратных матриц равен произведению соответствующих определителей и det Ρ = det Ρ : det(P_1AP^E) = det(P_1(A^E)P) = (iet Ρ"1 ■ det(A - λΕ) ■ det Ρ = = ά(*(Α-λΕ).
Вычисление собственных значений и собственных векторов матриц 243 Собственные векторы χ и xj подобных матриц связаны равенством χ = Pxj. Действительно, пусть xj — собственный вектор матрицы В и В = Р~ АР . Тогда Ρ APxj = λχγ, или APxj = λΡχ!, то есть вектор Pxj является собственным вектором матрицы А. Если матрицу А с помощью последовательности преобразований подобия можно привести к верхней треугольной матрице В, то легко найти все собственные числа: у верхней треугольной матрицы собственными числами являются элементы главной диагонали Ъи, /' = 1,2,..., п. Любую квадратную матрицу А с помощью преобразования подобия можно привести к канонической форме Жордана V_1AV = J : λι 0 0 0 0 σ1 λ2 0 0 0 0 σ2 λ3 0 0 0 ■ 0 ■ σ3 ■ 0 ■ 0 ■ ■ 0 ■ 0 ■ 0 ■ λη-1 ■ 0 0 0 0 σ»-1 λ„ где λΐ5 λ2, · ·., λη — собственные числа матрицы А, а числа σ^ принимают одно из двух значений 0 или 1, причем если σ, = 1, то λ, = λί+1. Столбцы матрицы преобразования V представляют собой собственные векторы матрицы А . Известно, что вещественные симметричные матрицы А являются матрицами простой структуры и с помощью преобразования подобия могут быть приведены к диагональному виду [9] P_1AP = D λ, О λη о о причем матрица подобия Ρ может быть выбрана ортогональной, то есть Ρ = Ρ . Столбцы матрицы Ρ являются линейно независимыми собственными векторами. Комплексными аналогами ортогональных матриц являются унитарные матрицы. Матрица U е С"х" называется унитарной, если U U = Ε, то есть U = U" , где U — комплексно сопряженная транспонированная матрица. Любую матрицу А е Сихи можно представить в виде А = QR , где Q — унитарная, a R — верхняя треугольная матрица. Матрицы А е Сихи и Be С"х" называются унитарно подобными, если существует унитарная матрица U е Сихи такая, что В = U~ AU, или В = U AU . Если матрицы А, В и U являются вещественными, то матрица U является ортогональной и матрицы А и В называются ортогонально подобными.
244 Глава 4 Согласно теореме Шура [3, 9] любая квадратная матрица унитарно подобна треугольной матрице. Это означает, что для квадратной матрицы А е СЙХЙ суще- е L и верхняя треугольная матрица let такие, что T = U AU (разложение Шура). Элементы главной диагонали матрицы Τ представляют собой собственные числа матрицы А. Первый столбец матрицы U является собственным вектором матрицы А. В общем случае остальные столбцы матрицы U не являются собственными векторами матрицы А . Таким образом, вещественная матрица ортогонально подобна диагональной матрице, а комплексная матрица унитарно подобна треугольной матрице. Если матрица А является эрмитовой, то есть А = А , то матрица Τ в разложении Шура является диагональной. Рассмотрим, наконец, обусловленность задачи вычисления собственных значений и выясним, как влияет погрешность задания элементов матрицы на погрешность определения собственных чисел и векторов. Для симметричных матриц задача вычисления собственных значений и собственных векторов хорошо обусловлена. Пусть А — симметричная матрица, которая является приближением другой симметричной матрицы А, λ,,λ,, г = 1, 2,..., η — собственные числа этих матриц, χ,,χ, — соответствующие собственные векторы. Тогда справедлива оценка [1, 7] max 1</<я λ. "λ. < А-А что свидетельствует о хорошей обусловленности задачи: погрешность определения собственных чисел симметричной матрицы не превышает погрешности задания элементов матрицы. В случае несимметричных матриц собственные значения очень чувствительны к погрешностям элементов матриц. Для относительной погрешности собственных векторов справедлива оценка ·< А-А и 1 Στ—Ц то есть относительная погрешность определения собственных векторов зависит не только от погрешности задания элементов матрицы, но и от близости λ^ . Число обусловленности матрицы А не характеризует обусловленность матрицы по отношению к проблеме собственных значений. Характеристикой чувствительности собственных значений относительно погрешности задания матриц простой структуры является число обусловленности матрицы Ρ , столбцами которой являются собственные векторы матрицы А [1]. Для оценки точности вычисления собственных чисел можно использовать невязку г = Ах^ — λ^ х^ , где λ и λ — собственные числа матриц А и А . Для симметричных матриц известна оценка [5] max 1<2<И λ,--λ,- <||г||2,где ||г||2
Вычисление собственных значений и собственных векторов матриц 245 При сравнении двух собственных векторов не имеет смысла использовать норму их разности, так как собственные векторы не определяются однозначно. Если х; и χ — собственные векторы матрицы А, то векторы c^%.i и с2х, также являются собственными. Собственные векторы должны быть близки не по норме, а по направлению, так что их близость оценивается с помощью отношения х;,х / х;| ■ χ — это косинус угла между векторами, который должен быть близок к ±1. При этом надо учитывать, что разность косинуса малого угла и 1 пропорциональна квадрату угла. В случае несимметричных матриц собственные значения могут быть очень чувствительными к погрешностям задания элементов матрицы и погрешностям округлений. Подробное изучение погрешностей вычисления собственных чисел и векторов можно найти в [5, 7—10]. 4.2. Решение частичной проблемы собственных значений и метод Пусть имеется вещественная матрица А простой структуры размера η χ η , то есть матрица, η линейно независимых собственных векторов которой образуют базис х11 х12 х\п_ > Х2 = Х21 Х22 _Х2и_ vnl ыг (4.11) Пусть соответствующие собственные числа упорядочены по модулю (первое неравенство — строгое): |^|>^2|>^3|>...>^„|. (4.12) Собственное число λ1 и соответствующий собственный вектор называют доминирующим собственным числом и доминирующим собственным вектором. (РМ — Power Method) определения максимального по модулю собственного значения λ1 матрицы А и соответствующего ему собственного вектора Xj строится как итерационный процесс :АУ к-\ „(°) λ Уг к-\ (4.13) У г В качестве начального приближения у( ' можно брать любой ненулевой вектор, часто берут у (0). 1,1. ..л В качестве приближения к собственному числу
246 Глава 4 берется отношение одноименных координат векторов у ζ и у . Формально необходимо рассматривать отношения всех одноименных компонентов векторов, которые должны оказаться близки друг к другу. На практике можно взять отношение любых одинаковых компонентов последовательных приближений к собственному вектору. При этом в знаменателе не должно быть малого по модулю значения. Например, если первая координата вектора у не очень мала, можно в качестве приближения к собственному числу взять отношение первых координат. Итерационный процесс заканчивается, если для всех г выполняется условие Уг Уг к-\ к-\ к-2 (4.14) Уг У г При выполнении условия (4.14) в качестве доминирующего собственного числа можно взять любое отношение одинаковых компонентов векторов. Для доказательства [2, 9] разложим вектор начального приближения у( ' по базису из собственных векторов у(0)=с1х1+с2х2+... + спх„. (4.15) Примем, что Су Φ О (в противном случае можно взять другой вектор у ). Выполним первую итерацию процесса (4.13), умножив (4.15) слева на матрицу А : ,(1) _ ДлД°) -с Ах, +с9Ах9 +... + с„Ах„ - :Ау^ -1ЛА1 --с{к1х1+с2к2х2+... + спХпхп. (4.16) В (4.16) учтено, что по определению Ах, = λ,χ,, /' = 1,2,..., и . Для второй итерации получаем Д2) „(1) , 2Л,(°) Ау1-; = А уу ' = clXlAxl + c2X2Ax2 +... + спХпАхп = clXlxl +c2X2x2 +... + спХпхп. Аналогично, для к-й итерации имеем ,(*) = Ау' (*-i) :АУ0) д/о Беря отношение компонент векторов у и у^ , с учетом (4.17) и (4.11) получаем = c^fxj +с2Х2х2 +... + с„ккпхп. (4.17) У, с{кх х1; + c2X2x2j +...+ cnXnxnj к-1 г1кЛу у. СХКХ Х1; γ | С2 . Х2г с\ х\г Л1 γ ! С2 . Х2г сх х1; V +с2; λ2 1λι; λ1 ) к- ^2 X2i + ■■■ к -1 щ Xni х1; . Xni х1; <~1χ 1λι; \ λ1 ) 11 к к-\ (4.18)
Вычисление собственных значений и собственных векторов матриц 247 При условиях Ху ^0 и (4.12) (если первое условие не выполняется, то можно использовать другие компоненты, так как xj является базисным вектором и не может быть нулевым) предел дроби в (4.18) равен 1, так как lim к—>ю λ,- :0 при г = 2,3,...,и. и, следовательно, lim Уг λγ. То есть предел Уг У г к-\ равен максимальному по У, модулю собственному значению матрицы А Представив (4.17) в виде (к) τ к (\. ν χ, +- νλι; (у Υ χ9 +... + - νλι; (4.19) Ak) Ak) получим lim γ(ζ> = £1λ1<:χ1, то есть предел векторов γ(ζ> коллинеарен собственному /с—но вектору с множителем с{к[, значит, в соответствии с (4.5), он также является доминирующим собственным вектором матрицы А . Из выражения (4.19) видно, что многократное умножение вектора на матрицу приведет или к очень большим значениям компонентов вектора γ(ζ' и переполнению (если \λι> 1), или к очень малым значениям компонентов у*-^ и исчезновению порядка (если λ! <1). Поэтому вектор у имеет смысл нормировать, то есть приводить к единичной норме (норму можно выбирать по-разному). Тогда алгоритм степенного метода принимает вид Ах к-\ λ Уг Ак) 1 д/о к-\ ' Ак) Так как у с = Ах к-\ к-\ . к-\ к-\ Ау и χ к-\ к-\ , то, используя отношение Уг к-\ легко доказать, что в точной арифметике результат вычисления приближения к собственному числу с нормированием по произвольной норме совпадает с результатом без нормирования. На практике нормирование имеет смысл, когда норма вектора становится большой или маленькой, так что нормирование можно ввести, начиная с любой итерации, или проводить только на некоторых из них. Кроме того, для вычисления λ удобно брать усредненную оценку. С учетом этого получаем алгоритм [7] 1 Ак) | т JJc) Ак) Ак) Ак) (4.20)
248 Глава 4 где суммирование ведется по ненулевым компонентам вектора х*- , а т — количество слагаемых. Целесообразно проводить не точную проверку на равенство к-\ нулю компонентов xs , а приближенную к-\ > δ , где δ — малое число. Процесс (4.20) заканчивается, если выполняется условие λ(*)_λ(*-ΐ) <s^-1} (4.21) где ε — малая величина. Из (4.18) и (4.19) видно, что итерационный процесс степенного метода сходится со скоростью геометрической прогрессии, знаменатель которой определяется в основном величиной отношения λπ λ, Чем сильнее доминирует первое собственное число, тем выше скорость сходимости. Если два первых собственных числа матрицы близки по абсолютной величине, то, используя смещение спектра матрицы, другими словами, определяя первое собственное число матрицы с помощью (4.6), можно увеличить скорость сходимости. Хотя в наших рассуждениях предполагалась матрица простой структуры, степенной метод на практике работает и для многих дефектных матриц [9]. Следует отметить, что степенной метод требует малое количество арифметических операций на одну итерацию, особенно в случае разреженных матриц. Для симметричных матриц А известна апостериорная (то есть определяемая после вычислений) оценка погрешности [1] λι — λι где λ1 — неизвестное точное значение первого собственного числа, λ1 к X Ч к k-l χ k-l 2 2 к-в приближение к собственному числу, λΐ — λΐ абсолютная погрешность вычисления собственного значения после к итераций. Используя смещение спектра собственных чисел матрицы, можно найти наименьшее по модулю собственное число λη знакоопределенной матрицы, если найдено наибольшее по модулю собственное число λ1. Для этого необходимо найти наибольшее по модулю собственное число Л матрицы А - λ^ (где Ε — единичная матрица) и соответствующий собственный вектор. Тогда минимальное по модулю собственное число равно λη = Л + λ1, а соответствующий собственный вектор равен найденному доминирующему вектору матрицы А - λιΕ. Для доказательства вычтем λιΈχη из обеих частей равенства Ахи = λ„χ„, что дает -λ^ хи λ„ — λι :Лх„
Вычисление собственных значений и собственных векторов матриц 249 то есть Α-λη-λ1 и λΜ=Λ + λ1. Так как для знакоопределенной матрицы \λη — λ1 > λ,■ — λ^, i = 1,2,.. .η , то Λ — наибольшее по модулю собственное число матрицы А - λ^ и может быть найдено степенным методом. Для матриц простой структуры, зная наибольшее по модулю собственное число и сделав предположение Ν>|λ2|>|λ3|>...>|λ„|, можно найти приближенное значение второго по модулю собственного числа λπ У г к+1 'ЧУ г к-1 (4.22) У г ~ \Уг Вычисления по формуле (4.22) проводят для достаточно больших к и всех г, для которых знаменатель по модулю превосходит некоторую малую величину. Собственное значение усредняется для указанных значений i. Для доказательства подставим в (4.22) компоненты векторов в соответствии с выражением (4.17): У, к+1 -Чу,' у, -Чу, к-1 clM ХЬ — cl44 ХЬ + с2^"2 х2; ' ■с2Х{кк2х2,+... + спХкп+1хп -ε„λ1λ„χ„,- С?Л х1, clMxli +C2^2x2i ■ <hW\ % +-■ + сп^кпхт ~ С?"К \ с2^"2 x2i k+±*?-^)°j*. λ λ. j=i λ: к+1 c2^2x2i Σ ! h .f^W* cj *β λο Так как Km /с—но ч к+\ η η к KJ ~ λ1λ7 Λ2 = Km /с—но ίλ,λ νλ2; к+1 (λ А νλ2; το Уг к+1 ■ЧУг Km Это доказывает справедливость (4.22). к-1
250 Глава 4 4.2.2. Метод скалярных произведений Степенной метод сходится довольно медленно. Более высокой скоростью сходимости обладает метод скалярных произведений (SP — Scalar Product) [2]. Метод применим для симметричных положительно определенных матриц и строится по следующим формулам: Д/0 Ах (/t-i) λ(/ο Ах(/-1)5у(/-1) у(*-1)5у(*-1) у(*-1)5у(*-1) —y(/°. (4.23) В (4.23) для оценки λ(ζ' использовано отношение Рэлея (4.8), поэтому другое название метода — метод частных Рэлея. Процесс (4.23) заканчивается, если выполняется условие (4.21). Для доказательства рассмотрим отношение скалярных произведений У ,У / У ,У · Умножая правые части (4.17) по правилу умножения многочленов и учитывая ортонормированность собственных векторов положительно определенных матриц, то есть условие 1, если г = j, получим Xi' Xj О, если г φ j, у{к\у{кЛ) . 2 л 2/t-l 2, 2/t-l 2 λ 2/t-l С\Ч +с2^2 +---+СпКп ,(*-D5y(*-i) =ctX 2, 2/t-2 2, 2/t-2 2 л 2/t-2 1^1 + <?2λ2 +---+Спкп у(к\у(кЛ) 2 л 2/t-l 2 л 2/t-l 2 λ 2/t-l схКх +с2К2 +...+спКп (k-l) (k-l) „2,2i-2 2,2i-2 2 v ( λ2 ί 1 λ27^1 1 + УС1 У νλι; + ...+ ( Υ \cl) Λ Λ 2/t-l νλι; ι + ( „ Υ VC1 У Λ \ νλι V 2/t-2 / Λ2 / - \2/t-2 + ...+ η VC1 J \h) Учитывая (4.12), из (4.24) находим Km У^У^ /с^оо у^"1)^"1) (4.24) В методе скалярных произведений для вычисления приближения к собственному значению можно взять отношение λ( с' = у , у I у , х , имеющее тот же предел отношения, что и λ (/О _ Л7(* *)>y(*-D / у(* -1) у(А-1)
Вычисление собственных значений и собственных векторов матриц 251 При выполнении (4.12) скорость сходимости степенного метода (4.24) определяется величиной отношения |λ2/λ1| , а скорость сходимости (4.18) определяется ве- личиной отношения λ2/λ1 , поэтому скорость сходимости (4.24) выше, чем (4.18). Для симметричных положительно определенных матриц А, собственные векторы х1,х2,---,хи которых образуют ортонормированный базис, можно степенным методом или методом скалярных произведений вычислять собственные пары λ,, χ, при λ,->2 [2]. Пусть первая собственная пара λ1;Χ! уже найдена, причем применено нормирование, так что ||xi|| = -J χι,χι =1- Возьмем произвольный ненулевой вектор ζ и образуем вектор 0 0 0 ,„ οί4 У =ζ - ζ ,xj xj. (4.25) τ- ,000 n 1 ак как xj, xj = 1, то у , xj = ζ , xj - ζ , xj xj, xj = 0, поэтому вектор о о у ортогонален вектору х1; то есть проекция у на направление вектора xj равна нулю. Заметим, что (4.25) — это алгоритм Грама—Шмидта построения ор- тонормированных базисов (см. разд. 3.9.4). Поэтому разложение (4.15) вектора у по базису х15х2,...,хи имеет вид у(0)=с2х2+... + сихи. А используемый в степенном методе вектор у , который определяется формулой (4.17), имеет вид y(k)=c2Xk2x2+... + cXx„. (4.26) Если |λ2| > |λ,■ |, i = 3, 4,..., η , то аналогично (4.24) получаем у(/0,у(/с-1} Km = λ9 . Собственная пара λ3,Χ3 находится аналогично, если за начальный вектор при- 0 0 0 0 нять вектор у — ζ - ζ , xj xj - ζ , x2 x2, ортогональный векторам xj и х2 при любом ζ . Аналогично последовательно находятся все собственные пары. Но рассмотренный метод работает, если | λ21 > | λ; |, i = 3,4,..., η . За счет ошибок округления, определяемый по (4.26) вектор γ(ζ' перестает быть ортогональным вектору xj. Поэтому используют итерации с рестартом, проводя процедуру ортогонализации (4.25) с ζ = у через некоторое число итераций т .
252 Глава 4 4.2.3. Метод обратных итераций. Обратные итерации со сдвигами Во многих задачах требуется вычислять минимальное по модулю собственное число и соответствующий ему собственный вектор. Если умножить (4.1) слева на А~ , получим А_1х = μχ , (4.27) 1 где μ = —· λ Выражение (4.27) — это задача определения собственного значения матрицы А~ . Для ее решения можно найти, например степенным методом, значение |μ| . Зная |μ| , легко найти |λ| . , так как 1Г Imax I Imin |λ| . =г^—. (4.28) П Mil I Птах Поэтому для отыскания минимального собственного значения матрицы А необходимо в выражениях (4.20) и (4.23) вектор х*- ' умножать на А~ . На практике из-за сложностей получения элементов обратной матрицы вместо нахождения произведения у( + ' — А~ х( ' приходится решать систему уравнений Ay(i+1)=xW. В результате получается максимальное по модулю собственное число матрицы А~ . Обратное к нему значение (4.28) равно минимальному по модулю собственному числу матрицы А . Так как все эти системы имеют одну и ту же матрицу А, то удобно использовать один из методов разложения, например LU-разложение. Рассмотренный метод называют методом обратных итераций, или обратным степенным методом (INVIT — Inverse Iteration). Метод обратных итераций со сдвигами применяется, когда известно хорошее приближение к одному из собственных чисел и необходимо найти собственный вектор, отвечающий этому приближению. Пусть имеется матрица А простой структуры и для собственного числа λ этой матрицы известно приближение σ такое, что σ ближе к λ ■, чем к какому-либо другому собственному числу матрицы А : |λ^ -σ| <|λ^ -су|, ϊφ]. (4.29) Метод обратных итераций со сдвигами применяется следующим образом [2]. Начиная с вектора χ такого, что евклидова норма χ — 1, образуем последовательность нормированных векторов χ , находя у как решение СЛАУ Α-σΕ у* = х*-1 , (4.30)
Вычисление собственных значений и собственных векторов матриц 253 где Ε — единичная матрица, и полагая k 1 k χ k У У , £ = 1,2,-. (4.31) Запишем разложения векторов у и χ по базису собственных векторов: k k k k У =Ci *i+c2 x2+... + c„ x„, /t-1 , /t-1 , k-l , k-l X =01 Xl+t>2 X2 + ... + 0„ X„. Подставляя (4.32) в (4.30) и учитывая, что Ах, = λ,χ,, /' = 1,2,.. .,и, получим Α-σΕ сх xj+ Α-σΕ с2 х2+...+ Α-σΕ си x„=bl *i+£2 х2+■■■+£„" х„, λι~σ ci χι + λ2-σ c2 χ2+...+ λ„-σ си хи=^ *ι+ο2 χ2+...ΰη χη, откуда в силу единственности разложения вектора по базису найдем λ,-σ ci =bt ~ , / = 1,2,...,η, h k~l c,k =-f . (4.33) λ, -σ Из условия (4.29) следует доминирование коэффициента с в разложении вектора у . Соответственно, также составляющая χ будет доминировать и в разложении вектора χ , который получается из у нормированием (4.31). Значит, будет расти и числитель (4.33), что еще больше усилит доминирование χ у . Таким образом, Km χ = χ 1,. Обратные итерации со сдвигами позволяют уточнить собственное число λ у. Действительно, выражения (4.30) и (4.31) представляют собой метод обратных итераций для нахождения наименьшего по модулю собственного числа матрицы А - σΕ . Оценим это собственное число по формуле степенного метода с усреднением (4.20) и учтем, что прибавление к матрице А диагональной матрицы смещает спектр исходной матрицы и не изменяет собственные векторы (см. разд. 4.1). В результате получим выражение для уточнения собственного числа λ,: , 1 т Y(k-l) XJ =σ + — Σ—да"· ms=i У(Г Итерационный процесс заканчивается при выполнении, например, условия (4.21). метод обратных итераций с переменными сдвигами, в котором в качестве приближения к собственному значению
254 Глава 4 используется приближенное собственное значение, найденное в предыдущей итерации: к-\ „ к к-\ к 1 к , к к-\ 1 Д X. .(*-1) Α-λ,'Ε уЛ =хЛ-\ χ /с У "ί,Τι у™ В случае симметричных положительно определенных матриц для оценки приближения к собственному числу можно использовать отношение Рэлея: λ(*> = Ах«,х«/х«,х« . Метод обратных итераций с переменными сдвигами сходится значительно быстрее метода обратных итераций с постоянными сдвигами, но требует решения на каждой итерации системы с новой матрицей А - λ Ε . 4.2.4. Градиентный метод решения частичной проблемы собственных значений Рассмотрим метод решения частичной проблемы собственных значений, который можно назвать градиентным, так как он эквивалентен градиентному методу нахождения максимума или минимума функционала, представляющего собой отношения Рэлея (4.8). Для симметричной матрицы А алгебраически наибольшее Χγ и наименьшее λη собственные числа определяются следующим образом Αχ,χ Αχ,χ λλ = max , λη = min , χ, χ χ, χ причем собственными векторами, принадлежащими этим собственным значениям, будут векторы, реализующие экстремум. Тогда задача отыскания λ± и λη является задачей максимизации или минимизации функционала — отношения Рэлея Αχ,χ R Α,χ = — . (4.34) χ, χ Используем градиентный метод поиска экстремума. Известно [11], что градиентом функционала i?(A, х) (4.34) является вектор grad(i?) = ^—г, (4.35) х,х где r = Ax-i?(A,x)x. (4.36) Из (4.35) и (4.36) видно, что градиент отношения Рэлея с точностью до положи- 2 тельного множителя равен вектору невязки (4.36). Иными словами, векторы X, X
Вычисление собственных значений и собственных векторов матриц 255 градиента и невязки совпадают по направлению. При вычислении λ± вектор χ корректируется с помощью вектора (4.36), направление которого совпадает с градиентом (4.35) отношения Рэлея: x^W^+ar^, (4.37) где Ax(£-i) x(£-i) r(*-D = Ах(/-1) : х« (4.38) а a — подбираемый числовой коэффициент. Приближение к λ± вычисляется с помощью отношения Рэлея (4.8): Ах«х« λ (к) х«х« а вектор (4.37) приближается к вектору, коллинеарному соответствующему собственному вектору. Итерационный процесс завершается при выполнении условия (4.21). Для вычисления λη вектор χ корректируется с помощью вектора, направление которого противоположно градиенту (4.35) отношения Рэлея χ(*+ΐ)=χ(*)_βΓ(*). В остальном алгоритм не отличается от алгоритма вычисления λ±. Коэффициенты α и β можно вычислять в каждой итерации методом скорейшего спуска [11]. На- (к) (к-1) (к-1) к-\ к-\ I . к-\ к-\ к пример, ху ' = ху ' + α^ ;, где а,£=г ,г /Аг ,г ,аг рассчитывается согласно (4.38). 4.3. Решение полной проблемы собственных значений 4.3.1. QR-ал го ритм решения полной проблемы собственных значений Лучшим методом вычисления всех собственных значений квадратных заполненных матриц общего вида является QR-алгоритм Фрэнсиса (Francis J. G. F.) и В. Н. Кублановской [13]. Рассмотрим идеи алгоритма. Подробные доказательства можно найти в [4, 5, 9]. Пусть А — невырожденная квадратная матрица размера пхп (при более строгом анализе требование невырожденности может быть снято). QR-алгоритм является итерационным алгоритмом, который начинается с А = А
256 Глава 4 и строится по следующему правилу. Сначала А разлагается на множители Q и R так, что Q является унитарной матрицей (то есть матрица, сопряженная с Q , совпадает с обратной), a R является верхней треугольной матрицей с положительными элементами на главной диагонали: Затем матрицы Q и R перемножаются в обратном порядке, образуя А A* = R*Q* . (4.40) Легко проверить, что матрицы в последовательности (4.40) являются подобными, то есть имеют одни и те же собственные значения. Действительно, из (4.39) следует, что R = Q А , поэтому из (4.40) получаем А к г^ к А к—1 *-v к А = Q A Q При отсутствии у матрицы кратных собственных значений последовательность . 0 ,1 .2 „ „ , А , А , А ,... сходится к верхней треугольной матрице (в случае, когда все собственные значения вещественны) или к верхней блочной треугольной матрице (если имеются комплексно-сопряженные пары собственных значений) [5,9]. В случае вещественных собственных значений элементы главной диагонали матрицы А сходятся к собственным значениям. При наличии комплексно- сопряженных пар собственных значений каждой паре λ^ и λ,- соответствует диагональный блок размера 2x2, образованный строками и столбцами с номерами г и г +1. Собственными значениями этого блока являются λ^ и λ,- . Причем наблюдается сходимость собственных значений блока, а не элементов блока, которые могут вести себя без видимой закономерности. Однако алгоритм (4.40) очень неэффективен по двум причинам. Во-первых, требу- 3 з ется много арифметических операций: каждое QR-разложение требует —и опера- ций, а следующее матричное умножение — порядка η операций (п — размер матрицы) [9]. Во-вторых, при наличии двух близких собственных значений λ, « λ,-_ι метод сходится очень медленно. Например, элемент аг , г > j сходится к нулю со скоростью геометрической прогрессии со знаменателем λ,-/λ,-_ι «1. Для уменьшения числа арифметических операций матрицу предварительно приводят к форме Хессенберга (см. разд. 2.7.3). Известно, что если А с~ является верхней невырожденной матрицей Хессенберга, то матрица А , полученная в QR- алгоритме, также является верхней невырожденной матрицей Хессенберга.
Вычисление собственных значений и собственных векторов матриц 257 Известно также [1, 9], что для одной итерации (4.40) для матрицы Хессенберга требуется порядка η операций. Для ускорения QR-алгоритма при наличии близких собственных чисел применяют форму Хессенберга и сдвиги. Сначала используют алгоритм для формы Хессенберга без сдвигов. Через некоторое число итераций матрицы приближаются к треугольному виду, а элементы главной диагонали приближаются к собственным числам. Известно [2], что если матрица А допускает строгое упорядочивание модулей собственных чисел Ιλ^ > |λ2| >··· >|λ„|, то последовательность матриц в QR- алгоритме сходится к треугольной матрице, диагональные элементы которой упорядочены по убыванию модулей. В частности элемент апп приближается к минимальному собственному числу λη. Поэтому можно положить ρ = αηζη и последующие итерации выполнять для сдвинутой матрицы А I k - рЕ . Можно на каждой итерации менять сдвиг ρ. В сдвинутой матрице элемент ап j будет сходиться к нулю очень быстро со знаменателем геометрической прогрессии — « 0 . Как только элемент о с _^ станет практически равен нулю, выполним λ. λ и-1 обратный сдвиг А : А + рЕ . После обратного сдвига матрицы А и А имеют одинаковые собственные значения. Матрица А имеет структуру ι !* I I . I ■ ι · I I k о ι апп (4.41) где а„ ■■λ. минимальное собственное значение матрицы А . Дальнейшие итерации не изменят последнюю строку матрицы. Поэтому можно принять λη = αηζη , исключить из последующих преобразований последнюю строку и последний столбец и проводить последующие итерации с матрицей Α ζ (4.41) меньшего порядка. Найдя собственное значение матрицы А , можно еще уменьшить порядок матрицы, для которой отыскивается собственное значение. Такой подход называется понижением порядка, или исчерпыванием, дефляцией (англ. deflation — исчерпывание). На практике новый сдвиг можно выбирать на каждой итерации: к-\ ■p,_1E = Q/cR/c :R/CQ/C ч-р^Е.
258 Глава 4 Сдвиг pyt_1 выбирается равным приближенному собственному значению, появляющемуся в нижнем правом углу матрицы: pk_^ = ann . Таким способом будет найдено наименьшее по модулю собственное значение λη. Когда поддиагональный к-\ г элемент ап и_1 станет малым по абсолютной величине, можно провести понижение порядка и, проводя итерации с матрицей меньшего порядка, получить "кп_\ и т. д. Описанный сдвиг называют сдвигом на отношение Рэлея [5, 8, 9]. Действительно, если А — вещественная матрица еи — η -й вектор стандартного базиса, то легко убедиться, что апп=епАеп. Так как |еи| =1, отношение Рэлея /т еи'еи = Ае„,е„ =е Ае. Вещественная матрица может иметь комплексные собственные значения, появляющиеся в виде сопряженных пар. Стратегия сдвига на отношение Рэлея работает только с вещественными собственными значениями. Поэтому применяют другой сдвиг. Допустим, что у вещественной матрицы А наименьший модуль имеют комплексно сопряженные собственные значения λ„ и λη_ι = λη . Матрица, полученная в процессе QR-алгоритма, имеет вид k k О δ αη-\,η-\ αη-\,η О 0 ип,п-\ ип,п Если величина поддиагонального элемента δ пренебрежимо мала, то собственные значения λη и λη являются корнями характеристического уравнения ,2 k к τ к к к к р. λ - </„_ι,„_ι+</„,„ λ + σ^^ί/^-ί/^.! σ !=0 подматрицы Ак к к ί а и-1,и—1 и-1,и а и,и—1 (4.42)
Вычисление собственных значений и собственных векторов матриц 259 которые несложно вычислить. Скорость обнуления элемента δ можно повысить, вводя поочередно сдвиги на величины тк и τ^, являющиеся корнями характеристического уравнения для матрицы А . Такие сдвиги называются сдвигами Уил- кинсона (Wilkinson J. Η.). QR-алгоритм со сдвигами Уилкинсона называют алгоритмом с двойными сдвигами. При этом используются следующие формулы: А кЛ -t,E = Q к R к , А к =R k Q к + τ,Ε, /с к (4.43) А к - \Е = Q k+l R k+l , A k+l = R k+l Q k+l + 4E. Так как собственные значения вещественной матрицы предполагаются комплексными, то матрицы, формируемые в алгоритме, также окажутся комплексными, что существенно усложняет вычисления. Но доказывается [2, 5], что матрица А является вещественной, и, используя специальным образом обработанный алго- ритм с двойными сдвигами, можно строить по матрице А сразу матрицу Α ζ , избегая построения комплексной матрицы А с . Докажем вещественность матрицы А . Сначала покажем, что матрица А может быть получена из матрицы А , минуя формирование А по формуле А Ш = Q k Q Ш * А кЛ Q k Q Ш , (4.44) где знак означает сопряжение матриц. Для доказательства умножим первое равенство из (4.43) слева на Q ζ , справа на Q и учтем, что Q Q = Ε , так как матрица Q является унитарной. То- гда Q A QC=RCQC+ т/сЕ. С учетом второго равенства из (4.43) полу- * * Qk а к ^-у к А к+\ Λ г ^-v k+\ А у = А . Умножая это равенство слева на Q и справа на Q и учитывая два последних равенства из (4.43), получаем (4.44). Далее, с учетом (4.43) и того, что τ^ является комплексным числом, рассмотрим произведение матриц Qk π k+l -„ к+1 т, /с г\ к » к — -,-, -„ к Q R R = Q А - хкЕ R = = Qk R/cQ/c +τ/ζΕ-τ/ζΕ Rk = Q k R k Q k R k + т/сЕ-x/cE Q k R k = Q/cR/c +т/сЕ-х/сЕ Q/cR/c = (4.45)
260 Глава 4 = Α^-τ,Ε Α^-τ,Ε = 2 = Ak~l -2 Re τ/ζ Ak~l +\τ/ζ\2Ε = Μ. Значит, это произведение является вещественной матрицей Μ. Если обозначить Q = Q Q hR = R R ,το (4.45) представляет собой унитарно-треугольное разложение вещественной матрицы М = QR . Известно [2], что невырожденная вещественная матрица при использовании определенного преобразования, например преобразования Хаусхолдера, может быть единственным образом приведена к вещественной верхней треугольной матрице. Значит, матрица R = R R является вещественной. Но тогда и матрица Q = Q Q тоже вещественна. Значит, начиная с А = А, в алгоритме двойного сдвига будем получать вещественные . k+i матрицы А Ак+1 =QTAi_1Q. (4.46) гт^ г- А к+\ А к—\ 1еперь необходимо научиться строить матрицу А сразу по матрице А , минуя построение матрицы А и работая только с вещественными числами. Конечно, можно вычислить вещественное QR-разложение Μ = QR, где матрица Μ определяется согласно (4.45), а затем выполнить преобразование подобия (4.46). Оказывается можно выполнить преобразование без вычисления матрицы Μ . Такое упрощение основано на теореме единственности [5], называемой еще неявной Q- теоремой [4, 9]. Пусть Q и Ρ — вещественные ортогональные матрицы, трансформирующие вещественную матрицу А к неразложимым матрицам Хессенберга: Hg=QTAQ, Hp=PTAP Если первые столбцы матриц Q и Ρ совпадают, то найдется диагональная ортогональная матрица D (то есть диагональная матрица со значениями ±1 на главной диагонали) такая, что P = QD, HP=DHeD Иными словами, матрицы Q и Ρ могут различаться разве лишь знаками столбцов, а хессенберговы матрицы Hg и Нр — только знаками вне диагональных элементов. Напомним, что матрица Хессенберга называется неразложимой (неприводимой), если у нее нет нулевых элементов на нижней побочной диагонали. В нашем случае теорему единственности можно использовать следующим образом. Если построить ортогональную матрицу Ρ , которая преобразует Α ζ в неразложимую хессенбергову матрицу А и имеет такой же первый столбец, что и искомая матрица Q в (4.46), то в остальных столбцах матрица Ρ с точностью до постоянных множителей совпадет с матрицей Q (столбцы Ρ коллинеарны столбцам Q).
Вычисление собственных значений и собственных векторов матриц 261 С точностью до знаков совпадут также матрица А и хессенбергова форма мат- рицы А Определим первый столбец матрицы Q . Как уже отмечалось, при использовании определенного преобразования QR-разложение невырожденной матрицы определено однозначно. Матрица Μ (4.45) будет вырождена только в том случае, если xk или τ^ будут собственными значениями матрицы А , а не только угловой подматрицы (4.42). Такой ситуацией можно пренебречь [5]. Поэтому матрица Μ имеет единственное QR-разложение Μ = QR или R = Q Μ . У матрицы Μ в первом столбце только первые три элемента не равны нулю (верхние индексы у элементов матрицы А опущены): тп=а[х- xk+\ an+xk\+al2a2l, m2i=u,2i an+a22- xk+\ , (4.47) m31 =α32α21· Для преобразования матрицы Μ к треугольному виду R = Q Μ умножим Μ слева на матрицу Хаусхолдера (2.60) Hj =E-2ww . В результате должны быть обнулены поддиагональные элементы первого столбца матрицы Μ. Как показано вразд. 2.7.2, порождающий вектор имеет вид (2.69) \ν = μ тп-$, т2Ь тзь0,..., 0 , w,-=0, г = 4,5,...,и, β = sign -mn yjm^+m^+m^, (4.48) 1 72р2-2рй7п Затем с помощью матрицы Хаусхолдера Н2 обнуляем в матрице HjM поддиагональные элементы второго столбца и т. д. Преобразования с матрицей Н2 и дальнейшие преобразования не изменяют первую строку матрицы. Это значит, что в разложении R = Q Μ первая строка матрицы Q или первый столбец матрицы Q равны первой строке симметричной матрицы Hj и, значит, первому столбцу Hj. Таким образом, первый столбец матрицы Q совпадает с первым столбцом матрицы Хаусхолдера Hj, элементы которого рассчитываются по формулам (4.47) и (4.48). Теперь построим ортогональную матрицу Ρ с таким же первым столбцом. Сначала выполним преобразование подобия с помощью ранее найденной матрицы Хаус- Т к—1 холдера Hj: Aj = Hj A Hj. Так как матрица Hj симметрична, то можно записать Aj = HjA ζ Hj. Матрица Aj не является матрицей Хессенберга. Так как
262 Глава 4 матрица Hj воздействует только на первые три строки и столбца, то матрица Aj имеет вид (звездочками отмечены ненулевые элементы) О 0 0 * * О 0 0 0 * 0 0 0 0 0 Значит, матрица Aj отличается от формы Хессенберга только "выступом" из трех подчеркнутых элементов. Применим к ней преобразование Хаусхолдера А2 = H^AjH^, обнуляя лишь два поддиагональных элемента. В матрице А2 "выступ" перемещается вниз и вправо: Q * * * * Q £ * * * Q £ £ * * о о о о * 0 0 0 0 0 Каждое следующее преобразование сдвигает "выступ", пока он не исчезнет. Отметим, что у всех матриц Н,, i = 2,3,...,n — l, первый столбец равен вектору е^. Матрица А = А.пЛ будет иметь форму Хессенберга. На каждом шаге преобразования нужно обнулить только два поддиагональных элемента, а на последнем шаге — только один. Поэтому в порождающих векторах матриц Хаусхолдера будет не более трех ненулевых элементов, и преобразованию на каждом шаге подвергаются только три строки и три столбца матриц. Это резко сокращает трудоемкость процесса: получение А лишь немного более затратно, чем один шаг вещественного QR-алгоритма [5]. k+l Теперь докажем, что матрица А есть искомая матрица А формирования матрицы А : А=Н„_,...Н-,Н1А*"1Н1Н-,...Н Раскроем процесс 1и-1 РТАР
Вычисление собственных значений и собственных векторов матриц 263 Матрица Ρ = HjH^.. Н^ является ортогональной как произведение ортогональных матриц. Так как у матриц Н,, /' = 2, 3, ...,п-\ первый столбец равен вектору ej, то у матрицы Ρ первый столбец совпадает с первым столбцом матрицы Hj, а значит, и с первым столбцом матрицы Q . Матрица А неразложима по предположению. Матрица Ρ , как и Q, преобразует А с~ в форму Хессенберга. Тогда по теореме единственности матрицы А и А могут различаться только знаками внедиагональных элементов. Таким образом, мы доказали возможность вещественного двойного сдвига. Причем в процессе доказательства нигде не использовалась комплексная сопряженность параметров сдвига xk и ~хк . Поэтому алгоритм двойных сдвигов является универсальным и работает также при вещественных значениях сдвигов. Мы рассмотрели основные идеи современных реализаций QR-алгоритма. Подробности можно найти в [4, 5, 9, 14—16]. 4.3.2. Методы для симметричных задач на собственные значения Симметричность матрицы упрощает проблему собственных значений, так как все собственные значения матрицы А вещественны (и, значит, не нужно использовать комплексные сдвиги) и существует ортогональный базис из собственных векторов. Симметричная матрица в форме Хессенберга является симметричной трехдиаго- нальной матрицей. QR-алгоритм сохраняет хессенбергову структуру и симметричность матрицы, следовательно, сохраняется трехдиагональная форма матрицы. QR- разложение трехдиагональной матрицы размера η χ η требует порядка η операций на один шаг алгоритма [16]. Известны специальные методы для симметричных матриц [2, 8, 9]. Самым известным и старым из этих методов является метод вращений Якоби (С. G. J. Jacobi). Пусть А — матрица простой структуры размера η χ η . Если λ,, χ, являются собственными парами матрицы А, то уравнения Ах, = λ,χ,, ί = \,2,...,η, можно записать в виде одного матричного уравнения АХ = ХЛ, (4.49) где Х= х1,х2,...,хи — матрица, образованная из собственных векторов матрицы А ; Л = diag λ, — диагональная матрица, составленная из собственных значений матрицы А. Все столбцы матрицы X как собственные векторы матрицы простой структуры А линейно независимы, поэтому X имеет обратную матрицу. Умножив (4.49) слева на матрицу X , получим Л = X АХ. Последнее равенство означает, что матрица Л подобна матрице А и имеет те же собственные значения, что и матрица А.
264 Глава 4 Если матрица А симметрична и вещественна, то ее собственные векторы являются ортонормированными, а матрица X, образованная из этих векторов, является — 1 Τ ортогональной [2], то есть X = X . В этом случае получаем Л = Xх АХ. (4.50) Таким образом, необходимо провести ортогональное преобразование (4.50). Тогда диагональные элементы матрицы Л дадут собственные значения, а столбцы матрицы X — собственные векторы. В классическом методе Якоби строится последовательность матриц В = А,В ,В ,...,ВС с помощью преобразований вида (4.50) τ Bk = Tk~l в*-1 Τ*-1 , (4.51) где Τ — матрица плоских вращений вида (2.53), обнуляющая максимальный по модулю недиагональный элемент с индексами i, j в матрице В с (обнуляется и элемент с индексами j,i ). В данном контексте вращения принято называть вращениями Якоби, хотя они не отличаются от вращений Гивенса. На следующем шаге обнуленный элемент может стать ненулевым, но известно [2], что итерации (4.51) сходятся, и в результате преобразований получается диагональная матрица Л. Вывод формул для матриц вращения приведен в разд. 2.7.1. Чтобы получить собственные векторы, последовательно применим преобразования (4.51) в1= т° тв°т°, τ τ τ TJ Ζ, FT! 1 TJ 1 FT! 1 FT! 1 FT! U * FT! U FT! 1 Τ Τ Τ Τ ~Γ\ 1С FT! 1С 1 FT! 1С Ζ FT! 1 FT! U * FT! U FT! 1 FT! 1С Ζ FT! 1С 1 / Λ £ Г\ \ Сравнивая (4.50) и (4.52), получаем ~ЖГ FT! U FT! 1 FT! 1С Ζ гр 1С 1 Классический метод Якоби имеет серьезные недостатки. Поиск максимального по модулю внедиагонального элемента требует порядка η операций, в то время как операция вращения требует порядка η операций. Поэтому практически проводят обнуление элементов матрицы в заранее определенной последовательности, например циклически перебирая все наддиагональные или поддиагональные элементы по строкам или столбцам, не учитывая величину элементов. Это так называемый циклический метод Якоби. Часто используют циклический метод Якоби с барьерами, когда
Вычисление собственных значений и собственных векторов матриц 265 в циклическом методе пропускаются элементы, абсолютные величины которых меньше некоторого положительного числа — барьера. Барьер обычно уменьшают с увеличением номера шага алгоритма. Использование барьеров уменьшает время счета, так как не преобразуются заведомо малые элементы. В любом случае метод Якоби потребует в несколько раз больше времени, чем QR- алгоритм с предварительным приведением в форме Хессенберга. В настоящее время метод Якоби применяется редко (по крайней мере, при решении реальных задач). Преобразование Хессенберга приводит вещественную симметричную матрицу А к трехдиагональной форме. С помощью QR-алгоритма эта трехдиагональная матрица преобразуется в диагональную матрицу, на диагонали которой располагаются собственные числа матрицы А. Этот алгоритм называется трехдиагональной QR- итерацией [4]. С помощью этого алгоритма можно найти и собственные векторы. Метод Якоби по количеству требуемых операций существенно уступает QR- алгоритму [16]. Но программная реализация метода Якоби гораздо проще реализации QR-алгоритма, следовательно, при малых порядках матрицы он может оказаться предпочтительнее. Известны и другие методы для симметричных матриц [4, 8—10, 16]. 4.3.3. Использование QR-алгоритма для вычисления собственных векторов Для нахождения собственных векторов, когда найдены собственные числа, можно использовать обратную итерацию (см. разд. 4.2.3). Обратные итерации обычно применяют не к исходной матрице А, а к матрице В, подобной матрице А и имеющей форму Хессенберга [2]. Если приведение в форму Хессенберга произведено преобразованиями Хаусхолдера, то В = Η АН, где Η — результирующая матрица элементарных отражений. Тогда согласно свойству подобных матриц собственный вектор χ матрицы А равен χ = Ну , где у — собственный вектор матрицы В. Можно использовать QR-алгоритм для одновременного определения собственных значений и собственных векторов [9]. Если В — верхняя хессенбергова матрица, то после некоторого числа итераций QR-алгоритма получаем треугольную матрицу, которую формально можно представить в виде T = Q*BQ, (4 53) где Τ — верхняя треугольная матрица, Q — унитарная матрица. Равенство (4.53) — это форма Шура (Schur I.). Известно [9], что первый столбец матрицы Q является первым собственным вектором матрицы В. Остальные столбцы матрицы Q в общем случае не являются собственными векторами матрицы В, поэтому другие собственные векторы необходимо находить отдельно. Для определения собственных векторов используем QR-алгоритм. Сначала ищется матрица Q, представляющая собой произведение всех матриц Q QR-разложения
266 Глава 4 на каждой итерации. Это достаточно трудоемкий процесс. Для сокращения числа операций сначала с помощью QR-алгоритма находят только собственные числа. Затем снова выполняют QR-алгоритм с последовательной сборкой матрицы Q, но со сдвигами, равными найденным собственным числам. Второе выполнение QR- алгоритма потребует небольшого числа итераций, что сокращает время расчета Q (теоретически при отсутствии ошибок округления при втором выполнении алгоритма очередное собственное значение должно получаться за одну итерацию). Далее необходимо найти собственные векторы матрицы Τ . Так как согласно (4.53) матрицы В и Τ подобны, то для каждого собственного вектора ν матрицы Τ вектор Qv является собственным вектором матрицы В (см. разд. 4.1). Поэтому задача сводится к определению собственных векторов треугольной матрицы Τ. Собственными числами треугольной матрицы Τ являются диагональные элементы ίη, ί22,..., tm, которые примем различными. Чтобы найти собственный вектор, соответствующий собственному значению t^ , необходимо решить однородное уравнение Т-^Е v = 0. (4.54) Представим матрицу Τ — ί^Ε и вектор ν в блочном виде _ о s22 , ν = ν1 _V2_ где Sjι — квадратная треугольная матрица размера кхк , νι — вектор-столбец размера к χ 1. Тогда уравнение (4.54) сводится к системе S11v1+S12v2=0, S22v2=0· Здесь Su и S22 — верхние треугольные матрицы. Матрица S22 не вырождена, поскольку элементы ее главной диагонали, равные t,j —tkk, j -к + \,...,п, отличны от нуля. Следовательно, v2 = 0 и система сводится к одному уравнению SllVl=0. (4.55) Матрица Su вырождена, так как ее к-я строка равна нулю. Применим разбиение г л η S г 0 0 , ν = ι— Λ —ι V W где S — верхняя невырожденная треугольная матрица размера к — \ χ к — \ , г и ν —вектор-столбцы размера к-\ xl, w —скаляр. Тогда (4.55) запишется в виде Sv + rw = 0. Взяв в качестве w любое ненулевое число, несложно методом обратной подстановки решить систему Sv = — rw с верх-
Вычисление собственных значений и собственных векторов матриц 267 ней треугольной матрицей. Неоднозначность решения за счет выбора w отражает неоднозначность определения собственных векторов. Задача определения собственных векторов с помощью QR-алгоритма существенно упрощается, если матрица В является симметричной трехдиагоналъной. Напомним, преобразование симметричной матрицы к форме Хессенберга приводит к симметричной трехдиагоналъной матрице. При использовании QR-алгоритма симметричная трехдиагональная матрица В окажется приведенной к диагональному виду D = Q BQ , где D — диагональная матрица, диагональные элементы которой равны собственным числам матрицы В; Q — унитарная матрица, столбцы которой являются собственными векторами матрицы В . Как и для матриц общего вида, для вычисления матрицы Q необходимо найти произведение всех матриц Q QR-разложения на каждой итерации. Использование алгоритма со сдвигами дает еще больший эффект, чем в случае матриц общего вида. 4.4. Вычисление сингулярного разложения 4.4.1. Приведение матрицы к двухдиагональной форме Напомним (см. разд. 2.10.3), что сингулярное разложение (SVD) матрицы А имеет вид А = ULV , где А — вещественная матрица размера их/я , Σ — матрица того же размера, квадратная подматрица которой является диагональной с диагональю из невозрастающих сингулярных чисел σ± > σ2 >... > σ^ ; U и V — ортогональные матрицы размеров пхп и тхт соответственно. Столбцы u1,u2,..·,ии матрицы U называются левыми сингулярными векторами матрицы А. Столбцы Vj, v2, ·.., vm называются правыми сингулярными векторами матрицы А . Очевидный способ вычисления SVD — найти собственные значения и векторы матриц А А и АА . Сингулярные числа — это корни квадратные из собственных чисел матрицы А А (если п>т) или АА (если и <т). Левые сингулярные векторы являются собственными векторами матрицы АА , правые сингулярные векторы— собственными векторами матрицы АТА. Так как матрицы АТА и ААТ симметричны, то полная проблема собственных значений решается для них весьма эффективно. Но все же у такого подхода имеется серьезный недостаток. Если матрица А имеет не равные нулю, но очень малые сингулярные числа, то их определение может оказаться неточным. Это объясняется тем, что собственные числа матриц А А и АА , равные квадратам сингулярных чисел А, могут оказаться одного порядка с погрешностью округления. Практически используются алгоритмы, вычисляющие SVD непосредственно по матрице А без вычисления матриц А А и АА . Один из наиболее распростанен- ных алгоритмов такого типа состоит из двух этапов [2, 4, 9, 16]. На первом этапе
268 Глава 4 (этапе деухдиагонализации) исходная матрица преобразованиями Хаусхолдера приводится к двухдиагональной форме. На втором этапе (этап диагонализации) матрица в двухдиагональной форме с помощью QR-алгоритма на основе вращений Гивенса приводится к диагональной форме. У матрицы, полученной на втором этапе, на диагонали будут расположены сингулярные числа исходной матрицы. Сначала рассмотрим первый этап преобразований. На первом шаге этапа двухдиагона- лизации матрица А умножается слева на матрицу Хаусхолдера Р1 так, чтобы в преобразованной матрице PjA все элементы первого столбца за исключением первого стали нулевыми. Как было показано в разд. 2.7.2, матрица Pj определяется выражениями P1=E-2w1Wi", w1=^ ап-ръ а2Ъ ...,ап1 Т, J И 1 Σ°,ι> μι= ι /=ι ^2ρι -2ριαη У матрицы Pj столбцы будут ортогональными, а первый столбец преобразованной τ матрицы Pj А будет иметь вид: ρ^,Ο,.,.,0 . Теперь умножим матрицу Р1А справа на матрицу Хаусхолдера Q1 так, чтобы в первой строке матрицы PjA все элементы кроме первых двух стали нулевыми. Если обозначить элементы матрицы PjA как а у, то матрица Qj определяется выражениями . τ Q^E^ZjZj, z1=v1 О, al2-q2, аи, 1 q2=sign al2 -Ίη V2<?2 " 2Ч2д12 Матрица Qj будет иметь следующую структуру Qi а ее строки будут ортогональными. Так как первый столбец матрицы Qj есть ej, то первый столбец матрицы PjA не меняется после умножения справа на Qj. Первая строка преобразованной матрицы A^PjAQj будет иметь вид pi,q2,...,0 , а вся матрица А\ будет иметь следующую структуру: El о 42 О О
Вычисление собственных значений и собственных векторов матриц 269 На втором шаге преобразованиям отражения подвергается матрица Aj. Отражения на втором шаге не изменят первые два столбца и первые две строки матрицы. В результате второго шага получаем матрицу A2 = P2A1Q2=P2P1AQ1Q2 А 0 0 0 0 <?2 Рг 0 0 0 0 Чз 0 0 А2 ·· 0 ·· 0 На третьем шаге преобразованиям отражения подвергается матрица А2 и т. д. Результат приведения к двухдиагональной форме зависит от вида исходной матрицы А . Если матрица А квадратная (и = т), то в результате преобразований получается матрица В А 0 0 0 0 <?2 Рг 0 0 0 0 Ъ Ръ 0 0 0 · 0 · q4 . 0 · 0 · ·· 0 ·· 0 ·· 0 ·· А-1 ·· 0 0 0 0 ч Ρ (4.56) Для такого преобразования требуется умножение на п-\ матрицу Хаусхолдера типа Р; и η - 2 матрицы типа Q^. Если у матрицы А число строк превышает число столбцов (η > т), то нужно выполнить еще одно преобразование с матрицей Ри, в результате чего матрица (4.56) дополнится снизу п — т нулевыми строками. Если η <т, то необходимо дополнительное преобразование с матрицей Qw-1, дополняющее матрицу (4.56) т — п столбцами справа. В любом случае сингулярные числа исходной матрицы А будут такими же, что и у квадратной матрицы В (4.56) [2]. Действительно, при п>т обозначим через матрицу (4.56), дополненную снизу нулевыми строками до квадратной. Рассмотренные ортогональные преобразования можно записать в виде P„...P2P1AQ1Q2...Q„2 = P1AQ, (4.57) где Р: РЛ P„,Q = QiQ2 Q„
270 Глава 4 Q . Последнее равенство означает, что матрицы А Из (4.57) имеем А = Ρ — имеют одинаковые собственные значения. Если η < т , то в результате пре- Г ! Ί Г j ~| ύ образований получается матрица В ! О , и получаем А = Ρ В ! О Q , где Ρ = Р^ .. .Ри_!, Q = QiQ2 · · -Qw-i · Поэтому нулевые строки или столбцы в двухдиа- гональной матрице В можно отбросить и работать с квадратной матрицей (4.56). Получение из матрицы В сингулярных чисел исходной матрицы А рассмотрим в следующем параграфе. 4.4.2. Сингулярное разложение двухдиагональной матрицы После приведения исходной матрицы А к двухдиагональной матрице В можно построить матрицу В В (для двухдиагональной матрицы В эта матрица будет трехдиагональной) и применить QR-алгоритм для нахождения ее собственных чисел. Однако использовать матрицу В В нежелательно по тем же причинам, что и А А. Поэтому построим алгоритм, не использующий в явном виде матрицу В В . Такой алгоритм предложен Голубом (Golub G. Η.) и Каханом (Kalian W.). Опишем этот алгоритм в изложении [2, 9, 16]. Пусть S и Τ — ортогональные матрицы, элементы которых определим позже. Построим матрицу B1=SBTT. (4.58) Матрицы Bj Bj и В В ортогонально подобны. Действительно τ B^Bj = SBTT SBTT =TBTSTSBTT =T BTB TT Значит, матрицы Bj Bj и В В имеют одни и те же собственные числа. Аналогично можно доказать подобие матриц BjBj и ВВ . Преобразования (4.58) производятся с помощью плоских вращений Гиеенса (см. разд. 2.7.1). Преобразования вида (4.58) повторяются на каждом шаге. Матрица Τ на каждом шаге получается как произведение п-\ матрицы вращений Т2,Т3,...,Ти и строится таким образом, чтобы обеспечить сходимость матрицы Τ Τ В В к диагональному виду, однако трехдиагональная матрица В В явно не используется. Матрица S представляет собой произведение п-\ матрицы вращений S2, S3,..., S„ и строится таким образом, чтобы на промежуточных шагах сохранялась двухдиагональная структура матриц типа В. На последнем шаге получается диагональная матрица.
Вычисление собственных значений и собственных векторов матриц 271 Сначала двухдиагональная матрица (4.56) умножается справа на матрицу плоских вращений (2.59) Л2 °2 О О о о 0 .. 0 .. 1 .. 0 .. . 0 . 0 . 0 . 1 (4.59) Значения с2 и s2 будут определены позже. В матрице ВТ2 изменятся только элементы с индексами (1, 1), (1, 2), (2, 1) и (2, 2). Матрица имеет вид (звездочками отмечены ненулевые элементы) * * 0 0 * * 0 0 0 * * 0 0 0 * * 0 · 0 · 0 · * ·· 0 ·· 0 ·· 0 ·· 0 вт,1 о о о о о * * .000000* В результате преобразования появился новый ненулевой элемент — "выступ" в позиции (2, 1), подчеркнутый в формуле. Вернем матрице двухдиагональную форму, вытесняя "выступ". Умножим матрицу ВТ2 слева на матрицу вращений 0 h h 0 0 0 .. 0 .. 1 .. 0 .. . 0 . 0 . 0 . 1 (4.60) где d2 и t2 выбираются так, чтобы элемент в позиции (2, 1) матрицы S2BT2 стал нулевым (см. разд. 2.7.1). Эта операция действует на строки 1 и 2 и порождает новый "выступ" в позиции (1, 3): SoBX, * 0 0 0 0 0 * * 0 0 0 0 *_ * * 0 0 0 0 0 * * 0 0 0 0 0 * 0 0 * 0 0 0 0 0 * *
272 Глава 4 Этот выступ уничтожается применением правого преобразования вращения с помощью матрицы 1 0 0 0 сз s3 0 ~s3 сз 0 0 0 0 0 0 (4.61) 0 0 О О ··· 1 Уничтожив "выступ" в позиции (1, 3), получаем "выступ" в позиции (3, 2). Этот "выступ" удаляется применением левого преобразования вращения с матрицей S3 и т. д. "Выступ" будет перемещаться из нижней побочной диагонали во вторую верхнюю побочную диагональ и обратно со смещением на одну позицию вдоль главной диагонали к правому нижнему углу. После η -1 преобразования "выступ" сместится за пределы матрицы. На этом завершается первый неявный шаг QR- алгоритма. Его результатом будет двухдиагональная матрица В, .S,S9BT9TTT На втором шаге повторяются описанные действия, но в качестве В берется матрица Bj (4.62) и т. д., пока не получим диагональную матрицу. Теперь вернемся к определению элементов матрицы Т2 (4.59). Эти элементы на каждом шаге подбираются так, чтобы процесс был эквивалентен QR-алгоритму с неявными сдвигами для нахождения собственных значений матрицы В В, которую легко получить из (4.56): ВТВ А2 Р\Ъ 0 0 0 №г ΡΪ + Р2Ч3 0 0 2 0 Р2Ч3 р1 + 0 0 ч\ ... 0 0 0 ΡΪ Рп- -1 + -ХЧп ч1-\ 0 0 0 Рп-\Чп 2 2 Рп+Чп (4.63) Как было описано в разд. 4.3.1, при этом используются неявные сдвиги τ Уилкин- сона, равные собственным значениям подматрицы 2x2, стоящей в правом нижнем углу матрицы (4.63). Значение τ может быть найдено из решения характеристического уравнения 2 2 Рп-\ + Чп-\ 2 2 Рп+Чп Рп-\Чп = 0. На основе теоремы единственности доказывается [9], что рассматриваемый алгоритм будет эквивалентен QR-алгоритму с неявными сдвигами, если первый стол-
Вычисление собственных значений и собственных векторов матриц 273 бец матрицы Т2 окажется пропорционален первому столбцу матрицы В В — τΕ . Г 2 ΊΤ Первый столбец этой матрицы равен вектору рх -τ, pxq2, О,..., О . Используя принятые в разд. 2.7.1 обозначения с2 = cos φ2 и s2 = sin φ2, получаем из условия ρ}-τ P\Q\ ρ} -τ ΤΙ пропорциональности = , откуда ctg φ2 = . Из известных триго- coscp2 sill φ2 pxqx нометрических преобразований находим 1 s2 =smcp2 = , , c2 =coscp2 = ctgcp2smcp2. >2 Φ + ctg2 Таким образом, алгоритм преобразования двухдиагональной матрицы В к диагональному виду будет следующим. Сначала строится матрица Т2 (4.59) и формируется произведение ВТ2 . Далее строится матрица S2 (4.60) левого преобразования вращения и матрица ВТ2 подвергается левому преобразованию вращения S2BT2 . Затем строится матрица правого преобразования вращения Т3 (4.61) и производится преобразование S^TjT^. Производя поочередно левые и правые преобразования вращения, получаем двухдиагональную матрицу Вх (4.62). На этом заканчивается первый шаг преобразования. На втором шаге повторяются описанные действия, но в качестве В берется матрица Вх (4.62) и т. д., пока не получим диагональную матрицу. Формирование диагональной матрицы объясняется тем, что рассмотренный алгритм эквивалентен преобразованиям вращений симметричной матрицы В В, которые, как показано в разд. 4.3.2, приводят матрицу к диагональному виду (строгое доказательство можно найти, например, в [8]). Количество шагов, необходимых для преобразования двухдиагональной матрицы в диагональную, заранее неизвестно. Если после очередного шага преобразованная матрица В (4.56) имеет практически нулевой элемент qn, то можно считать, что найдено сингулярное число ση =\р„\ ■ Тогда можно применить понижение порядка (см. разд. 4.3.1) и дальнейшие преобразования проводить с матрицей меньшего размера η -1. Если обозначить через S и Τ произведения матриц левых и правых преобразований на всех шагах алгоритма, а через Σ обозначить полученную диагональную матрицу, то можно записать Σ = SBT , откуда B=STET. (4.64) При вычислении S и Τ необходимо учитывать, что размерность в ходе вычислений понижалась, и дополнять соответствующие матрицы фрагментами единичной матрицы. В разд. 4.4.1 мы увидели, что двухдиагональная матрица В в общем слу-
274 Глава 4 чае является квадратной подматрицей прямоугольной матрицы, полученной в результате преобразования Ρ AQ , и только для квадратной матрицы А можно записать А = PBQT (4.65) Кроме того, сингулярные числа по определению являются положительными, а диагональные элементы матрицы Σ могут быть отрицательными. Сначала рассмотрим гу /ч, гу случай квадратной матрицы А. Из (4.65) и (4.64) получаем А = PS LTQ . Если обозначить U = PS и V = TQ , то получается разложение А = LEV . Чтобы превратить разложение А = LEV в сингулярное разложение А = ULV , необходимо возможные отрицательные диагональные элементы матрицы Σ заменить положительными и одновременно изменить знаки у соответствующих строк матрицы Τ, а значит и V . Теперь рассмотрим ситуацию, когда матрица А размера лхт является прямоугольной. Сперва рассмотрим случай п>т. Тогда, как показано в разд. 4.4.1, на В О числа, что и матрица А . Поэтому, чтобы получить матрицу Σ, матрица Σ должна этапе двухдиагонализации получается матрица имеющая те же сингулярные быть дополнена нулевыми строками. Для получения матрицы U матрица S расширяется снизу соответствующим фрагментом единичной матрицы. Естественно, необходима описанная замена отрицательных элементов матрицы Σ. Если же η <т, то в результате двухдиагонализации получается матрица В I 0 . Поэтому матрица Σ должна быть дополнена нулевыми столбцами, а матрица Τ расширяется фрагментом единичной матрицы. В процессе преобразования двухдиагональной матрицы возможны две ситуации, требующие использования специальных приемов [2, 9]. Если в матрице В (4.56) элемент qk « 0, к < и, то это означает, что матрица В может быть представлена в виде "Bj О О В, в '2. где матрица Bj имеет размеры к— \ χ к— \ , матрица В2 имеет размеры п-к + \ χ п-к + \ и обе матрицы являются двухдиагональными. Тогда надо раздельно найти сингулярное разложение матриц Bj и В2 и объединить результаты. Если диагональный элемент рк пренебрежимо мал, то это означает, что матрица имеет нулевое сингулярное число. С помощью п-к левых плоских вращений
Вычисление собственных значений и собственных векторов матриц 275 (подробные формулы приведены в [2]) можно в матрице вида (4.56) сделать 4k+i = О · Тогда двухдиагональная матрица примет форму "Βι в= о в2 Полное сингулярное разложение можно найти, комбинируя вычисленные раздельно разложения матриц Bj и В2 (ноль будет сингулярным числом). 4.5. Вычисление собственных значений больших разреженных матриц 4.5.1. Метод одновременных итераций Для больших разреженных матриц невыгодно применять QR-алгоритм и другие алгоритмы, использующие преобразования подобия, так как эти алгоритмы приводят к заполнению матриц. Уже после одной QR-итерации преобразуемая матрица перестает быть разреженной. Работа с большими плотными матрицами представляет собой сложную задачу. Поэтому для работы с большими разреженными матрицами необходимы методы, не изменяющие вид матрицы [4, 5, 9, 14—18]. Не претендуя на математическую строгость, рассмотрим основные идеи этих методов. Требуемые теоретические понятия будем вводить по мере необходимости. Все рассматриваемые положения, если это не оговорено особо, справедливы как для вещественных, так и комплексных пространств. е- ний (см. разд. 4.2.1). Для матрицы А размера η χ η , имеющей доминирующее собственное значение, степенной метод позволяет вычислить доминирующий собственный вектор vj или кратный ему. В последовательности итераций q, Aq, A2q, A q,... A™q можно рассматривать как образующий вектор одномерного подпространства A™q . Операция масштабирования вектора заменяет один образующий вектор другим из то и- вать как процесс итерирования подпространств: выбирается одномерное подпространство S = span q и выполняются итерации S,AS,A2S,A3S,... (4.66) Эта последовательность сходится к собственному подпространству Τ = span vj , то есть к одномерному подпространству, порожденному доминирующим собственным вектором vj. Под сходимостью понимается, что угол между AmS и Τ стремится к нулю при т —> оо .
276 Глава 4 Можно обобщить процесс (4.66) на подпространства с размерностью больше единицы: выбирается подпространство произвольной размерности и строится последовательность (4.66). Можно предположить, что последовательность (4.66) сходится к подпространству, инвариантному относительно матрицы А. Напомним, что подпространство S является инвариантным относительно матрицы А, если Ах е S для любого вектора xeS. Другими словами, AS с: S . По определению AS есть множество AS = А | χ е S . Для невырожденной матрицы А можно доказать [9], что если хь х2,..., хк — базис подпространства S, то Axj, Ах2,..., Ахд. есть базис подпространства AS . Следовательно, для размерностей справедливо равенство dim AS = dim S . Рассмотрим сходимость подпространств. Понятие сходимости подпространств можно определить, если ввести расстояние между подпространствами. Расстояние между подпространствами одинаковой размерности S± и S2 (обозначается как dist S\,S2 ) равно синусу наибольшего главного угла между ними [16]. Наибольший главный угол между подпространствами S± и S2 размерности η определяется следующим образом: cos θ„ = max max u ν . НИ НИ Расстояние между подпространствами равно dist Sl,S2 =yl-cos θ„ =sin6„ . Тогда для последовательности подпространств (4.66) подпространство Sm = AmS сходится к подпространству Τ (обозначается: Sm—>T),ecjm dist Sm,T —> О при т —> да . Известна теорема о сходимости итерирования подпространства [9]. Пусть А — матрица размера η χ η простой структуры с линейно независимыми собственными векторами ν1,ν2,···, ν„ и соответствующими собственными значениями λχ, λ2,..., λη, для которых |λι|> |λ2|>...> |λ„ Ι, причем для некоторого к справедливо строгое неравенство ^/с|>^/с+1|. Пусть Тк = span v1; v2,..., \k и Uk =span \k+l,\k+2,...,\n . Пусть S — некоторое /г-мерное подпространство такое, что Sc\Uk= 0 . Тогда существует константа С такая, что dist AmS,Tk <C к+\ »ι = 0,1,2,.. Таким образом, AmS сходится к Тк с отношением сходимости |λ^+1/λ^Γ". Так как подпространство Тк натянуто на собственные векторы матрицы А, то оно инвариантно относительно А. Подпространство Тк называется доминирующим
Вычисление собственных значений и собственных векторов матриц 277 инвариантным подпространством размерности к матрицы А. Предположение о простоте структуры матрицы А не является определяющим: слегка измененная версия теоремы выполняется и для дефектных матриц [9]. Итак, применяя итерацию подпространства, мы надеемся получить доминирующее подпространство Тк, то есть множество из к собственных векторов. Теоретически необходимо взять векторы базиса в подпространстве S и применить итерации (4.66) ко всем векторам базиса. Если векторы q^ , q2 ,...,qk образуют базис S и SnUk= О , то A^qj , A'"q2 ,...,Amqk образуют базис в AmS . To есть теоретически необходимо применить итерации (4.66) к базису подпространства S. Но процесс (4.66) малопригоден для практических вычислений. Во-первых, придется регулярно масштабировать векторы, чтобы избежать потери порядка или переполнения. Но и при использовании масштабирования каждая из последователь- 0 . О .2 0 ностеи векторов qt , Aq; , A qt ,... независимо от других сходится к одному собственному вектору, соответствующему доминирующему собственному значению. Векторы постепенно перестанут быть линейно независимыми. Выход состоит в восстановлении линейной независимости векторов базиса, проводя на каждой итерации процедуру ортонормирования (это позволит избежать дополнительного масштабирования). Тогда процесс одновременных итераций будет иметь следующий вид [9]: 1. Построить начальный ортонормированный базис q1 ,q2 ,...,qk подпространства S. 2. Положить т = 0 . 3. В цикле для т-0,1,2,... • Вычислить векторы Aqj , Aq2 , ..., Aq^ , образующие базис для Ат+ S; • Ортонормировать l\qx , Aq2 , ..., Aq^ , что дает элементы т+\ т+\ т+\ qi ,q2 ,-,<ik > • Проверить какое-либо условие завершения и, если оно не выполнено, перейти к новой итерации цикла. При использовании алгоритма одновременных итераций подпространство т т т span qj ,q2 ,...,qk сходится к инвариантному подпространству т т т ΓΓ1Ί тт , span Vj , v2 ,...,\k при т —> oo [9J. Число векторов к , используемых в алгоритме, ограничивается только возможностями компьютера. На практике обычно находят к наибольших по модулю собственных значений и соответствующих собственных векторов. Причем одновременная итерация находит не только инвари-
278 Глава 4 антное подпространство размерности к, но и подпространства размерности 111 111 111 1, 2,..., к -1. Вычислив приближения к собственным векторам Vj , ν2 ,..., v^ , можно с помощью отношения Рэлея получить соответствующие собственные числа. В алгоритме мы не рассмотрели выбор начального базиса и критерий завершения цикла. Для ортонормирования необходимо использовать устойчивые методы, например модифицированную процедуру Грама—Шмидта (см. разд. 3.9.4). Анализ реальных алгоритмов одновременных итераций можно найти в [5]. В настоящее время метод одновременных итераций вытесняется методами, основанными на подпространствах Крылова. 4.5.2. Метод Арнольди . В этом методе формируется последовательность векторов q, Aq, A q,..., Α ~ q, которая определяется начальным вектором q . На эти векторы натянуто подпространство Крылова (см. разд. 3.9.3) Кк A,q =span q, Aq, A2q,..., Ak_1q Как и при решении систем линейных алгебраических уравнений, собственные векторы можно искать во всем подпространстве. Кк A,q . А так как подпространство имеет к измерений, то с его помощью можно вычислить к наилучших приближений к собственным значениям и собственным векторам. Эти наилучшие приближения называются числами и векторами Ритца. Числа и векторы Ритца определяются с использованием метода Рэлея—Ритца [5]. Рассмотрим задачу на собственные значения Ах = λχ, где А — произвольная квадратная матрица. Пусть S — /г-мерное подпространство, в котором будем искать приближения к собственным векторам матрицы А. Обозначим через ν приближенный собственный вектор, а через μ — соответствующее собственное значение. Значения ν и μ определяются условием Рэлея—Ритца—Галёркина, то есть условием ортогональности невязки г = Αν - μν подпространству S : Αν-μν±£. (4.67) В данном случае используются те же принципы, что и при решении СЛАУ. Пусть ql5 q2,.., q^— произвольный ортонормированный базис подпространства S и Q = qj, q2, · · ·, q/c — матрица, столбцы которой равны векторам базиса. Можно записать разложение вектора ν по базису qb q2,···, q^ в следующем виде: v = Qs, где s — вектор-столбец коэффициентов разложения. Записывая условие (4.67) в виде Αν, ν = μ ν, ν или ν Αν = μν ν, получаем QAQ s = μβ . (4.68)
Вычисление собственных значений и собственных векторов матриц 279 Выражение (4.68) — это задача на собственные значения матрицы Q AQ. Искомые приближения собственных значений μ. матрицы А являются собственными значениями задачи (4.68), а приближения соответствующих собственных векторов (векторов Ритца) вычисляются по формуле v,=Qs,. (4.69) Для построения ортонормированных базисов в подпространствах Крылова используется процедура (ортогонализация) Арнольды (см. разд. 3.9.4). Пусть необходимо построить ортонормированный базис qb q2,..., qm в пространстве Крылова Кт A,qb и ql — нормированный начальный вектор. Процедура Арнольди в матричной форме имеет вид (3.119) AQ;„ = Q;„H;„ + <lm+\hm+lmem, (4.70) где Qm= q1,q2,..-,qm — матрица, столбцы которой равны векторам ортонор- мированного базиса; Ниг — квадратная верхняя матрица Хессенберга; ет — m-Ϋί вектор стандартного базиса в Шт; hm+lm — элемент матрицы Ниг (см. (3.117)). Рассмотрим m-мерное пространство. Если векторы q, Aq, A q,..., А'"~ q линейно независимы, то через т шагов мы найдем все векторы ортонормированного базиса ql5 q2, · · ·, q;„ · Если попытаться сделать еще один шаг процедуры Арнольди, то получим hm+i =0, так как т + 1 векторов q, Aq, A q, ...,A'"q в m-мерном пространстве должны быть линейно зависимыми. Значит, выражение (4.70) примет вид AQ;)) = Q;„H;„, или Q;„AQ;)) = Ниг. Таким образом, процедура Арнольди приводит произвольную матрицу к верхней матрице Хессенберга. Сравнивая результат преобразования с формулой (4.68) метода Рэлея—Ритца, видим, что собственные числа матрицы А равны собственным числам полученной матрицы Хессенберга Ниг. Собственные числа матрицы Ниг можно найти, используя QR-алгоритм. Собственные векторы матрицы А вычисляются по (4.69), где st — собственные векторы матрицы Нт. Экспериментально установлено [5], что метод Арнольди работает быстрее метода одновременных итераций. Недостатком метода Арнольди являются большие затраты памяти, так как необходимо хранить все базисные векторы q; и элементы матрицы Хессенберга. Поэтому метод Арнольди часто применяют для отыскания только группы первых собственных значений и векторов. Если за несколько шагов процедуры Арнольди в (4.70) получена малая величина /?m+j m , то можно предположить, что собственные значения матрицы Ниг близки к собственным значениям матрицы А . Известна оценка для нормы невязки лары Ритца [9, 19]. Пусть Q;)), Ниг и hm+im получены с помощью процедуры Арнольди и выполняется (4.70). Пусть μ — число Ритца (собст-
280 Глава 4 венное значение матрицы Шт), ν = Q;„x — соответствующий вектор Ритца (χ — собственный вектор матрицы Шт, соответствующий собственному числу μ). Тогда |Αν-μν|2=|/ζ;„+1;„|·|χ;„|, (4.71) где хт — т-й (последний) компонент вектора χ. Выражение Αν - μν представляет собой невязку задачи на собственные значения для матрицы А . Если пара Ритца μ, ν является собственной парой матрицы А, то Αν - μν = 0 . Если норма невязки |Av — μν| мала, то можно ожидать, что пара Ритца μ, ν близка к собственной паре матрицы А. Из (4.71) видно, что норма невязки пары Ритца будет малой при малом значении нормы \хт\ последнего элемента вектора х, даже если величина \hm+1 m\ не является малой. На практике можно проделать несколько шагов процедуры Арнольди и вычислить собственные значения и векторы матрицы Ниг. Если норма невязки, вычисленная по (4.71), окажется малой для некоторых пар Ритца, то эти пары являются хорошим приближением соответствующих собственных пар матрицы А. Обратите внимание, что для вычисления нормы невязки не нужно вычислять произведение матрицы на вектор, а достаточно найти произведение двух чисел в правой части уравнения (4.71). Скорость, с которой алгоритм Арнольди начинает давать хорошие приближения для собственных пар, зависит от выбора начального вектора q . Выполнив несколько шагов алгоритма Арнольди, можно вычислить некоторое приближение к собственным векторам, из которого определяется новое начальное приближение, и алгоритм Арнольди повторяется, начиная с этого нового приближения и т. д. Такой подход использован в процедуре Арнольди с неявным перезапуском (IRA — Implicitly Restarted Amoldi Process). Рассмотрим без доказательства алгоритм IRA [9]. Чтобы найти к наибольших по абсолютной величине собственных значений, выполняется т = к + j шагов алгоритма Арнольди. Величина j выбирается сопоставимой с к , обычно j = к . Начав с некоторого вектора q , за т шагов находится матрица Qm = q1; q2,. · ·, qm с ортогональными столбцами и матрица Хессенберга Ниг, которые удовлетворяют уравнению (4.70). С помощью QR-алгоритма вычисляются т собственных значений матрицы Ниг. Обозначим эти собственные значения μΐ5 μ2,...,μ;)) так, чтобы ^|> |μ2|> ...>|μΜ|. Числа μΐ5 μ2, ...,μ^ являются приближенными оценками искомых к собственных значений. Числа μ^+ι, Й£+2> •••№т являются оценками ненужных собственных значений. Далее выполняется j шагов QR-алгоритма со сдвигами νι=μ!(+ι, ν2=μ^+2, ...,ν ■ = μηί. Совокупность этих шагов дает унитарное преобразование матрицы Ниг Η =V *Н V
Вычисление собственных значений и собственных векторов матриц 281 Так как QR-алгоритм сохраняет верхнюю хессенбергову форму, то матрица Нт является верхней матрицей Хессенберга. Затем вычисляется матрица Qm = QmVm . Известно [9], что первый столбец этой матрицы можно использовать в качестве начального приближения процедуры Арнольди, и это позволяет улучшить приближение к собственным значениям. Более того, можно сохранять только к первых столбцов матрицы Qm и к первых строк и столбцов матрицы Нт, после чего продолжить алгоритм Арнольди с шага к +1, то есть выполнить последние j шагов. После выполнения этих j шагов вновь выполняется QR-алгоритм и т. д. Критерием окончания итераций является малость величины /г^+ш (см. (4.70)). Если необходимо найти к наименьших по абсолютной величине собственных значений, то в QR-алгоритме в качестве сдвигов используются т - к оценок наибольших по модулю собственных значений. 4.5.3. Метод Ланцоша Если матрица А является вещественной и симметричной, то процедура ортогонали- зации Арнольди превратится в симметричную процедуру Ланцоша (см. разд. 3.9.4). Матрица Ниг в (4.70) будет симметричной трехдиагональной. Как видно из формулы (3.123), для вычисления нового ортогонального вектора не требуется хранить все предыдущие ортогональные векторы. Но если необходимо найти собственные векторы матрицы А, то все ортогональные векторы все же потребуются. Вычисление собственных значений и векторов симметричной трехдиагональной матрицы Ниг можно осуществить QR-алгоритмом в сочетании с обратными итерациями. Недостатком симметричного алгоритма Ланцоша является постепенная потеря ор- тонормальности векторов qk из-за ошибок округления. Простейшим выходом из этой ситуации является алгоритм Ланцоша с полной ортогонализацией [4]. В этом методе хранятся все векторы qk и каждый новый вектор должен быть ортонорми- рован относительно всех уже построенных векторов. Но при этом теряются преимущества метода Ланцоша перед методом Арнольди. Однако векторы qk теряют ортогональность, прежде всего, относительно векторов Ритца, которые близки к пределу [4]. Это означает, что векторы qk приобретают большие компоненты в направлении уже сошедшихся векторов Ритца. В алгоритме Ланцоша с выборочной ортогонализацией [4] учитывается эта особенность. Пусть Qk = q1; q2,.. ·, q/c — матрица из найденных ортогональных векторов (см. (4.70));
282 Глава 4 Hk — соответствующая матрица в обозначениях (4.70). Для матрицы Н^ вычисляются собственные векторы и собственные числа, что для симметричной трехдиа- гональной матрицы сделать несложно (см. разд. 4.3.2). Пусть V = Vj, ν2,..., \/ζ — матрица из собственных векторов матрицы Н^, θ; — собственные числа матрицы Н^ (числа Ритца). Векторы Ритца, соответствующие матрице Q^, являются столбцами yk j = Q/^v, матрицы Q^V. Обозначим через vj к последний (к-й) компонент вектора ν^; β/(; — элемент матрицы tlk (см. (3.122)). Для метода Ланцоша из (4.71) следует оценка (A- Q,^ - Q^ |2=β^ k\l (4.72) Известна также оценка, даваемая теоремой Пейджа (Paige С. С.) [4]: τ ° εΊΙΑΙ2 yJ,,-q*+i = R ι 'ι , (4·73) где ε — машинный эпсилон. Выражение (4.73) означает, что компонент ук ^^+1 нового вектора qk+l в направлении вектора Ритца у/с; = Qlc\j обратно пропорционален величине β^ ν, к , являющейся оценкой погрешности (4.72) для числа Ритца θ;. Когда вектор Ритца близок к предельному и его оценка погрешности (4.72) становится малой, вектор qk+i приобретает большой компонент в направлении вектора Ритца ук,-. Поэтому векторы Ритца становятся почти линейно зависимыми. В алгоритме Ланцоша с выборочной ортогонализацией для вновь найденного вектора qk+1 проверяется, что для векторов у/с;, г<к, мала величина оценки β/j. v; к . Практически оценка считается малой, если выполняется условие [4] β*|ν,. /с|<^|Н,|. (4.74) Если условие (4.74) выполняется, то вектор qi+1 ортогонализируется по отношению к вектору ykj (см. разд. 3.9.4): _ τ Ч/t+l ~ Ч/t+l Ук,Ак+1 Ук,1 ■ Алгоритм Ланцоша с выборочной ортогонализацией обладает почти такой же точностью, как алгоритм с полной ортогонализацией, и почти такой же сложностью, как алгоритм без переортогонализации.
Вычисление собственных значений и собственных векторов матриц 283 4.6. Обобщенная задача на собственные значения 4.6.1. Основы теории Кратко рассмотрим основные положения обобщенной проблемы собственных значений [9, 16]. Пусть А и В — две матрицы размера пхп . Обобщенная проблема собственных значений формулируется следующим образом Ах = λΒχ . (4.75) Ненулевой вектор х, удовлетворяющий (4.75), называется собственным вектором упорядоченной пары А, В , а число λ называется собственным значением. Выражение (4.75) выполняется тогда и только тогда, когда Α- λΒ χ = 0, то есть когда удовлетворяется характеристическое уравнение det А - λΒ = 0. Выражение А - λΒ называют пучком матриц и говорят о собственных значениях и собственных векторах пучка матриц. Если матрица В невырождена, то пара А,В имеет ровно η собственных значений с учетом их кратностей. Если известно ненулевое собственное значение λ пары Α,Β , то из (4.75) получаем Вх = μΑχ , то есть обобщенную задачу на собственные значения для пары В, А . При этом μ = Ι/λ . Если матрица В вырождена, то пара А, В будет иметь бесконечное собственное значение. В дальнейшем будем считать, что матрицы А и В невырождены. Из равенства (4.75) видно, что обобщенная проблема собственных значений формально может быть сведена к стандартной проблеме В *Ах = λχ . (4.76) Чтобы найти собственные значения матрицы В А, можно использовать следующий алгоритм [16]. Сначала необходимо решить систему уравнений ВС = А относительно матрицы С. Так как правая часть системы представляет собой матрицу, то каждый столбец матрицы С представляет собой решение системы, правая часть которой равна соответствующему столбцу матрицы А. Затем необходимо найти собственные значения матрицы С. Однако на практике не рекомендуется использовать преобразование (4.76), так как если матрица В плохо обусловлена, при вычислении собственных значений матрицы В А могут возникнуть очень большие ошибки. Кроме того, при использовании преобразования (4.76) в случае разреженных матриц А и В матрица В А в общем случае не будет разреженной, что может существенно усложнить задачу.
284 Глава 4 Рассмотрим некоторые теоретические положения, которые потребуются при изучении алгоритмов решения обобщенной задачи на собственные значения [9]. Обобщением понятия подобия матриц является понятие эквивалентности пар матриц. Две пары матриц А, В и А, В эквивалентны, если существуют такие невырожденные матрицы U и V , что А = UAV и В = UBV . Для пучка матриц эквивалентность имеет вид: Α-λΒ = υ Α-λΒ V. Эквивалентные пары матриц имеют одни и те же собственные значения. Важную роль в решении обобщенной задачи на собственные значения играет обобщенная теорема (разложение) Шура [9]. Если А и В принадлежат С"х", то существуют унитарные матрицы Q, Ζ е Сихи и верхние треугольные матрицы Т, S б Сихи такие, что Q* AZ = Τ и QBZ = S , или Q* Α-λΒ Ζ = Τ - λ8 . Собственные значения пары равны λ А, В = t„ls„:s„ 5^0 , где tn и sn — диагональные элементы матриц Τ и S . Если при некотором k элементы skk и t^ оба равны нулю, то пара является вырожденной. 4.6.2. Решение обобщенной задачи на собственные значения Если А и В являются вещественными симметричными матрицами и матрица В положительно определена, то пара А, В называется симметричной парой {симметричным пучком). Построим разложение Холецкого матрицы В : В = R R , где R — верхняя треугольная матрица (см. разд. 2.5). Тогда обобщенная задача на собственные значения Ах = λΒχ примет вид стандартной задачи на собственные значения: Ax^RTRx, RT AR_1Rx^Rx, Ay = λγ, где А = RT AR"1, у = Rx. Матрица А является симметричной, поэтому симметричная пара имеет вещественные собственные значения и η линейно независимых собственных векторов. Так как матрица А является симметричной, то можно применить один из методов для симметричных задач (см. разд. 4.3.2). Но если матрица В плохо обусловлена, то собственные значения будут вычислены неточно. В [9] предлагается использовать для вычисления собственных пар симметричного пучка алгоритм Ланцоша (см. разд. 4.5.3 и разд. 3.9.4) без явного вычисления Aq (умножение на А приведет к большим погрешностям). Произведение ζ = Aq находится за три шага: реше-
Вычисление собственных значений и собственных векторов матриц 285 нием системы Rv = q, вычислением w = Αν и решением системы R ζ = w . Тогда ζ = RT w = RT Av = RT AR _1q = Aq Определение собственных значений несимметричной лары А, В основано на применении обобщенного разложения Шура. Это разложение вычисляется с помощью QZ-алгоритма, являющегося обобщением QR-алгоритма на случай пары матриц. Обычно QZ-алгоритм применяется к паре матриц, предварительно приведенных к хессенбергоеой треугольной форме [9, 16]. Рассмотрим приведение пары матриц к хессенбергоеой треугольной форме Q* А - λΒ Ζ = Η - λϋ, где Q и Ζ — унитарные матрицы; Η — верхняя матрица Хессенберга; U — верхняя треугольная матрица. Если А и В — вещественные матрицы, то матрицы Q, Ζ, Η и U также будут вещественными. Преобразования пары матриц А и В производятся применением отражений и вращений слева и справа, приложенных одновременно к А и В . Любое преобразование, примененное к А, должно быть применено к В, и наоборот. Сначала применим последовательность отражений, действующих слева, чтобы матрица В стала верхней треугольной. Такую же последовательность отражений применим к матрице А . В результате получим новую пару А, В . Далее преобразуем эту пару. Для простоты будем говорить о матрицах А и В, подразумевая преобразуемые матрицы. Преобразуем матрицу А к верхней матрице Хессенберга, сохраняя верхнюю треугольную форму матрицы В . Сначала с помощью вращений Гивенса будем обнулять по одному элементу первого столбца матрицы А . Обнуление начинается с элемента л, 1 — последнего элемента в первом столбце матрицы А . Такое же вращение должно быть применено в матрице В . Несложно увидеть, что это приведет к появлению ненулевого элемента матрицы В в позиции л, л -1 . Этот ненулевой элемент обнулим с помощью вращений Гивенса. Это вращение, примененное к матрице А, не затрагивает нулевой элемент л, 1 , который останется нулевым. Далее применяем вращение, чтобы в позиции л -1,1 матрицы А появился ноль. При применении такого вращения к матрице В появляется ненулевой элемент в позиции л -1, л - 2 матрицы В . С помощью вращения обнуляем этот элемент. Это вращение, примененное к матрице А, не изменяет первый столбец этой матрицы. Применяя подобные вращения, получим нули в позициях л, 1 , л-1,1 , л-2,1 ,..., 3,1 матрицы А, то есть в тех позициях, где должны стоять нули в верхней форме Хессенберга. Матрица В при при этих преобразованиях сохраняет верхнюю треугольную форму. Далее аналогично
286 Глава 4 преобразуются столбцы 2,3,..., п- 2 матрицы А. При этом каждый шаг преобразования не затрагивает столбцы матрицы А, преобразованные на предыдущих шагах, а матрица В после каждого шага остается верхней треугольной. В результате матрица А преобразуется в верхнюю хессенбергову матрицу, а В — в верхнюю треугольную. Теперь при определении собственных значений пары А, В будем предполагать, что А имеет верхнюю форму Хессенберга, а В — верхнюю треугольную форму. Предположим также, что матрица В не вырождена, а у матрицы А все поддиаго- нальные элементы отличны от нуля (иначе задача на собственные значения может быть разложена на подзадачи). На каждом шаге QZ-алгоритма фактически выполняется шаг QR-алгоритма одновременно для матриц АВ и В А . Но при этом не вычисляется В и не формируются эти произведения [9]. Сначала явно запишем шаг QR-алгоритма для матриц АВ и В~ А со сдвигом ρ : AB_1-pE = QR, B_1A-pE = ZS, (4.77) где Q и Ζ — унитарные матрицы, R и S — верхние треугольные матрицы. Определим матрицы А и В : A = Q-1AZ, B = Q-1BZ. (4.78) Тогда А1Г1 = Q_1AB_1Q = RQ + pE, В *А = £_1В_1а£ = SZ + pE, или AB1-pE = RQ, B_1A-pE = SZ. (4.79) Из (4.77) и (4.79) видно, что преобразования АВ~ —>АВ~ и В~А—>В~А являются шагом QR-алгоритма для матриц АВ и В~ А со сдвигом ρ. Если выполнить преобразование (4.78), то будет неявно выполнено QR- преобразование. Каждая из матриц Q и Ζ представляет собой произведение преобразований Q = QiQ2--Q„-i, z = z1z2...z„_1. Опишем неявный QZ-шаг, следуя [9]. Из первого равенства (4.77) и из того, что R является верхней треугольной матрицей, следует, что первый столбец матрицы Q пропорционален первому столбцу матрицы АВ - рЕ с коэффициентом пропорциональности гп (гп — элемент первой строки и первого столбца матрицы R). Так как матрица В является верхней треугольной, то легко убедиться, что В~ также является верхней треугольной матрицей. Элемент матрицы В~ , стоящий в позиции 1,1 равен Ь^ , где ί\^ — соответствующий элемент матрицы В.
Вычисление собственных значений и собственных векторов матриц 287 Так как матрица А является верхней хессенберговой, то первый столбец матрицы АВ~ -рЕ равен αλλΚ -ι 1F11 "Ρ a21bul (4.80) 0 Пусть матрица Qj будет вращением, действующим на строки 1 и 2 матрицы, а первый столбец матрицы Qj пропорционален вектору χ (4.80). Элемент х^_ вектора χ не равен нулю, откуда следует, что Qj является нетривиальным вращением. Пре- образуем пару матриц А и В в QjA и QjB Это преобразование изменяет первые две строки каждой из матриц. Верхняя хессенбергова форма матрицы А не нарушается, но нарушается верхняя треугольная форма матрицы В : в позиции 2,1 формируется "выступ" — ненулевой элемент. Так как Ьц=£0 и Qj является нетривиальным вращением, то выступ не может быть нулевым. В оставшейся части алгоритма преобразуемой паре матриц возвращается хессенбергова треугольная форма. Пусть Ъх — нетривиальное вращение, действующее на столбцы 1 и 2, так, что матрица QjBZj становится верхней треугольной. Применяя то же самое преобразование к А, получаем матрицу QjAZj , имеющую выступ в позиции 3,1 . Новый выступ будет ненулевым, так как Zj является нетривиаль- ным вращением и а32 ^ 0 · Этот выступ можно удалить вращением Q2 , действую- щим на строки 2 и 3 матриц. Матрица Q2QiAZj сохраняет хессенбергову форму, однако матрица Q2QiBZj имеет ненулевой выступ в позиции 3,2 . Применяя справа вращение Z2, преобразуем матрицу Q2Q1BZ1Z2 в треугольную. Матрица Q2Q1AZ1Z2 будет при этом иметь выступ в позиции 4, 2 . Продолжая подобные преобразования, мы удалим выступ окончательно посредством Zw_j. Таким образом, мы реализовали неявный QZ-шаг, в результате которого пара матриц А и В преобразована в пару А и В . Преобразование можно описать следующим образом A = Q*AZ, B = Q*BZ, где Q = QiQ2 · -Q„ ι и Z = Z1Z2...Z„_1—унитарные матрицы; А —верхняя хессенбергова; В — верхняя треугольная матрицы.
288 Глава 4 В [9, 16] доказано, что пара матриц А и В β основном совпадает с парой А и В . Совпадение в основном означает, что А = D AD и В = D BD, где D = diag +1,...,+1 . Таким образом, рассмотренный неявный QZ-шаг действует на АВ и В" А как QR-итерация. Как показано в разд. 4.3.1 для QR-алгоритма, в результате последовательности QZ- шагов будет получена последовательность эквивалентных пар Ак и Bk, где к — номер шага. Тогда, если сдвиги выполнены разумно, матрицы Ск - АкЩ и \к = Щ Ак будут сходиться к верхним треугольным матрицам (в случае, когда все собственные значения вещественны) или к верхним блочным треугольным матрицам (если имеются комплексно-сопряженные пары собственных значений). Таким образом, Ак = CkSk = Rklk также будет сходиться к квазитреугольной форме. В случае вещественных собственных значений элементы главной диагонали треугольной матрицы сходятся к собственным значениям. При наличии комплексно- сопряженных пар собственных значений каждой паре λ^ и λ; соответствует блок размера 2x2, образованный строками и столбцами с номерами i и i +1. Собственными значениями этого блока являются λ^ и λ; . 4.7. Вычисление собственных пар в MATLAB 4.7.1. Стандартные функции MATLAB Функция eig вычисляет собственные числа и собственные векторы матрицы, используя QZ-алгоритм. При вызове в форме d=eig(A) функция возвращает вектор, состоящий из собственных чисел матрицы а. Например, » А=[4 -1 -2; 2 1-2; 1-1 1] А = 4 -1 -2 2 1-2 1-11 » dF^ig(A) d = 1.0000 3.0000 2.0000 При вызове в виде [v,D]=eig(A) функция возвращает диагональную матрицу d собственных значений и матрицу V, составленную из правых собственных векторов.
Вычисление собственных значений и собственных векторов матриц 289 Собственные векторы нормируются, так чтобы евклидова норма каждого вектора была равна единице. Например, » [V,D]=eig(A) V = -0.5774 -0.7071 0.7071 -0.5774 -0.7071 0.0000 -0.5774 0.0000 0.7071 D = 1.0000 0 0 0 3.0000 0 0 0 2.0000 Проверим, что первый вектор нормирован: »norm(V(: ,1)) ans = 1.0000 Очевидно, что должно выполняться равенство A*V = V*D. Действительно, » A*V ans = -0.5774 -2.1213 1.4142 -0.5774 -2.1213 0.0000 -0.5774 0.0000 1.4142 » V*D ans = -0.5774 -2.1213 1.4142 -0.5774 -2.1213 0.0000 -0.5774 0.0000 1.4142 Функция [v,D]=eig(A') вычисляет левые собственные значения. Матрицы d собственных значений для а и а ■ содержат одни и те же собственные значения, но порядок их следования может быть различным. При наличии одинаковых собственных значений собственные векторы будут линейно зависимыми. Например, » А1=[3 -1 0 0;0 3 0 0;1 0 3 1;0 1 0 3] А1 = 3-100 0 3 0 0 10 3 1 0 10 3 » [V,D]=eig(Al) V = 0 0.0000 о о 0 0.7071 0 0.0000
290 Глава 4 1.0000 0 3 0 0 0 0 3 0 0 -1. 0000 0 0 0 3 0 -1.0000 0.0000 0 0 0 3 0 -0.7071 Из примера видно, что первые три собственных вектора линейно зависимы. Для получения линейно независимых собственных векторов можно использовать функцию rref, уже использовавшуюся в разд. 2.11.1. Функция [R, jb]=rref (A,tol) кроме ступенчатой матрицы r возвращает вектор jb, содержащий номера линейно независимых столбцов матрицы а. Например, » [R, jb]=rref (V) 1 0 0 0 -1 0 0 0 -1 0 0 0 0 1 0 0 jb Матрицу линейно независимых собственных векторов можно получить следующим образом: » B=V(: ,jb) о о 1.0000 о 0.7071 0.0000 0 -0.7071 В случае комплексных собственных чисел будут сформированы комплексные матрицы V и D. Например, » А2=[0 2 4; 1 0 0; 0 1 0] Ά2 = 0 1 0 2 0 1 » [V,D]=eig ν — ν — -0.8729 -0.4364 -0.2182 (А2) 4 0 0 0. -0. 0. ,7559 ,3780 - 0.3780i ,0000 + 0.3780i 0. -0. 0. ,7559 ,3780 + 0.3780i ,0000 - 0.3780i
Вычисление собственных значений и собственных векторов матриц 291 D = 2.0000 0 О О -1.0000 + l.OOOOi О О 0 -1.0000 - l.OOOOi Комплексные матрицы ν и d можно преобразовать к действительной форме: » [V,D]=cdf2rdf (V,D) V = -0.8729 0.7559 0 -0.4364 -0.3780 -0.3780 -0.2182 0.0000 0.3780 D = 2.0000 0 0 0 -1.0000 1.0000 0 -1.0000 -1.0000 Каждая пара комплексно сопряженных собственных векторов заменяется вещественной и мнимой частями компонентов векторов. Комплексная диагональная матрица D заменяется блочно-диагональной матрицей. При этом комплексные собственные значения равны собственным значениям диагональных блоков » d=eig([-l 1; -1 -1]) d = -1.0000 + l.OOOOi -1.0000 - l.OOOOi Несимметричные матрицы могут быть плохо обусловлены при вычислении собственных значений, что приводит к большим погрешностям вычислений. С помощью функции balance производится масштабирование элементов матрицы при помощи балансировки. Масштабирование применяется для предварительной обработки матрицы в случае сильного разброса абсолютных значений элементов. Балансировка матрицы А заключается в нахождении диагональной матрицы D такой, чтобы у подобной матрицы В = D AD нормы строк и столбцов были примерно одинаковыми. Балансировка не изменяет спектр матрицы. Если А — симметричная матрица, то балансировки не происходит, так как матрица А уже сбалансирована. При балансировке с помощью функции balance элементы матрицы D являются целыми степенями основания 2, поэтому ошибок округления не происходит. Функция eig производит предварительную балансировку матрицы. Но предварительная балансировка матрицы не всегда оправдана. Например, если относительно малые элементы исходной матрицы есть ошибки округления, то после балансировки они будут сравнимы с остальными элементами матрицы, что приведет к неверному результату при вычислениях собственных значений. Вызов [v,D]=eig(A, 'nobalance') вычисляет собственные значения и векторы без предварительной балансировки матрицы. Для такой формы функции собственные векторы не нормируются. Функция s=condeig (а) вычисляет вектор чисел обусловленности задачи на собственные значения для матрицы а. Числа обусловленности определяются как обратные
292 Глава 4 величины косинусов углов между левыми и правыми собственными векторами, соответствующими некоторому собственному значению. Функция [v,D,s]=condeig(A) возвращает матрицу ν собственных векторов, диагональную матрицу d собственных значений и вектор s чисел обусловленности. Результат выполнения этой функции эквивалентен выполнению двух функций [V,D]=eig(A) ; s=condeig (А) ;. Функция d=eig(A,B) возвращает вектор, содержащий обобщенные собственные значения, если А и В — квадратные матрицы. Функция [v,D]=eig(A,B), возвращает диагональную матрицу D обобщенных собственных значений и матрицу V, столбцы которой являются соответствующими нормированными собственными векторами. Например, » А=[6 -4; -4 7] А = б -4 -4 7 » В=[-9 5; 5 -6] В = -9 5 5 -6 » [V,D]=eig(A,B) V = 1.0000 0.4530 0.2471 1.0000 D = -0.6455 0 0 -1.3890 Существует также форма вызова функции [v,D]=eig(A,B,flag). Дело в том, что функция eig проверяет симметрию матриц а и в и положительную определенность матрицы в. Если эти условия выполняются, то обобщенная задача на собственные значения решается с использованием разложения Холецкого. В противном случае используется QZ-алгоритм. Если заранее известно, что айв являются симметричными матрицами и матрица в положительно определена, то целесообразно применить f lag=' chol'. Тогда не выполняется проверка и используется разложение Холецкого. Если же flag='qz', то проверка также не проводится и используется QZ- алгоритм, даже в случае симметрии матриц а и в и положительной определенности матрицы в. При решении обобщенной задачи на собственные значения собственные векторы не нормируются. При решении задач на собственные значения матрицы часто приводятся к форме Хессенберга. Учтите, что функция eig автоматически приводит матрицы к форме Хессенберга. Функция H=hess (А) возвращает матрицу в верхней форме Хессенберга. Если матрица симметрична или эрмитова, то матрица Хессенберга будет трехдиагональной. Функция [p,H]=hess (А) возвращает дополнительно орто-
Вычисление собственных значений и собственных векторов матриц 293 тональную (унитарную) матрицу преобразования р, так что а=р*н*р\ Рассмотрим пример: » А=[3 2 6;-2 0 3;1 5 -2] А = 3 2 6 -2 0 3 15-2 » [Р,Н] = hess(A) Ρ = 1.0000 0 0 0 -0.8944 0.4472 0 0.4472 0.8944 Η = 3.0000 0.8944 6.2610 2.2361 -3.6000 -2.2000 0 -4.2000 1.6000 В качестве проверки вычислим » А1=Р*Н*Р' А1 = 3.0000 2.0000 6.0000 -2.0000 0.0000 3.0000 1.0000 5.0000 -2.0000 Функция [AA,BB,Q,z]=hess (а,в) приводит пару матриц а и в к хессенберговой треугольной форме, где аа— верхняя матрица Хессенберга; вв — верхняя треугольная матрица; Q и ζ — унитарные матрицы. При этом q*a*z=aa и q*b*z=bb. С помощью вызова функции T=schur (А) реализуется разложение Шура, то есть представление любой квадратной матрицы а в виде А=и*т*и', где и— унитарная (ортогональная) матрица; τ — верхняя треугольная матрица, на диагонали которой располагаются собственные значения матрицы а. Если среди собственных значений матрицы имеются комплексные, то матрица τ имеет блочно-диагональный вид: каждому вещественному собственному значению соответствует один диагональный элемент, каждой паре комплексно-сопряженных собственных чисел соотвест- вует блок — матрица 2x2, собственные числа которой равны этой паре собственных чисел. Функция [u,T]=schur (А) дополнительно возвращает матрицу преобразования U. Для вещественной матрицы а функции T=schur (A,flag) или [u,T]=schur(A,flag) возвращают матрицу Шура в двух формах в зависимости от значения признака flag: ■ complex' — матрица τ треугольная и комплексная, если собственные значения комплексные; ' real' — комплексно сопряженным парам собственных чисел соответствуют комплексные собственные значения диагональных блоков 2x2. Режим ■ real ■ применяется по умолчанию. Функция [u,T]=rsf2csf (υ,τ) преобразует блочную диагональную вещественную форму Шура в комплексную форму. Функция [v,D]=cdf2rdf (v,d) преобразует комплексную форму Шура в вещественную форму.
294 Глава 4 Функция schur предварительно приводит матрицу к верхней форме Хессенберга, а затем использует QR-алгоритм решения полной проблемы собственных значений. Функция v=ordeig(T), где τ — квазитреугольная матрица Шура, возвращает вектор-столбец V собственных значений в порядке их появления на диагонали матрицы т. Рассмотрим примеры. В случае вещественных собственных значений получаем: » А = [ -149 537 -27 А = -149 -50 537 180 -27 -9 » [U,T]=schur(A] и = -0.3162 0.9487 -0.0000 Τ = 1.0000 0 0 -50 180 -9 -154 546 -25 1 0.6529 0.2176 -0.7255 -7.1119 2.0000 0 -154 546 ■25 ] 0.6882 0.2294 0.6882 815.8706 55.0236 3.0000 Собственные значения, равные 1, 2 и 3, расположены на диагонали матрицы т. Вектор собственных значений может быть получен следующим образом: » V=ordeig(T) V = 1.0000 2.0000 3.0000 В случае комплексных собственных значений получаем: » А=[0 2 4; 1 0 0; 0 1 0] А = 0 1 0 2 0 1 » [U,T]=schur(A] и = 0.8729 0.4364 0.2182 4 0 0 1 0.2611 -0.0399 -0.9645 -0.4122 0.8988 -0.1488
Вычисление собственных значений и собственных векторов матриц 295 2.0000 0 О -3.3320 -1.0000 1.8639 1.0659 -0.5365 -1.0000 Матрицу Шура в комплексной форме можно получить следующим образом: » [U,T]=schur (A, ' complex') и = 0.8729 0.4364 0.2182 Τ = 2.0000 0 0 Аналогичный результат можно получить, применив к полученным ранее матрицам и и τ функцию rsf 2csf: 0. 0. 0. 0. 1. 3633 7921 1311 9393 0000 0 + - - - + 0. 0. 0. 1. 1. 1234i 0189i 4560i 5752i OOOOi -0. 0. 0. 2. -1. -1. ,2301 ,0352 ,8499 ,9361 ,3274 ,0000 + - + - - 0. 0. 0. 0. 1. 1949i 4249i 0703i 5039i OOOOi » [U1,T1] = TT1 — и ± — 0.8729 0.4364 0.2182 Tl = 2.0000 0 0 =rsf2csf (U,T) -0.3633 0.7921 -0.1311 0.9393 -1.0000 0 + - - - + 0. 0. 0. 1. 1. 1234i 0189i 4560i 5752i OOOOi -0.2301 0.0352 0.8499 2.9361 -1.3274 -1.0000 + - + - - 0. 0. 0. 0. 1. 1949i 4249i 0703i 5039i OOOOi Функция [A&,BB,Q,z,v,w]=qz (a,b) приводит пару матриц а и в к обобщенной форме Шура, где аа и вв — верхние квазитреугольные матрицы; q и ζ унитарные матрицы такие, что q*a*z=aa и q*b*z=bb; ν и w— матрицы, столбцы которых являются, соответственно, правыми и левыми обобщенными собственными векторами. Функция eigs вычисляет несколько (по умолчанию шесть) наибольших собственных значений разреженной (или плотной) матрицы методом Арнольды с неявным перезапуском (IRA). Рассмотрим простейшее применение функции для вычисления шести собственных значений матрицы, полученной в результате разностной аппроксимации отрицательного Лапласиана в квадрате, размером 10x10 узловых точек: » A=^3elsq (numgrid (' S' , 10)) ; » d=eigs (A) 7.7588 7.4115 7.4115 7.0642 6.8794 6.8794
296 Глава 4 Подробности использования функции eigs можно узнать, используя систему помощи MATLAB. Сингулярное разложение можно получить, используя функцию svd. Ее варианты были рассмотрены в разд. 2.10.3 и 2.11. 4.7.2. Примеры программ Для примера вычислим максимальное и минимальное собственные числа и соответствующие собственные вектора симметричной положительно определенной матрицы с помощью метода скалярных произведений (листинг 4.1). ! Листинг4.1. Программа sam4_01.m % Пример вычисления максимального собственного значения положительно % определенной матрицы с использованием метода скалярных произведений % А - симметричная положительно определенная матрица disp('Исходная матрица'); А=[ 0 11 -5 -2 17 -7 -4 26 -10] tol=input('Введите погрешность вычислений: '); max_it=input('Введите максимальное число итераций: '); [m,n]=size(А) ; % Размерность матрицы if m~=n error('Матрица не квадратная') end % Вычисление максимального собственного значения Y=[1,1,1]'; % Начальное приближение [lambda_max,X_max,k,flag]=sp_max(A,Y,tol,max_it); if flag == 0 % Решение не достигнуто disp('Вычисление макс, собственного значения. Решение не достигнуто'); end if flag==l % Решение достигнуто disp('Вычисление макс, собственного значения. Решение достигнуто'); disp('Максимальное собственное значение'); lambda_max disp('Соответствующий нормированный собственный вектор'); Х_тах disp('Число итераций'); к disp('Результат, полученный с помощью функции eig') [V, D]=eig(A) end
Вычисление собственных значений и собственных векторов матриц 297 [1,index]=max(diag(D)); % Индекс максимального собственного числа disp('Абсолютная величина косинуса угла между собственными векторами') cos_fi=abs(dot(X_max,V(:,index)))/(norm(X_max)*norm(V(:,index))) % Вычисление минимального собственного значения Y=[1,1,1]' ; % Начальное приближение [lambda_min,X_min,k,flag]=sp_min(A,Y,tol,max_it); if flag == 0 % Решение не достигнуто disp('Вычисление мин. собственного значения. Решение не достигнуто'); end if flag==l % Решение достигнуто disp('Вычисление мин. собственного значения. Решение достигнуто'); disp('Минимальное собственное значение'); lambda_min disp('Соответствующий нормированный собственный вектор'); X_min disp('Число итераций'); к disp('Результат, полученный с помощью функции eig') [V, D]=eig(A) end [1,index]=min(diag(D)); % Индекс макс, собственного числа disp('Абсолютная величина косинуса угла между собственными векторами') cos_fi=abs(dot(X_min,V(:,index)))/(norm(X_min)*norm(V(:,index))) Программа для вычисления максимального по абсолютной величине собственного значения lambda_max и соответствующего собственного вектора х_тах использует функцию sp_max (листинг 4.2). Для сравнения используется стандартная функция eig. Так как метод скалярных произведений вычисляет вектор, коллинеарный (параллельный) соответствующему собственному вектору, то для проверки вычисляется абсолютная величина косинуса угла между собственными векторами, вычисленными стандартной функцией и функцией sp_max: cos_fi=abs (dot (X_max,V(: ,index))) / (norm(X_niax) *norm(V(: ,index))) ; | Листинг4.2. Функция sp_max function [lambda,X,k,flag]=sp_max(A,Y,tol,max_it) % Функция вычисления максимального по модулю собственного значения % и соответствующего собственного вектора % с использованием метода скалярных произведений % Вход - А - матрица η χ η % - tol - допустимая погрешность % - max_it - максимальное число итераций
298 Глава 4 % Выход - lambda - максимальное по модулю собственное значение % - X - соответствующий собственный вектор % - flag - признак достижения результата: flag=l - результат % с заданной точностью получен за число итераций, % не превышающее заданного, flag=0 в противном случае % Инициализация параметров flag=0; X=Y/norm(Y); % Масштабированный вектор for k=l:max_it Y=A*X; if k>=2 1 ambda_s=1 ambda ; end lambda=dot(Y,X)/dot(X,X); X=Y/norm(Y);% Нормализация Υ % Проверка условия окончания if k>=2 if abs(1ambda-lambda_s)/abs(lambda)<=tol flag=l; break end end end Функция sp_min (листинг 4.3) вычисляет минимальное собственное значение и соответствующий собственный вектор. | Листинг4.3. Функция sp_min function [lambda,X,k,flag]=sp_min(A,Υ,tol,max_it) % Функция вычисления минимального собственного значения % и соответствующего собственного вектора симметричной положительно % определенной матрицы с использованием метода скалярных произведений % Вход - А - матрица η χ η % - tol - допустимая погрешность % - max_it - максимальное число итераций % Выход - lambda_min - минимальное собственное значение % - X_min - соответствующий собственный вектор % - flag - признак достижения результата: flag=l - результат % с заданной точностью получен за число итераций, % не превышающее заданного, flag=0 в противном случае
Вычисление собственных значений и собственных векторов матриц 299 % Инициализация параметров flag=0; X=Y/norm(Y); % Масштабированный вектор for k=l:max_it Y=A\X; if k>=2 1ambda_s=1ambda; end lambda=dot(Y,X)/dot(X,X); X=Y/norm(Y);% Нормализация Υ % Проверка условия окончания if k>=2 if abs(1ambda-lambda_s)/abs(lambda)<=tol flag=l; 1ambda=1/1 ambda ; break end end end Функция аналогична функции sp_max за исключением того, что умножение матрицы на вектор y=a*x заменено решением системы уравнений y=a\x. Таким образом, функция находит максимальное собственное значение матрицы, обратной к заданной. Обратная величина к найденному значению является минимальным собственным значением заданной матрицы. Пример выполнения программы имеет вид: Исходная матрица А = О 11 -5 -2 17 -7 -4 26 -10 Введите погрешность вычислений: 0.0001 Введите максимальное число итераций: 100 Вычисление максимального собственного значения. Решение достигнуто Максимальное собственное значение lambda_max = 4.0004 Соответствующий нормированный собственный вектор Х_тах = 0.3245 0.4867 0.8111
300 Глава 4 Число итераций к = 13 Результат, полученный с помощью функции eig V = -0.4082 0.2182 -0.3244 -0.4082 0.4364 -0.4867 -0.8165 0.8729 -0.8111 D = 1.0000 0 0 0 2.0000 0 0 0 4.0000 Абсолютная величина косинуса угла между собственными векторами cos_fi = 1.0000 Вычисление минимального собственного значения. Решение достигнуто Минимальное собственное значение lambda_min = 1.9998 Соответствующий нормированный собственный вектор X_min = -0.2182 -0.4364 -0.8729 Число итераций к = 14 Результат, полученный с помощью функции eig V = -0.4082 0.2182 -0.3244 -0.4082 0.4364 -0.4867 -0.8165 0.8729 -0.8111 D = 1.0000 0 0 0 2.0000 0 0 0 4.0000 Абсолютная величина косинуса угла между собственными векторами cos_fi = 0.9800 В пределах короткого формата вывода найденное максимальное собственное значение совпало с числом, найденным стандартной функцией, а соответствующий собственный вектор оказался строго коллинеарным вектору, полученному функцией eig. Результат для минимального собственного значения оказался несколько хуже, но тоже достаточно точным.
Вычисление собственных значений и собственных векторов матриц 301 4.8. Задания для лабораторных и самостоятельных работ 1. Найти степенным методом максимальное и минимальное собственные числа матрицы ^9.0 1.3 -0.6 14.0 0.4 1.2 1.1 1.1 А = 0.5 1.1 L3.0 1.9 0.2 0.7 0.7 18.0 2. Найти градиентным методом максимальное и минимальное собственные числа матрицы ^6.0 0.6 1.5 1.5" 0.6 11.0 1.2 0.3 1.5 1.2 5.0 0.7 1.5 0.3 0.7 10.0 3. Найти минимальное собственное число матрицы с помощью степенного и градиентного методов. Сравнить использованные методы. "0.25000 0.18700 0.17050 0.05000" 0.18700 0.61940 0.22019 0.36341 0.17050 0.22019 0.20945 0.40680 0.05000 0.36341 0.40680 0.46060 4. Найти степенным методом максимальное и минимальное собственные числа матрицы ^25.000 18.700 17.050 5.000" 18.700 61.940 22.019 36.341 17.050 22.019 20.945 40.680 5.000 36.341 40.680 46.060 5. Найти градиентным методом максимальное и минимальное собственные числа матрицы ^25.000 18.700 17.050 5.000" 18.700 61.940 22.019 36.341 17.050 22.019 20.945 40.680 5.000 36.341 40.680 46.060
302 Глава 4 6. Найти степенным методом максимальное и минимальное собственные числа матрицы "6.0 0.6 0.6 11.0 1.2 0.3 1.5 1.5 1.5 1.2 5.0 1.5 0.3 0.7 0.7 10.0 7. Найти все собственные числа матрицы (использовать стандартные функции) 9.0 1.3 0.5 0.2" -0.6 14.0 1.1 0.7 0.4 1.2 13.0 0.7 1.1 1.1 1.9 18.0 8. Найти сингулярное разложение матрицы (использовать стандартные функции) 9.0 1.3 0.5 0.2" -0.6 14.0 1.1 0.7 0.4 1.2 13.0 0.7 1.1 1.1 1.9 18.0 9. Найти градиентным методом максимальное и минимальное собственные числа матрицы "25.000 18.700 17.050 5.000" 18.700 61.940 22.019 36.341 17.050 22.019 20.945 40.680 5.000 36.341 40.680 46.060 10. Найти все собственные числа матрицы (использовать стандартные функции) "25.000 18.700 17.050 5.000" 18.700 61.940 22.019 36.341 17.050 22.019 20.945 40.680 5.000 36.341 40.680 46.060 4.9. Вопросы и задания для самопроверки 1. В чем отличия полной и частичной проблемы собственных значений? 2. Для чего используется нормирование векторов в степенном методе? 3. Что такое смещение спектра собственных чисел? 4. Что такое отношение Рэлея и где оно используется при решении проблемы собственных значении ?
Вычисление собственных значений и собственных векторов матриц 303 5. Как найти минимальное по абсолютной величине собственное значение матрицы? 6. Опишите алгоритм градиентного метода решения частичной проблемы собственных значений. 7. Опишите QR-алгоритм решения полной проблемы собственных значений. 8. Что такое форма Хессенберга? 9. Что такое "сдвиг" в QR-алгоритме? Какие сдвиги вы знаете? 10. Какие методы используются для задачи на собственные значения симметричной матрицы? 11. Каким образом в QR-алгоритме можно одновременно определять собственные числа и векторы? 12. Что такое сингулярное разложение матрицы? 13. Постройте алгоритм вычисления сингулярного разложения матрицы. 14. Как реализуется сингулярное разложение матрицы? 15. В чем заключается идея метода Арнольди вычисления собственных пар больших разреженных матриц? 16. Опишите особенности QZ-алгоритма решения обобщенной задачи на собственные значения. Библиографический список к главе 4 1. АмосовА. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы.— М.: Издательский дом МЭИ, 2008. — 672 с. 2. Вержбицкий В. М. Численные методы (линейная алгебра и нелинейные уравнения), 2-е изд., испр. — М.: Издательский дом "ОНИКС 21 век", 2005. — 432 с. 3. Воеводин В. В., Кузнецов Ю. А. Матрицы и вычисления. — М.: Наука, 1984. — 320 с. 4. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения. — М.: Мир, 2001, —430 с. 5. Икрамов X. Д. Несимметричная проблема собственных значений. Численные методы. — М.: Наука, 1991. — 240 с. 6. Метьюз Дж. Г., Финк К. Д. Численные методы. Использование MATLAB. — М.: Издательский дом "Вильяме", 2001. — 720 с. 7. Молчанов И. Н. Машинные методы решения прикладных задач. Алгебра, приближение функций. — Киев: Наукова думка, 1987. — 288 с. 8. ПарлеттБ. Симметричная проблема собственных значений. Численные методы. — М: Мир, 1983. — 384 с.
304 Глава 4 9. Уоткинс Д. С. Основы матричных вычислений.— М.: БИНОМ. Лаборатория знаний, 2006. — 664 с. 10. Уилкинсон Дж. Алгебраическая проблема собственных значений. — М.: Наука, 1970.— 564 с. 11. Фаддеев Д. К., ФаддееваВ. Н. Вычислительные методы линейной алгебры. — СПб.: Лань, 2002.— 736 с. 12. Шевцов Г. С, Крюкова О. Г., Мызникова Б. И. Численные методы линейной алгебры. — М.: Финансы и статистика: ИНФРА-М, 2008. — 480 с. 13. Кублановская В. Н. О некоторых алгоритмах для решения полной проблемы собственных значений // Журнал вычислительной математики и математической физики, 1961, № 3. — с. 637—657. 14. Watkins D. S. The Matrix Eigenvalue Problem: GR and Krylov Subspace Methods. —SIAM, 2007. — 451 p. 15. Kressner D. Numerical Methods for General and Structured Eigenvalue Problems. — Springer, 2005. — 266 p. 16. Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999. — 548 с. 17. Saad Y. Numerical Methods for Large Eigenvalue Problems. — Manchester University Press, 1992.— 358 p. 18. Templates for the Solution of Algebraic Eigenvalue Problems: A Practical Guide // Z. Bai, J. Demmel, J. Dongarra, A. Ruhe, H. van der Vorst. — SIAM, 2000. — 441 p. 19. Dahlquist G., Bjoeck A. Numerical Mathematics and Scientific Computation. Vol. 2, 3. — SIAM, 1999.— 673 p.
Литература по вычислительной математике 1. Амосов Α. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы для инженеров. — М.: Высшая школа, 1994. — 544 с. 2. Амосов Α. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы для инженеров. — 2-е изд., доп. — М.: МЭИ, 2003. — 596 с. 3. АмосовА. Α., Дубинский Ю. Α., КопченоваН. В. Вычислительные методы. — 3-е изд., перераб. и доп. — М.: Издательский дом МЭИ, 2008. — 672 с. 4. Бабенко К. И. Основы численного анализа. — М.: Наука, 1986. — 374 с. 5. Баландин М. Ю., Шурина Э. П. Методы решения СЛАУ большой размерности. — Новосибирск: Изд-во НГТУ, 2000. — 70 с. 6. Бахвалов Н. С. Численные методы. — М.: Лаборатория Базовых Знаний, 2006. — 640 с. 7. Бахвалов Н. С, Жидков Н. П., Кобельков Г. М. Численные методы. — М.: Бином, 2004. — 636 с. 8. Бахвалов Н. С, Корнев Α. Α., Чижонков Е. В. Численные методы. Решения задач и упражнения. — М.: Дрофа, 2008. — 435 с. 9. Бахвалов Н. С, Лапин А. В., Чижонков Е. В. Численные методы в задачах и упражнениях. — М.: БИНОМ. Лаборатория знаний, 2010. — 240 с. 10. БоглаевЮ. П. Вычислительная математика и программирование. — М.: Высшая школа, 1990. — 544 с. 11. ВержбицкийВ. М. Основы численных методов. 2-е изд., перераб. — М.: Высшая школа, 2005. — 840 с. 12. Вержбицкий В. М. Основы численных методов. — М.: Высшая школа, 2002. — 840 с. 13. Вержбицкий В. М. Численные методы (математический анализ и обыкновенные дифференциальные уравнения). — М.: Высшая школа, 2001. — 382 с. 14. ВержбицкийВ. М. Численные методы (линейная алгебра и нелинейные уравнения), 2-е изд., испр.— М.: Издательский дом "ОНИКС 21 век", 2005.— 432 с.
306 Литература по вычислительной математике 15. ВержбицкийВ. М. Численные методы (линейная алгебра и нелинейные уравнения). — М.: Высшая школа, 2000. — 266 с. 16. ВержбицкийВ. М. Численные методы: Математический анализ и обыкновенные дифференциальные уравнения, 2-е изд., испр. — М.: Издательский дом "ОНИКС 21 век", 2005. — 400 с. 17. ВержбицкийВ. М. Вычислительная линейная алгебра. — М.: Высшая школа, 2009.— 351с. 18. Волков Е. А. Численные методы, 3-е изд., испр. — СПб.: Лань, 2004. — 256 с. 19. Галанин М. П., Савенков Е. Б. Методы численного анализа математических моделей. — М.: Изд-во МГТУ им. Н. Э. Баумана, 2010. — 591 с. 20. Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999. — 548 с. 21. Горбаченко В. И. Численные методы решения задач алгебры. — Пенза: Изд-во Пенз. гос. техн. ун-та, 1996. — 80 с. 22. Де Бор К. Практическое руководство по сплайнам. — М.: Радио и связь, 1985, —304 с. 23. Демидович Б. П., Марон И. А. Основы вычислительной математики.— М.: Наука, 1963, —660 с. Имеется стереотипное издание: Демидович Б. П., Марон И. А. Основы вычислительной математики. — СПб.: Лань, 2006. — 672 с. 24. Демидович Б. П., Марон И. Α., Шувалова Э. 3. Численные методы анализа. Приближение функций, дифференциальные и интегральные уравнения. — М.: Наука, 1968.—400 с. Имеется стереотипное издание: Демидович Б. П., Марон И. Α., Шувалова Э. 3. Численные методы анализа. Приближение функций, дифференциальные и интегральные уравнения. — СПб.: Лань, 2008. — 400с. 25. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения. — М.: Мир, 2001, —430 с. 26. Зализняк В. Е. Основы научных вычислений. Введение в численные методы для физиков. — М.: Эдиториал УРСС, 2002. — 296 с. 27. Ильин В. П. Численный анализ. Часть 1. — Новосибирск: ИВМиМГ СО РАН, 2004.— 335 с. 28. Калиткин Н. Н. Численные методы. — СПб.: БХВ-Петербург, 2011. — 592 с. 29. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. — М: Мир, 2001. — 575 с. 30. Киреев В. И., Пантелеев А. В. Численные методы в примерах и задачах. — М.: Высшая школа, 2006. — 480 с.
Литература по вычислительной математике 307 31. Копченова Н. В., Марон И. А. Вычислительная математика в примерах и задачах. М.: Наука, 1972. 368 с. Имеется стереотипное издание: Копченова Н. В., Марон И. А. Вычислительная математика в примерах и задачах. — СПб.: Лань, 2008. — 358 с. 32. Кирьянов Д. В., Кирьянова Е. Н. Вычислительная физика // Д. В. Кирьянов. — М.: Полибук Медиа, 2006. — 352 с. 33. Лобанов А. И, Петров И. Б. Лекции по вычислительной математике. — М.: Лаборатория базовых знаний, 2006. — 528 с. 34. ЛапчикМ. П., РагулинаМ. П., Хеннер Е. К. Численные методы.— М.: Издательский центр "Академия", 2007. — 384 с. 35. Маликов В.Т., КветныйР. Н. Вычислительные методы и применение ЭВМ. — Киев: Вища школа, 1989. — 213 с. 36. Марчук Г. И. Методы вычислительной математики.— М.: Наука, 1989.— 608 с. 37. Махмутов М. М. Лекции по численным методам. — Ижевск: РХД, 2007. — 238 с. 38. Мэтьюз Дж., ФинкК. Д. Численные методы. Использование MATLAB. — М.: Вильяме, 2001. —720 с. 39. Пантелеев А. В., Якимов А. С. Обыкновенные дифференциальные уравнения в примерах и задачах. — М.: Высшая школа, 2001. — 376 с. 40. Панюкова Т. А. Численные методы.— М.: Книжный дом "ЛИБРОКОМ", 2010. — 224 с. 41. Пирумов У. Г. Численные методы. —М.: Дрофа, 2007. — 221 с. 42. Плотников А. Д. Численные методы. —М.: Новое знание, 2007. — 174 с. 43. Плохотников К. Э. Вычислительные методы. Теория и практика в среде MATLAB: курс лекций. — М.: Горячая линия — Телеком, 2009. — 496 с. 44. Половко Α., Бутусов П. Интерполяция. Методы и компьютерные технологии их реализации. — СПб.: БХВ-Петербург, 2004. — 320 с. 45. Поршнев С. В. Вычислительная математика. — СПб.: БХВ-Петербург, 2004. — 320 с. 46. Ращиков В. И., Рошаль А. С. Численные методы решения физических задач. — СПб.: Лань, 2005. — 208 с. 47. Ревизников Д. Л., Иванов И. Э., Гидаспов В. Ю. Численные методы.— М.: Дрофа, 2007. — 144 с. 48. Рено Н. Н. Численные методы. — М.: Книжный дом "Университет", 2007. — 100 с. 49. Рыжиков Ю. И. Вычислительные методы.— СПб.: БХВ-Петербург, 2007.— 400 с.
308 Литература по вычислительной математике 50. Рябенький В. С. Введение в вычислительную математику. — М.: ФИЗМАТ ЛИН, 2008. — 288 с. 51. Самарский Α.Α., Вабищевич П. Η., Самарская Ε. А. Задачи и упражнения по численным методам. — М.: КомКнига, 2007. — 208 с. 52. Самарский Α. Α., Гулин А. В. Численные методы математической физики.— М.: Научный мир, 2003. — 316 с. 53. Соболь Б. В., Месхи Б. Ч., Пешхоев И. М. Практикум по вычислительной математике. — М.: Феникс, 2008. — 342 с. 54. Срочко В. А. Численные методы. Курс лекций. — СПб.: Лань, 2010. — 208 с. 55. Турчак Л. И. Основы численных методов. —М.: Наука, 1987. — 320 с. 56. Тыртышников Е. Е. Методы численного анализа.— М.: Издательский центр "Академия", 2007. — 320 с. 57. Уоткинс Д. Основы матричных вычислений. — М.: БИНОМ. Лаборатория знаний, 2006. — 664 с. 58. Устинов С. М., Зимницкий В. А. Вычислительная математика.— СПб.: БХВ- Петербург, 2008. — 336 с. 59. Формалев В. Ф., Ревизников Д. Л. Численные методы. — М.: Физматлит, 2004. — 400 с. 60. Хайрер Э., Ваннер Г. Решение обыкновенных дифференциальных уравнений. Жесткие и дифференциально-алгебраические задачи.— М.: Мир, 1999.— 685 с. 61. Хайрер Э., НерсеттС, Ваннер Г. Решение обыкновенных дифференциальных уравнений. Нежесткие задачи. — М.: Мир, 1990. — 512 с. 62. Чен К., Джиблин П., Ирвинг A. MATLAB в математических исследованиях. — М.:Мир, 2001,—346 с. 63. Шампайн Л. Ф., ГладвелИ, Томпсон С. Решение обыкновенных дифференциальных уравнений с использованием MATLAB. — СПб.: Лань, 2009. — 304 с. 64. Шевцов Г. С, Крюкова О. Г., Мызникова Б. И. Численные методы линейной алгебры. — М.: Финансы и статистика; ИНФРА-М, 2008. — 480 с. 65.ШупТ. Прикладные численные методы в физике и технике.— М.: Высшая школа, 1990. —255 с. 66. Эдварде Ч. Г., Пенни Д. Э. Дифференциальные уравнения и краевые задачи: моделирование и вычисление с помощью Mathematica, Maple и MATLAB. — Μ.: Вильяме, 2007. — 1104 с.
Литература по по системе MATLAB 1. Алексеев Е. Р, Чеснокова О. В. MATLAB 7. — Μ.: ΗΤ Пресс, 2006. — 464 с. 2. Ануфриев И. Е., Смирнов А. Б, Смирнова Е. Н. MATLAB 7. СПб.: БХВ- Петербург, 2005. — 1104 с. 3. Ануфриев И. Е. Самоучитель MATLAB 5.3/б.х. — СПб.: БХВ-Петербург, 2002. — 736 с. 4. Гандер В., Гржебичек И. Решение задач в научных вычислениях с применением Maple и MATLAB. — Μ.: Хэлтон, 2005. — 520 с. 5. Дьяконов В. П. MATLAB 6.5 SP1/7.0 + Simulink 5/6 в математике и моделировании. М.: СОЛОН-Пресс, 2005. — 576 с. 6. Дьяконов В. П. MATLAB 6.5 SP1/7.0 + Simulink 5/6. Основы применения.— М.: СОЛОН-Пресс, 2005. — 800 с. 7. Дьяконов В. П. MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения. Самое подробное описание последних версий MATLAB. Новые возможности Simulink —M.: СОЛОН-Пресс, 2008 — 799 с. 8. Дьяконов В. П. MATLAB 7. * /R2006/R2007. Самоучитель. Программные средства математических вычислений. Операции с векторами и матрицами. Использование обычной и специальной графики. Обзор расширений в MATLAB. Визуальное программирование GUI. —Μ.: ДМК-Пресс, 2008. — 768 с. 9. Дьяконов В. П. MATLAB. Полный самоучитель.— М.: ДМК-Пресс, 2010.— 768 с. 10. Иглин С. П. Математические расчеты на базе MATLAB. — СПб.: БХВ-Петербург, 2005. — 640 с. 11. Кетков А. Ю., ШульцМ. М. MATLAB 6.x.: программирование численных методов. СПб.: БХВ-Петербург, 2004. 672 с. 12. Кетков А. Ю., ШульцМ. М. MATLAB 7. Программирование, численные методы. — СПб.: БХВ-Петербург, 2005. — 752 с. 13. Кондратов В. Е., Королев С. Б. MATLAB как система программирования научно-технических расчетов. — М.: Мир, 2002. — 350 с.
310 Литература по по системе MATLAB 14. Кривилев А. Основы компьютерной математики с использованием системы MATLAB. — Μ.: Лекс-Книга, 2005. — 492 с. 15. Курбатова Е. A. MATLAB 7. Самоучитель. — 2005. — 256 с. 16. МартыновН. Н. MATLAB 7. Элементарное введение.— М.: Кудиц-Образ, 2005. — 416 с. 17. Половко А. М., Бутусов П. Н. MATLAB для студента. — СПб.: БХВ-Петербург, 2005. — 320 с. 18. Поршнев С. В. MATLAB 7. Основы работы и программирования. — М.: Бином, 2008. — 320 с. 19. Потемкин В. Г. MATLAB 6: Среда проектирования инженерных приложений. — М.: Диалог-МИФИ, 2003. — 448 с. 20. Потемкин В. Г. Вычисления в среде MATLAB. — Μ: Диалог-МИФИ, 2004. — 720 с. 21. Потемкин В. Г. Система инженерных и научных расчетов MATLAB 5.x: — В 2-х т. Т. 1. — М: Диалог-МИФИ, 1999. 366 с. 22. Потемкин В. Г. Система инженерных и научных расчетов MATLAB 5.x: — В 2-х т. Т. 2. М.: Диалог-МИФИ, 1999. 304 с. 23.ХантБ. Р., ЛипсменР. Л., Розенберг Д. М. MATLAB: официальный учебный курс Кембриджского университета. — М.: Триумф, 2007. — 352 с. Существует также версия этой книги, включающая видеокурс: ХантБ. Р. MATLAB R2007 с нуля // Б. Р. Хант, Р. Л. Липсмен, Д. М. Розенберг. — М.: Триумф, 2007. — 352 с. + CD-ROM.
Предметный указатель I IEEE 754-1985 Gw. Стандарт двоичной арифметики inf 12 IRA: процедура Арнольди с неявным перезапуском 280 L LDLT-pa3no>Keinie 48 ЬЬт-разложение 45 LU-разложение 43 N NaN 12 Q QR-алгоритм: определения собственных значений и векторов 265 решения полной проблемы собственных значений 255 QR-итерация трехдиагональная 265 QR-разложение 50 QZ-алгоритм 285 S SVD-разложение 71 А Адекватность: дискретной модели 28 математической модели 7 Алгоритм двойных сдвигов 259,263 Б Базис: естественный 155 линейного пространства 154 ортонормированный 157 Биортогонализация Ланцоша 172 Биортогональность 171 В Вектор 152 линейно независимый 154 ортогональная проекция 157 ортогональный 50, 157 Ритца 278 сингулярный 72 Вектор-столбец 33 Вектор-строка 33 Верная значащая цифра 9 Вращение: вектора 51 Гивенса 53 плоское 53 Якоби 264 Вычисление: обратных матриц 64 определителей 63 Вычислительный алгоритм 7 Вычислительный эксперимент 5 типы 7 3 Задача: на собственные значения 239 наименьших квадратов 66 обобщенная на собственные значения 239, 284 седловая 201 И Интервальные вычисления 13 Итерационный метод: неявный 150 явный 150 Итерационный процесс: канонический вид 150 критерий останова 128 К Каноническая форма Жордана 243 Корректность: вычислительной задачи 19 по Адамару 19 по Тихонову 20 численного метода 28 Коэффициент прогоночный 42 Л Линейная независимость 154 Линейная оболочка векторов 157 Μ Математическое моделирование 5 Матрица 33 дефектная 241 диагональная 34 единичная 34 итерирующая 126 ленточная 35 нулевая 34 обратная 35 (окончание рубрики см. на стр. 312)
312 Предметный указатель Матрица (окончание): ортогональная 35,51,243 перестановок 40 перехода от базиса к базису 155 подобная 242 положительно определенная 35 простой структуры 241 псевдообратная Мура— Пенроуза 74 разреженная 36, 87 расщепляющая 125 симметричная 34 собственные векторы 239,288 собственные числа 239, 288 транспонированная 34 треугольная 35 унитарная 243 упорядочение 92 Хаусхолдера 57 хранение и обработка разреженных матриц 87 Машинный эпсилон 14 Метод: BiCG бисопряженных градиентов 188 BiCGSTAB устойчивый бисопряженных градиентов 193 CGS квадратичный сопряженных градиентов 189 FOM полной ортогонализации 184 FOM(m) полной ортогонализации перезапускаемый 185 GMRES обобщенный минимальных невязок 186 GMRES(m) перезапускаемый обобщенный минимальных невязок 187 ЮМ неполной ортогонализации 186 ГБГт-разложения 48 LSQR 201 LU-разложения 43 LU-разложения с выбором главного элемента 45 MINRES минимальных невязок на подпространствах Крылова 186 QMR квазиминимальных невязок 189 QR-разложения 50 QR-разложения решения задачи наименьших квадратов 68 QR-разложения с выбором ведущего столбца 70 SOR последовательной верхней релаксации 136, 199 SYMMLQ симметричный метод LQ 186 Арнольди 278 Арнольди с неявным перезапуском 295 асинхронный итерационный 142 бессеточный 202 вариационного типа 142, 174 вращений 50 вращений Якоби 263 Гаусса 37 Гаусса—Жордана 39 Гаусса компактная схема 43 Гаусса с выбором главного элемента по всей матрице 40 Гаусса с выбором главного элемента по столбцу 39 градиентный решения частичной проблемы собственных значений 254 Зейделя 135, 199 итерационный блочный 140 итерационный решения нормальных систем 197 итерационный решения системы линейных алгебраических уравнений 125 квадратных корней 45 конечных разностей 119 Ландвебера 198 Ланцоша 281 минимальных невязок 147 многосеточный 203 наименьших квадратов 197 обратных итераций 252 обратных итераций со сдвигами 252 одновременных итераций 275 ортогонализации 164 отражений 57 подпространств Крылова 174 последовательной верхней релаксации 136 последовательной верхней релаксации с вычисляемым коэф фициентом релаксации 138 прогонки 41 проекционный 158 простой итерации 132 Ричардсона 130,198 скалярных произведений 250 скорейшего спуска 143 сопряженных градиентов 174,200 сопряженных градиентов неявный 183 сопряженных градиентов предо бус лов ленный 181 сопряженных градиентов, трехчленная формула 183 спуска 142 степенной 245 Узавы 201 Холецкого 45 циклический Якоби 264 Якоби 133, 198 Метрика 152 на подпространствах 276 Модель: дискретная 7 математическая 6 Η Наилучшее приближение 158 Невязка 126 Норма: вектора 36 вектора вторая (евклидова) 36 вектора кубическая 36 вектора первая (октаэдрическая) 36 матрицы 37 энергетическая 154
Предметный указатель 313 О Образ 156 Обусловленность: вычислительной задачи 22 задачи 23 плохо обусловленная задача 23 системы линейных алгебраических уравнений 24 численного метода 28 Округление 8 Оператор 156 линейный 156 Операция: решатель систем линейных алгебраических уравнений 75 Ортогональность 50, 157 Отношение Рэлея 131, 241 Π Погрешность: абсолютная 9 дискретизации 8 источник 7 математической модели 8 методическая 8 методическая итерационного процесса 128 округления 8 операции с плавающей точкой 14 относительная 9 предельная абсолютная 9 предельная относительная 9 представления числа 13 прямых методов решения систем линейных алгебраических уравнений 65 статистическая оценка 18 трансформированная 8 трансформированная арифметических операций 15 трансформированная вычисления функций 18 Подпространство 157 инвариантное относительно матрицы 276 Крылова 163 ортогональное дополнение 157 порожденное системой векторов 157 размерность 157 сходимость 276 Подход: минимума невязок 174 Петрова—Галёркина 174 Ритца—Галёркина 174 Понижение порядка (исчерпывание) 257 Предобусловливатель 149, 204 Преобразование координат 155 Приведение матрицы к двухдиагональному виду 267 Проблема собственных значений: полная 242 частичная 242 Проектирование решения на подпространство 159 Прообраз 156 Пространство 151 арифметических векторов 153 векторное 152 евклидово 153 конечномерное 154 линейное 152 линейное нормированное 152 метрическое 151 проектор 157 размерность 154 функциональное 151 Процедура: Арнольда 168,279 Арнольда с неявным перезапуском 280 Грама—Шмидта 164 симметричная Ланцоша 171 Пучок матриц 283 Ρ Разложение: сингулярное: двухдиагональной матрицы 270 Шура 244, 293 Размерность 154, 157 Ранг матрицы 69 Расщепление матрицы 125 Рациональная арифметика 13 Реализуемость численного метода 29 Регуляризация 20 С Сдвиг 257 на отношение Рэлея 258 Уилкинсона 259 Сингулярное разложение матриц 71 решение задачи наименьших квадратов 72 Система: линейных алгебраических уравнений 33 нормальная алгебраических уравнений 67 разностных уравнений 120,122 Скалярное произведение векторов 35,153 индуцированное (внутреннее) 154 Смещение спектра матрицы 248 Собственное значение матрицы 35, 239 Собственные числа и векторы матрицы 288 Собственный вектор матрицы 35, 239 Стандарт двоичной арифметики: ШЕЕ 754-1985 11 IEEE 754-2008 13 Сходимость: итерационного процесса 127 условие сходимости 127 численного метода 28 Τ Теорема: единственности 260 о LU-разложении 43 Пейджа 282 Шура обобщенная 284 Транспонирование 34 У Уравнение характеристическое (вековое) 240
314 Предметный указатель Условие: Петрова—Галёркина 158 Рэлея—Ритца— Галёркина 278 Устойчивость численного метода: вычислительная 28 по входным данным 28 Φ Факторизация: ILU неполная LU 150 неполная 150 неполная Холецкого 151, 204 неполное LU-разложение 207 Форма Хессенберга 62,292,293 Функция: bicg метод бисопряженных градиентов 207 chol разложение Холецкого 83 colamd упорядочение несимметричной матриы 94 cond число обусловленности матрицы 75 condeig вектор чисел обусловленности задачи на собственные значения 291 condest нижняя оценка числа обусловленности 75 cross векторное произведение 75 delsq разностный аналог Лапласиана 96 det вычисление определителя 75 dot скалярное произведение векторов 75 eig вычисление собственных векторов и чисел матрицы 75 eig вычисление собственных чисел и векторов 288 eigs метод Арнольди с неявным перезапуском 295 find индексы и значения ненулевых элементов разреженной матрицы 88 full полное представление разреженной матрицы 88 hess приведение к форме Хессенберга 292 inv вычисление обратной матрицы 75 linsolve решение систем линейных алгебраических уравнений с выбором метода решения 76 lu LU-разложение матрицы 80 mldivide решение систем линейных алгебраических уравнений 75 mpower возведение матрицы в степень 74 norm норма матрицы 75 peg предобусловленный метод сопряженных градиентов 203 pinv вычисление псевдообратной матрицы 84 power поэлементное возведение массива в степень 75 qr QR-разложение матрицы 83 qz приведение к обобщенной форме Шура 295 rank ранг матрицы 75 rref вычисление приведенно-ступенчатой формы матрицы 77 schur разложение Шура 293 spalloc формирование пустой разреженной матрицы 90 sparse компактное представление разреженной матрицы 87 spdiags преобразование диагональной формы хранения матрицы 91 speye формирование единичной разреженной матрицы 90 spfun обработка только ненулевых элементов разреженной матрицы 90 spy шаблон (спай-график) матрицы 88 svd сингулярное разложение матрицы 84 symamd упорядочение симметричной положительно определенной матрицы 93 symrcm симметричное обратное упорядочение 92 Ч Численный метод 7 Число: двойной точности 12 обусловленности: прямоугольной матрицы 74 одинарной точности 12 с плавающей точкой 11 сингулярное 71 субнормальное 12 Число обусловленности: абсолютное 23 матрицы 25 относительное 23 прямоугольной матрицы 72, 74