Author: Голуб Дж.   Ван Лоун Ч.  

Tags: алгебра   математика  

ISBN: 5-03-002406-9

Year: 1999

Text
                    Л Ж. ГОЛУБ, Ч.ВАНЛОУН
МАТРИЧНЫЕ
ВЫЧИСЛЕНИЯ
X	X	X	X	X
О	х	х	х	х
О	0	х	х	х
О	0	0	х	х
О	0	0	х	х
О	О	0	х	х
ИЗДАТЕЛЬСТВО «МИР»


Matrix Computations SECOND EDITION Gene H. Golub Department of Computer Science Stanford University Charles F. Van Loan Department of Computer Science Cornell University The John Hopkins University Press Baltimore and London
ДЖ. ГОЛУБ, Ч.ВАН ЛОУН МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ Перевод с английского Ю.М. Нечепуренко, A. Ю. Романова, А. В. Собянина и Е. Е. Тыртышникова под редакцией B. В. Воеводина МОСКВА «МИР» 1999
УДК 512.83 ББК 22.193 Г 62 Голуб Дж., Ван Лоун Ч. Г62 Матричные вычисления: Пер. с англ. — М.: Мир, 1999. - 548 с., ил. ISBN 5-03-002406-9 Книга известных американских математиков-вычислителей представляет собой удачное сочетание учебного пособия и справочника по методам численной алгеб¬ ры. Изложение сжатое, в рецептурной форме, без доказательств. Книгу отличают методические достоинства: каждый раздел содержит задачи для читателей-студен¬ тов и обзор научной литературы — для специалистов. Для математиков-вычислителей, инженеров, студентов математических и техни¬ ческих специальностей. ББК 22.193 Федеральная целевая программа книгоиздания России Редакция литературы по математическим наукам ISBN 6-03-002406-9 (русск.) ISBN 0-8018-3739-1 (англ.) © 1989 The John Hopkins University Press All rights reserved © перевод на русский язык, коллектив переводчиков, 1999
Предисловие редактора перевода Вниманию читателя предлагается новая книга по линейной алгебре. И, естест¬ венно, возникают вопросы: «Что же действительно новое можно найти в ней и чем конкретно она отличается от других книг по линейной алгебре?» Как никакая другая ветвь математики, линейная алгебра самым тесным образом переплелась с многочисленными приложениями, являясь либо предметом, либо инструментом исследований. С основами линейной алгебры в той или иной мере знаком каждый человек, соприкасающийся с вычислениями и тем более имеющий дело с решением больших задач на современных суперЭВМ. Круг лиц, интересую¬ щихся линейной алгеброй, необычайно широк. Он весьма неоднороден по уровню квалификации и включает в себя студентов, аспирантов, молодых специалистов, а также специалистов высшей квалификации. Все эти обстоятельства делают очень трудным написание книг по линейной алгебре. Желание отразить последние дости¬ жения и сделать при этом изложение достаточно простым-всегда противоречивы. Член Национальной Академии наук США, профессор Стэнфордского универси¬ тета Дж. Голуб и профессор Корнелльского университета Ч. Ван Лоан являются специалистами в области линейной алгебры, известными не только в США, но и во всем мире. Их имена хорошо знакомы и специалистам в нашей стране. Несколько лет назад они предприняли попытку описать в доступной форме последние достиже¬ ния в области численных методов линейной алгебры. Эта попытка воплотилась в книгу «Матричные вычисления», первое издание которой было встречено с интере¬ сом. За последние пять лет авторы провели значительную работу по улучшению содержания книги: в частности, были улучшены многие доказательства, включен материал, касающийся параллельных вычислений. Результатом этой работы было второе издание книги «Матричные вычисления». Именно оно и предлагается вниманию читателя. Авторам удалось успешно сочетать строгость и простоту изложения. Книга читается довольно легко. В ней имеется много нового материала, который еще не публиковался в систематизированном виде на русском языке. Поэтому она будет полезна практически всем специалистам в области вычислительной математики: студентам и аспирантам-как пособие для освоения основ линейной алгебры, прикладникам-как источник рецептов решения задач, опытным специалистам - как пища для размышлений. Последнее обстоятельство особенно важно для нашего читателя, так как представленный в книге материал хорошо отражает уровень исследований за рубежом в области численных методов линейной алгебры. Объем второго издания книги «Матричные вычисления» увеличен более чем на треть по сравнению с первым. Введение нового материала во многом объясняется быстрым ростом исследований в области параллельных вычислений. Литература по этому направлению плохо систематизирована. Нет еще установившихся методов исследования. Не всегда даже ясно, что в параллельных вычислениях является
6 Предисловие редактора перевода главным, а что-второстепенным. Поэтому попытка авторов навести определенный порядок очень важна. Наличие систематизированых обозначений, методов исследо¬ вания и источников информации позволяет лучше понять сильные и слабые стороны предметной области. Для всех, кто занимается параллельными вычислениями, сейчас это очень нужно. Для удобства читателя списки литературы помещены по главам. Добавим к сказанному, что в книге имеется много интересных решений и нахо¬ док в отдельных доказательствах. Все это можно увидеть, познакомившись с текс¬ том поближе. Хочется надеяться, что в ряду многих книг в области численных методов линейной алгебры предлагаемая читателям книга Дж. Голуба и Ч. Ван Лоана займет достойное место. В заключение отметим, что перевод книги выполнен группой переводчиков: гл. 7, 8, 11 перевел Ю. М. Нечепуренко, гл. 1,2-А. Ю. Романов, гл. 3,4, 12-А. В. Собянин и, наконец, гл. 6, 9 и 10-Е. Е. Тыртышников. В. В. Воеводин
Посвящается Олстону С. Хаусхолдеру и Джеймсу X. Уилкинсону Предисловие к первому изданию Мы придерживаемся той точки зрения, что «предназначение» численного анали¬ за - обеспечить научную общественность эффективными библиотеками программ. Эта деятельность особенно интересна тем, что ее участникам необходимо знание как математики, так и вычислительной техники. В самом деле, разработка программ высокого качества требует и понимания математического существа решаемой задачи, и чутья к конструированию алгоритмов, и осознания специфики вычислений с конечной точностью. Цель этой книги-снабдить читателя нужными навыками в той мере, в которой они относятся к матричным вычислениям. Начиная с середины 50-х годов в этой области был достигнут огромный прогресс. Это подтверждается существованием высококачественных программ для решения систем линейных уравнений, многих задач, решаемых методом наимень¬ ших квадратов, и задач на собственные значения. Типичный пример-подпрограм¬ мы пакетов Eispack и Unpack, широкое использование которых привело к повыше¬ нию уровня разработки алгоритмов во многих прикладных областях. Используя модули из этих пакетов в качестве строительного материала, ученые и инженеры могут сооружать более сложные, специально настроенные на их нужды, програм¬ мные средства. Такое положение вещей стимулирует написание хорошо структури¬ рованных программ-благоприятная тенденция в условиях, когда все больше научных результатов формулируется в виде программ. Влияние численной линейной алгебры ощущается и в другом. Наши добрые привычки-склонность полагаться на ортогональные матрицы, осознание роли чувствительности задачи к возмущениям, тщательное рассмотрение ошибок округ¬ ления-были восприняты во многих других областях исследований. Хороший пример-рост использования сингулярного разложения (SVD) как аналитического инструмента многими статистиками и инженерами в области управления. Работаю¬ щие в этих областях специалисты переформулируют многие теоретические концеп¬ ции на языке SVD, и в результате им становится гораздо легче реализовывать свои идеи в условиях влияния ошибок округления и неточных данных. Дальнейшие свидетельства растущего влияния численной линейной алгебры можно обнаружить в области разработки аппаратных средств ЭВМ. Последние продвижения в области арифметики с плавающей точкой и параллельной обработки были в немалой степени вызваны деятельностью в области матричных вычислений. Мы написали эту книгу, чтобы охватить эту очень интересную и быстро расширяющуюся область с единых позиций. Многое было сделано после публика¬ ции в 1965 г. монументального трактата Уилкинсона «Алгебраическая проблема собственных значений». Многие из этих современных достижений уже отражены в обзорных статьях и в известных специальных монографиях, таких как «Численное решение задачи наименьших квадратов» Лоусона и Хенсона, «Симметричная проблема собственных значений» Парлетта. Мы считаем, что пришло время для
8 Предисловие к первому изданию синтеза всего этого материала. В этом отношении мы рассматриваем «Матричные вычисления» как всеобъемлющую, несколько более продвинутую версию книги Стьюарта «Введение в матричные вычисления». Мы рассчитываем на три категории читателей: студенты-выпускники техничес¬ ких специальностей, ученые и инженеры-вычислители, наконец, наши коллеги по численному анализу. Для каждой из этих групп у нас в книге кое-что припасено. Для студентов (и их наставников) мы включили значительное количество упражнений. Многие из них носят вычислительный характер и могут стать ядром программного проекта. Наш собственный опыт преподавания на основе этой книги говорит о том, что задания, использующие Eispack и Unpack, существенно ожив¬ ляют ее содержание. Также успешно использовалась совместно с этим текстом система Matlab - простая в обращении и выполняющая вычисления с матрицами. Для инженеров и ученых, желающих в процессе своей работы пользоваться этой книгой как справочником, мы постарались свести к минимуму взаимозависимость отдельных глав. Кроме того, в конце практически каждого раздела мы приводим аннотированную библиографию, чтобы ускорить поиск дополнительного материала по любому заданному вопросу. Для наших коллег по численному анализу мы щедро сопровождаем наши описания алгоритмов элементами теории возмущений и анализом ошибок. Мы хотим снабдить эту категорию читателей достаточным количеством подробностей, чтобы они могли ставить и решать матричные задачи, возникающие в их собствен¬ ной деятельности. Часто толчком к исследованиям в области численной линейной алгебры служат работы, проводимые в других областях численного анализа. Так, например, некоторые из лучших методов решения разреженных линейных систем были разработаны исследователями, занимавшимися численным решением уравне¬ ний в частных производных. Подобным же образом развитие приемов модификации различных матричных разложений было стимулировано работами по квазиньюто- новским методам. Эта книга писалась шесть лет. Название менялось несколько раз: (1) «Завер¬ шающий курс матричных вычислений», (2) «Прикладные матричные вычисления», (3) «Матричные вычисления: специальный курс». Первое название, помимо некото¬ рой претенциозности, вводит в заблуждение. Мы не претендуем на исчерпывающее изложение матричных вычислений. В частности, мы исключили многие темы из животрепещущей области вычислений с разреженными матрицами просто потому, что не хотели погружаться в теорию графов и структур данных. Второе название не подходит, потому что мы не останавливаемся в сколько-нибудь значительной степени на приложениях. По большей части рассматриваемые матричные задачи мы принимаем как данность их происхождение не прослеживается. Мы согласны с тем, что с педагогической точки зрения это является недостатком, однако опытный преподаватель сумеет его компенсировать. А потом, мы подозреваем, что многие из наших читателей и сами будут обладать достаточным опытом, так что чрезмерная мотивировка им и не нужна. Наконец, с последним названием мы расстались ввиду того, что книга все же содержит вводный материал. Мы решили включить элементарные разделы и ради полноты, и потому, что мы думаем, что наш подход к основам предмета заинтересует преподавателей начальных курсов численного анализа. О чем же тогда эта книга, если она неполна, не очень-то прикладная и не слишком узко специальная? Ответом на этот вопрос должен послужить краткий обзор содержания. В первых трех главах закладываются необходимые основы. Приводится обзор матричной алгебры, фиксируются некоторые ключевые алгоритмы. Темп изложения достаточно высок. Читатели, у которых возникают трудности при решении задач из
Предисловие к первому изданию 9 этих первых глав, безусловно, столкнутся с ними и в остальной части книги. Значительная часть текущих исследований в численной линейной алгебре сосре¬ доточена на задачах, в которых матрицы имеют специальную структуру, скажем являются большими и разреженными. Искусство извлечения выгоды из наличия структуры - центральная тема гл. 5, где описываются многие методы решения систем линейных уравнений специального вида. В гл. 6 подхвачено другое течение-возросшее стремление полагаться на ортого¬ нальные матрицы. Мы обсуждаем несколько методов ортогонализации и показы¬ ваем, как применить их в методе наименьших квадратов. Особое внимание уде¬ ляется случаю неполного ранга. Центральное место гл. 7 занимает всемогущий QR-алгоритм для решения несимметричной проблемы собственных значений. Наш методичный вывод должен помочь снять налет таинственности с этого важного метода. Мы останавливаемся также на вычислении инвариантных подпространств и обобщенной проблеме собственных значений. В гл. 8 мы продолжаем обсуждать проблему собственных значений, сосредоточи¬ ваясь на важном симметричном случае. Сначала мы описываем симметричный QR-алгоритм, а затем показываем, как симметрия позволяет построить несколько альтернативных вычислительных процедур. До самого этого места в книге наше рассмотрение разреженности носит отрывочный характер. В гл. 5 обсуждается решение ленточных линейных систем, в гл. 7 описан метод одновременных итераций, в гл. 8-итераций Рэлея и т. д. Главы 9 и 10, однако, полностью посвящены решению задач с разреженными матрицами. Темами обсуждения являются метод Ланцоша и родственный ему метод сопряжен¬ ных градиентов. Мы показываем, как эти важные алгоритмы могут быть использо¬ ваны для решения многих разреженных задач на собственные значения, по методу наименьших квадратов, систем линейных уравнений. Цель двух последних глав-проиллюстрировать широкую применимость представленных в книге алгоритмов. В гл. 11 речь идет о задаче вычисления функции от матрицы, что часто требуется делать в приложениях теории управления. Глава 12 содержит подборку матричных задач, из которых несколько демонстрируют мощь сингулярного разложения. Практическая и теоретическая ценность этого разложения является, пожалуй, сквозной темой в этой книге. Действительно, его алгоритмические и математические свойства играют ключевую роль почти в каждой главе. Во многих отношениях данную книгу можно рассматривать как красочное развитие манускрипта нашего коллеги Алена Клайна: «Все, Что Вы Хотели Знать о Сингулярном Разложении (но боялись спросить)». Пора сказать несколько слов о ссылках на имеющиеся программы. Мы ориенти¬ руемся на Eispack и Unpack, и почти каждая подпрограмма из этих пакетов так или иначе упоминается в тексте. Кроме того, многие технические доклады, ссылки на которые мы даем в аннотированных библиографиях, являются на самом деле описаниями программ. Следует подчеркнуть, однако, что с большей частью этих программ мы напрямую не работали (исключая Eispack и Unpack), а посему-caveat emptor (будьте осторожны {лат.)), В создании этой книги нам помогало много специалистов. Richard Bartels помог подобрать ссылки и переработать черновик нескольких глав. Организованная им школа матричных вычислений, проведенная в августе 1977 г. в John Hopkins University, стимулировала написание этой книги. Bob Plemmons, John Dennis, Alan Laub и Don Heller использовали фрагменты книги в Преподавании и предложили нам многочисленные конструктивные замеча¬ ния. George Cybenko очень помог нам в разделе о теплицевых матрицах. Во
10 Предисловие к первому изданию Kigstrom сделал много ценных замечаний по нашей трактовке вычисления инва¬ риантных подпространств. Per-Ake Wedin тщательно прочитал ранние версии гл. S и квалифицированно направлял последующие переработки. Окончательное название книги независимо предложили Uri Ascher и Roger Нот, которых мы и хотим здесь поблагодарить. Мы также благодарны автору анонимного обзора, внесшему много ценных предложений. И последнее, по порядку, но не по значению, мы с радостью признаем влияние наших коллег Cleve Moler и Pete Stewart Их работы, великолепно схватывающие дух нашей науки, существенно воздействовали на сбалансированность и стиль нашего собственного изложения.
Предисловие ко второму изданию Две причины побудили нас написать переработанную и дополненную версию «Матричных вычислений». Во-первых, после пяти лет преподавания по прежнему изданию и многочисленных замечаний наших коллег стало ясно, что многое из написанного можно было написать лучше. Во многих доказательствах и выводах была достигнута большая ясность. Кроме того, мы приняли стилизованный вариант системы Matlab, облегчающий «матрично-векторное мышление». Другая новая черта второго издания-доведение рубрикации материала до уровня подразделов. Это должно облегчить пользование книгой как учебником и как справочником. Вторая причина появления нового издания связана с расцветом параллельных матричных вычислений. Многопроцессорные ЭВМ революционизуют роль вычисле¬ ний в науке и технике, и важно, чтобы вклад численной линейной алгебры в этот процесс был документально оформлен. Мы это делаем на машинно-независимом уровне, подчеркивая общие алгоритмические идеи в противовес конкретным реали¬ зациям. Как мы говорим в новой главе о параллельных матричных вычислениях, эта область очень подвижна, и литература наводнена исследованиями отдельных случаев. Несмотря на это, в области разработки алгоритмов можно набрать дюжину новых идей, играющих ключевую роль, которые, по всей вероятности, пригодятся нам еще в течение длительного периода и созрели для обсуждения на уровне учебника. Вот обзор новшеств второго издания (по главам): В гл. 1 (Умножение матриц) мы вводим обозначения и фундаментальные понятия на примере умножения матриц. Большое внимание уделяется приемам работы с блочными матрицами; добавлен также новый раздел о векторно-кон¬ вейерных вычислениях. В гл. 2 (Матричный анализ) мы собрали математические основы, необходимые для вывода и анализа алгоритмов решения линейных систем и задачи наименьших квадратов. Гл. 3 (Линейные системы общего вида) и 4 (Линейные системы специального вида) были дополнены новым материалом о «высокопроизводительной» организа¬ ции гауссова исключения и разложения Холецкого. Акцент делается на реализации, богатые матрично-векторными и матрично-матричными умножениями. Был также добавлен подраздел о положительно полуопределенных матрицах. В гл. 5 (Ортогоналиэация и наименьшие квадраты) появился новый материал о блочных преобразованиях Хаусхолдера. Мы также изменили порядок изложения с целью отделить обсуждение ортогональных разложений от решения задачи наименьших квадратов. В гл. 6 (Параллельные матричные вычисления) мы, используя операцию gaxpy, вводим понятия вычислении над распределенной и общей памятью. Для этих двух моделей параллельных вычислений мы обсуждаем организацию перемножения матриц и различных матричных разложений.
12 Предисловие ко второму изданию В гл. 7 (Несимметричная проблема собственных значений) мы добавили новый подраздел о приведении к блочно-хессенбергову виду. В гл. 8 (Симметричная проблема собственных значений) внесены два более фундаментальных изменения. Раздел о методе Якоби был полностью переработан в свете последних достижений в параллельных вычислениях. Был также добавлен раздел о новом высокопарал¬ лельном алгоритме типа «разделяй и властвуй» для трехдиагональных матриц. В гл. 9 (Метод Ланцоша) мы добавили подраздел о методе Арнольди. В гл. 10 (Итерационные методы решения линейных систем) расширено обсуждение метода сопряженных градиентов с переобуславливанием. Единственное существенное изме¬ нение в гл. 11 (Функции от матриц) и гл. 12 (Специальные вопросы)-это новый подраздел в § 12.6 о гиперболических модификациях. Мы в большом долгу перед многими читателями, указывавшими нам на опечатки, ошибки и недостатки изложения первого издания. Для нас было удо¬ вольствием общение со столь заинтересованной и дружелюбно настроенной чита¬ тельской аудиторией. Из большого количества наших корреспондентов мы хотели бы особо поблагодарить A. Bjorck, J. Bunch, J. Dennis, T. Ericsson, О. Hald, N. Hig- ham, A. Laub, R. Le Veque, M. Overton, B. N. Parlett, R. Plemmons, R. Skeel, E. Stickel, S. Van Huffel, R. S. Varga за их очень подробные и уместные замечания. Мы хотим также отметить вклад лиц и организаций, сыгравших важнейшую роль в производстве и оформлении второго издания. На уровне систему LATEX нам помогали поддерживать Alex Aiken, Chris Bischof, Gil Neiger и Hal Perkins из Корнелла и Mark Kent из Станфорда. Cindy Robertson-Hubbell из Корнелла ввела в компьютер первое издание и была абсолютно незаменима на всех последующих стадиях производства. Исследовательские средства, которые предоставили Iain DufT из Harwell Laboratory, Соединенное Королевство, и Bill Morton из Оксфордского университета, сыграли существенную роль в процессе переработки. Iain Duff, Во Kagstrom, Chris Paige и Nick Trefethen внесли в эту работу глубокий философский и технический вклад. Этим друзьям и коллегам адресована наша искренняя благодарность. Рукопись прочитал целиком Nick Higham, внесший затем бесчисленное количест¬ во предложений. Без его помощи публикация второго издания была бы отсрочена и получилась бы худшего качества. И наконец, мы хотим с признательностью отметить большой вклад нашего дорогого коллеги Джима Уилкинсона, ушедшего от нас в 1986 г. Память о нем продолжает быть большим источником вдохновения, и мы с удовольствием посвящаем этот новый том одновременно ему и Олстону Хаусхолдеру.
Как пользоваться этой книгой О сокращениях Следующие книги часто цитируются в нашем тексте: SLE Forsythe G.E. and Moler С. (1967). Computer Solution of Linear Algebraic Systems, Prentice Hall, Englewood Cliffs, NJ. [Имеется русский перевод: Форсайт Дж., Молер К. Численное решение систем линейных алгебраи¬ ческих уравнений.-М.: Мир, 1969.] SLS Lawson С. L. and Hanson R.J. (1974). Solving Least Squares Problems, Pren¬ tice Hall, Englewood Cliffs, NJ. [Имеется русский первод: Лоусон Ч., Хенсон Р. Численное решение задач метода наименьших квадратов. - М.: Наука, 1986.] SEP Parlett В. N. (1980). The Symmetric Eigenvalue Problem, Prentice Hall, Engle¬ wood Cliffs, NJ. [Имеется русский перевод: Парлетт Б. Симметричная проблема собственных значений. Численные методы.-М.: Мир, 1983.] IMC Stewart G.W. (1973). Introduction to Matrix Computations, Academic Press, New York. AEP Wilkinson J. H. (1965). The Algebraic Eigenvalue Problem, Clarendon Press, Oxford, England. [Имеется русский перевод: Уилкинсон Дж. Алгебраи¬ ческая проблема собственных значений.-М.: Наука, 1970.] Для этих «глобальных» ссылок мы используем приведенные мнемоники, например «Уилкинсон (АЕР, гл. 5)». Библиографическая информация по конкретным разде¬ лам приводится в конце этих разделов. Основная библиография приведена в конце книги. При ссылках на пакеты программ Linpack и Eispack имеются в виду соответствующие описания Smith В. Т., Boyle J. М., Ikebe Y., KlemaV.C., and Moler С. В. (1970). Matrix Eigen- system Routines: EISPACK Guide, 2nd ed., Springer-Verlag, New York. Smith В. Т., Boyle J. М., Dongarra J. J., and Moler C.B. (1972). Matrix Eigensystem Routines: EISPACK Guide Extension, Springer-Verlag, New York. Dongarra J., Bunch J. R., Moler С. B., and Stewart G. W. (1978). LINPACK User Guide, SIAM Publications, Philadelhia. Таким образом, фраза «подпрограмма xyz имеется в пакете Linpack, гл. 2)» означает, что эта подпрограмма описывается во второй главе руководства по Linpack. Алгольные версии многих подпрограмм из пакетов Linpack и Eispack собраны в книге HACLA Wilkinson J.H. and Reinsch С., eds. (1971). Handbook for Automatic Compu¬ tation, Vol. 2, Linear Algebra, Springer-Verlag, New York. [Имеется русский перевод: Уилкинсон Дж., Райнш К. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра.-М.: Машиностроение, 1976.]
14 Как пользоваться этой книгой Во время написания данной книги (1989), программы, реализующие многие из представленных в ней алгоритмов, можно было получить, отправив электронную почту по любому из адресов: netlib@anl-mcs.arpa netlib@research.att.com researchfnetlib Типичные запросы: send index {Список имеющихся библиотек} send index for Unpack {Список программ Unpack} send svd from eispack {Программа вычисления SVD из Eispack} Этот сервис электронной рассылки описан в DongarraJ.J. and Grosse Е. (1987). “Distribution of Mathematical Software Via Electronic Mail”, Comm. ACM 30, 403-407 Сообщим также, что основная библиография этой книги (в формате LATEX) может быть получена по netlib.
К преподавателям Эта книга может быть использована для нескольких различных типов курсов. Вот примерные варианты: Название курса Введение в матричные вычисления (1 семестр) Программа Главы 1-4, 5.1-5.3, 7.1-7.6, 8.1-8.2 Название курса Матричные вычисления (2 семестра) Программа Главы 1-12 Название курса Решение систем линейных уравнений и задачи наименьших квадратов (1 семестр) Программа Главы 3-5, 12.1-12.4, 12.6 Название курса Задачи на собственные значения (1 семестр) Программа Главы 7-9, 11, 12.5 Название курса Параллельные матричные вычисления (1 семестр) Программа Главы 1, 6, 8.5-8.6 В каждом случае мы настоятельно рекомендуем включение вычислительных зада¬ ний, предполагающих использование высококлассных программных пакетов, таких как Unpack и Eispack. Материал может быть еще больше оживлен использованием Matlab-простой в обращении системы, выполняющей вычисления с матрицами. В этой связи мы рекомендуем сопровождающее ее руководство Coleman T.F. and Van Loan C.F. (1988). Handbook for Matrix Computations, SIAM Publications, Philadelhia, PA. Оно содержит главы по Фортрану-77, по элементарным подпрограммам линейной алгебры (BLAS), по Linpack и Matlab. Наконец, упомянем новый учебник Hager W. W. (1988). Applied Numerical Linear Algebra, Prentice Hall, Englewood Cliffs, NJ. который, возможно, больше, чем «Матричные вычисления», подойдет для начи¬ нающих студентов.
Глава 1 Умножение матриц Систематическое изучение матричных вычислений начинается с задачи умноже¬ ния матриц. Хотя математически эта задача очень проста, она таит немало богатств с вычислительной точки зрения. Мы начинаем с рассмотрения в § 1.1 нескольких возможных способов организации матричного умножения. Заблаговременно вво¬ дится язык блочных разбиений матриц, который мы используем, чтобы охарактери¬ зовать несколько линейно-алгебраических «уровней» вычислений. Если матрица обладает какой-то структурой, то обычно удается использовать это обстоятельство. Например, для хранения симметричной матрицы достаточно половины того места, которое требуется для размещения матрицы общего вида; умножение на вектор матрицы, в которой много нулевых элементов, может потребовать значительно меньше времени, чем вычисление произведения матрицы общего вида и вектора. Эти вопросы обсуждаются в § 1.2. В § 1.3 вводятся обозначения для блочных матриц. Блочная матрица-это такая матрица, элемента¬ ми которой также являются матрицы. Это очень важное понятие как с теоретичес¬ кой, так и с практической точки зрения. С теоретической стороны блочные обозначения позволяют получить очень сжатые доказательства для важнейших матричных разложений, являющихся краеугольным камнем численной линейной алгебры. С вычислительной точки зрения блочные алгоритмы важны, поскольку в них много матричных умножений,-а эта операция особенно хорошо реализуется на многих высокопроизводительных ЭВМ новых архитектур. Эти новые архитектуры требуют, чтобы разработчик алгоритмов уделял обме¬ нам с памятью не меньше внимания, чем количеству арифметических действий, что вносит в научные вычисления целое новое измерение. Мы иллюстрируем это в § 1.4, где мы рассматриваем такие важнейшие аспекты векторно-конвейерных вычисле¬ ний, как длина вектора, шаг выборки, количество векторных загрузок/записей, а также степень повторного использования вектора. 1.1. Основные алгоритмы и обозначения Матричные вычисления строятся на иерархий операций линейной алгебры. Скалярные произведения состоят из скалярных операций сложения и умножения; умножение матрицы на вектор составлено из скалярных произведений; перемноже¬ ние матриц сводится к набору умножений матрицы на вектор. Все эти операции могут быть описаны в алгоритмическом виде или на языке линейной алгебры. Наша главная цель в этом разделе - продемонстрировать, как эти два способа дополняют друг друга. Попутно мы вводим обозначения и знакомим читателя с тем стилем мышления, на котором основываются методы матричных вычислений. Дискуссия вращается вокруг перемножения матриц, которое, как мы показываем, может быть организовано несколькими способами.
LL Основные алгоритмы и обозначения 17 1.1.1. Обозначения для матриц Пусть R-множество вещественных чисел. Мы обозначаем через R" х " векторное пространство всех вещественных т х «-матриц: «и — «1 ««1 , g,7gR. В тех случаях, когда для обозначения матрицы используется заглавная буква (например, А, В, Д), соответствующая строчная буква с индексом ij относится к (i, j)-uy элементу этой матрицы (например, air bij9 8l7). Кроме того, для (/, j)-го элемента матрицы А мы используем обозначение [i4]y. При детальной записи алгоритма мы ссылаемся на элементы матриц по правилам Фортрана: А (/, j). 1.1.2. Операции над матрицами Основные манипуляции с матрицами включают: транспонирование (R" х " -+■ R* х *") С — АТ => Сц = аГп сложение (Rm Х"х Rm х и -► R"1 х ") С = А + В => ci} = Gi;- + б,7, умножение матрицы на число (R х Rm х ■ -► Rm х") С = аЛ => сц = аи, умножение матрицы на матрицу (Rm х r х Rr х " Rm х") г С = АВ=> Сц = £ aik^kj' к= 1 Это те кирпичики, из которых строятся матричные вычисления. 1.1.3. Обозначения для векторов Пусть R"-векторное пространство вещественных векторов: xeR*ox = , ДГ, G R. Мы обозначаем через xt i-ю компоненту вектора х; при записи алгоритмов мы также используем обозначение х(г). Заметим, что мы отождествляем R" с R"х 1, так что элементы Н"-это векто¬ ры-столбцы. С другой стороны, R1 х " состоит из векторов-строк: xeR1 Хпох = (jcj, .хп). Если х - вектор-столбец, то у = хт- вектор-строка. Несколько «подозрительно» выглядит операция над векторами, называемая внешним произведением: С = хут, xeRw, yeR".
18 Гл. /. Умножение матриц Но это совершенно законное матричное умножение, поскольку количество столбцов в х совпадает с количеством ст^ок в уТ. Если С - хут, то ci} = xtyj9 так что, например, п “ 4 5” 2 [4 5] = 8 10 _3j 12 15 1.1.4. Операции над векторами Существуют четыре основные операции над векторами. Если aeR, xeR" и yez*, то мы имеем умножение вектора на число z = axfo = ахД сложение векторов z = х + у fa = х* + yt\ скалярное произведение с = х7 у (с = Х?=1х,у*) и покомпо¬ нентное произведение z = x.*y(z{ = х,-Пятая операция - saxpy - настолько важна для матричных вычислений, что мы дополняем ею наш список основных операций над векторами, несмотря на то, что это делает наш список избыточным. Операция saxpy определяется следующим образом: 2 = ах + у => Z; = ах, + ух% Название “saxpy” используется в пакете Unpack, в котором реализованы многие из приведенных в этой книге алгоритмов. Можно воспринимать “saxpy” как мнемонику для выражения «скаляр альфа, умноженный на х, плюс у» (scalar alpha х plus у). 1.1.5. Вычисление скалярных произведений и операций saxpy Для записи алгоритмов мы решили использовать стилизованную версию языка Matlab. Matlab ~ это элегантная интерактивная система, идеально приспособленная для вычислений с матрицами. См. Coleman and Van Loan (1988, гл. 4). Наш способ записи вводится постепенно на протяжении этой главы; здесь мы начинаем с функ¬ ции, вычисляющей скалярные произведения. Алгоритм 1.1.1 (Скалярное произведение). По /2-векторам х и у этот алгоритм вычисляет их скалярное произведение с = хт у. function: с = dot(x, у) с = О п = length (х) for i = 1:л с = с + х (/) у (/) end end dot В этой процедуре размерность векторов дается функцией length. Оператор for показывает, что переменная-счетчик / принимает значения 1, 2, п. Значение скалярного произведения возвращается в с. Скалярное произведение двух /2-векторов требует п умножений и п сложений. Менее формально-это О (/?)-операция, в том смысле что объем работы линейно зависит от размерности. Вычисление saxpy-это также О (н)-операция, но она возвращает не скаляр, а вектор: Алгоритм 1.1.2 (Saxpy). По /2-векторам х и у и скаляру а этот алгоритм вычисляет z = их у.
LI. Основные алгоритмы и обозначения 19 function: г = saxpy (а, х, у) п = length (х) for i = Un z(i) = ах (i) + _у(0 end end saxpy 1.1.6. О формализме и стиле изложения Необходимо подчеркнуть, что приводимые в этой книге алгоритмы, такие как dot и saxpy, лишь заключают в себе важнейшие вычислительные идеи, но никак не являются техническими инструкциями для написания программ. Более того, там, где того требует изложение, записи алгоритмов могут становиться весьма нефор¬ мальными. Для описания вычислений в этом и в нескольких последующих разделах оказываются удобными функции системы Matlab, но дальше по ходу книги алгоритмы становятся слишком сложными для детализации на “(/"-уровне, и тогда мы прибегаем к менее формальной записи. Для читателя, который по первым главам приобретет интуитивное понимание матричных вычислений, это не должно представлять трудностей. 1.1.7. Умножение матрицы на вектор Пусть AeRmx", и мы хотим вычислить произведение z = Ах, где xeR*. Стан¬ дартный способ вычисления заключается в последовательном подсчете скалярных произведений к zi = X aiJxj- Это приводит к следующему алгоритму. Алгоритм 1.13 (Умножение матрицы на вектор: Версия с доступом по строкам). По A eR" х" и хе R" следующий алгоритм вычисляет z = Ах. function: z = matvecjj(A, х) т — rows (Л); п = cols (А) z(l:m) = О for i = \:т forу = 1:л z(0 = z(i) + A(i,j)x{fi end end end matvecJj Функции rows и cols принимают в качестве аргумента матрицу и возвращают количество ее строк и столбцов соответственно. Оператор z(/:m) = 0 инициализи¬ рует z как нулевой т х 1-вектор. Альтернативный алгоритм получится, если рассмотреть z = Ах как линейную комбинацию столбцов матрицы А, например 1 2 m “17 + 2*8“ Y 2 “23 3 4 L « 3*7 + 4-8 = 7 3 + 8 4 = 53 _5 6_ l_8J 5-7 + 6*8 5 6 83
20 Гл. 1. Умножение матриц Алгоритм 1.1.4 (Умножение матрицы на вектор: Версия с доступом по столбцам). По А е RmXn и xeRn следующий алгоритм вычисляет z = Ах. function: z = matvec.ji (А, л) т = rows(>l); п — сок(Л); z(l:m) = 0 forj — l:w for i = 1 :m z(i) = z(i) + x(j)A(i,j) end end end matvec. ji Заметим, что цикл no i выполняет операцию saxpy. Мы получили столбцовую версию, переосмыслив на уровне векторов алгоритм матрично-векторного умноже¬ ния. Другим способом мы могли бы вывести столбцовую версию, поменяв порядок следования циклов в строчном алгоритме. В матричных вычислениях важно осо¬ знавать алгебраический смысл модификаций программ, таких как перестановка циклов. 1.1.8* Разбиение матрицы на строки и столбцы Анализ внутренних циклов показывает, что в алгоритме 1.1.3 доступ к элементам матрицы А осуществляется по строкам, а в алгоритме 1.1.4-по столбцам. Чтобы яснее охарактеризовать эти методы доступа, нам понадобится язык блочных разбиений матриц. С точки зрения строк, матрица представляет собой набор векторов-строк: Ле R* akeRn. (1.1.1) Это разбиение матрицы А на строки. Так, разбиение на строки матрицы 1 2 3 4 .5 6_ означает, что мы предпочитаем рассматривать А как набор строк, где а\ = [1 2], а\ = [34], я1 = [56]. С учетом разбиения на строки (1.1.1) мы видим, что функция matvecJj устроена, в сущности, следующим образом: fori = l:m Z| = aj X end Иначе матрицу можно рассматрйвать как набор векторов-столбцов: AeRmX”oA = anl akeRm. (1.1.2) Это разбиение матрицы А на столбцы. Для вышеприведенного примера мы положили бы at и а2 равными первому и второму столбцу матрицы А соответствен¬ но:
1.1. Основные алгоритмы и обозначения 21 1 2 01 = 3 >0г = 4 5 6 С учетом разбиения (1.1.2) мы видим, что функция matvec.ji - это использующая saxpy процедура, в которой доступ к элементам матрицы А идет по столбцам: z(l:m) = 0 for; = 1 :п Z = Z + XjOj end Отметим, что в векторе z накапливается сумма, значение которой обновляется операциями saxpy. 1.1.9. Использование двоеточия Удобным способом сослаться на какой-либо столбец или строку матрицы является использование двоеточия. Обозначим через А (к, :) к-ю строку матрицы А(Ае RmXn): А (к, :) = [<!*!,..., а*„]. Аналогично, обозначим через Л{к) к-и столбец матрицы А: A(:>k)= i Используя эти соглашения, мы можем переписать matvec. ij в виде fori = 1 :т for i = 1 :т z(0 = A(i, :)х или z(0 = dot(A(i, :), х) end end Использующая saxpy версия matvec. ji запишется в виде z(l:m) = 0 z(l:m) = 0 for j — 1 :n fory = \:n z = z + x(/) Л (:, у) или z = saxpy (x(/), A (:, y), z) end end При описании матричного алгоритма важно верно выбрать уровень и стиль описания. Использование двоеточия позволяет исключить из рассмотрения внут¬ ренние циклы, тем самым фокусируя внимание на операциях более высокого уровня. Используя функции, мы можем выявить ключевые вычислительные ядра, которые могут отражать хорошие программные разработки, например dot и saxpy. 1.1.10. Модификация внешним произведением Как мы видели, метод доступа является важным атрибутом матричного алго¬ ритма. По причинам, о которых мы скажем позже, предпочтительными оказывают¬ ся алгоритмы, выбирающие элементы массивов по столбцам. Так, версия matvec. ji в большинстве случаев предпочитается версии matvec. ij. Вспомним, что единствен¬ ная разница между этими версиями-порядок следования двух циклов. Важно осознать эту взаимосвязь между порядком следования циклов и методом доступа
22 Гл. 1. Умножение матриц к данным. Для дальнейшей иллюстрации этого рассмотрим модификацию матрицы А внешним произведением: А «- А + хуТ, АеRmXn, xeRm, yeR". Здесь означает присваивание. Вспомним, что хут - это просто частный случай произведения матриц, так что элементы матрицы А перевычисляются по формуле atj в аи + Х1У]>* - 1 :w, j = 1 :п. Версия "if* этого вычисления говорит, что надо к каждой строке матрицы А приба¬ вить вектор, кратный ут: for / = 1 :m A(i,) = + x(i)yT end С другой стороны, версия “/Г for / = I :п 4 (:,/) = Л (:, j) + y(j)x end выбирает элементы матрицы А по столбцам. Заметим, что обе процедуры исполь¬ зуют saxpy. 1.1.11. Вычисление операции gaxpy Модификация матрицы внешним произведением векторов занимает большое место в традиционных формулировках многих важных матричных алгоритмов. Оказывается, большинство этих алгоритмов можно переформулировать так, что доминирующей становится операция дахру. Операция gaxpy-это просто вычисление вида z = у + Axt хеR", yeRm, А е Rm х я. Как и “saxpy”, термин “gaxpy” обязан своим происхождением программному обеспечению. Можно рассматривать его как \шемонику для фразы «произвольная матрица А, умноженная на х плюс >” (general Ах plus у). Как будет объяснено в § 1.4, формулировки посредством gaxpy (должным образом реализованные), как правило, предпочтительнее формулировок посредством модификации внешним произведе¬ нием. Это очень важное с вычислительной точки зрения положение, так что gaxpy достойна формального алгоритмического представления: Алгоритм 1.1.5 (Gaxpy). По xeR”, yeRm и Л еR1"х" этот алгоритм вычисляет z = у + Ах. function: z = gaxpy (А, х, у) п = cols(/i); z = у forj = l:w z = z + x(/M(:,y) end end gaxpy Мы организовали вычисления так, что в векторе z накапливается сумма, значение которой обновляется последовательностью операций saxpy. При такой формули¬ ровке мы видим, что gaxpy является обобщением saxpy.
1.1. Основные алгоритмы и обозначения 23 1.1.12. Понятие уровня Скалярное произведение и saxpy-это примеры операций «уровня 1». Для операций уровня 1 количество данных и количество арифметических действий линейно зависят от размерности операции. Модификация т х л-матрицы внешним произведением или операция gaxpy производят квадратичный объем работы 0(тп) над квадратичным количеством данных 0(тп). Это примеры операций «уровня 2». Разработка матричных алгоритмов, содержащих много операций высокого уровня, является областью интенсивных исследований, и мы постоянно будем возвращаться к этой теме в нашей книге. К примеру, для высокой производитель¬ ности алгоритма решения систем линейных уравнений может потребоваться, чтобы гауссово исключение было организовано через операции gaxpy уровня 2. Для этого понадобится некоторое переосмысление обычного алгоритма, так как в стандартной формулировке гауссово исключение описывается на уровне 1, например, «умножить строку 1 на константу и прибавить результат к строке 2». Кроме того, некоторые алгоритмы можно организовать таким образом, что в них будет много умножений матрицы на матрицу-это операция уровня 3. Операции уровня 3 производят кубичный объем работы над квадратичным коли¬ чеством данных. Если А, В и С-матрицы, то вычисления С ** С + АВ и С = С + + АВ- примеры операций уровня 3. Эти состоящие из большого количества действий вычисления могут быть организованы многочисленными способами, как мы сейчас продемонстрируем на примере обычного умножения матриц С = АВ. 1.1.13. Умножение матриц Рассмотрим задачу вычисления произведения 2 х 2-матриц С = АВ. В терминах скалярных произведений каждый элемент матрицы С вычисляется как скалярное произведение: В версии, использующей saxpy, каждый столбец матрицы С рассматривается как линейная комбинация столбцов матрицы А: Наконец, в версии, использующей внешние произведения, С получается как сумма внешних произведений: Оказывается, что, несмотря на математическую эквивалентность всех трех версий, их реальная производительность может существенно различаться из-за разных способов доступа к памяти. Мы продолжим обсуждение этого вопроса в § 1.4, а пока рассмотрим более детально обозначенные выше три подхода к умножению матриц. Это позволит нам поупражняться в конструировании различных вариантов алго¬ ритмов и записи их с использованием введенных обозначений. 1 • 5 + 2*7 1 • 6 + 2• 8 | 3-5+4-7 3-6 + 4*8 О
24 Гл. 1. Умножение матриц 1.1.14. Умножение матриц с использованием скалярных произведении Пусть A е Rm х', Be Rr х \ и мы хотим вычислить С = АВ. Стандартная процеду¬ ра заключается в последовательном вычислении элементов С в порядке слева направо сверху вниз: Алгоритм 1.1.6 (Умножение матриц: версия, использующая скалярное произведение). По ЛеКтХп и Де Rr х" алгоритм вычисляет С — АВ. function: С = matmat. ijk (А, В) т = rows(>l); г = colsQ; п = cols (Я) С(1:т, 1:и) = О for/ = 1 \т fory = 1 :п for к — \:г C(i9j) = C(i,j) + A(i,k)B(k,j) end end end end matmat ijk В этом процедуре ctj вычисляется как скалярное произведение i-й строки матрицы А и у-го столбца матрицы В. На языке блочных матриц, если мы имеем разбиения и В = [6,,..., Л„], 6*eRr, то алгоритм 1.1.6 описывается на уровне 1 как for / = 1 :т fory = 1:и С а = 4 ь, end end Заметим, что задача цикла по у-вычислить /- ю строку матрицы С. Мы можем подчеркнуть это, записав for/ — 1 :т CJ — а1 в end где cf-i-я строка С. Это описание алгоритма 1.1.6 в терминах матрично-векторных произведений можно рассматривать как описание уровня 2. Конечно, на самом верхнем уровне останется запись С = А В, не содержащая ни циклов, ни индексов. Правильный выбор уровня описания важен как для изложения теоретических результатов, так и для разработки программного обеспечения. 1.1.15. Умножение матриц с использованием gaxpy Предположим, что А, В и С разбиты на столбцы:
1.1. Основные алгоритмы и обозначения 25 А = [а,,..., а,], а}еЯт, В= 6J,^eRr, С = сп], Cj еR™ и мы желаем вычислить С = А В. Поскольку г cj= Z bkjak’j= 1;«- fc= i мы видим, что каждый столбец С является линейной комбинацией столбцов А. Вычисление этих сумм можно организовать как последовательность операций saxpy: Алгоритм 1.1.7 (Умножение матриц: gaxpy-версня). По ЛеКтХг и Be RrX" следую¬ щий алгоритм вычисляет С = А В. function: С = matmat. jki (А, В) т rows (Л); п = cols (fi); r.= cols (Л) С(1:ж, 1:и) = 0 for j = 1:и for к = 1:г for / = l:m С(/, 7) = С(/, 7) + А (/, к) 7) end end end end matmat jki Мы вывели matmat jki, разбив по столбцам матрицы в равенстве С = АВ, но можно было получить его также изменением порядка циклов в функции matmat. ijk. Ясно, что “//сГ-алгоритм состоит из операций gaxpy, поскольку его можно записать в виде C(l:w, 1:я) = О fory = I :п С(:, j) — gaxpy (Л, (:,j)) end 1.1.16. Умножение матриц с использованием внешних произведении Давайте проделаем перестановку циклов еще раз, а затем проанализируем ее смысл в терминах линейной алгебры. Алгоритм 1.1.8 (Умножение матриц: версия, использующая внешние произведения). По AeRmXr и Be Rr х" алгоритм вычисляет С = А В, function: С = matmatkji (А, В) т = rows (А); п = cols (5); г = cols (А) C(l:m, l:/i) = О for к = 1:г for7= 1:и for / = 1 :т C(i, j) = С(/, 7) + А (/, к) В{К 7) end end end end matmat kji
26 Гл. 1. Умножение матриц В этой “куГ-формулировке происходит вычисление всех элементов си одновременно. Для данного к два внутренних цикла осуществляют модификацию матрицы С внешним произведением С<- С + акЬк, где A = lau...,arlake Rm (1.1.3) В = (1.1.4) Внутренний цикл в функции matmat kji выполняет операцию saxpy. Именно, к у-му столбцу матрицы С прибавляется вектор, кратный ак. 1.1.17. Перестановки циклов Двойной цикл в алгоритме умножения матрицы на вектор может быть переупо¬ рядочен 2! ~ 2 способами. Соответственно имеется 3! = 6 способов упорядочения тройного цикла в алгоритме умножения матрицы на матрицу. Три варианта уже были в деталях изложены выше: ijkjki и kji. Каждый из шести возможных вариантов характеризуется своим способом доступа к данным и доминирующей операцией (скалярное произведение, saxpy). Эти сведения собраны в табл. 1.1.1. Какой же вариант предпочтительнее? Ответ на этот вопрос зависит от архитектуры компью¬ тера, на котором будет реализован алгоритм. Подробнее это обсуждается в § 1.4. Таблица 1.1.1. Матричное умножение; упорядочение и свойства Порядок цикла Внутренний цикл Средний цикл Внутренний цикл Доступ к данным ук скалярное произведение вектор х матрица А на строку, В на столбец fik скалярное матрица ж вектор А на строку, В на столбец ikj saxpy строчное gaxpy В на строку jki saxpy столбцовое gaxpy А на столбец kij saxpy строка внешнего про¬ изведения В на строку kji saxpy столбец внешнего произведения А на столбец 1.1.18. О матричных соотношениях Изучая умножение матриц с использованием внешних произведений, мы по существу установили соотношение АВ= t ML к = 1 где ак и Ьк определены в (1.1.3) и (1.1.4).
1.1. Основные алгоритмы и обозначения 27 В последующих главах мы получим очень много матричных соотношений. Иногда они выводятся алгоритмически, как это было в приведенном выше примере с внешним произведением, а в других случаях их приходится доказывать на уровне “(/"-компонент. Как пример этого стиля доказательств приведем важный результат, характеризующий транспонирование произведения матриц. Теорема 1.1.1. Если AeRmXr и BeRrXn, то (АВ)Т = ВТАТ. Доказательство. Если С = (АВ)Т, то CU = L(AB)Tlj = САВ)п = £ ajkbki. С другой стороны, если D = ВтАт, то ^ — [Вт Ат]г- = X №Т )«** (AT)kj — X bki ajk, *=i ft=i так что С = D. □ Как свидетельствует это доказательство, погружение на “(//^’’-уровень отнюдь не тождественно глубокому проникновению в материал. Однако иногда это единствен¬ ный способ получить алгебраический результат высокого уровня. 1.1.19. Об описании алгоритмов На протяжении этой книги нам понадобится описывать алгоритмы на разных уровнях детализации. В этом разделе все алгоритмы были записаны формально, как функции. В качестве примера более вольного стиля записи алгоритмов приведем процедуру, вычисляющую матричное произведение С = Ат В, Алгоритм 1.1.9. По двум m х л-матрицам А и В алгоритм вычисляет произведение С = АТ В. Гог/ — 1:п forj — I\п С(U j) = A(\:m, i)T В(\ :m, j) end end 1.1.20. Комплексные матрицы Наше внимание в этой книге сфокусировано на вычислениях с вещественными матрицами-для упрощения обозначений, а также ввиду того, что большинство реальных задач имеет дело с вещественными данными. Однако в последующих разделах мы будем работать и с комплексными матрицами-там, где это уместно. Для начала введем некоторые обозначения. Векторное пространство комплекс¬ ных m х п-матриц обозначается через С"х". Умножение на скаляр, сложение и перемножение комплексных матриц такое же, как и в вещественном случае. Однако транспонирование превращается в сопряженное транспонирование: С = АИ => Су = a}i. Векторное пространство комплексных я-векторов обозначается С\ Скалярное произведение комплексных л-векторов вычисляется по правилу п s = xHy= £ Х,У1. 1=1
28 Гл. I. Умножение матриц Наконец, если А = В + iCe Cm х", то мы будем обозначать вещественную и мнимую части А через Re (А) = В и 1т(Л) = С соответственно. Задачи 1.1.1. Пусть даны ЛеИ"4" и xeRr. Используя saxpy, напишите алгоритм, вычисляющий первый столбец матрицы М = (А — xvl), ..(А — хг1). 1.1.2. При умножении 2 х 2-матрицы обычным способом требуется вычислить восемь произ¬ ведений: aVib ц , atl bl2y a2i bxl, a2l b12 » Q\ib2\» au.b22 , o22b2l , a22b22 . Составьте таблицу, показывающую порядок выполнения этих произведений для всех шести вариантов следования циклов в алгоритме умножения матриц: ijky jik, kij, ikj,jki, kji. 1.1.3. Используя функции dot и saxpy, постройте алгоритм, вычисляющий С = (хут)*, где .V и у -л-векторы. 1.1.4. Пусть имеются вещественные п х л-матрицы St D, £, F. Укажите способ вычисления вещественных матриц А и £, использующий только три обращения к функции matmat jki с вещественными п х «-аргументами, где (А + iB) = (С + iD)( + iF). Подсказка. Вычислите (С+D) (£-£). Замечания и литература к § 1.1 Формальное описание языка Matlab, которым мы пользуемся (с некоторыми вольностями) для записи алгоритмов, можно найти в книгах: Coleman Т. F. and Van Loan С. (1988). Handbook for Matrix Computations, SIAM Publications, Philadelphia, PA. MolerC.B., Little J. N., and Bangert S. (1987). PC-Matlab User’s Guide, The Math Works Inc., 20 N. Main St., Sherborn, Mass. Подчеркнем еще раз, что приводимые в этой книге алгоритмы не являются готовым программным продуктом. Если подходить к делу всерьез, то написание качественной про¬ граммы на основе любого из наших описаний алгоритмов требует длительной и напряженной работы. Даже реализация процедур низкого уровня, таких как saxpy и gaxpy, требует времени и внимания. Подробнее эти вопросы рассмотрены в статьях: Dongarra J., DuCroz J., Ham marling S., and Hanson R. J. (1988). “An Ehtended Set of Fortran Basic Linear Algebra Subprograms”, ACM Trans. Math. Soft. 14, 1-17. Dongarra J., DuCroz J., Hammarling S., and Hanson R. J. (1988). “Algorithm 656 An Ehtended Set of Fortran Basic Linear Algebra Subprograms: Model Implementation and Test Programs”, ACM Trans. Math. Soft. 14, 18-32. Dongarra J., DuCroz J., DufT I. S., and Hammarling S. (1988). “A Set of Level 3 Basic Linear Algebra Subprograms”, Argonne National Laboratory Report, ANL-MCS-TM-88. Lawson C. L.t Hanson R.J., Kincaid D. R., and Krogh F.T. (1979a). “Basic Linear Algebra Subpro¬ grams for FORTRAN Usage”, ACM Trans. Math. Soft. 5, 308-23. Lawson C.L., Hanson R.J., Kincaid D. R., and Krogh F.T. (1979b). “Algorithm 539, Basic Linear Algebra Subprograms for FORTRAN Usage”, ACM Trans. Math, Soft. 5, 324-25. Мы также рекомендуем книгу RiceJ. R. (1981). Matrix Computations and Mathematical Software, Academic Press, New York. [Имеется русский перевод: Райс Дж. Матричные вычисления и математическое обеспече¬ ние.-М.: Мир, 1984.] Влияние различных упорядочений циклов на производительность детально рассмотрено в великолепном обзоре Dongarra J. J., Gustavson F.G., and Karp A. (1984). “Implementing Linear Algebra Algorithms for Dense Matrices on a Vector Pipeline Machine” SIAM Review 26, 91-112.
L2. Учет структуры матриц 29 1.2. Учет структуры матриц Эффективность заданного матричного алгоритма зависит от многих характе¬ ристик. В этом разделе мы рассмотрим наиболее очевидную из них - количество арифметических операций и объем памяти, требуемые процедурой. Менее очевидны такие характеристики, как способ доступа к памяти, шаг выборки и еще целый сонм издержек, возникающих при пересылке данных. Эти вопросы рассматриваются, в частности, в § 1.4. Мы продолжаем обкатывать новые ключевые идеи на примерах умножения матрицы на матрицу и матрицы на вектор. Для демонстрации учета структуры матриц мы избрали свойства ленточности и симметричности. Ленточные матрицы содержат много нулевых элементов, поэтому неудивительно, что умножение лен¬ точных матриц позволяет уменьшить по сравнению с общим случаем и арифмети¬ ческие затраты, и объем требуемой памяти. В этом контексте мы обсуждаем структуры данных и понятие «флопа». Другой пример учета особенностей структуры доставляют симметричные матри¬ цы. Решение систем линейных уравнений и задач на собственные значения с симмет¬ ричными матрицами играет видную роль в матричных вычислениях, поэтому важно приобрести хороший навык работы с ними. Мы заканчиваем этот раздел замечанием о записи результатов вычислений на место входных данных-это еще один прием для контроля объема хранимой информации. 1.2.1, Ленточные матрицы и обозначения для них Будем говорить, что матрица /4eRmX" имеет нижнюю ширину ленты р, если" Яу = 0 для / > j 4- р, и верхнюю ширину ленты q, если из j > i + q следует аи = 0. Вот пример матрицы 8 х 5 с нижней шириной ленты 1 и верхней шириной ленты 2: X X X 0 0 X X X X 0 0 X X X X 0 0 X X X 0 0 0 X X 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 Здесь крестики означают произвольные ненулевые (вообще говоря) элементы матрицы. Такие обозначения очень удобны для показа структуры размещения Таблица 1.2.1. Тип матрицы Нижняя ширина ленты Верхняя ширина ленты диагональная 0 0 верхняя треугольная 0 и- 1 нижняя треугольная т - 1 0 трехдиагональная 1 1 верхняя двухдиагональная 0 1 нижняя двухдиагональная 1 0 верхняя хессенбергова 1 п - 1 нижняя хессенбергова т- 1 1
30 Гл. 1. Умножение матриц нулевых и ненулевых элементов в матрице, и мы будем интенсивно их использовать. Некоторые часто встречающиеся типы ленточных матриц собраны в табл. 1.2.1. 1.2.2. Действия с диагональными матрицами Для диагональных матриц у нас есть специальные обозначения. Если DeRm Хл, то D = diag(^ d4l q = min{m, n}odt = du. Если D-диагональная, A - произвольная матрица, то произведение DA масштаби¬ рует А по строкам, a АО-по столбцам. Пусть у — Dxy где xeRn>yeRn. Тогда у является покомпонентным произведением векторов: у = & *х. Здесь вектор de R" составлен из диагональных элементов матрицы D. 1.2J. Умножение треугольных матриц Мы начнем осваивать технику работы с ленточными матрицами на примере матричного умножения С = АВУ где и А, и Б-верхние треугольные п х л-матрицы. Наводящие соображения нам подскажет следующий пример с п = 3: С = «ц6ц Оцб12 + «12&22 «Il6l3 + «12^23 + «13633 О «22^22 «22^23 + «23^33 О 0 «33633 Этот пример позволяет предположить, что результат С является верхней треуголь¬ ной матрицей, элементы которой вычисляются как укороченные скалярные произве¬ дения. В самом деле, поскольку aikbkj = 0 при к < i или j < к, мы видим, что Су = JjUi aik bkJ, откуда вытекает Алгоритм 1,2.1. По двум верхним треугольным п х л-матрицам А и В следующий алгоритм вычисляет С — АВ. С(1:и, 1 :л) = О for / = 1 :п for j = 1:л fork = i:j Cft j) = C(i, j) + A (/, k) B(K j) end end end Чтобы дать количественную оценку достигнутой в этом алгоритме экономии, нам нужны инструменты для измерения объема вычислительной работы. 1.2.4. Флопы Очевидно, умножение верхних треугольных матриц требует меньшего коли¬ чества арифметических операций, чем умножение произвольных матриц. Один из
1.2. Учет структуры матриц 31 способов количественной характеристики разницы дает понятие флопа. Флоп1*-это одна операция с плавающей точкой (floating point operation). Скалярное произведе¬ ние или операция saxpy размерности п содержат 2п флопов, поскольку каждая из них состоит из п умножений и п сложений. Умножение матрицы на вектор z = Ах, где А е R” * ", так же, как и модификация матрицы внешним произведением векторов С = А + хуТ9 содержит 2тп флопов. Умножение матриц С — ЛВ9 где /4eRwXr и ВегХп9 содержит 2тпг флопов. Для оценки количества флопов обычно суммируют арифметические затраты для наиболее глубоко вложенных операторов алгоритма. Для умножения матриц таковым является оператор C(i9j) = C(i9j) + A(i9k)B{k9j)9 который содержит два флопа и выполняется тпг раз, как показывает подсчет количества проходов циклов. Отсюда мы заключаем, что умножение произвольных матриц требует 2тлг флопов. Теперь найдем объем вычислительной работы для алгоритма 1.2.1. Заметим, что на вычисление cf -(i < j) затрачивается 2(j — i + 1) флопов. Используя оценки £ q(q + 1) q2 £'--2—7 И v 2 _ , Ч1 я ЧЪ / р — — Н~ — -f* — % —, ,-1 3 2 6 3 мы находим, что умножение треугольных матриц требует примерно л3/3 флопов: " " ,,~i+1 " 2(п — i+l>2 " л3 Е Е 20'-' +i)= Е Е , - Х<д*т i= i ;= i i=i j=i L <= i J Мы отбрасываем слагаемые низших порядков, поскольку их включение ничего по существу не добавляет к той информации, которую уже несет оценка количества флопов. Например, для алгоритма 1.2.1 точный подсчет количества операций дает иэ/3 И- п2 + 2л/3 флопов. Для больших п (в типичном случае именно эта ситуация представляет интерес) точная формула не дает никакой новой полезной информации по сравнению с нашей оценкой и3/3. Оценка количества флопов-это по необходимости грубый подход к измерению эффективности программ, поскольку он игнорирует затраты на индексацию, обмены с памятью и многочисленные прочие издержки, возникающие при исполнении программы на компьютере. Из сравнения количества флопов не следует делать далеко идущих выводов; так, мы не можем заключить, что умножение треугольных матриц в шесть раз быстрее, чем умножение квадратных матриц. Считать флопы- это лишь «быстрая и грязная» бухгалтерия, ухватывающая лишь одно из нескольких измерений эффективности. Как мы увидим, для различных высокопроизводитель- 1} В первом издании этой книги мы определили флоп как объем вычислительной работы, затрачиваемый на операцию вида ау = ai} + aikakj, т. е. сложение и умножение с плавающей точкой плюс некоторые издержки на индексацию. Таким образом, один «старый флоп» содержит два «новых флопа». Определяя флоп как единичную операцию с плавающей точкой, мы делаем выбор в пользу большей точности при измерении арифметической сложности алгоритмов. Кроме того, новые флопы вытеснили старые флопы из работ по суперкомпьюте¬ рам, к великой радости производителей, чьи машины благодаря новой терминологии в одно¬ часье удвоили свою скорость! После некоторых мучительных раздумий мы решили при¬ соединиться к этой перемене.
32 Гл. 1. Умножение матриц ных архитектур эффективность такого алгоритма, как умножение матриц, в сущест¬ венно большей степени зависит от коммуникационных издержек, и более точное измерение эффективности могло бы потребовать учета количества операций saxpy и длины векторных операндов. 1.2.5. Еще раз об использовании двоеточия Скалярное произведение, вычисляемое циклом по к в алгоритме 1.2.1, можно записать компактно, если обобщить введенное в § 1.1.9 использование двоеточия. Пусть А е Rw х" и целые числа р, q и г удовлетворяют неравенствам 1 < р ^ q ^ п и 1 ^ г < т. Тогда определим А {г, p:q) = [агр,..., ar,] е R1 х *>. Аналогично, если К/>^<ти 1 ^ с л, то A{p:q% с) = = R*-p + 1. С использованием этих обозначений алгоритм 1.2.1. перепишется в виде: С(1:л, 1:л) = О for / = 1 :л for / = I :п С(/, j)~ С(/, j) + А (/, end end Упомянем еще одно добавление к нашим обозначениям. При использовании двоеточия допускаются отрицательные приращения. Так, если х и у - «-векторы, то s = хТ у(п: — 1:1) есть сумма п i = 1 т.е. свертка векторов хну. 1.2.6. Хранение ленточных матриц Пусть Л е R"х п имеет нижнюю ширину ленты р, верхнюю ширину ленты qy и предположим, что р и q существенно меньше, чем п. Такая матрица может быть размещена в (р + q + 1) х л-массиве A.band при соглашении, что аи = A.band(i -j+q+ U j) (1.2.1) для всех пар (/, у), попадающих внутрь ленты. Так, если л = 5, р = 1 и # = 2, как в § 1.2.1, то мы имеем: О О A.band = а\з аг* аъъ о а17 а23 fl45 “11 “22 “33 a2i а32 аАЗ а5Л 9 Здесь «О»-неиспользуемые элементы массива. С такой структурой данных алгоритм умножения матрицы на вектор с выборкой по столбцу может быть реализован
1.2. Учет структуры матриц 33 следующим образом: Алгоритм 1.2.2. Пусть /4eR" х" имеет нижнюю ширину ленты р, верхнюю ширину ленты q и хранится в формате A.band (1.2.1). Если xeR", то следующий алгоритм вычисляет z — Ах. z(l :п) ~ О for j = 1 :п ztop = max(l, j-q); = min(w, j + p) atop = max (1, q + 2 -y); abot = atop + zbot - ztop z(Ztop:ztot) = z(ztoP:zboi) + x(/) A.band(atop:abot, j) end Заметим, что, храня матрицу А по столбцам в массиве A.band, мы получаем процедуру, использующую saxpy с выборкой по столбцам. Действительно, алгоритм (1.2.2) получается из matvec.ji, если учесть, что в каждой операции saxpy участвует вектор, содержащий лишь небольшое количество ненулевых элементов; для нахож¬ дения позиций этих элементов используется целочисленная арифметика. В результа¬ те алгоритм содержит примерно 2л (р + q + 1) флопов, в предположении что р и q много меньше п. 1.2.7. Симметрия Будем говорить, что матрица AeRn х " симметрична, если АТ = А. Так, матрица 1 2 3 2 4 5 3 5 6 симметрична. Объем требуемой для хранения памяти можно уменьшить в два раза, если хранить только нижний треугольник матрицы А в одном векторе; в нашем примере Алее = [1 2 3 4 5 6]. Вообще, в этом структуре данных элемент atj хранится следующим образом: atj = A.vec((j - 1 )п -j(j - 1)/2 + i)(i >/). (1.2.2) Посмотрим, как будет выглядеть алгоритм умножения матрицы на вектор, если матрица А размещена в массиве Алее. Алгоритм 1.2.3. Пусть А е R" х " симметрична и хранится в массиве Алее, согласно (1.2.2). По xeR” следующий алгоритм вычисляет z = Ах. z(l:w) = О forj — 1 :п fori =1:7—1 z{i) = z{i) + A.vec((i - 1)«-/(«- l)/2 +j)x[j) end fori = j:n z(i) = z(i) + A.vec((j - l)w —j{j - l)/2 + i)x(j) end end Этот алгоритм затрачивает те же самые 2п2 флопов, что и умножение произ¬ вольной матрицы на вектор. Обратите внимание, какой неуклюжей стала запись вследствие использования специальной структуры данных для хранения матрицы. 2 63
34 Гл. 1. Умножение матриц 1.2.8. Хранение оо диагоналям Если в алгоритме осуществляется выборка элементов массивов, то необходимо стараться так организовать вычисления, чтобы внутренние циклы обращались к данным, расположенным в последовательных ячейках памяти. Например, для двумерных фортрановских циклов это сводится к написанию процедур таким образом, чтобы доступ к элементам матриц шел по столбцам, как обсуждалось в § 1.1. Проблема с алгоритмом 1.2.3 в том, что первый цикл по / не обращается к последовательным элементам массива. Это недостаток избранной структуры данных. Чтобы обойти эту проблему, рассмотрим другую схему компактного хранения симметричных матриц, в которой матрица хранится по диагоналям. Если “1 2 3" А = 2 4 5 _3 5 6_ то при хранении по диагоналям А представляется вектором AAiag = [1462 5 3]. Вообще, если / ^ j\ то ai+k,i = A-diag(i + пк - к(к - 1)/2) (к > 0). (1.2.3) Введем обозначения, упрощающие описание использования этой структуры данных для умножения матрицы на вектор. Для AeRmXn пусть D{Ay k)eRm х " означает матрицу, содержащую к-ю диаго¬ наль А: Так, № (А А = = / + Л, 1 < г ^ го, 1 < л, в противном случае. ’ 0 2 0 ‘ + 0 0 5 0 0 0 П(Я,2) D(A, 1) ‘10 0' ‘ 0 0 0’ ’0 0 0' 0 4 0 + 2 0 0 + 0 0 0 0 0 6 0 5 0 3 0 0 D{At 0) ЩАШ-1) П(Л,-2) Возвращаясь к нашему способу хранения по диагоналям, мы видим, что ненулевые элементы матриц D(A, 0), D(A, 1), D (А9 п — 1) хранятся последовательно в векторе AAiag согласно (1.2.3). Умножение матрицы на вектор г = Ах может быть организовано следующим образом: г = D(A, 0)х + Vк) + W, к)Т)х- к= 1 Произведения D(A, к)х и D(A, к)Тх обращаются к последовательно хранящимся данным. Проработав детали, мы получаем Алгоритм 1.2.4. Пусть А е R" х п симметрична и хранится в массиве AAiag согласно (1.2.3). По xeR" следующий алгоритм вычисляет z = Ах.
1.2. Учет структуры матриц 35 fori* = 1 :п z(i) = A.diag(i\x(i) end fork = l:n — 1 t = nk — k(k — l)/2 {z = z + DG4, k)x} fori = 1 :n~ k z(i) = z(i) + AJiag{i + 0*0* + end {z = z + D(A, fc)r*} fori = I:» — k z(i + k) = z(i + k) 4- A.diag(i + f)*(0 end end Здесь внутренние циклы выполняют не операцию saxpy, а покомпонентное произ¬ ведение векторов (см. § 1.1.4). Заметим, что во внутренних циклах осуществляется доступ к последовательно расположенным в памяти данным. Для ясности мы сопроводили приведенный выше алгоритм комментариями. Комментарии заключены в фигурные скобки. 1.2.9. Запись поверх входных данных Основным мотивом алгоритмов из этого раздела было экономное использова¬ ние памяти. Еще один способ ограничить объем требуемой памяти-запись резуль¬ татов вычислений на место входных данных. Рассмотрим задачу перемножения п х л-матриц С = АВ с условием, что получающаяся на выходе матрица С должна быть записана на место входной матрицы А Будем отталкиваться от алгоритма без перезаписи, полученного в § 1.1.15: С(1:л, 1:л) = О forj = 1 :п for k = 1:л fori= 1:и C(U j) = C(i, j) + A (/, k) B(k, j) end end end Здесь столбец B{:> j) нужен на протяжении всего цикла по к, поэтому корректная версия с перезаписью не может быть получена простой подстановкой В вместо С и опущением инициализации С = 0. Для хранения j-то столбца матрицы С тре¬ буется рабочий массив длины л, прежде чем можно будет писать поверх В(:9 j): for j = 1:я w(\:n) = 0 fork = 1 :n fori = 1 :n w(i) = w(i) + A(Uk)B{Kj) end end end 2*
36 Гл. 1. Умножение матриц В этом примере требуется рабочий массив линейных размеров (по п). Обычно это несущественно для процедур, содержащих двумерные массивы того же порядка. Задачи 1.2.1. Постройте алгоритм, записывающий А2 на место А, где матрица А: (а)-верхняя треугольная, (Ь) - квадратная. Добивайтесь наименьшего объема дополнительной памяти. 1.2.2. Пусть A eR" * "-верхняя хессенбергова матрица и X,, ... , кг данные числа. Постройте использующий saxpy алгоритм для вычисления первого столбца матрицы М = (А — Xt I)... 1.2.3. Постройте использующий saxpy с выборкой по столбцам алгоритм для умножения п х л-матриц С = А В, где А- верхняя, В- нижняя треугольная матрица. 1.2.4. Обобщите алгоритм 1.2.2 на случай прямоугольных ленточных матриц. Не забудьте описать выбранную структуру данных. 1.2.5. Матрица ,4eR" * " называется эрмитовой, если Ан = А. Если А = В + /С, то, как легко показать, ВТ = В и Ст = — С. Пусть А размещена в массиве A. herm так, что A. herm(ij) содержит при i ^ / и си при J > /. Используя эту структуру данных, напишите процедуру умножения матрицы на вектор, вычисляющую Re(z) и Im(z) по Rc(.v) и Im(jc), так что z = Ах. 1.2.6. Пусть AreR"xp и y4eR" * ", где матрица А симметрична и хранится по диагоналям. Постройте алгоритм, вычисляющий ХтАХ и записывающий результат по диагоналям. Используйте отдельные массивы для хранения матриц А и У. Замечания и литература к § 1.2 Детальное описание структур данных для хранения симметричных и/или ленточных матриц имеется в руководстве по пакету Unpack, 1.3. Блочные матрицы и алгоритмы Умение непринужденно работать с блочными матрицами крайне необходимо для матричных вычислений. Использование блочных обозначений упрощает вывод многих важных алгоритмов. Кроме того, все более возрастает роль блочных алгоритмов в вычислениях на суперкомпьютерах. Здесь под блочными алгоритмами мы подразумеваем по существу такие алгоритмы, которые содержат много опера¬ ций умножения матрицы на матрицу. Следует, ожидать, что эти алгоритмы будут более эффективны по сравнению с теми, которые работают на скалярном уровне, поскольку на каждый обмен данными будет приходиться большее количество вычислений. К примеру, умножение к х ^-матриц занимает 2къ флопов, вовлекая лишь 2кг элементов данных. В § 1.4 мы увидим, что при больших к издержки обмена данными становятся относительно менее существенными. 1.3.1. Обозначения для блочных матриц Разбиения матриц на строки и столбцы суть частные случаи разбиения на блоки. В общем случае разбиение m х я-матрицы А на блоки выглядит следующим образом: Аи • ту А = -ApV • ■ тР пч Здесь т1 + ... + тр = т, пх + ... + nq = /2, Ai} означает (/, j)-й блок, или подматрицу. Блок АХ) имеет размерность на пр и мы будем говорить, что А = (А^) есть р х q- блочная матрица.
13. Блочные матрицы и алгоритмы 37 1.3.2* Операции с блочными матрицами Блочные матрицы можно складывать так же, как и обычные матрицы, при условии соблюдения соответствия размерностей блоков. Например, если Я = в}' • • в}< И1 л. • 23' 1 % "1 то мы говорим, что матрица В разбита на блоки согласованно с Л, и их сумма С — А + В есть р х ^-блочная матрица С = (Сц), где Сц — Ai} + Bi}. Умножение блочных матриц устроено чуточку хитрее. Вот ключевой результат: Лемма 1.3.1. Пусть AeRmXr и Be RrX" разбиты на блоки следующим образом: Ui А121 тх Btl Bt21 rx А = J Л21 А22 j ю2 , В = B2l В22 J гг . Тогда будем иметь АВ Гсп с121 ~ с = \_С21 С22 J где Су = Ап BXj + Аа B2j для i = 1:2 и j = 1:2. Доказательство. Доказательство представляет собой упражнение на использование индексов. * = 1 ri X Й(|- 1И«1 И»! +я k= 1 X а{*~ l)mj +p.k^kAj- 1)И1 +q + X aii-l)ntl+p.k^k,U- 1)пх+ч — к = гх +1 Г1 г2 1 IXl + [^*2 “ XAll. ^1/ + ^i2 ^2jlpq- О Лемма 1.3.1 дает всю информацию об умножении 2 х 2-блочных матриц. Для общего случая имеем следующую теорему: Теорема 1.3.2. Если 4i ■ А.и Ю| ВУ ' " V -Api ' • Л,_ < В = и произведение С = А В разбито на блоки следующим образом: Сц Си тх
38 Гл. 1. Умножение матриц то 4 Cij = X ^ik^kjy 1 ~ l:P*j ™ ^ к = 1 Доказательство. Примените лемму 1.3.1 и индукцию. Мы опускаем детали, по¬ скольку в них нет ничего поучительного. □ Так же, как и для обычных матриц, умножение блочных матриц может быть организовано несколькими способами. Для точного описания этих вычислений нам потребуется ввести некоторые обозначения. 1.3J. Обозначения для подматриц Рассмотрим возможные способы задания блоков в матрице, элементами которой являются числа. Пусть Л е Rm х п и векторы i = ir) и j — (А,-., jc) имеют целочисленные компоненты, такие, что *ге{1, 2,..., т}, jl9...,jce{ 1, 2,..., п}. Мы обозначаем через A(i, j) г х с-подматрицу A(ij) = А (<1 J\) MhJc) A(i,JC)_ Компоненты векторов i и j часто пробегают непрерывный диапазон, и в этих случаях мы используем двоеточие для его обозначения. В частности, если 1 Hi^p^g^n, то A{i:j\ p:q) есть подматрица, стоящая на пересечении строк от г'-й до >й и столбцов от р-го до 0-го матрицы А. Таким образом, А (3:5, 1:2) = а41 а42 а31 а52 В заключение разговора о подматрицах напомним введенные в § 1.2.5 обозначения: если i и У-скаляры, то A(i, :) означает /- ю строку, А(:, j)-jAk столбец матрицы А. 1.3.4. Умножение блочной матрицы на вектор Важный частный случай теоремы 1.3.2-это умножение блочной матрицы на вектор. Предположим, что матрица i4eRwX" и вектор zeRm разбиты на блоки следующим образом: z\ Л. mp z — mp Здесь т1 + ... + тр = т. Мы называем Ах i-й блочной строкой. Заметим, что если xeR" и z = Ах, то zx — Akx, i = 1 :р. Таким образом, если тхес = тр), мы получаем следующую блочную версию умножения матрицы на вектор: last = О fori = 1 :р first = last + 1; last = first + mxec(i) — 1 (1.3.1) z(first:last) = A (first:last,:)x end
1.3. Блочные матрицы и алгоритмы 39 Конечно, произведения zx — Atx можно находить, используя как matvecij, так и matvec.jL Другая блочная версия умножения матрицы на вектор получится, если мы разобьем А и х на блоки следующим образом: А = А ], х * В этом случае мы называем Ajj-м блочным столбцом, и произведение z — Ах имеет вид z = Аххх -I-... + Aqxq. Если плес — (п19 л^)-вектор размерностей блочных столбцов, то имеем следующую столбцовую версию алгоритма (1.3.1): z(l :т) — 0; last = 0 fory = 1 :q first = last + 1; last = first + n.vec(j) — 1 w = A (:, first: last) x (first: last) z = z 4- w end (1.3.2) Здесь снова отдельные произведения подматриц на векторы (вычисление w) могут выполняться как matvecaj, так и matvecji. 1.3,5* Перемножение блочных матриц Так же как и обычное умножение матриц, умножение блочных матриц может быть организовано несколькими различными способами. Для простоты предполо¬ жим, что каждая из матриц А**(Аи) и В = (Ву) есть N х АГ-блочная матрица с а х а-блоками, так что п = Na. Для такого «равномерного» разбиения на блоки теорема 1.3.2 дает, что если С = (Су) * АВ, то Z AUtBtb/,i=l:N,j=l:N. Исходя из этой формулы, описывающей блочное скалярное произведение, можно получить следующую процедуру умножения матриц: С(1:л, 1:и) = 0 for** = 1:N i = (*b- 1 )а + 1:/ьа forjb = 1 :N j = Vb~ 1)а+1:Ла (13.3) forfeb= UN k = (kb — l)a + \:kba C(i,j)=C(i,j) + A(i,k)B(k,j) end end end Благодаря нашим обозначениям, позволяющим переменным i, j, к играть роль векторных индексов, присваивание C(i,j) = C(i,j) + A(i, k)B(k,j) выглядит точно так же, как и на скалярном уровне. Другие процедуры для умножения блочных матриц получатся, если изменить
40 Гл. 1. Умножение матриц порядок циклов в (1.3.3). Например: С(1:я, 1 :п) = 0 fa*Jb= j = VЬ~ 0а + 1:у*а for кь = UN к = (кь~ 0а + for/fr = 1: TV i = (ib- 1)а+ 1:/ьа C(i,j)=C(i,j)+A(i4k)B(k,j) end end (1.3.4) end Лучше всего можно понять эту организацию умножения матриц, если разбить А на блочные столбцы: A=[At А„1. а а Если В — (Ви\ где ВцеR*х*, то AB = C=lCu...t CNlCj= £ AkBkj. Таким образом, является блочной линейной комбинацией блочных столбцов матрицы А. Цикл по kh выполняет блочную операцию дахру. Блочная версия с использованием внешнего произведения получится, если мы переставим циклы в (1.3.3) следующим образом: C(l:w, 1:«) = 0 for кь = 1 :N k = (kb- l)ti + !:*ьа fory,= l:N j = Ub- 1)а+ l-jb* for ib = 1 :N i = (ib- l)a + \:iba С(i, j) — С(/, j) + A (i, k) B(k, j) end end end Для понимания этой версии лучше всего подойдут блочные разбиения (1.3.5) Bl LbJ так как тогда мы видим, что цикл по кь вычисляет сумму С = АВ= X АкВк. Къ=\ В этой формулировке мы рассматриваем матрицу С как сумму блочных внешних произведений.
13. Блочные матрицы и алгоритмы 41 1.3.6. Важный частный случай В § 1.3.4 наш подход к вычислению произведения матрицы на вектор основы¬ вался на разбиении матрицы А на блочные строки и столбцы. Другой важный способ организации этого вычисления-рассмотреть А как 2 х 2-блочную матрицу, а х-как двумерный блочный вектор: Г*1 1 _ Ми ^ 1 2 ”1 Г*1 1 _ Г^11х1 + ^12 Х2 1 \-Z2 J L^21 ^22-* Lx2J + ^22 X2 J В последующий главах это блочное разбиение для задачи z = Ах будет интенсивно использоваться. 1.3.7. Структуры данных для блочных матриц Массивы в фортране хранятся по столбцам. Это означает, что элементы матрицы, находящиеся в одном и том же столбце, занимают последовательные ячейки памяти. Так, если для хранения матрицы Ае R4 х 6 было отведено 24 ячейки памяти, то при традиционном хранении по столбцам элементы матрицы выстраи¬ ваются в памяти, как показано на рис. 1.3.1. А(2.1) А(3,1> А(4,1) х □L П, IjL ПЗи ГИ A(U) А(2,2) А(3,2) А(4.2) А(1,3) А(2,3) А(33) А(43) А(1»4) А (2,4) А(3,4) А(4,4) A(U) А(2,5) А (3.5) А<4.5) А(1,6) А (2.6) А(3,6) А(4,6) Рис. 1.3.1. Хранение по столбцам (случай 4 х 6). а А(1,1) А(2,1) А(1Л) А(2,2) А(3.1) А(4,1) а. А(ЗД) А(4,2) t= 1 А(13) А(1.4) А(2.3) А(2,4) 1 1 1 Г Р А(33) А(3,4) А(43) А (4,4) Л Г 1.5) А(1,6) A (2.5) А (2,6) 1 1 * Г Р А(3.5) А(3,6) А (4.5) А(4,6) Рис. 1.3.2. Хранение блоками (случай 4 х 6 с блоками 2 х 2).
42 Гл. 1. Умножение матриц Другими словами, если i4eRmх" хранится в г(1 :тп), то элемент A{i,j) находится в г((/ — 1 )т + г). Такой формат хранения хорошо подходит для алгоритмов, которые выбирают элементы матриц по столбцам, поскольку элементы столбцов расположе¬ ны в памяти непрерывно. В некоторых блочных алгоритмах иногда бывает полезно хранить матрицы не по столбцам, а по блокам. Предположим, к примеру, что матрица А из рассмотренного выше примера есть 2 х 3-блочная матрица с 2 х 2-блоками. При блочном хранении по столбцам и при хранении по столбцам элементов каждого блока 24 элемента матрицы А располагаются в памяти, как показано на рис. 1.3.2, Эта структура данных может быть привлекательной для блочных алгоритмов, поскольку элементы каждого блока хранятся в памяти непрерывно, 1.3.8. Умножение матриц, основанное на принципе «разделяй н властвуй» В завершение этого раздела рассмотрим совершенно другой подход к задаче умножения матриц. Мы начнем обсуждение с умножения 2 х 2-блочных матриц где каждый блок квадратный. В обычном алгоритме Сц = Ап Ви + Ai2 B2J имеются 8 умножений и 4 сложения блоков. Штрассен (1969) предложил способ вычисления С с использованием лишь 7 умножений и 18 сложений блоков: Эти соотношения легко проверяются подстановкой. Пусть я = 2т, так что блоки имеют размер т х т. Подсчитывая сложения и умножения в вычислении С = АВ, мы находим, что обычное уможение матриц требует (2т)3 умножений и (2m)3-(2т)2 сложений. Если же применить алгоритм Штрассена вместе с обычным алгоритмом для умножения блоков, то требуется всего 7т3 умножений и 7т3 + Пт2 сложений. Если т > 1, то метод Штрассена обходится примерно в 7/8 арифметических затрат стандартного алгоритма. Теперь заметим, что идея Штрассена может быть применена рекурсивно. В частности, алгоритм Штрассена может быть применен для нахождения каждого из произведений Р{ блоков половинного размера. Таким образом, если исходные матрицы А и В имели размеры я х л с п = 2е, то алгоритм Штрассена можно применить многократно, и на самом нижнем уровне мы получим блоки размера 1x1. Но, конечно, нет никакой необходимости спускаться вниз до уровня я = 1. При достаточно малых размерах блока (п ^ лга1я) может оказаться выгодным Л = (^11 + А22 )t®i 1 + B2j)i В2 * Wn + ^22 ) 1» Л * ^11 №12 — 1*22 )* = ^22(^21 ~ ^11 )* Р5 “Ml* + Ai2)B22> Р$ ~ W21 ~ ^uK^ii + #12)* Pi = 12 ^22)(^21 + Вц)* Сц=Р1 + + Р7, С12 ~ Р3 + Р5ч C2i = Рг + Ра* С21 = Р% + Р\ — Р* + Рь* 22 ж Р\ + Р* — Рг + Ре* 2 Т ГА*
IJ. Блочные матрицы и алгоритмы 43 вычислять Pi9 используя стандартный алгоритм. Вся процедура в целом выглядит следующим образом: Алгоритм 13.1 (Умножение матриц но Штрассену). Пусть п = 24 и А еН1*х ", BeR* * Если nwio = 2d> где d < g, то следующий алгоритм вычисляет С = АВ, применяя метод Штрассена рекурсивно q-d раз. function: С = strass (/*> Bt птЫ) л = rows (/4) С = АВ else т — л/2; м = I :т; г = л? + 1 :л; Л = stress (Л («, и) + V), В(и, и) + B(i)9 v)> nmln) Р2 = stress (Л (и, и) + Л (в, v), В(к, «), Р3 = stress (Л(и, л), В(гц v) - Я(», у), л^) Р4 - stress (^(d, v), B(vy и) - В{и, и), лт1Л) Ря - strassH(w, и) + Л (и, о), В (г, ei), птЫ) Р6 - strass(Л (r>, w) - >4 (и, и), Я(ц и) + Д(«, в), л^) Р7 = stress (4 (м, о) - /4(17, о), Я(в, и) + Я(и, и), л^) С(«,«)-/\+Р4-/>5+^7 С (^> В) “ + ^5 C(v> и) = Р2 + Р4 C(tf, v) — P^-i-P^ — Р2 + Р6 end end stress В отличие от всех ранее рассмотренных алгоритмов, процедура strass является рекурсивной, т.е. она вызывает сама себя. Алгоритмы, основанные на принципе «разделяй и властвуй», часто наиболее естественно описываются с использованием рекурсии. Арифметические затраты процедуры strass являются нетривиально устроенной функцией л и Если пЫп > 1, то достаточно подсчитать количество умножений, поскольку количество сложений примерно то же самое. Ограничившись подсчетом умножений, мы можем рассматривать только самый внутренний уровень рекурсии, поскольку именно там выполняются все умножения алгоритма. В процедуре strass qd уровней рекурсии, поэтому стандартных умножений матрицы на матрицу всего lq~d\ при этом перемножаются матрицы размера пт1пУ так что всего в процедуре strass порядка s — (2d)3 J*~d умножений по сравнению с с = {2я)3 в обычном алгорит¬ ме. Заметим, что При d —0, т.е. если мы спускаемся до 1 х I-матриц, имеем , = Q,c = 7« = n,»«J7w«J 807. Таким образом, количество умножений в методе Штрассена асимптотически равно 0(л2 в07). Однако относительная доля сложений по отношению к умножениям возрастает при уменьшении п^т.
44 Гл. I. Умножение матриц Пример 1.3.1. Если п = 1024 и птЫ = 64, арифметические затраты процедуры stress составляют (7/8)10 ~ 6 ^ 0.6 от затрат стандартного алгоритма. Задачи 1.3.1. Пусть /teR**" хранится по столбцам в массиве A.col (I \тп). Предположим, что п = aNTm = рм и мы рассматриваем А как М х JV-блочную матрицу с р х a-блоками. По данным целым числам /, /, г, $у удовлетворяющим неравенствам 1 ^ i < Р, 1 < а, 1 ^ г ^ М, I < л ^ JV, найдите такое ку что А.со1(к) содержит элемент (i,j) из блока (r»s). Постройте алгоритм, преобразующий A.col к блочному формату хранения матрицы Л, показанному на рис. 1.3.2. Каких размеров при этом должен быть рабочий массив? 1.3.2. Обобщите алгоритм (1.3.4) на случай произвольной блочной матрицы. 1.3.3. Приспособьте процедуру stra&s для перемножения квадратных матриц произвольного порядка. Подсказка: если на каком-то шаге получилась матрица А нечетного порядка, Окаймите ее нулевыми строкой и столбцом. 1.3.4. Пусть А = Ах + iA2€C" * " и х — хг + ix2еС". Укажите способ вычисления у = у, + + iy2 — Ах при помощи одного вещественного вызова mstvec.ji. 1.3.5. Пусть « четное число. Определим функцию R" -* R: п/2 f(x) = л(1:2:п)гл:(2:«) = £ .v2i_, хъ . i= 1 (a) Покажите, что если y, veRA, то п/2 хТУ = Е Ojf | + JhM-Vj. + Ун -1) -fix) -/0')- I - I (b) Приведите алгоритм, вычисляющий произведение п х «-матриц С = АВЩ требующий «3/2 умножений при применении функции / к строкам матрицы А и столбцам матрицы В. Детали см. в Winograd (1968). Замечания и литература к § 1.3 Долгое время быстрые методы умножения матриц привлекали к себе достаточно много внимания. См. Pan V. (1984). “How Сап We Speed Up Matrix Multiplication?*, SIAM Review 26, 393-416. Strassen V. (1969). “Gaussian Elimination is Not Optimal", Numcr Math. 13, 354-356. Winograd S. (1968). “A New Algorithm for Inner Product” IEEE Trans. Comp. C-17, 693 694. Практическая ценность многих из этих методов весьма сомнительна. Однако после публика¬ ции Bailey D. (1988). “Extra High Speed Matrix Multiplication on the CRAY-2”, SIAM J. Sci. and Stat. Comp. 9, 603-607. становится ясно, что полностью закрывать глаза на эти методы неблагоразумно. Bailey по существу реализовал Алгоритм 1.3.1 на компьютере CRAY-2 с nmin— 128. Его программа требует около 60% времени, затрачиваемого библиотечной процедурой. Мы обсудим устой¬ чивость алгоритма Штрассена в § 2.7.7. Наконец, отметим, что возникающие на практике матрицы часто обладают своей собствен¬ ной блочной структурой. Так, блочные матрицы естественно возникают при дискретизации многих дифференциальных операторов. В марковском процессе кластеры состояний могут взаимодействовать между собой специальным образом, порождая блочно-структурированную задачу. См. Kaufman L. (1983). “Matrix Methods for Queueing Problems”, SIAM J. Sci. and Stat. Comp. 4, 525 552.
1.4. Некоторые аспекты векторно-конвейерных вычислений 45 1.4. Некоторые аспекты векторно-конвейерных вычислений Действия с матрицами в основном слагаются из скалярных произведений и операций saxpy. Векторно-конвейерные компьютеры способны очень быстро выполнять подобные операции благодаря специальной аппаратной поддержке, учитывающей то обстоятельство, что векторная операция-это очень регулярно устроенная последовательность скалярных операций. Будет ли при использовании такого компьютера достигнута высокая производительность, :*то зависит от длины векторных операндов, а также ряда факторов, относящихся к пересылкам данных, таких как шаг выборки, количество векторных загрузок/записей, степень повторно¬ го использования вектора. Знакомство с этими вопросами и понимание их роли чрезвычайно полезны. Мы не будем пытаться построить всеобъемлющую модель вскгорно-конвейерных вычислений, позволяющую предсказывать производитель¬ ность алгоритмов. Наша цель-дать читателям почувствовать основные моменты, которыми следует руководствоваться при создании эффективных программ для векторно-конвейерных компьютеров. Мы не ориентируемся на какую-то конкрет¬ ную машину; заинтересованных читателей мы отсылаем к литературе, которая содержит очень много конкретных исследований такого рода- 1.4 Л. Конвейеризация арифметических операций Первопричиной высокой скорости векторных компьютеров является конвейери¬ зация. Для осознания смысла этого понятия проведем аналогию со сборочной линией. Допустим, что сборка одного автомобиля идет по одной минуте на каждом из шестидесяти рабочих мест вдоль сборочного конвейера. Если конвейер пол¬ ностью укомплектован персоналом, так что сборка нового автомобиля может начинаться каждую минуту, тогда 1000 автомобилей могут быть произведены примерно за 1000 + 60 = 1060 минут. Для заказа таких размеров эффективная «векторная скорость» конвейера будет 1000/1060 автомобилей в минуту. С другой стороны, при нехватке персонала, если сборка нового автомобиля может начинаться лишь один раз в час, для выпуска 1000 автомобилей потребуется 1000 часов. В этом случае эффективная «скалярная скорость» конвейера будет 1/60 автомобилей в ми¬ нуту. Именно так обстоят дела с конвейеризованной векторной операцией, скажем, со сложением векторов z = х f у. Скалярные операции = xk + >^-это автомобили. Количество компонент вектора эго объем заказа. Если на вычисление каждого zx уходит время т, то конвейеризованное сложение векторов дайны п займет гораздо меньше времени, чем ят. Так достигается векторная скорость. Без конвейеризации векторное вычисление осуществлялось бы с той же скоростью, что и скалярное, и потребовало бы примерно т времени. Рассмотрим, как можно конвейеризовать последовательность операций с пла¬ вающей точкой. Обычно такие операции завершаются за несколько тактов. Напри¬ мер, трехтактное сложение двух чисел х и у может протекать, как показано на рис. 1.4,1. Чтобы получить зрительный образ этой операции, представьте себе, что устройство сложения-это сборочная линия с тремя «рабочими местами», как изображено на рисунке. Входные числа х и у двигаются вдоль линии, задерживаясь х У Округлить rumnfTijAj rW. j сложить jnbftVntlfilJfat нормали¬ зовать *у Рис. 1.4.1. Трехдикловый сумматор,
46 Гл. 1. Умножение матриц х(Ю х№)-+ х(9) » х(8) ♦ г (7) -¥г(6) г($) уШ) у(Ю)-¥ у(9) » у (в) Рис. 1.4.2. Конвейерное сложение. зо (13) а ушг Рис. 1.4.3. Конвейерное saxpy. z(8) +z(7) на один такт у каждого рабочего места. После трех тактов на выходе появляется их сумма z. Заметим, что при выполнении одного отдельно взятого сложения в каждый момент времени активно только одно из трех рабочих мест. Теперь рассмотрим сложение векторов z = х + у. Конвейеризация распределяет компоненты векторов х и у по всему устройству сложения. В установившемся состоянии, когда конвейер заполнен, очередная компонента zt выдается на каждом такте. На рис. 1.4.2 изображено, как бы мог выглядеть конвейер в установившемся состоянии. В этом случае векторная скорость примерно в три раза выше скалярной скорости, поскольку для одного отдельного сложения требуется три такта. Такие операции над векторами, как скалярное произведение и saxpy, включают как сложения, так и умножения. Мы будем предполагать, что в нашей модели векторного компьютера устройства сложения и умножения могут быть сцеплены друг с другом, образуя единый конвейер. Так, конвейеризация операции saxpy z = ~ cue + у могла бы выглядеть, как на рис. 1.4.3. Здесь w — ах. Таким образом, когда конвейер заполнен, на каждом такте мы получаем одну компоненту вектора г. Заметим, что в установившемся состоянии каждый такт выполняет одно сложение и одно умножение с плавающей точкой. В этом причина того, что пиковая производительность типичного векторного компьютера дается величиной 2/р операций с плавающей точкой в секунду, где ц- время одного такта. 1.4,2. Векторные операции Векторно-конвейерный компьютер имеет набор векторных инструкций, таких как сложение векторов (zt = xt + уД покомпонентное произведение векторов (zt = = xtyt\ умножение вектора на скаляр (zt = ахД скалярное произведение и saxpy. Для ясности предположим, что эти операции осуществляются на векторных ре¬ гистрах. Регистры обмениваются с памятью посредством инструкций загрузки вектора и записи вектора в память. Важным атрибутом векторного процессора является длина его векторных регистров, которую мы обозначаем через vL. Операция над векторами длины п должна быть разбита на несколько операций с операндами длины vL или меньшей. К примеру, для сложения двух л-векторов х и у такое разбиение может быть осуществлено следующим образом:
1.4. Некоторые аспекты векторно-конвейерных вычислений 47 first = 1 while first < п last = min {л, first + vL — 1} Загрузить вектор jc(/rrs/:last). Загрузить вектор у (first: last). Сложить векторы: zijirst.last) = х (first, last) + у (first: last). Записать вектор: z (first:last), first = last + 1 end Заметим, что здесь все операции (загрузить, сложить, записать) - это векторные операции. Порядочный компилятор для векторного компьютера должен автомати¬ чески сгенерировать (14.1) по оператору z = х + у программы. Конечно, возможно, что программисту придется задавать сложение векторов в виде фортрановского цикла. 1.4.3. Длина вектора Предположим, что на начальную загрузку конвейера при выполнении векторной операции требуется тор тактов. Если при заполненном конвейере на каждом такте получается одна компонента результата, то время выполнения л-мерной векторной операции будет где р - продолжительность такта, vL- длина векторных регистров компьютера. Если длина векторов, участвующих в операции, превосходит длину векторных регистров, то, как мы видели, векторы должны быть разбиты на умещающиеся в векторные регистры куски. Так, если где ceil (о)-наименьшее целое число, такое что а ^ ceil (а). Если для вычисления каждой компоненты требуется р флопов, то эффективная скорость вычислений дается для произвольного п формулой: (Если значение р берется в секундах, то получается в флопах в секунду.) Асимптотическая скорость будет Тйр(л) = (тор + л)р, п < vL> п = ni vL + л0, 0 < л0 < vL, то общее время выполнения л-мерной векторной операции будет «l(*op+ п0 = Ь («iCfop + Vl) + topn0)p, n0 ф 0. Это можно записать и более просто: Тор (л) = (л + тйр ceil (n/vL)) р, 1 1 Р
48 Гл. 1. Умножение матриц Для оценки относительной роли издержек на начальную загрузку конвейера Хокни и Джессхоуп (1988) ввели величину и1/2 как наименьшее л, для которого достигается половина пиковой производительности, т.е. P”l/2 _ 1 Р Тор («1/2) 2 ц' Для машин с большим коэффициентом л1/2 на операциях с короткими векторами не достигается высокая производительность. 1.4.4. Оптимизация кода с учетом длины векторов Мы представили упрощенную модель векторных вычислений, в которой произ¬ водительность является функцией от длины векторов и коэффициента начальной загрузки тор. Забыв на время про все прочие факторы (как, скажем, метод доступа к данным), посмотрим, как эта модель советует организовать процедуру перемно¬ жения матриц. Пусть нужно вычислить произведение С = А В, где А е Rm х r, Be Rr х ". Вспомним из § 1.1, что стандартный алгоритм может быть организован шестью способами, причем самый внутренний цикл выполняет либо скалярное произведение, либо saxpy. Рассмотрим версию ijk: for / = I :т fory = 1 :п for к = 1 :r C(i,j) = C(i4j) + A(i, k)B{k,j) end end end Внутренний цикл вычисляет скалярное произведение векторов длины г, В усло¬ виях нашей простой модели, если мы не учитываем никаких затрат, кроме вычислений скалярных произведений, время выполнения алгоритма будет TiJk = тп [г + ceil (r/vL) т*,, ] ц. В версиях “jkr и “kif4 самые внутренние циклы выполняют операцию saxpy длины тип соответственно. Следовательно, ожидаемое время выполнения этих двух алгоритмов будет TJki = nr [m + ceil (m/vL )тм,]ц И TkU = mr[n + ceiI(«/rL)TMJC] p. (Рассматривать версии “jik”, “к]Г и “Л/1 нет необходимости, поскольку в нашей модели Tjik — Tljk, Tkji — Tjki и Tikj — Tkij.) Из выписанных трех формул ясно, что наиболее эффективная версия матричного умножения определяется соотношением между размерностями т, лиги коэффициентами начальной загрузки и idot. Машинно-зависимая оптимизированная процедура умножения матриц могла бы следующим образом выбирать наиболее эффективную из возможных версий: function: С = matmatopt (А, В, vL, zdon xMJC) т — rows (А); п = cols (В); г = rows (В) h = misax ceil (m/vL) h = mr тш ceil Wl’t)
1.4. Некоторые аспекты векторно-конвейерных вычислений 49 tk = (r/vL) if<, = min(/j, tj, tk) С — matmatjki (At B) elseiftj — min(/f, tj, tk) С = matmatkij (A, B) elseiftk — min(/f, tp tk) С = matmatijk(j4, B) end end matmat opt Элементарные прикидки показывают, что если xsax и xdot примерно равны, то в случае, когда т, п и г меньше, чем vL, функция matmatopt выбирает версию с максимальной длиной внутреннего цикла. Если же т, п и г существенно больше vL, то разница между всеми тремя версиями невелика. Напомним, что эти наблюдения, как и сама matmatopt, основаны на одномерном представлении о векторно-конвейерных вычислениях, учитывающем лишь длину векторов. Для уточнения нашей модели мы должны обратиться к обмену данными между памятью и регистрами, на которых, собственно, и выполняются векторные операции. 1.4.5. Многоуровневая память Прежде чем векторный компьютер сможет выполнить векторную операцию, операнды должны находиться «в нужном месте», а за доставку в нужное место приходится платить. Проблема в том, что память обычно организована иерархичес¬ ким образом. Между функциональными устройствами, выполняющими арифмети¬ ческие операции, и основной памятью, в которой лежат данные, может распола¬ гаться относительно небольших размеров высокоскоростная кэш-память. Детали могут меняться от машины к машине, но вот две вещи, о которых необходимо постоянно помнить при работе в условиях многоуровневой памяти: • Объем памяти на каждом уровне иерархии ограничен по экономическим причинам и уменьшается при повышении уровня иерархии. • Обмен данными между уровнями иерархии сопряжен с затратами, иногда сравнительно большими. Выводы из этого очевидны. Если мы хотим разработать эффективные матричные алгоритмы для типичного векторного компьютерар мы должны постоянно держать Рис. 1.4.4. Иерархия памяти.
50 Гл. 1. Умножение матриц в поле зрения передвижение данных по уровням иерархии памяти. Это остается в силе даже для вычислений с матрицами относительно малых размеров, поскольку современные компиляторы пока не способны отобразить основные матричные алгоритмы на системы с многоуровневой памятью. Конечно, управление обменами с памятью не является чем-то особенно новым в научных вычислениях. При решении матричных задач на самых первых электрон¬ ных машинах приходилось продумывать обмен данными с бумажными лентами и другими примитивными устройствами хранения информации. В вычислениях с разреженными матрицами создание эффективных программ всегда требовало внимания к вопросам обменов с памятью. Многоуровневая память налагает на разработчика алгоритмов специфические требования, побуждая его мыслить в определенном ключе. Этому будет посвящен остаток данного раздела. 1.4.6. Единичный шаг выборки Очень важно, чтобы при перемещении данных между уровнями иерархии памяти эти данные занимали в памяти непрерывную область. Для векторов это подразуме¬ вает единичный шаг выборки. Шаг выборки для хранящегося в памяти вектора-это расстояние (измеренное в ячейках памяти) между его компонентами. Доступ к строке в двумерном фортрановском массиве не является операцией с единичным шагом выборки, поскольку массивы хранятся по столбцам. Векторные операции с неединичным шагом выборки могут помешать конвейери¬ зации. Например, загрузка вектора с неединичным шагом выборки из памяти с чередующимися адресами может потребовать дополнительного количества тактов из-за конфликтов в банках памяти. Теперь учтем влияние шага выборки на производительность нашей оптимизиро¬ ванной процедуры matmatopt Из трех возможных самых глубоко вложенных циклов fori = 1 :т C(i,y) = C(i,/) +Л(/, k)B(k,j) end forj — 1 :n С(Ъ j) = С(i, j) + A (i, k) B(k, j) end for k — l:r C(i,7) = C(i,7) +Л(/, k)B(k,j) end только первый выбирает элементы массивов А, В и С с единичным шагом. Ясно, что для реализации процедуры matmatopt на фортране потребуется пересмотреть ее с учетом влияния шага выборки. Насколько сильно уточненная процедура будет тяготеть к избранию версии matmatjki, зависит от того, насколько пагубно векторные операции с неединичным шагом выборки сказываются на производи¬ тельности. Мы не будем дальше разбирать этот вопрос, так как он особенно сильно зависит от архитектуры конкретного компьютера. Для нас главное зафиксировать следующий момент: требования к длине вектора и к шагу выборки бывает трудно совместить. Дилеммы такого рода типичны для высокопроизводительных вычислений. Достижение одной из целей (максимальная длина вектора) может противоречить
1.4. Некоторые аспекты векторно-конвейерных вычислений 51 другой цели (единичный шаг выборки). Иногда наилучший компромисс можно найти, изучая в деталях времена исполнения отдельных операций. 1.4.7. Роль структур данных Иногда разумный выбор структур данных может помочь разрешить противоре¬ чивые требования на длину вектора и шаг выборки. Рассмотрим снова умножение матрицы на вектор z = Ах, где матрица А симметричная. Пусть А — п х л-матрица, и пусть для простоты л < vL. Если А хранится обычным образом, то при исполь¬ зовании процедуры matvec.ji основное вычисление состоит из л операций saxpy длины л с единичным шагом выборки: г(1:л) = О forj = 1:л z = z + A(:,j)x(fi end Считая только операции saxpy, имеем следующее ожидаемое время исполнения: Ъ = + л)р. Посмотрим, насколько хуже станет производительность при использовании спе¬ циальных структур данных, учитывающих симметрию. Если мы будем хранить нижний треугольник матрицы А по столбцам в массиве A.vec(:), как в § 1.2.7, то соответствующая версия matvec.ji запишется в виде: г(1:л) = 0 for у = 1 :л fori = l:j — 1 z(i) - z(i) + A.vec((i - 1)л — i(i — l)/2 + У)х(0 end fori = j:n z(i) - z(i) + A.vec((j - l)n ~j(j - l)/2 + i)x(i) end end Хотя второй из циклов по I выполняет операцию saxpy длины л — j + 1 с единичным шагом выборки, первый цикл по i выполняет saxpy длины j-1 уже с неединичным шагом. Для того чтобы дать количественную оценку ущербу, понесенному вследствие использования операции с неединичным шагом выборки, нам придется сделать некоторые предположения. Допустим, что векторное вычисление с неединичным шагом выборки приводит к обработке со скалярной скоростью Rs флопов в секунду. Тогда на выполнение первого цикла (это примерно половина всех операций алгоритма) уходит n2/Rs секунд. В то же время второй цикл, несмотря на убывание длины обрабатываемых им векторов, может в среднем работать с гораздо более высокой скоростью Rv флопов в секунду. Полное время вычислений дается форму¬ лой Заметим, что даже в случае Rv= со достигается не более чем двукратное ускорение по сравнению со скалярной обработкой. Это одно из проявлений закона Амдаля: Если в процедуре доля скалярной обработки составляет /е[0, 1], то
52 Гл. 1. Умножение матриц Время вычислений при полностью скалярной обработке 1 Время вычислений при векторной обработке с бесконечной скоростью / Мы можем заключить, что в условиях, когда шаг выборки является критическим параметром, стандартная схема хранения матрицы А в процедуре matvecji пред¬ почтительнее, чем хранение по столбцам нижнего треугольника. Теперь предположим, что матрица А хранится по диагоналям в массиве A.diag(\ как описано в § 1.2.8, и что z = Ах вычисляется по алгоритму 1.2.4. В этом алгоритме все покомпонентные произведения векторов выполняются с единичным шагом выборки. Поэтому ожидаемое время вычислений зависит от издержек на начальную загрузку конвейера для покомпонентного произведения векторов: п- 1 Тг = (т,т + и)ц + £ [(Т11т + (и - fc)) + (т„т + (я - fc))]|i = = <(2и— 1)т„и + «г)ц. (1.4.2) Таким образом, насколько выгодно применять схему хранения по диагоналям, определяется величиной Т3 — = ((2п — 1)т^т — ятмх)р, а также относительной значимостью компактности хранения информации. Но из нашего обсуждения ясно следует, что ценность компактных схем хранения снижается в условиях векторно¬ конвейерной обработки. 1.4.8. Операции gaxpy, внешние произведения и векторные обмены Во многих случаях большим шагом на пути к получению хорошей векторизован¬ ной программы является минимизация количества векторных загрузок и записей. Для удобства будем называть векторные загрузки и записи векторными обменами. Многие алгоритмы численной линейной алгебры могут быть организованы таким образом, что доминирующей операцией будет являться либо модификация матрицы внешним произведением векторов, либо операция gaxpy. (См. § 1.1.15 и § 1.1.16.) Для матриц размера т х п обе операции требуют 2тп флопов, но gaxpy при этом требует в два раза меньше векторных обменов. Чтобы убедиться в этом, возьмем для простоты случай т = mlvLn п = nl vL. Для векторных вычислений модификация внешним произведением запишется следую¬ щим образом: for*^ = 1 :mx i = (*„ - + 1 :*>l; w = w(0 for/, = 1 :nx j = Vv - !) »L + 1 'Jv VL; A j) = A ('. j) + *'»(j)T end end Каждый столбец подматрицы A(U j) должен быть загружен, модифицирован и записан обратно в память. Учитывая также обмены для векторов миг, приходим к следующей оценке для общего количества векторных обменов: wi / "1 \ I ( 1 + £ О +2vL)jx2mln. v=1 4 h = l (Заметьте, что мы пренебрегли несущественными для нас слагаемыми низшего порядка.) Теперь рассмотрим т х л-операцию gaxpy и — и + Avf где ueRm, reR", j4GRm Хл.
1.4. Некоторые аспекты векторно-конвейерных вычислений 53 Разбивая это вычисление на отрезки длины vL, получаем: for / = I :т1 i = (/„ - l)t?L + 1 :i,vL; w = u(i) for jv = 1:«, > = (/»- i:jv»L w = w + A (/, end u(i) = w end Здесь снова каждый столбец подматрицы A (i, у) должен быть считан, но запись в память теперь требуется только одна-необходимо записать вектор к». Таким образом, общее количество векторных обменов будет mi ( "1 \ Е (2+ £ (I + vL) ) ^=1 Л>=‘ т. е. примерно половина используемых при модификации внешним произведением. В практике векторных вычислений следует отдавать предпочтение тем схемам матричных алгоритмов, которые интенсивно используют операцию gaxpy, а не модификацию внешним произведением, 1,4.9» Блочные алгоритмы, кэш-память и повторное использование данных Тщательное управление обменами с памятью является ключом к написанию хороших векторизованных программ. Мы проиллюстрировали это выше на приме¬ ре векторных обменов. Сходные наблюдения могут быть сделаны относительно общего случая передвижения данных вверх и вниз по уровням иерархии памяти в ходе вычислений. В качестве конкретного примера рассмотрим, как может повлиять на разработку алгоритма перемножения матриц присутствие кэш-памяти. Напомним (см. § 1.4.5), что кэш-память можно представлять себе как локальную память, расположенную между основной памятью устройствами обработки. См. рис. 1.4.4. Для этой достаточо типичной ситуации мы будем считать, что операнды для векторной операции должны находиться в кэше и обмен данными между кэшем и основной памятью относительно дорогостоящ. Так что если уж какие-то данные попали из основной памяти в кэш, становится очень важным использовать их максимальным образом. Рассмотрим умножение п х и-матриц С = АВ. Предположим, что кэш может вмещать М чисел с плавающей точкой, причем М «п2. Разобьем матрицы В и С на блочные столбцы: В — ,..., BN ], С = [Сj,..., С„ ], а а а а где п = а N. Предположим, что а было выбрано таким образом, что М « п (2а + + 1) » 2n2/N, так что в кэш как раз влезают блочные столбцы матриц В и С, а также столбец матрицы А. Вот процедура матричного умножения, которая добивается многократного использования каждого загружаемого в кэш блочного столбца Ву. foij — 1 :N Загрузить в кэш В} и — 0. fori: = 1:л
54 Гл. 1. Умножение матриц Загрузить в кэш А (:, к) и обновить значение Су end Записать в основную память вычисленный Су. end По сути дела, цикл но к выполняет ориентированное на использование saxpy умножение матриц Су = ABj. Подсчитывая количество Г^ чисел с плавающей точкой, которые при выполнении нашего алгоритма проходят (и в том, и в другом направлении) по каналу «кэш - основная память», получаем: н Г, = I [n{n!N) + пг + n(n/N)] = (2 + N)n2 = 2и2(1 + я2/М). 1 Эта формула явственно демонстрирует преимущества большой кэш-памяти. Теперь мы покажем, что подход, основанный на блочных скалярных произведе¬ ниях, приводит к более эффективному использованию кэш-памяти. Будем рассмат¬ ривать A(Au)t В = (Я;У), С — (Си) как N х N-блочные матрицы с одним и тем же размером блоков а = n/N. Допустим, что /V выбрано таким образом, что За2 й; М, так что в кэш помешаются три блока. Располагая в кэше рабочий массив CL, будем действовать следующим образом: for / — \:N for j = 1:JV CL( 1:a, l:a) — 0 forfc = 1 :N Загрузить в кэш Aik и Bkj. CL = CL + Aik BkJ end Записать CL в основную память на место, отведенное для Си. end end В этой версии количество обменов «кэш-основная память» будет г2 - X £ (®2 + Z з®2) = "2(l +2W) * i=4y=l \ Jk= 1 Поскольку Г1/Г2 & п/^/ЗМ, мы видим, что блочные скалярные произведения имеют решительное преимущество. Наример, для п — 210 и М = 214 наши два метода различаются по количеству обменов «кэш»-основная память» я 4.5 раза. На этом примере мы видим, что наилучшая производительность для компьюте¬ ров, имеющих кэш-память, обычно достигается на блочных алгоритмах. 1.4.10. Резюме Мы продемонстрировали, что эффективность векторно-конвейерных вычислений с матрицами зависит от длины вектора, шага выборки, количества векторных обменов и способности алгоритма многократно использовать один и тот же блок данных. Проведение оптимизации по всем этим параметрам-дело чрезвычайно трудное и отчасти является искусством. В этом разделе мы обозначили основные моменты, на которые следует обращать внимание в векторно-конвейерных вычисле¬ ниях. Конечно, хороший компилятор может выполнить за вас часть работы, но лучше не слишком-то на это полагаться!
1.4. Некоторые аспекты векторно-конвейерных вычислений 55 Задачи 1.4.1. Рассмотрим произведение матриц D = АВС> где ЛеН" * *, Ве1Г * Се R“ * * . Пусть все матрицы хранятся по столбцам и время выполнения операции saxpy длины к с единичным шагом выборки дается формулой /(А) =* (L+ к)р, где L- константа, ц - продолжительность такта. При каких условиях в этой модели выгоднее вычислять D как D =* А (ВС) вместо D = (AB)Ctt Считайте, что все умножения матриц используют gaxpy-алгоритм (это версия ujkr). 1А2. Пусть все матрицы в процедуре matmatjki хранятся по столбцам и время выполнения операции saxpy длины fc с единичным шагом выборки дается формулой t(k) = (L+ Jc)|i, где Ij- константа, р-продолжительность такта. Сколько времени уходит в matmatjki на выпол¬ нение операций saxpy? Адаптируйте matmatjki так, чтобы она эффективно обрабатывала случай верхних треугольных я х л-матриц А и В. Получается ли алгоритм для треугольных матриц в шесть раз быстрее, как предполагает подсчет количества флопов? 1.4.3. Постройте алгоритм вычисления С = АТВА, где А и В-п х л-матрицы, причем В сим¬ метрична. Во всех наиболее глубоко вложенных циклах доступ к массивам должен осуществ¬ ляться с единичным шагом выборки. Замечш! и литература к £ 1.4 Вот два превосходных обзора по векторным вычислениям: Dongarra J.J., Custavson F.G., and Karp A. (1984). •‘Implementing Linear Algebra Algorithms for Dense Matrices on a Vector Pipeline Machine”, SIAM Review 26, 91-112. Ortega J. M, and Voigt R. G. (1985). “Solution of Partial Differential Equations on Vector and Parallel Computers”, SIAM Review 27, 149-240. Весьма подробно рассмотрены матричные вычисления в системах с многоуровневой памятью в статье Gallivan К., Jalby W., Meier U., and Sameh A. H. (1988). “Impact of Hierarchical Memory Systems on Linear Algebra Algorithm Design”, Int. J. Supercomputer Applic. 2, 12-48. Разнообразные модели векторных вычислений предложены в книгах Hockney R. W. and Jcsshope С. It (1988). Parallel Computers 2, Adam Hilger, Bristol and Philadel¬ phia. Schtoaucr W. (I987)i Scientific Computing on Vector Computers, North Holland, Amsterdam. Вот некоторые из многочисленных статей по практическим аспектам векторных вычисле¬ ний: Buzbee B.L. (1986). "A Strategy for Vcctorization”, Parallel Computing 3, 187-191 Dongarra J. and Eisenstat S. (1984). “Squeezing the Most Out of an Algorithm in Cray Fortran” ACM Trans. Math. Soft. 10, 221 230. Dongarra J. and Hinds A. (1979). “Unrolling Loops in Fortran”, Software Practice and Experience 9, 219-229. Gallivan K., Jalby W., and Meier U. (1987). “The Use of BLAS3 in Linear Algebra on a Parallel Pocessor with a Hierarchical Memory”, SIAM J. Sci. and Stat Comp. 8, 1079-1084. Kigstrom B. and Ling P. (1988). “Level 2 and 3 Bios Routines for the IBM 3090 VF/400: Implementation and Experiences”, Report UMINF-154.88, Inst, of Inf. Proc, University of Umei S-90I 87 Umed, Sweden. Madsen N., Rodcrigue G., and Karush J. (1976). “Matrix Multiplication by Diagonals on a Vector Parallel Processor”, Information Processing Letters 5, 41-45.
Глава 2 Матричный анализ Вывод алгоритмов для матричных вычислений и их анализ требуют хорошего знакомства с некоторыми вопросами линейной алгебры. Обзор ряда основных понятий линейной алгебры дается в § 2.1. В § 2.2 и § 2.3 рассмотрены векторные и матричные нормы. В § 2.4 мы строим модель арифметики с конечной точностью и знакомим читателя с методами матричного анализа, потребными для количест¬ венной оценки влияния ошибок округлейия. Следующие два раздела посвящены ортогональности, которая играет в матрич¬ ных вычислениях заметную роль. Две разновидности ортогональных приведе¬ ний-сингулярное разложение и CS-разложение- дадут нам необходимую теорети¬ ческую основу для введения важных понятий ранга и расстояния между под¬ пространствами. Эти вопросы излагаются в § 2.5 и § 2.6. Наконец, в последнем разделе мы изучаем поведение решения линейной системы Ах = Ъ при возмущении матрицы А и вектора Ъ. При этом вводится важное понятие числа обусловленности матрицы. 2.1. Основные сведения из линейной алгебры Этот раздел представляет собой беглый обзор линейной алгебры. Читателям, которые пожелают ознакомиться с более подробным изложением предмета, мы рекомендуем обратиться к ссылкам в конце этого раздела. 2.1.1. Линейная независимость, подпространства, базис и размерность Набор векторов {at,..., ап} из Rm линейно независим, если из i О/Д/ = О следует а(1 :п) = 0. В противном случае существует равная нулю нетривиальная линейная комбинация векторов ai9 и говорят, что набор {fli, ..., ап} линейно зависим. Подпространство Кт-это такое его подмножество, которое также является линейным пространством. Если заданы векторы а19 а„еRm, то множество всевозможных линейных комбинаций этих векторов является линейным простран¬ ством, называемым линейной оболочкой {а1У ..., ап}: Если {а19 ..., ап}~линейно независимый набор векторов и ^espan^, ..., ап}9 то b единственным образом представляется в виде линейной комбинации векторов ам. Если Sl9 ..., Sk - подпространства в Rw, то их сумма определяется как под¬ пространство S = {ах + а2 + ... + ak: at^Si9 / = 1 :/с}. Говорят, что S является прямой суммой, если каждый вектор veS имеет единственное представление v = ау + + ... + як, где а{е. В этом случае мы пишем S — St ©...©Sk. Пересечение подпространств S, также является линейным подпространством: S = St П S2 Л ... П Sk.
2.1. Основные сведения из линейной алгебры 57 Подмножество {а; а,к} называется максимальным линейно независимым подмножеством {cj, ..., ап}, если оно линейно независимо и не является собствен¬ ным подмножеством никакого другого линейно независимого подмножества {а,,..., ап}. Если {at , ..., at }-максимальное линейно независимое подмножество, то span {«j,..., а„} = span {af ,..., aik\ и {а^,..., aik} является базисом для span ,..., ап}. Если SeRm-подпространство, то можно найти базисные вектора а19 ..., akeS так, что S = span{a1, ak}. Все базисы подпространства S имеют одинаковое количество элементов. Это число называется размерностью S и обозначается dim(S). 2.1.2. Область значений, ядро и ранг матрицы Со всякой т х m-матрицей А связаны два важных подпространства. Область значений матрицы А определяется так: range {A) = {yeRm: у — Ах для некоторого jceR"}. Ядро (iнуль-пространство) матрицы А задается следующим образом: null (Л) = {xeRn: Ах — 0}. Если А = [at яи] есть разбиение по столбцам, то range(/4) = span{a,, aj. Ранг матрицы А определяется следующим образом: rank (А) = dim (range (А)). Можно показать, что rank (Л) = гапк(/4т), и, таким образом, ранг матрицы равен максимальному числу линейно независимых строк или столбцов. Для любой матрицы /4eRm*" мы имеем dim (null (Л)) + rank (Л) = п. 2.1.3. Обратная матрица Единичная п х л-матрица /п задается следующим блочно-столбцовым представ¬ лением: [^i * — •> ел1 где ek-k-й канонический вектор ek= (0,...,0, 1, 0,...,0)г - ' У ' V У ' к—1 п—к Конические векторы часто появляются в матричном анализе, и в тех случаях, когда их размерность не ясна из контекста, мы используем верхние индексы, например еin) е R". Если матрицы А и I из R"x" удовлетворяют равенству АХ = /, то X является обратной к матрице А и для нее используется обозначение А~1. Если А~1 существует, то матрица А называется невырожденной, в противном случае А называ¬ ется вырожденной. Некоторые свойства обратной матрицы играют важную роль в матричных вычислениях. Обратная к произведению матрица является произведением обратных к сомножителям, взятым в обратном порядке: (.АВ)~1 = В~1А~1. (2.1.1) Транспонирование обратной матрицы-это то же самое, что обращение транспо-
58 Гл. 2. Матричный анализ кированной: (А~1)Т = (АТ)1 =А~Т. (2.1.2) Тождество В"1 = А"1 — В~х (В — А) А~1 (2.1.3) показывает, как изменяется обратная матрица при изменении самой матрицы. Формула Шермана-Моррисона-Вудбери дает удобное представление для матри¬ цы, обратной к (А + VVT\ где AeR"*", а V и V-n х /с-матрицы: (Л + UVT)= -A-'Ud + VTA-'U)-lVTA-1. (2.1.4) Таким образом, А-ранговая модификация матрицы приводит к fc-ранговой модифи¬ кации ее обратной. В (2.1.4) мы предполагаем, что и А, и (I A- VTA~1U) не¬ вырожденные. Каждый из приведенных фактов можно легко проверить, просто показав, что выписанная матрица и в самом деле является обратной. Вот, например, как проверяется (2.1.3): В(А~Х - В'1 (В — A)A~l) — BA~L — (В — А)=/, 11.4 Детерминант Если А = [а)еRlxl, то ее детерминант дается равенством det (Л) = а. Детерми¬ нант п х л-матрицы определяется через детерминанты (л — 1) х (и - 1)-матриц. Именно, для A е ft**" имеем: det(А) = ii-iy+'eu&tiAis)* где Aij-эгто (л — 1) х (л — 1)-матрица, получаемая из А вычеркиванием первой строки и >го столбца. Вот несколько полезных свойств детерминанта: det {АВ) —det (Л) det (В), А, ВеЕяж", det(^r) = det (Л), ЛеИ"*", det(Ci4) = cndet(A)} АеR"*", сеR, det (А) Ф 0 о А невырожденная, AeRn IDXfl 2.1.5. Дифференцирование Пусть а-скалярная величина и А(а)-тп х л-матрица с элементами ду(а). Если для всех i и j функция а^( а) дифференцируема по а, то под А (а) мы подразумеваем матрицу Дифференцирование матрицы, зависящей от параметра, оказывается удобным способом исследования чувствительности различных матричных задач. Задача 2.1.1. Покажите, что если матрица А е К* х " имеет раит р, то существуют такие матрицы XeRm*p и УеН”хр, что A = XYT, где ranktX-) - rank(Y) = p. 2.1.2, Пусть /4(a)eR" х г и B(a)eRr * "-матрицы, элементы которых являются дифференци-
2.2. Векторные нормы 59 руемыми функциями скаляра а. Покажите, что da Lda J L da 2*1,3, Пусть элементы xn-дифференцируемые функции скаляра а. В предположении нго А (с) всегда невырожденная, покажите, что Замечания н лггература к § 2.1 Среди множества вводных курсов линейной алгебры только некоторые обеспечивают начи¬ нающего изучать матричные вычисления необходимым ему материалом. Особенно полезными мы считаем следующие книги: Halmos P.R. (1958), Finite Dimensional Vector Spaces, 2nd ed„ Van Nostrand-Rrinhold, Princeton. [Имеется русский перевод: ХалмошП.Р. Конечномерные векторные пространства.- М.: Фиэматгиз, I960.] Leon S J. (1980). Linear Algebra with Applications. Macmillan, New York. Noble B. and Daniel J. W. (1977). Applied Linear Algebra, Prentice-Hall, Englewood CliiTs. Strang G. (1988). Linear Algebra and Its Applications, 3rd edition, Harcourt, Brace, Jovanovich, San Diego. Более энциклопедическое изложение можно найти в Bellman R. (1970). Introduction to Matrix Analysis, 2nd ed., McGraw-Hill, New York. [Имеется русский перевод первого издания: Беллман Р. Введение в теорию матриц.-М.: Наука, 1969.] Gantmacher F. R. (1959). The Theory of Matrices, vols. 1 and 2, Chelsea, New York. [Имеется русский оригинал: Гантмахер Ф. P. Теория матриц. 4 изд.-М.: Наука, 1989.] Householder A.S. (1964). The Theory of Matrices in Numerical Analysis, Ginn (Blaisdell), Boston. Стюарт (1MC, гл. 1) также даст великолепный обзор матричной алгебры. 2,2. Векторные нормы Нормы в векторных пространствах служат той же цели, что и взятие модуля на вещественной прямой: они позволяют измерять расстояния. Точнее, R" вместе с введенной на R" нормой определяет метрическое пространство. Поэтому при работе с векторами и векторнозначными функциями мы будем располагать привыч¬ ными понятиями окрестности, открытого множества, сходимости и непрерывности. 2.2.1. Определения Норма вектора на Ря-это функция/: R" -► R> удовлетворяющая следующим свойствам: Мы будем обозначать такие функции, окружая аргумент вертикальными двойными чертами: / (х) — ||х||. Чтобы отличить одну норму от другой, мы будем использовать индексы при двойной черте. 2.1.4. Пусть ЛеН" *", £eR" н отображение у: RJ,-^R" задается формулой у (я) = -хТАх - 2 — хтЬ. Покажите, что градиент у выражается как Vy (х) = ”(^Т + ^)х — Ь. /(*) > 0, f ix + >>) «/(*) +/(>'), /(аде) = |а|/(х), хе1Г (/(д) = 0<*-х = 0), х, jeR", aefi, xeR".
60 Гл. 2. Матричный анализ Полезный класс векторных норм-это р-нормы, определяемые как II^IU = (| Г -I- - - - + |^СЯ Г)1/,7> р>1- (2-2.1) Наиболее важными из р-норм являются 1, 2 и оо-нормы: ll*lll = 1*11 + ••• + \хя\, Н*Н2 = (1*х12 + ••• + l*J2)5 = (*T*F. \\х\\со= max |х,|. 1 < I < п Единичным по отношению к норме ||*|| называется вектор х, удовлетворяющий равенству ||лг|| = 1. 2.2.2. Некоторые свойства векторных норм Классический результат о р-нормах - неравенство Гёльдера: 1*ту| < ll*UI>’ll,, <2-2-2> Очень важным частным случаем этого неравенства является неравенство Коши- Шварца'. \хТу\ ^ ||х||2|Ы|2. (2.2.3) Все нормы в R" эквивалентны, т.е. для двух норм ||*||в и ||*||р в R" существуют положительные константы с^ и с2, такие, что ‘•JWIa < 11*11, < 11*11. (2.2.4) для всех xeR". Например, при xeR" Н*Н2 <IWIx<nAiI*II2. (2.2.5) 11*11® < 11*112 < V''11*11®, (2.2.6) 11*11» < ll*llx <«11*11®. (2.2.7) 2.2.3. Абсолютная н относительная погрешности Пусть xeR" есть аппроксимация к xeR". Для заданной векторной нормы ||*|| мы будем говорить, что = II-* - *11 есть абсолютная погрешность а при х Ф 0 формула _ II* - *11 11*11 задает относительную погрешность Для оо-нормы относительная погрешность позволяет сформулировать утверждение о количестве верных значащих цифр в £. В частности, если ll*IL то максимальная компонента вектора Jc имеет примерно р верных значащих цифр. Пример 2.2.1. Если х = (1.2340.05674)т , Jc = (1.235 0.05128)т , то || Jc - х \\т/1| х || в а 0.0043 « % 10 3. Обратите внимание, что в верны примерно три значащие цифры, в то время как в £2 только одна.
23. Матричные нормы 61 2.2.4. Сходимость Будем говорить, что последовательность {х{к)} w-векторов сходится к вектору х, если lim \\xik) - х|| = 0. fc “* 00 Отметим, что вследствие (2.2.4) сходимость в a-норме влечет сходимость в Р-норме, и наоборот. Задачи 2.2.1. Покажите, что при хе Rn lim || х || р = \\х\\ . Р 2.2.2. Докажите неравенство Коши Шварца (2.2.3), рассмотрев неравенство 0 ^ {ах + Ьу)Т х х (сие + by) для подходящих чисел а и Ь. 2.2.3. Проверьте, что || ■ || i, || ■ || 2 и || * || (Х являются векторными нормами. 2.2.4. Проверьте (2.2.5) (2.2.7). Когда в каждом из этих неравенств достигается равенство? 2.2.5. Покажите, что в тогда и только тогда, когда х{* -> хк для к — I :п. 2.2.6. Покажите, что любая векторная норма в R" равномерно непрерывна, проверив нера¬ венство IIIЛ II - II у III < IIX - у II. 2.2.7. Пусть || • || векторная норма в Rm и 4eR'n*V Покажите, что если гапк(Л) = л, то II х || А = || Ах || - векторная норма в R". 2.2.8. Пусть х и у векторы из R". Определим функцию \у: R -> R равенством у(а) = || х — ау ||. Покажите, что минимум этой функции достигается при а = хту/уту. 2.2.9. (а) Проверьте, что || х || р = (| jc, |р + ... + \x„\p)lip есть векторная норма в С". (Ь) Пока¬ жите, что при хеС* имеем || х || р ^ с( || Re(.v) || р + || Im(jc) || р). (с) Найдите такую константу с„, что с„{ II Re(jc) II 2 + II Im(л)|| 11*11 2 для всех хеС". Замечания и литература к § 2.2 Очень хорошее обсуждение векторных норм можно найти у Стьюарта (IMC). См. также Householder A.S. (1974). The Theory of Matrices in Numerical Analysis, Dover Publications, New York. PryceJ. D. (1984). "A New Measure of Relative Error for Vectors”, SIAM J. Numer. Anal. 21, 202-221. 2.3. Матричные нормы Матричные нормы часто требуются при анализе матричных алгоритмов. Напри¬ мер, программа решения систем линейных уравнений может давать некачественный результат, если матрица коэффициентов «почти вырожденная». Для количественной характеристики близости к вырожденности нам нужно уметь измерять расстояния в пространстве матриц. Такую возможность дают матричные нормы. 2.3.1. Определения Поскольку Rmxn изоморфно Кти, определение матричной нормы должно быть эквивалентно определению векторной нормы. Именно,/: Rmxn R является матрич¬ ной нормой, если f(A)> 0, AeRm*a (f(A) = 0oA=0), f {А + В) <f(A) +/(5), A, BeR"*"f f{aA) = \a\f(A% aeR, AeRmx\
62 Гл. 2. Матричный анализ Мы будем обозначать матричные нормы так же, как и векторные нормы: двойной чертой, добавляя, если нужно, индексы, т.е. \\А\\ = /{А). Чаще всего в вычислительной линейной алгебре используются норма Фро- бениуса 1мнг=/£ £ ы2 (2-зл> и *i=lj=l и /ьнормы IM|lp = suPnj3f£- (2.3.2) х*0 ll*llp Заметим, что матричные р-нормы определяются через векторные /ьнормы, рассмотренные в предыдущем разделе. Проверку того, что (2.3.1) и (2.3.2) действи¬ тельно нормы, мы оставляем читателю в качестве упражнения. Ясно, что \\Л\\р есть р-норма наибольшего вектора, полученного действием А на векторы единичной (в р-норме) длины: \А ||, = sup х #0 ^iTF “ шах ll*Uv 11*11, »i р Важно понимать, что (2.3.1) и (2.3.2) определяют целые семейства норм: 2-норма в К3х2-это другая функция, чем 2-норма в R5*6. Таким образом, легко проверяе¬ мое неравенство UB\\p < \\А\\р\\В\\р, АеR"BeR*** (2.3.3) в действительности описывает соотношение между тремя различными нормами. Формально мы будем говорить, что нормы/1э/2 и/3 в пространствах RMX*, R*"x\ R"x* взаимно согласованы, если для всех y4eRmx", BeR"*9 мы имеем /Х(^Я)< </2И)/з(Л Не все матричные нормы удовлетворяют мультипликативному свойству \\АВ\\<\\А\\\\В\\. (2.3.4) Например, если |(Л||Д = тах|яу| и А -ч: !]■ то ||ЛЯ||Д > ||*4||Д||Я||Д. Но в основном мы будем работать с нормами, удовлетво¬ ряющими (2.3.4). /ъНормы обладают тем важным свойством, что для каждой матрицы j4eRm *л и вектора xeRn мы имеем \\Ах\\р ^ |M|L||x||p. Более общо, для любых векторных норм || ||а в R" и ||-||э в Rm мы имеем \\АхЦ < МН^Нх^, где матричная норма || А\\^ определяется как M|U=sup¥?rl!- (2-3-5) ^ хФО Н^11а Будем говорить, что ||*||^ подчинена векторным нормам ||*||а и || ||р. Поскольку множество {xeRM: ||х||а = 1} компактно и замкнуто, в силу непрерывности нормы ||*||р получаем, что \\А\\ = шах |Их||р = |М**|| (2.3.6) р IWU*1 для некоторого с единичной а-нормой.
2.3. Матричные нормы 63 2.3.2. Некоторые свойства матричных норм Норма Фробениуса и /ьнормы (в особенности при р = 1,2, оо) удовлетворяют определенным неравенствам, часто используемым в анализе матричных вычисле¬ ний. Для ЛеКтхя имеем: IMll2<IMIIf«v/"IMIl2> (2.3.7) тах|ау| < \\А\\г < ^/тптах\аи\, (2.3.8) и и IMIli = max £ |вц|, (2.3.9) 1 |МЩ= max (2.3.10) 1 ^ I ^Я1 J — 1 (2.3.11) v« —7=JMIIi < IMIli < \/«IMIIi. (2.3.12) vm Доказательства нетрудны и оставляются в качестве упражнения. Последовательность сходится, если lim ||>4W — А\\ = 0. Выбор нор- к~* оо мы не имеет значения, поскольку все нормы в Втхл эквивалентны. 2,3,3. Матричная 2-норма Прекрасным качеством матричных 1-нормы и оо-нормы является то, что их легко вычислить, используя (2;3.9) и (2.3.10). Значительно сложнее оказывается характеристика 2-нормы. Теорема 2.3,1. Если AeRmyn, то существует единичный в 2-норме п-вектор z, такой, что ATAz = p2z, где р = \\А\\2. Доказательство. Пусть геН"-такой единичный вектор, что \\Az\\2 = МЦ2- По¬ скольку z доставляет максимум функции 1 \\Ax\\l 1 хгАТАх 2 ||х||| 2 хтх ’ то должно выполняться Уд (х) = 0, где Уд - градиент д. Утомительное дифференци¬ рование показывает, что для i = 1: п -|^ = [(^T2) £ (АтА)0г} - (zTATAz)zJ/(zTz)2. В векторных обозначениях это означает, что ATAz = (zTATAz)z. Утверждение теоремы следует отсюда, если положить р = \\Аг\\г. □ Из теоремы вытекает, что \\А\\\ является нулем многочленар{Х) — det(АтА — XI). Более конкретно, 2-норма матрицы А равна квадратному корню из наибольшего собственного значения матрицы А1'А. О собственных значениях мы будем говорить подробно в гл. 7 и 8, а пока мы ограничиваемся замечанием, что вычисление 2-нормы носит итеративный характер и определенно сложнее, чем вычисление 1-нормы или х-нормы. К счастью, если целью является лишь получение оценки
64 Га. 2. Матричный анализ \\Л\\2 по порядку величины, можно использовать (2.3.7), (2.3.11) или (2.3.12). В качестве еще одного примера «анализа норм» приведем удобный для оценки 2-норм результат. Следствие 2.3.2. Для ЛеНтхп имеем iMii2 < УнЖмй- Доказательство. Если вектор гФ 0 таков, что ATAz = p2z, где ц = ||Л||2, то р21И1, = \\ATAz\\v < IMII, lUlU - INIUMIIjzlK.n 2.3.4. Возмущения и обратная матрица Нормы часто используются для количественной оценки влияния возмущений, а также для доказательства того, что последовательность матриц сходится к ука¬ занному пределу. Для иллюстрации этих применений норм дадим количественную оценку возмущения А~1 как функцию возмущения А. Лемма 2.3.3. Пусть FeRnxn и ||-|| -норма, обладающая мультипликативным свойст¬ вом (2.3.4). Если ||F|| < 1, то матрица I-F невырожденна и (1-F)-* = £ Fk, k = О причем 1 1 -НЛ1 Доказательство. Допустим, что 7-F вырождена. Тогда для некоторого ненулевого вектора дс имеем {l-F)x = 0. Но тогда из ||х|| = ||Fx|| вытекает, что ||F|| ^ 1, в противоречие с условием леммы. Значит, I-F невырожденна. Чтобы найти выражение для обратной к ней, рассмотрим тождество (£f>) \k=o / (7-F) = 7-F* Поскольку ||F|| < 1, имеем lim F* = 0, так как ||F*|| < ||F||\ Таким образом, fc-oo (lim £ F*)(/-F) = Отсюда следует, что (I-F) 1 = lim £ F*. Теперь легко показать, что N-x JSc = О ii(/-f)_ih< z hfii*=. !,r„-□ k = о 1 — II * II Заметим, что из леммы следует также ||(/-/ГА — /II < ||F||/(1 — ||F||). Таким обра¬ зом, для г « 1 возмущения порядка О (е) в матрице / вызывают возмущения порядка О (е) в обратной матрице. Распространим этот результат на матрицы общего вида. Теорема 2.3.4. Если А-невырожденная матрица и \\А~ lE\\ = г < 1, то матрица (А + £) невырожденна и ||(>4 -I- Е)~1 — А~11| < ||F||\\А~11|2/(1 — г). Доказательство. Так как А невырожденна, А + Е = A(7-F), где F=—A~lE. Поскольку ||F|| = г < 1, из леммы 2.3.3 следует, что 7-F невырожденна и ||(7-F)_11| < 1/(1 - г). Но (А + E)~l = (I-F)~lA-\ так что
2.4. Матричные вычисления с конечной точностью 65 Из (2.1.3) мы получаем, что (А + Е) 1—А 1 — —А 1 Е(А + Е) 1 и, переходя к нормам, находим: 2.3.1. Докажите, что |МВ || р < || А || р || В || „, где 1 < р ^ ос. 2.3.2. Пусть В -любая подматрица А. Покажите, что || В || р ^ \\ А || р. 2.3.3. Покажите, что если D = diag^ цА)еRmх " , где k = min {туп}, то || D ||р = max| g; |. 2.3.4. Проверьте (2.3.7) и (2.3.8) 2.3.5. Проверьте (2.3.9) и (2.3.10). 2.3.6. Проверьте (2.3.11) и (2.3.12). 2.3.7. Покажите, что если 0 ф seR" и £eR"x", то 2.3.8. Пусть weRm и ueR". Покажите, что если E = uvr4 то || £||г = || Е\\2 — || и\\21| г||2 H||£||e<||K|LI|p|li. 2.3.9. Пусть ЛеВ"1 * ", >>eRm, 0 ф seR". Покажите, что матрица Е— (у — As)sT/sTs имеет наименьшую 2-норму среди всех т х л-матриц, удовлетворяющих (А + E)s = у. Замечания и литература к § 2.3 Полный обзор норм имеется у Стьюарта (IMC, pp. 160-184). Вот еще несколько ссылок: Bauer F. L. and Fike С.Т. (I960). “Norms and Exclusion Theorems”, Numer. Math. 2, 137-144. Householder A, S. (1974). The Theory of Matrices in Numerical Analysis, Dover Publications, New York. Mirsky L. (1960). “Symmetric Gauge Functions and Unitarily. Invariant Norms”, Quart. J. Math. 11, 50-59. Ortega J. M. (1972). Numerical Analysis: A Second Course, Academic Press, New York. 2.4. Матричные вычисления с конечной точностью Ошибки округления-это одна из тех вещей, которые делают матричные вычис¬ ления нетривиальной и интересной областью. В этом разделе мы построим модель арифметики с плавающей точкой и применим ее для получения оценок ошибок при вычислении с плавающей точкой скалярных произведений, операций saxpy, произве¬ дений матрицы на вектор и матрицы на матрицу. 2.4.1. Числа с плавающей точкой При выполнении вычислений на компьютере на результат каждой арифмети¬ ческой операции в общем случае влияет ошибка округления. Возникновение этой ошибки обусловлено тем, что аппаратура способна представлять лишь конечное подмножество множества вещественных чисел. Мы будем обозначать это под¬ множество буквой F и называть его элементы числами с плавающей точкой. Следуя соглашениям, принятым в книге Форсайта, Малькольма и Молера (1977, pp. 10-29), будем характеризовать систему чисел с плавающей точкой для каждой конкретной \\А~1II2 II £11 НИ + Е)-1 - А'1 |К \\А~1 Ц||£|| НИ + £)-1 |К , □ 1 — Г Задачи 3 63
66 Гл. 2. Матричный анализ -Z Ч -0.5 О 0.5 1 2 Рис. 2.4.1. Образец системы чисел с плавающей точкой. машины четырьмя целочисленными параметрами: базой р, точностью t и интерва¬ лом значений показателя [L, 17]. Конкретно, F содержит все числа / вида /= ±dxd2...dt х ре, 0<^<р, ф 0, L^e^U, а также число нуль. Обратим внимание, что для каждого ненулевого fe F выполняется т < |/| < А/, где т = pL_l, М = ри(1 - р г)* (2.4.1) Приведем пример. Для р = 2, / = 3, L = О, U = 2 элементы множества F показаны штрихами на рис. 2.4.1. Заметьте, что числа с плавающей точкой отстоят друг от друга на неравные промежутки по оси. Типичным значением для четверки (Р, /, L, U) могло бы быть (2, 56, —64, 64). 2.4.2. Модель арифметики с плавающей точкой Чтобы делать общие утверждения о влиянии ошибок округления на данный алгоритм, необходимо иметь на множестве F модель компьютерной арифметики. Для ее построения определим множество G как G = {xeR: т < |*| ^ М) и {0} (2.4.2) и оператор ft: G -» F как ближайшее к х число сеF, если используется арифметика с округлением. При наличии двух таких чисел выбирается то из них, которое отстоит дальше от нуля. ближайшее к х число сеF, удовлетворяющее \с\ ^ \х\, если используется арифметика с отбрасыванием разрядов. Пусть а и А-любые два числа с плавающей точкой и ор означает любую из четырех арифметических операций +, —, х, Если \а op b\$G, то происходит арифмети¬ ческая ошибка, являющаяся либо переполнением (\а op b\ > М), либо обращением в машинный нуль (0 < \а ор Ь\ < т). Если |а ор Ь\е (7, то в нашей модели арифметики с плавающей точкой будем считать, что результатом выполнения (а ор Ь) на компьютере является ft (а ор Ь). Арифметическая ошибка обычно влечет за собой остановку программы, хотя некоторые машины и компиляторы продолжают счет при нехватке точности, полагая результат нулем. Обработка арифметических ошибок-это интересный и важный вопрос (см. Demmel (1984)). Если арифметической ошибки не происходит, то важно ответить на вопрос о точности fl(a ор Ь). Можно показать, что оператор ft удовлетворяет соотношению fl(x) = x( 1+6), |еКи, (2.4.3) где и-единичная ошибка округления, определяемая как
2.4. Матричные вычисления с конечной точностью 67 J&- I R1*' u _ ^ ДЛЯ арифметики с округлением, (2.4.4) Р 1 для арифметики с отбрасыванием разрядов. Следовательно, //(а ор Ь) = (а op 6)(1 -I- е), где |е| и. Тогда оценка |//(а ор 6) - (а ор 6)| < и, я ор Ь Ф 0 (2.4.5) |а ор Ь\ показывает, что отдельные арифметические операции выполняются с малой относи¬ тельной погрешностью. Важно осознавать, однако, что это уже необязательно будет так для последовательности операций. Пример 2.4.1. При р = 10, f ~ 3 используется арифметика с плавающей точкой с отбрасыва¬ нием разрядов; можно показать, что//[//(10" 3 + 1) — 1] = 0, что влечет за собой относитель¬ ную ошибку, равную I. С другой стороны, точный ответ дается выражением //[//(10~3 + 1) + +fl(\ — 1)] = 10"3. Отсюда видно, что арифметика с плавающей точкой не всегда ассоциа¬ тивна. 2.4.3. Потеря точности Еще один важный аспект арифметики с конечной точностью-феномен ко- тастрофической потери точности. Грубо говоря, этот термин относится к потере многих верных значащих цифр при получении малых чисел в результате сложе¬ ния/вычитания больших чисел. Хорошо известный пример, описанный в книге Форсайта, Малькольма и Молера (1977, pp. 14-16),- это вычисление е“а, а > 0, через ряд Тейлора. При таком методе ошибка округления примерно равна и, умножен¬ ному на наибольшую частичную сумму. Для больших значений а эта ошибка может даже превысить верное значение экспоненты, и ответ не будет содержать верных цифр, сколько бы членов ряда ни складывать. С другой стороны, если сложить достаточно членов в ряде Тейлора для е° и обратить результат, можно получить оценку для е~а с полной точностью. 2.4.4. Обозначение абсолютной величины Прежде чем переходить к анализу ошибок округления в основных вычислениях с матрицами, мы введем некоторые полезные обозначения. Пусть j4eRmx" и мы желаем дать количественную оценку ошибкам, возникающим при представлении этой матрицы числами с плавающей точкой. Обозначая через fl(A) реально хранимую в компьютере матрицу, мы видим, что ит\ =Л(аи) = atJ( 1 + еи\ |E|j| ^ u (2.4.6) для всех i и /. Можно дать более удобное представление для этого факта, если принять следующие два соглашения. Пусть А и В суть т х n-матрицы. Тогда В = \А\=>Ь1} = \аи\, i = 1 :m,/= l:w, В ^ А => by ^ аф i = 1: m, / = 1: п. С учетом этих обозначений мы видим, что (2.4.6) принимает вид: \fl(A)-A\^u\A\. Подобное соотношение легко можно превратить в неравенство для норм, например, \\fl(A) — A\\t < uII^Hj. Однако для количественной оценки ошибок округления, возникающих при манипуляциях с матрицами, обозначение абсолютной величины может быть намного более информативным, поскольку сообщает нечто о каждом (/, м элементе, з*
68 Гл. 2. Матричный анализ 2.4.5. Ошибки округления в скалярных произведениях Мы начинаем изучать матричные вычисления с конечной точностью с рассмот¬ рения ошибок округления, возникающих в стандартном алгоритме вычисления скалярного произведения: л = О for к = 1: п S = s + Хкук (2.4.7) end Здесь jc и у суть п х 1-векторы, составленные из чисел с плавающей точкой. Пытаясь дать количественную оценку возникающим в этом алгоритме ошибкам округления, мы немедленно сталкиваемся с проблемой обозначений: как различить вычисленные и точные величины? В тех случаях, когда ясно, какие именно вычисле¬ ния производятся, мы будем использовать оператор//( ) для обозначения вычислен¬ ных величин. Так,//(л:ту) означает реально вычисленный в (2.4.7) результат. Оценим | fl(xTy) - (хт v)|. Если •'г =/'( I **>'Д \к=1 / то .5t = + 81), где |6,| «S и и для р = 2:п •чр =//(-Vi +Л(хрУр)) = = (-V1 + W1 + МП + М IM IsI < " (2.4.8) После несложных преобразований получаем, что fl(xTy) = = X + УкХ к- I где (1+7*> = 0+8*)П(1+е,) j-jt при договоренности, что б, = 0. Итак, \Л(хТУ) - (хту)\ < х IXtyk 11* |. (2.4.9) 1 Для дальнейшего необходимо оценить величины |у*| через и. На этом пути полезен следующий результат. я Лемма 2.4.1. Если (1 + а) = П (1 + ак), где |afc| ^ и и пи ^ 0.01, то |а| ^ 1.01/ш, к= I Доказательство. См. Форсайт и Молер (SLE, р. 92). □ Применяя этот результат к (2.4.9) при «разумном» предположении ли ^ 0.01, получаем \fl(xTy) -(хТу)\ <L0\nu\x\T\yl (2.4.10) Обратите внимание, что если \хту \ « \х\т\у\, то относительная погрешность fl(xTy) может уже не быть маленькой.
2.4. Матричные вычисления с конечной точностью 69 2.4.6. Альтернативные методы количественной оценки ошибок Более простой, хотя менее точный, способ оценки а в лемме 2.4.1 дается неравенством |а| < ли + О (и2). При этом мы имеем | fl(xTy) - (хг>’)| < пи Мты + о (и2). (2.4.11) По-другому этот же результат можно выразить как |Л(хТу) - (**>)| < у(п)аИ1'|^| (2.4.12) или как | fl(xTy) - (хт>>)| < cwu|_v|T|_y|, (2.4.13) где в (2.4.12) у (л)-«не очень быстро растущая» функция л, а с в (2.4.13)-константа порядка 1. Мы не будем отдавать предпочтение ни одному из показанных в (2.4.10) -(2.4.13) методов оценки ошибок. Это избавляет нас от необходимости приведения имею¬ щихся в литературе результатов по ошибкам округления к фиксированному форма¬ ту. Более того, излишнее внимание к деталям отдельных оценок не согласуется с «философией» анализа ошибок. Как пишет Уилкинсон (1971, р. 567): «Все еще существует тенденция придавать слишком большое значение точным оценкам ошибок, полученным путем априорного анализа. По моему мнению, получаемая в этом процессе оценка обычно менее всего важна сама по себе. Основная цель подобного анализа - выявление в алгоритме потенциальных неустойчивостей (если они есть), с надеждой на то, что добытые подобным образом знания могут привести к созданию улучшенных алгоритмов. Сама оценка обычно слабее, чем она могла бы быть, в силу необходимости придержи¬ ваться разумных пределов детализации, а также ввиду ограничений, налагаемых представлением ошибок в терминах матричных норм. Априорные оценки-это в общем случае не те величины, которые стоит использовать на практике. Для практического определения ошибок, как правило, следует использовать какую- либо разновидность апостериорного анализа, что дает все преимущества учета статистического распределения ошибок, а также других специальных свойств матрицы, как, например, разреженности». Именно по этим причинам у анализа ошибок округления своя специфика, отли¬ чающая его от «чистого матанализа». 2.4,7. Вычисление скалярных произведений с накоплением В некоторых компьютерах предусматривается вычисление скалярных произведе¬ ний с накоплением в двойной точности. Это означает, что если х и ^-векторы, составленные из чисел с плавающей точкой с мантиссой длины /, то текущее значение суммы s из (2.4.7) накапливается в регистре с мантиссой длины 2/. Поскольку произведение двух чисел с мантиссой длины / точно укладывается в переменную двойной точности, то ошибка округления возникает лишь в тот момент, когда s записывается в ячейку памяти с одинарной точностью. В этой ситуации обычно можно утверждать, что вычисленное скалярное произведение имеет хорошую оценку относительной погрешности т. е. fl(xTy) = хТу(1 +6), где |8| л и. Таким образом, способность вычислять скалярные произведения с накопле¬ нием очень привлекательна для вычислений с матрицами.
70 Гл. 2. Матричный анализ 2.4.8. Ошибки округления в других основных матричных вычислениях Легко показать, что если А и В-матрицы из чисел с плавающей точкой и а-некоторое число с плавающей точкой, то /ЦаА) = а А+ Е, | Е\ ^ и \аА | (2.4.14) и fl(A + В) = (А + В) + £, |£| ^ и\А + В\. (2.4.15) Как следствие этих двух последних результатов легко получить, что вычисленные значения saxpy и модификации внешним произведением удовлетворяют соотноше¬ ниям //(ах + у) = сис + у + z, |zl< и(2 |а*| + у) + 0(и2), (2.4.16) fi(C + uvT) = С + uvT + £, |£| < и(|С| + 21uvT|) + 0(и2). (2.4.17) Используя (2.4.10), легко показать, что умножение двух матриц А и В с плавающей точкой, основанное на использовании скалярных произведений, удовлетворяет fl(AB) = АВ + Еу \Е\ ^ ли\А\\В\ + 0(и2). (2.4.18) Этот же результат остается в силе при использовании процедуры gaxpy или модификации внешним произведением. Обратим внимание, что матричное умноже¬ ние необязательно дает малую относительную погрешность, поскольку \АВ\ может быть гораздо меньше, чем Н(|2?|. Например, Г1 ПГ 1 0] _ Г0.01 0] Lo 0JL —0.99 0J L 0 0J- Из полученных результатов по ошибкам можно легко извлечь оценки в терминах норм. При рассмотрении 1-нормы в матричном умножении с плавающей точкой легко показать, используя (2.4.18), что W(AB) - АВ\\, < nu\\A\U ЦЛЦ, + О (и2). (2.4.19) 2.4.9. Прямой и обратный анализ ошибок Каждая из приведенных выше оценок ошибок округления получена путем прямого анализа ошибок. Альтернативный способ характеристики возникающих в алгоритме ошибок округления дает методика, называемая обратным анализом ошибок. В ней ошибки округления привязываются не к решению задачи, а к ее данным. Для иллюстрации рассмотрим умножение треугольных матриц при п = 2. Можно показать, что л/jm Г°и*и<1+е1> ап*120 + е2) + о12&,2<1 +е3)(1 +е*Л ШВ>~1 0 .„»„<!+«,) J’ где |е,| < и для /=1:5. Однако, если мы положим ^ Га11 «12 0 +ез)(1 + «*)] L 0 «22 0 ^j) J Й_Г*11(1 + Е1) 612(1 +е2)(1 +е4Л L 0 Ь12 J' то легко проверить, что fl(AB) = АЁ. Более того,
2.4. Матричные вычисления с конечной точностью 71 ЛшА + Е, |£| = 2иИ| + 0(и2), 6 = В + F, |F| < 2u|2?| + 0(u2). Иными словами, вычисленное произведение есть точное произведение слегка возму¬ щенных матриц А и В. 2.4.10* Ошибки округления в алгоритме Штрассена В § 1.3.8 мы привели нетрадиционную процедуру умножения матриц, изобретен¬ ную Штрассеном в 1969 г. Поучительно сравнить влияние ошибок округления для этого метода с любым из обычных алгоритмов матричного умножения из § 1.1. Можно показать, что подход Штрассена (алгоритм 1.3.1) приводит к матрице С = //(АВ), удовлетворяющей неравенству вида (2.4.19). Для многих приложений этого вполне достаточно. Однако вычисляемая в методе Штрассена матрица С не всегда удовлетворяет неравенству вида (2.4.18). Чтобы убедиться в этом, положим и пусть алгоритм 1.3.1 исполняется в арифметике с округлением до двух знаков. Среди вычисляемых величин, в частности, будут Но в точной арифметике с12 = 2 (0.001) (0,99) = 0.00198, так что полученное в алго¬ ритме 1 .3.1 е12 не имеет верных значащих цифр. Алгоритм Штрассена в данном примере терпит неудачу по той причине, что малые внедиагональвые элементы складываются с большими диагональными. В обычном же матричном умножении ни Ьп с />12, ни ап с а12 не суммируются, так что потери вклада малых внедиагональных элементов не происходит. Действительно, для вышеприведенных матриц А и В стандартное умножение матриц дает £12 = 0.0020. В некоторых приложениях недостоверность отдельных компонент матрицы С может быть серьезным недостатком. Например, в марковских процессах элемен¬ ты aip Ьф си суть вероятности переходов и поэтому неотрицательны. Если c(J соответствует какой-нибудь особенно важной вероятности в моделируемом явле¬ нии, то его точное вычисление может быть критически важным. Заметим, что если А ^ 0 и В > 0, то стандартное умножение матриц дает матрицу С с поэлементно малой относительной ошибкой: Это следует из (2.4.18). Так как аналогичное утверждение не будет справедливым для метода Штрассена, мы заключаем, что алгоритм 1.3.1 непривлекателен для некоторых задач перемножения неотрицательных матриц, если требуется получать относительно точные элементы ti}. Развивая идеи проведенного здесь обсуждения, мы приходим к двум достаточно очевидным и в то же время важным выводам: • Различные методы вычисления одной и той же величины могут приводить к существенно различным результатам. • Насколько удовлетворительными окажутся выданные алгоритмом результа¬ ты, зависит от рода решаемой задачи и от целей человека, который эту задачу решает. 0.99 0.0010 .0.0010 0.99 Ръ = //(0.99(0.001 - 0.99)) = -0.98, Рл = //((0.001 + 0.99)0.99) = 0.98, -МР* + Ря) = о.о. |С-С|<яиИ|*| + О (и2) = пи \С\ + О (и2).
72 Гл. 2. Матричный анализ Эти утверждения будут разъяснены в последующих главах. Они оказываются тесно связанными с понятиями устойчивости алгоритма и обусловленности задачи. Задачи 2.4Л. Покажите, что если в (2.4.7) у = х, то jl(xT х) ~ jtT.v(l + а), где |а| < ли + О (и2). 2.4.2. Докажите (2.4.18). 2.4.3. Покажите, что если Ее К" х " , где т ^ л, то || | £ 11| 2 < yfn || Е || 2. Этот результат полезен при выводе оценок в терминах норм из оценок в терминах абсолютных величин элементов, 2.4.4. Пусть имеется функция извлечения квадратного корня, удовлетворяющая условию = V v0 + £)’ где l€l ^ и* Приведите алгоритм для вычисления || х ||2 и оцените ошибки округления. 2.4.5. Пусть А и В верхние треугольные п х «-матрицы из чисел с плавающей точкой. Если С =fl (А В) вычислено по любому из традиционных алгоритмов из § 1.1, верно ли, что С = А В, где А и В близки к А и #7 2.4.6. Пусть А и В -н х л-матрицы из чисел с плавающей точкой и матрица А невырожденная, причем || \А ~1 [ \А | || *. = т. Покажите, что если С =fl (АВ) вычислено по любому из алгорит¬ мов из § 1.1, то существует такая S, что С - АВ и || В — В\\ ^ ^ лит || В || а, + 0(и2). Замечания н литература к § 2.4 Наиболее полное изложение анализа ошибок округления содержится у Уилкинсона (АЕР, гл. 3). Превосходное изложение имеется также у Форсайта и Молера (SLE, pp. 87 -97) и Стьюарта (1МС, pp. 69 82). Для общего знакомства с ролью ошибок округления мы рекомендуем гл. 2 книги Forsythe G. Е., Malcolm М. A., and Moler С. В. (1977). Computer Methods for Mathematical Computations, Prentice-Hall, Englewood Cliffs, NJ. [Имеется русский перевод: Форсайт Дж., Малькольм М., Молер К. Машинные методы математических вычислений.-М.: Мир, 1980.] и ее переработанного издания Kahaner D., Moler С. В., and NashS. (1988). Numerical Methods and Software, Prentice-Hall, Englewood Cliffs, NJ. Мы уверенно рекомендуем классическое руководство Wilkinson J. Н. (1963). Rounding Errors in Algebraic Processes, Prentice-Hall, Englewood Cliffs, NJ. Философско-исторический обзор анализа ошибок округления содержится в фон-неймановской лекции Уилкинсона, опубликованной в Wilkinson J. Н. (1971). “Modern Error Analysis”, SIAM Review 13, 548-568. В этой статье дано критическое рассмотрение ранних работ по анализу ошибок, принадлежа¬ щих фон Нейману и Голдстайну, Тьюрингу и Гивенсу. Более современные течения в анализе ошибок включают интервальный анализ, построение статистических моделей ошибок округления и автоматизацию самого процесса анализа. Смотрите статьи Hull Т. Е. and Swensen J. R. (1966). “Tests of Probabilistic Models for Propagation of Roundoff Errors”, Comm. ACM 9, 108-113. Larson J. and Sameh A. (1978). “Efficient Calculation of the Effects of Roundoff Errors”, ACM Trans. Math. Soft, 4, 228-236. Miller W. and Spooner D. (1978). “Software for Roundoff Analysis, II”, ACM Trans. Mth. Soft. 4, 369 390. Yohe J. M. (1979). “Software for Interval Arithmetic: A Reasonable Portable Package”, ACM Trans. Math. Soft. 5, 50-63. Всякому, кто всерьез занимается разработкой программного обеспечения, необходимо глубокое понимание специфики вычислений с плавающей точкой. Неплохим отправным пунктом для приобретения знаний в этой области станет ознакомление со стандартом IEEE арифметики с плавающей точкой по работе
2.5. Ортогональность и сингулярное разложение 73 Stevenson D. (1981). “A Proposed Standard for Binary Floating Point Arithmetic” Computer 14 (March), 51 62. Желательные свойства системы чисел с плавающей точкой по-прежнему интенсивно разраба¬ тываются. Смотрите статьи Demmel J. W. (1984). “Underflow and the Reliability of Numerical Software”, SIAM J. Sci. and Stat. Comp. 5, 887 -919. Kulish U. W. and Miranker W. L. (1986). “The Arithmetic of the Digital Computer”, SIAM Review 28, 1-40. Даже для простейших задач разработка высококачественного программного обеспечения сопряжена с неимоверным количеством тонкостей и нюансов. Хороший пример - разработка подпрограммы для вычисления 2-норм: Blue J. М. (1978). “A Portable FORTRAN Program to Find the Euclidian Norm of a Vector”, ACM Trans. Math. Soft. 4, 15 -23. Анализ метода Штрассена и других «быстрых» алгоритмов линейной алгебры можно найти в Brent R. Р. (1970). “Error Analysis of Algorithms for Matrix Multiplication and Triangular Decomposition Using Winograd’s Identity” Numer, Math. 16, 145-156. Miller W. (1975). “Computational Complexity and Numerical Stability”, SIAM J. Computing 4, 97-107. 2.5. Ортогональность и сингулярное разложение Ортогональность играет в вычислениях с матрицами выдающуюся роль. Введя несколько определений, мы докажем очень полезную теорему о сингулярном разложении (SVD). Помимо всего прочего, SVD позволяет по-умному подойти к проблеме ранга матрицы. Понятие ранга, совершенно ясное в условиях точных вычислений, становится скользким в присутствии ошибок округления и погреш¬ ностей в исходных данных. Сингулярное разложение позволяет ввести практичное понятие численного ранга. 2.5.1. Ортогональность Набор векторов {*,,..., хр} bR™ называется ортогональным, если хJх} = 0 при i Ф j, и ортонормированным, если х]х} — Интуитивно, ортогональные векторы максимально независимы, поскольку направлены в совершенно разные стороны. Подпространства Sl9 Sp в Rm попарно ортогональны, если хТу = 0 для всех xeSi и yeSj, таких что гф]. Ортогональное дополнение подпространства SsRm определяется как S1 = {>’eRw:yTx = 0 для всех xeS}. Можно показать, что range (А)1 - пи11(Лт). Векторы vl9 ..., vk образуют ортонормированный базис подпространства S Я R™, если они ортонормированы и их линейная оболочка совпадает с S. Такой базис всегда можно достроить до ортонормированного базиса , , гт} всего простран¬ ства Rm. Отметим, что в этом случае S1 = span{rfc + 1, ..., t;m}. Говорят, что матрица Qe Rmxm ортогональна, если QTQ = /. Если Q = ..., qm~\ ортогональна, то векторы qk образуют ортонормированный базис в Rm. 2.5.2. Нормы и ортогональные преобразования 2-норма инвариантна относительно ортогональных преобразований, поскольку если QrQ = If то WQxWl = xTQTQx = хТх = \\х\\1- Этим же свойством обладают
74 Гл. 2. Матричный анализ матричная 2-норма и норма Фробениуса. Именно можно показать, что для всех ортогональных матриц Q и Z подходящих размеров мы имеем: ||Ci4Z||F-||A||F (2.5.1) и ||<MZ||2-M||a. (2.5.2) 2.5.3. Сингулярное разложение Развитая в двух предыдущих разделах теория норм позволяет получить очень полезную теорему о сингулярном разложении. Теорема 2.5.1 (Сингулярное разложение (SVD)). Если А-вещественная т ж п-матрица, то существуют ортогональные матрицы U~ [и,, nj6r" и V = [v19 ..., »JeR"*\ такие, что UTAV - diag(an ..., ap)eRmylt р - min{m, л}, где cTj ^ a2 ^ ^ ор > 0. Доказательство. Пусть xeR" и yeRm- единичные в 2-норме векторы, удовлетво¬ ряющие равенству Ах = оу, где a = ||/1||2. Поскольку любой ортонормированный набор векторов может быть расширен до ортонормированного базиса всего пространства, то можно найти такие матрицы K1eRnx(R~1) и l/1eRwx(m_1), что F-CxFJeB-*" и [/ = Qy t/1]eRmx,n ортогональны. Нетрудно показать, что UTAV имеет следующую структуру: Л-"- Так как > (ст2 + wrw)2, '■с то мы имеем ||>41||2 ^ (a2 + wTw). Но о2 = Ц^4||| - \\АХ \\\ и поэтому необходимо н? = 0. Теперь теорема легко доказывается применением метода математической индукции. □ Числа а, называются сингулярными значениями матрицы А, а векторы ц- и г, -соответственно левыми и правыми сингулярными векторами. Сравнивая матрич¬ ные равенства ЛК = и по столбцам, легко убедиться, что Л7 Введем следующие обозначения для сингулярных значений: о,- (А) - /-е по величине сингулярное значение матрицы А, °та* (Л) - максимальное сингулярное значение матрицы А, omin (А) - минимальное сингулярное значение матрицы А. Сингулярные значения матрицы А -это в точности полуоси гиперэллипсоида Е, задаваемого соотношением Е = {Лх:||х||2 = !}.
2.5. Ортогональность и сингулярное разложение 75 Пример 2.5.1. j _ Г0.96 1.721 = jrу ут = Г0.6 —0.8ТГ3 о!Г0.8 0.б]Т L2.28 0.96 J L0.8 0.6JL0 1 JL0.6 -0.8J * Сингулярное разложение дает большую информацию о структуре матрицы. Если SVD матрицы А задано, как в теореме 2,5.1, то, определяя г соотношениями а1 > ... > ог > ог+1 = ... = ор = 0, мы имеем rank (А) = г, (2.5.3) null (А) = span {гг+ н ..., vn), (2.5.4) range (Л) = spanf^, ..., ur}. (2.5.5) Более того, обозначив Uf = l/(:, 1 :r), X, * Z(1 :r, 1 :г) и ^ = F(:, 1 :г), мы получим следующее разложение: ^ = t/rZrFrr = £ w,T- (2.5.6) f=i Наконец, в терминах SVD изящно характеризуются как 2-норма, так и норма Фробениуса: \\А\\1 = о! + ... + aj, р = min {m, /?}, (2.5.7) Mil (2.5.8) 2.5.4. Неполнота ранга и SVD Одно из наиболее ценных качеств сингулярного разложения состоит в том, что оно позволяет нам разумно обращаться с понятием ранга матрицы. Многие теоремы линейной алгебры формулируются примерно так: «Если такая-то матрица имеет полный ранг, то выполняются такие-то и такие-то свойства». Аккуратные и эстетичные результаты в этом духе тем не менее мало помогают в преодолении вычислительных затруднений, часто возникающих при работе с матрицами, близ¬ кими к матрицам неполного ранга. Ошибки округления и погрешности в исходных данных превращают определение ранга в нетривиальное упражнение. В действи¬ тельности нас может интересовать е-ранг матрицы, который для некоторого малого е определяется по формуле rank (А, е) = min rank (Z?). \\А-В\\2^е Так, если элементы аи матрицы А получаются в лаборатории с точностью до ±0.001, то, по-видимому, имеет смысл посмотреть на гапк(Л, 0.001). Аналогично, если А есть т х л-матрица из чисел с плавающей точкой, то разумно считать А численно неполноранговой, если rank (А, е) < min(m, я), где е = и||Л||2. Численная неполнота ранга и е-ранг прекрасно характеризуются в терминах SVD, поскольку сингулярные значения показывают, насколько данная матрица близка к какой-нибудь матрице меньшего ранга. Теорема 2.5.2. Пусть SVD матрицы /1 eRmxM задано, как в теореме 2.5.1. Если к <г = гапк(Л) и Л = £ <W.T. (2-5.9) i= 1
76 Гл. 2. Матричный анализ то min IM - В\\2 = |М - Лк\\2 = <т*+1. (2.5.10) rank(tf) = fc Доказательство. Поскольку V7 Ak V = diag(ol9 ..., ofc, 0, 0), то rank(Ак) = к и U7(А - 4*)F = diag(0, ..., 0, ak + 1, ..., аД так что ||А - Ак\\2 = afc + 1. Теперь предположим, что rank (В) ~ к для некоторого BeRmx". Тогда мы можем найти такие ортонормированные векторы х1э ..., хп_к, что null (В) = = span х {xt,..., *„_*}• Из соображений размерности ясно, что span {*,, ..., *„_*} П span {t>1? ..., t>t+1} Ф {0}. Пусть z-единичный в 2-норме вектор, принадлежащий этому пересечению. По¬ скольку Bz = 0 и к+ 1 Az= Z Gi(vfz)Ui, i= 1 мы имеем || А - В\\\ >\\{А- B)z\\l = IMzHl = ^ of [vjz)2 ah и i= 1 что завершает доказательство нашей теоремы. □ Теорема 2.5.2 утверждает, что наименьшее сингулярное число матрицы А равня¬ ется измеренному в 2-норме расстоянию от этой матрицы до множества всех матриц неполного ранга. Из нее также следует, что множество матриц полного ранга является открытым и всюду плотным в R"*x". Наконец, если гг = rank (Л, е), то ^ > ст > е ^ аГв +, > ... ^ apf р = min {го, /?}. Мы вернемся к обсуждению вопросов, связанных с численным рангом матриц, в § 5.5 и § 12.2. Задачи 2.5.1. Покажите, что если 5r = — S, то матрица I — S невырожденна, а матрица (/ — 5)"1 х х (/ 4-5) ортогональна. Это преобразование Кэли матрицы S. 2.5.2. Покажите, что если треугольная матрица ортогональна, то она диагональна. 2.5.3. Покажите, что если матрица Q = Я\ 4- iQ2 , где Qx , Q2e R" x ", унитарна, то веществен¬ ная 2п х 2л-матрица = Г<2, -Яг 1 I q2 e,J ортогональна. 2.5.4. Докажите свойства (2.5.3) (2.5.8). 2.5.5. Докажите, что Х(А)= шах >'€R",.xeR" уТ Ах \2\\У\\2 ip R*"..re R" 2.5.6. Для 2 х 2-матрицы А = £ w х J получите выражения для о^^А) и <rmilI(i4) как функции и; х, у и z. 2.5.7. Покажите, что любая матрица из Rm х " является пределом последовательности матриц полного ранга.
2.6. Проекции и CS-разложение 77 2.5.8. Покажите, что если матрица /leRm х " имеет ранг п, то || А {Ат А) 1 Ат || 2 = 1. 2.5.10. Покажите, что для матрицы А е Rm х " \\ А || F ^ ^/гапк (А) || А || 2 > что улучшает оценку Замечания и литература к § 2.5 Хорошее описание роли SVD в анализе задачи Ах = Ь дают Форсайт и Молер (SLE). Их вывод самого разложения использует теорию собственных значений для симметричных матриц и в этом смысле более традиционен, чем наш. Среди ранних работ, относящихся к SVD, упомянем Beltrami Е. (1873). “Sulle Funzioni Bilineari”, Giornale di Mathematiche 11, 98-106. Eckart C. and Young G. (1939). “A Principal Axis Transformation for Non-Hermitian Matrices”, Bull. Amer. Math. Soc. 45, 118- 121. Одно из наиболее существенных новшеств в научных вычислениях связано с расширением использования SVD в приложениях, где требуется тонкое обращение с матричным рангом. Диапазон приложений весьма впечатляющ; одно из наиболее интересных описано в MolerC. В. and Morrison D. (1983). “Singular Value Analysis of Cryptograms”, Amer. Math. Monthly 90, 78 87. Об обобщениях SVD на случай бесконечномерных гильбертовых пространств см. книги Gohberg l.C. and Krein M.G. (1969). Introduction to the Theory of Linear Non-Self Adjoint Operators, Amer. Math. Soc., Providence, R.I. Smithies F. (1970). Integral Equations, Cambridge University Press, Cambridge. Понижение ранга матрицы, как в теореме 2.5.2., при ограничениях на возмущающую матрицу обсуждается в DemmelJ. W. (1987). “The smallest perturbation of a submatrix which lowers the rank and constrained total least squares problems, SIAM J. Numer. Anal. 24, 199- 206. Golub G. H., Hoffman A., and Stewart G. W. (1988). “A Generalization of the Eckart - Young-Mirsky Approximation Theorem”, Lin. Alg. and Its. Aplic. 88/89, 317 328. Watson G.A. (1988). “The Smallest Perturbation of a Submatrix which Lowers the Rank of the Matrix”, IMA J. Numer. Anal. 8, 295 304. 2.6. Проекции и CS-разложение Если в результате вычисления должна получиться матрица или вектор, то для оценки точности ответа или для измерения того, насколько успешно продвигается итерационный процесс, удобно применять нормы. Если же необходимо вычислить целое подпространство, то для получения аналогичных оценок нам нужно уметь давать количественное выражение расстояния между подпространствами. Очень важную роль при этом играют ортогональные проекторы. Рассмотрев элементар¬ ные понятия, мы переходим к обсуждению CS-разложения. Это похожее на SVD разложение оказывается очень кстати, когда нужно сравнить пару подпространств. Мы начинаем с понятия ортогонального проектора. 2.6.1, Ортогональные проекторы Пусть S Я R"-подпространство. Матрица Ре Нихи называется ортогональным проектором на подпространство S, если range (Р) = S, Р2 = Р и РТ — Р. Из этого определения легко усмотреть, что если хеЛп, то PxeS и (/ — P)xeSx. Если Pt и Р2 - ортогональные проекторы, то для любого zeR" мы имеем 2.5.9. Какая матрица ранга 1 ближе всего к матрице А = [ (2.3.7). ||(Л - P2)Z\\l = (/\z)r(/ - P2)z + (P2z)T(I - Pt)z.
78 Гл. 2. Матричный анализ Если rangeCPj) = ranged) = £ ™ правая часть этого выражения обращается в нуль, показывая, что для данного подпространства ортогональный проектор на него единствен. Если столбцы V = [i>!,..., vk~\ образуют ортонормированный базис подпростран¬ ства S, то Р = VVT- единственный ортогональный проектор на S. Заметим еще, что если vgRп, то Р = vvT!vTv есть ортогональный проектор на 5 = span{r}. 2.6,2. Проекторы, связанные с SVD С сингулярным разложением ассоциируется несколько важных ортогональных проекторов. Пусть А = UXVTeRmxn есть сингулярное разложение матрицы А, причем rank (А) = г. Если матрицы U и V разбиты на блоки как 2.6.3. Расстояние между подпространствами Взаимно однозначное соответствие между подпространствами и ортогональ¬ ными проекторами на них позволяет нам выработать понятие расстояния между подпространствами. Предположим, что S{ и 52 - подпространства в R" и dim(S|) = dim(S2). Определим расстояние между этими двумя подпространствами как где ортогональные проекторы на St. Геометрическую интерпретацию dist(\ •) можно получить, рассмотрев случай одномерных подпространств в R2. Пусть S{ = span {х} и S2 = span {>}, где х и у-единичные в 2-норме векторы из R2. Поскольку их 2-норма равна 1, мы можем записать для некоторых 0! и 02 из интервала [0, 2я]. Если ввести ортогональные матрицы v = IV, 0,1 v= [Vt rr] , г т-r г п — г то V,Vj -проектор на null (Л)1 = range(Лг), P’fP'J -проектор на null (А), U, UJ - проектор на range (А), 0,0J - проектор на range (Л)1 = null {АТ). dist(S,, S2) — ||/*, — ^2lb’ (2.6.1) С cos(02) — sin(02)| sin(02) cos(02)J’ '] TO Вычисление показывает, что 0 sin(0! — 02) sin^ - 02) О ']•
2.6. Проекции и CS-разложение 19 так что ||ххт - уут ||2 = IIWT(ххт — уут)Z[|2 = | sin(0! - 02)|. Следовательно, distfSj, S2) — |sin(0! — 02)|, величине синуса угла между двумя подпространствами. Эта удачная геометрическая интерпретация функции расстояния применима и для более высоких размерностей, но предварительно необходимо расширить понятие угла между подпространствами. Следующая теорема позволяет это сделать. Теорема 2.6.1 (CS-разложение). Если матрица 0 re» ^12 Le2i Q22 * j ортогональна, причем к >у, то существуют ортогональные матрицы Ulf F1eRkxk и ортогональные матрицы U2, V2eRJxJ, такие что 1- j j р| О ГГби Ql2]\yt 01 , Lo uj Lq21 q2JLo vj b-J 0 0 0 с S 0 - -S с (2.6.2) где С = diag(c1; ..., cj)eRJxJ, c, = cos(0,), S = diag(s,, ..., Sj)eRJxJ, s, = sin(0,) и 0 < < 02 < ... *£ Qj < я/2. Доказательство. См. Davis and Kahan (1970) или Stewart (1977). Предположение k^j сделано лишь для удобства обозначений. □ Грубо говоря, CS-разложение эквивалентно одновременной диагонализации блоков ортогональной матрицы. Пример 2.6.1. Матрицы -0.716 0.548 0.433 -0.721 -0.692 0.000 -0.698 -0.555 -0.451 V * -0.692 0.721 0.000 _ -0.006 -0.626 0.780, _ 0.000 0.000 1, v= 0.999 -0.010 0.000 -0.010 -0.999 0.000 0.000 0.000 1 ортогональны с точностью до трех десятичных знаков и удовлетворяют соотношению 1.000 0.000 0.000 UTQV= 0.000 0.780 0.625 0.000 -0.625 0.780 Таким образом, на языке теоремы 2.6.1 к = 2, у = 1, сх = 0.780 и st = 0.625.
80 Гл. 2. Матричный анализ Теперь мы покажем, как подходящим образом выбранное CS-разложение рас¬ крывает «степень близости» между парой подпространств одинаковой размерности. Следствие 2.6.2. Пусть W=[Wl9 W2] и Z = [ZA, Z2 ] - ортогональные матрицы, причем Wl4 ZjGRnx*, a W2, Z2eRnx("~k). Если Sx = range(Wi) и S2 = range(ZA), mo dist(S„ S2) = Vi -o2o,(H'rzI). Доказательство. Пусть Q = WTZ, и предположим, что k^j = n — k. Пусть CS-раз¬ ложение Q дается формулой (2.6.2) с Qip = WjZp. Отсюда следует, что I! иТ z21|2 = !|W'jz1 »2 = Sj = yi - c] = yi -oitod^rzj). Поскольку H'j’ и ZA Zf - ортогональные проекторы на и S2 соответственно, мы имеем dist (S j, S2) = \\WXW\ — ZXZ\ ||2 = = \\WT(WX W\ - Z,ZT)Z||2 = Если же fc < /', то наше рассуждение все равно проходит, если просто положить Q = \.wг, ^]T[Z2, ZJ и заметить, что стт„(Иomtx(W'iZ2) = Sj.U Пример 2.6.2. Если 5, = span{e,, f2j и S2 = span{e2, e3 }-подпространства Rn, то матрица Q из следствия равна Q = О,, е2, с,, еЛ,..., е„У |>2, е3, е,, е4,... , е„] = 02, е3, е, е4,..., е„]. Таким образом, dist (SA, S2)=l. Этот пример показывает, что факт пересечения под¬ пространств не эквивалентен нулевому расстоянию между ними. Tz2l о J Задачи 2.6.1. Покажите, что если Р- ортогональный проектор, то матрица Q = I — 2Р ортогональна. 2.6.2. Чему равны сингулярные числа ортогонального проектора? 2.6*3. Пусть в теореме 2.6.1 k = у. (а) Покажите, что нсп *ii2 - т\2=> ие21»ц2 = bmSK(Q2l т\2. (Ь) Покажите, что из вырожденности Qxx следует вырожденность Q22. Получите эти результа¬ ты без использования CS-разложения. Замечания и литература к § 2.6 Вывод CS-разложения можно найти в Stewart G. W. (1977). “On the Perturbation of Pseudo-Inverses, Projections and Linear Least Squares Problems”, SIAM Review 19, 634- 662. Другие аспекты этого важного разложения исследуются в статьях Davis С. and Kahan W. (1970). “The Rotation of Eigenvectors by a Perturbation НГ, SIAM J. Num. Anal. 7, 1 -46. Paige C.C. and Saunders M. (1981). “Toward a Generalized Singular Value Decomposition”, SIAM J. Numer. Anal. 18, 398-405. Вычислительные детали см. в § 8.7. 2,7. Чувствительность квадратных систем к возмущениям В этом разделе мы применяем разработанный в предыдущих параграфах инструментарий к анализу линейной системы Ах = Ь, где А е R"*"- невырожденная
2.7. Чувствительность квадратных систем к возмущениям 81 матрица и beRn. Наша цель-исследовать, как возмущения в А и b влияют на решение х. 2.7.1. SVD-анализ Если А = £ alUivJ = UTVt 1=1 есть сингулярное разложение матрицы А, то п х = A-lb = (U'LVTrlb = ^~-vi. (2.7.1) 1= 1 Это разложение показывает, что малые изменения в А или в Ъ могут вызывать относительно большие изменения в х, если стп мало. Действительно, если cos(G; = l«J*l/ll*ll2 и СА - tuKvl)y = Ь + Esign(ulb)un, а„ > £ > О, то можно показать, что ||у — х||2 ^ (е/сти) ||лг||2 cos(0). Таким образом, возмущения порядка 0(e) могут изменить решение на е/аи. Влияние абсолютной величины ст„ на чувствительность задачи Ах = b не должно удивлять нас, поскольку мы помним из теоремы 2.5.2, что а„-это расстояние от А до множества вырожденных матриц. Интуитивно ясно, что по мере приближения к этому множеству решение х должно быть во все большей степени чувствительным к возмущениям. 2.7.2. Обусловленность Точно измерить чувствительность линейной системы мы сможем, рассмотрев параметризованную систему (А + eF)x(c) = Ъ + е/, х(0) = х, где FeRnxn и/eR". Если А невырожденна, то ясно, что функция х(г) дифференци¬ руема в окрестности нуля. Далее, х(0) = Л “1 (/— Fx), и поэтому разложение д (е) в ряд Тейлора имеет вид х(е) = х + £х(0) + О (с2). В любой векторной норме и согласованной с ней матричной норме мы получаем: « е \\А -■11| + ||F ||} + О (е2). (2.7.2) Определим для квадратных матриц А число обусловленности ж (А) соотношением ®М) = IMIIIM-1 II. (2.7.3) условившись, что аг {А) = оо для вырожденных матриц А. Воспользовавшись не¬ равенством ||Л|| < |М||||х||, мы получим из (2.7.2), что < *ШРа + Рь) + О(е2), (2.7.4)
82 Гл. 2. Матричный анализ где « _ Л£Л п _ ЛЯ * т' Рь ii*ii представляют соответственно относительные погрешности А и Ь. Таким образом, относительная погрешность х может в ж (Л) раз превышать относительные погреш¬ ности А и Ь. В этом смысле число обусловленности ж (Л) количественно характери¬ зует чувствительность задачи Ах = Ь. Отметим, что ж О зависит от нормы, в которой оно вычисляется. Когда необходимо подчеркнуть использование какой-либо определенной нормы, мы будем использовать индексы, например *2M) = IMIUIM-,|I2 = (2.7.5) Таким образом, обусловленность матрицы А в 2-норме является мерой вытянутости гиперэллипсоида {v4x:|]*||2 = 1}, Приведем еще два способа характеристики числа обусловленности. Для чисел обусловленности в р~норме мы имеем гтя- * & *«> W А + Е вырождена « А Нр Этот результат можно найти у Кахана (1966). Он показывает, что &Р(А) является мерой относительного расстояния от А до множества вырожденных матриц, измеренного в р-норме. Мы также имеем для любой нормы: .и,.*. „Р ‘ , р.,.7) *-»«№< 6IMR В л II Этот внушительный на вид результат на самом деле просто свидетельствует о том, что число обусловленности-это нормированная производная Фреше отображения А А~К Дальнейшие детали см. Rice (1966). Напомним, что первоначально мы пришли к х{А) через дифференцирование. В случае если ж (Л) велико, говорят, что А-плохо обусловленная матрица. Заметим, что это свойство зависит от выбора нормы. Однако в R"^ любые два числа обусловленности эквивалентны в том смысле, что найдутся такие константы и с1ч что ctxa(A) ^ xfi(A) ^ с2ха(А\ ИеК"*л. Например, в 8ЛХ" мы имеем: -в2(А) < ж3 (Л) ^ иж2(Л), п - а* (А) < ае2 (/4) < п (А), (2.7.8) п -в,(Л) < (А) «£ я2а, (А), п Так что если матрица плохо обусловлена в a-норме, то она будет плохо обусловлена и в p-норме, с поправкой на упомянутые выше константы cL и с2- Для любой /мюрмы мы имеем &Р{А) £ 1. Матрицы с малыми числами обуслов¬ ленности называются хорошо обусловленными. В 2-норме ортогональные матрицы обусловлены наилучшим возможным образом, поскольку ж2(® = 1, если Q орто¬ гональна.
2.7. Чувствительность квадратных систем к возмущениям 83 2.7.3. Определители и близость к вырожденностн Естественно задаться вопросом, насколько хорошо величина определителя оценивает обусловленность матрицы. Известно, что det(^4) = О эквивалентно вы- рожденности матршхы А, но верно ли, что det(^)^0 означает почти вырождеи- ность? К сожалению, величина определителя del (Л) и обусловленность задачи Ах = Ь слабо связаны между собой. К примеру! определитель матрицы В = 1 -1 ... -1 О 1 ... -1 — пл ж я еК (2.7.9) 0 0 ... 1 равен единице, но ак (£„) = п2"“ *. С другой стороны, очень хорошо обусловленная матрица может иметь очень маленький определитель. Например, для матрицы D„ — diag(I0-lt ..., 10-,)€R*x", ap(Dn) = 1, хотя det(D„) = 10“". 2.7.4. Точная оценка по норме Вспомним, что ценность вывода (2.7.4) определялась тем, что он отчетливо выявил связь между я (А) и скоростью изменения *(е) в точке в*0. Несколько разочаровывает, однако, зависимость от «достаточной малости» в, а также отсут¬ ствие каких-либо сведений о величине слагаемого О (в2). В этом и следующем подразделах мы получим еще несколько теорем о возмущениях задачи Ах = о, в которых оценки уже будут совершенно точными. Сначала мы докажем полезную лемму, которая в терминах et(A) указывает, когда мы можем ожидать, что возмущенная система окажется невырожденной. Лемма 2.7.1. Предположим, что Ах = ft, ЛеН"*", 0#6gR", (А + ДА) у = b + АЬ, ДИеЛ"**, AfceR", где ЦДЛ || < б МП, ||Д6|| $ Б||А||. Если Бг(4) = г < 1, то А + ДА невырожденна. и М *Ltl 11*11 1-г' Доказательство. Поскольку М~* ДЛ|| < Б|М-1 II Mil = г < 1, из теоремы 2.3.4 еле- дует, что (А + АЛ) невырожденна. Учитывая, что (/ + А~х АА)у = х + А“1 АЬ, находим, используя лемму 2.3.3, что ы «</ + А-1 АЛУ1 ||(||*|| + SIIА-411|6||) < - 1 1*11 + Б м-1 II ИЫ1) = I — г 1 (и и 11*11^ = r^U|JC|l+rMiiJ- Поскольку ||Б|| = М*Н < МИ 1*11. то Цу|| (11*11 + '■11*11)-О 1 - Г Теперь мы готовы к получению точной оценки для возмущения Ах = Ь. Теорема 2.7*2. В условиях леммы 2.7.1 II*-/11^ (2.7.10) 11*11 1-г
84 /л. 2. Матричный анализ Доказательство, Так как у — л: = Л-1 Д6 — Л-1 ДЛу, (2.7.11) мы имеем ||у — х\\ < 8Ц/1-11|||&|| + 8ЦЛ-1|||И|||М|, так что *!*-£!! < 8,^). ‘I*11 - + 5rmjM < ll-vll ^ 1 VlllWI 1 Vll < 8*M)(l + ) = yzrrX(A)- □ Пример 2.7.1. Задача Ax = h Г1 °1И=Г' 1 Lo kt*J [_x2j L10"6J имеет решение .v = (l 1)т и обусловленность ж^(/4) = 106. Если Ab = (10 60)т, АА^ 0 и (А + А А)у ~ b + Ab, то неравенство (2.7.10) в оо-норме имеет вид 10 6 < 10 6 10е. 10° Таким образом, наша оценка сверху для ошибки, вызванной возмущением, может оказаться сильно завышенной. С другой стороны, если АЬ = (0 10 _ е)т, АА=0и(А + А А) у = b + А Ьу то наше неравенство дает 10° ^2 х 10~6106. 10° Мы видим, что существуют возмущения, для которых оценка (2.7.10) по существу достигается. 2,7.5. Несколько точных покомпонентных оценок В заключение этого раздела мы покажем, что можно построить более точную теорию возмущений, если ввести в рассмотрение покомпонентные оценки возмуще¬ ний и использовать обозначение абсолютной величины. Теорема 2.7.3. Предположим, что Ах = b> AeRnx\ 0 ф 6eR\ (А + Д А)у = Ь + ДА, АА eRnx", AbeRn и что |ДЛ| ^ 8|/4|, |Д£| ^ Ь\Ь\. Если бае^Л) = г < 1, то (А + АА) невырожденна, и \\y~x\L^ 28 IML 1 -г НИ’ЧМШа Доказательство. Поскольку < 5||/1||те и IIA^IU < бН&Н^, условия леммы 2.7.1 удовлетворены в а;-норме. Из этого следует, что А + ДА невырожденна и ML<jJLr \\x\L " 1 -г' Теперь, используя (2.7.11), находим < Ь\А~1 \\Ь\ + 51Л-1 \\А\\у\ < 5М"1 IMKW + |у|). Переходя к нормам, получаем ||у- х\\х <5||И-‘|MIIl(h*|L + |з;11*11»)•
2.7. Чувствительность квадратных систем к возмущениям 85 Разделив последнее неравенство на получаем утверждение теоремы. П Величину HMIM'MIIoo мы будем называть числом обусловленности по Шкеелю. Это число было эффективно использовано при анализе некоторых важных преобразова¬ ний линейных систем. См. § 3.5. Наконец, приведем результаты Oettli, Prager (1964), показывающие, при каких условиях приближенное решение xeRn п х л-системы Ах = Ь удовлетворяет возму¬ щенной системе с заранее предписанной структурой. В частности, пусть £eRnyn и feRn заданы и имеют неотрицательные элементы. Мы ищем такие ЪА eRnxn, 86eR" и © ^ О, что (А + ЬА)* = Ь + ЬЬ, \ЬА\^ ©£, \Щ ^ ©/ (2.7.12) Заметим, что при надлежащем выборе Е и/возмущенная система может принимать определенные свойства. Например, если Е — \А |,/= |6| и © мало, то £ удовлетворяет некоторой покомпонентно близкой системе. Oettli, Prager (1964) показывают, что для заданных A, b> Е и / минимально возможное © в (2.7.12) выражается как \Ах -Н “min Если AJt = Ь, то (!)„,„ = 0. С другой стороны, если o)min = оо, то Л не удовлетворяет никакой системе с предписанной структурой возмущения. Задачи 2.7.1. Покажите, что если ||/|| > 1, то ж (Л) > 1. 2.7.2. Покажите, что для данной нормы х(АВ) < ж(/4)ж(£) и что ж(аЛ) = ж(Л) для всех ненулевых а. Замечания и литература к § 2.7 Понятие обусловленности тщательно исследуется в Rice J. (1966). “A Theory of Condition”, SIAM J. Num. Anal. 3, 287-310. Kahan W. (1966). “Numerical Linear Algebra”, Canadian Math. Bull. 9, 757 -801. В некоторых приложениях возникает необходимость изучить чувствительность решения задачи Ах = Ь по отношению к возмущениям определенной структуры. Например, мы можем интересоваться изменением х при колебании каждого элемента Ь в пределах заданного интервала. Такой более тонкий анализ чувствительности проводится в статье J. Е. Соре and В. W. Rust (1979). “Bounds on solutions of systems with accurate data”, SIAM J. Numer. Anal. 16, 950-963. Основные ссылки по теории покомпонентных возмущений включают Oettli W. and Prager W. (1964). “Compatibility of Approximate Solutions of Linear Equations with Given Error Bounds for Coefficients and Right Hand Sides”, Numer. Math. 6, 405-409. R. D. Skeel (1979). “Scaling for numerical stability in Gaussian Elimination”, J. ACM 26, 494-526. Обратное к числу обусловленности служит мерой близости данной задачи Ах = h к вырожден- ности. Во многих случаях важность информации о том, насколько данная задача близка к труднорешаемой или вообще неразрешимой, получила должную оценку. См. Barlow J.L. (1986). “On the Smallest Possible Singular Value of an M-matrix with Applications to Ergodic Markov Chains”, SIAM J. Alg. and Disc. Struct. 7, 414-424. Demmel J.W. (1987a). “On the Distance to the Nearest Ill-Posed Problem”, Numer. Math. 51, 251-289. Ehmmel J.W. (1987b). “A Counterexample for two Conjectures About Stability”, IEEE Trans. Auto. Cont. AC-32, 340-342. Demmel J. W. (1988). “The Probability that a Numerical Analysis Problem is Difficult”, Math. Comp. 50, 449-480. Higham N.J. (1985). “Nearness Problems in Numerical Linear Algebra”, PhD Thesis, University of Manchester, England.
86 Гл. 2. Матричный анализ Higham N.J. (1988b). uComputing a Nearest Symmetric Positive Semidefinite Matrix”, Lin. Alg. and Its Applic. 103, 103-118. Higham N.J. (1988e). “Matrix Nearness Problems and Applications", Numerical Analysis Report 161, University of Manchester, Manchester, England. To appear in The Proceeding of the JIMA Conference on Applications of Matrix Theory, S. Barnett and M. J. C. Cover (eds), Oxford University Press. Laub A. (1985). "Numerical Linear Algebra Aspects of Control Design Computations", IEEE Trans. Auto. Cont. AC-30, 97-108. Ruhe A. (1987). "Closest Normal Matrix Found!", BIT 27, 585-598. Van Loan С. (1985). “How Near is a Stable Matrix to an Unstable Matrix?”, Contemporary Mathematics, Vol. 47, 465-477.
Глава 3 Линейные системы общего вида Проблема решения линейной системы Ах = b является центральной в научных вычислениях. В этой главе мы остановимся на методике исключения Гаусса-мето¬ де, который используют, когда матрица А квадратная, плотная и без специфики. Если А не удовлетворяет этим условиям, то представляют интерес алгоритмы из гл. 4, 5 и 10. Параллельные методы решения системы Ах = b обсуждаются в гл. 6. Мы приходим к методу исключения Гаусса, обсуждая в § 3.1 ту легкость, с которой можно решать треугольные системы. Приведение системы общего вида к треугольной форме при помощи преобразований Гаусса описывается ниже в § 3.2, где вводится «язык» матричных разложений. К несчастью, полученный метод ведет себя очень плохо на нетривиальном классе задач. Наш анализ ошибок округления в § 3.3 выявляет трудности и подготавливает § 3.4, где вводится концепция выбора ведущих элементов. В последнем разделе мы предлагаем некоторые замечания по поводу важных для практики вопросов, связанных с масштабированием, итера¬ ционным уточнением и оценкой обусловленности. 3.1. Треугольные системы Традиционные методы разложений для линейных систем включают в себя приведение исходной квадратной системы к треугольной системе, которая имеет такое же решение. Данный раздел посвящен решению треугольных систем. 3.1.1. Прямая подстановка Рассмотрим следующую нижнюю треугольную 2 х 2-систему: Если /п/22 Ф 0, то неизвестные могут быть определены последовательно: Х2 — №2 ^21Х%)/^22^ Это 2 х 2-версия алгоритма, известного как прямая подстановка. Общую процедуру получаем, разрешая i-e уравнение системы Lx = b относительно xf: j а Если вычисления выполнить для / = 1: л, то будут получены все компоненты х. Заметим, что на i-м шаге необходимо скалярное произведение векторов L(/, 1: i — 1)
88 Гл. 3. Линейные системы общего вида и jc (1: / — 1). Так как bt содержится только в формуле для xi9 мы можем записать х{ на месте Ь*\ Алгоритм 3.1.1 (Прямая подстановка: строчная версия). Предположим, что LeRnxtt нижняя треугольная матрица и be Rn. Алгоритм заменяет b на решение системы Lx = b. Матрица L должна быть невырожденна. b(l) = b(\)/L(l 1) for i = 2: п ЬЦ) = (b(i) - L(/, 1 :i - 1)6(1:/ - 1 ))/Щ j) end Алгоритм требует n2 флопов. Заметим, что доступ к L осуществляется по строкам. Вычисленное решение А удовлетворяет (L + F)А = b, |F| < mi|L| + 0(u2). (3.1.1) Этот результат доказывается в Forsythe and Moler (SLE, pp. 104-105). Он говорит о том, что вычисленное решение точно удовлетворяет слабо возмущенной системе. Более того, каждый элемент в матрице возмущения F мал относительно соответ¬ ствующего элемента L. 3.1.2. Обратная подстановка Аналогичный алгоритм для верхней треугольной системы Ux = Ь называется обратной подстановкой. Вот формула для х(: xi = (hi~ Z \ ;=;+1 / и снова jc, можно записать на месте Ь{. Алгоритм 3.1.2 (Обратная подстановка: строчная версия). Если матрица U eR”*” верхняя треугольная и beR", то следующий алгоритм заменяет b на решение системы Ux = b. U должна быть невырожденной. b(n) = b(ri)/U(n9 п) for / = /i — 1: —1:1 b(i) = (b(i)- 1/(/, |+ l:w)A(/+ 1 :n))/U(i, i) end Алгоритм требует п2 флопов и осуществляет доступ к U по строкам. Можно показать, что вычисленное решение А, полученное с помощью алгоритма, удовлет¬ воряет (U + F)* = b |F| +0(u2). (3.1.2) 3.1.3. Столбцовые версии Столбцовые версии приведенных выше процедур могут быть получены измене¬ нием порядка выполнения циклов. Чтобы понять, что это означает с алгебраической точки зрения, рассмотрим прямую подстановку. Как только компонента х1 найдена, она может быть удалена из всех уравнений от 2 до пу и мы продолжим процесс с редуцированной системой L(2:«, 2:ri)x(2:n) = b(2:n) — x(\)L(2:n, 1). Потом мы вычислим х2 и исключим ее из всех уравнений от 3 до и, и т. д. Таким образом, если 1} Алгоритмы, в которых результат получается на месте, занимаемом исходными дан* ными, обычно называют алгоритмами с замещением. - Прим. перев.
ЗА. Треугольные системы 89 этот подход применить к мы найдем х1 = 3 и потом будем иметь дело с 2 х 2-системой в аи-Еин-^ Это полная процедура с замещением. Алгоритм 3.1.3 (Прямая подстановка: столбцовая версия). Предположим, что LeRnxtt нижняя треугольная и beRn. Этот алгоритм заменяет b на решение системы Lx = Ъ. L должна быть невырожденной for j = 1: п — 1 b(j) = b(j)/L(lj) b(j + 1 \п) = b(j + 1 :п) - h(j)L(j + 1:л, у) end b(n) - b(n)/L(n, n) Можно получить также и столбцовую процедуру типа saxpy для обратной подстановки. Алгоритм 3.1.4 (Обратная подстановка: столбцовая версия). Предположим, что UеRM*п — верхняя треугольная матрица и beR". Алгоритм заменяет b на решение Uх — b. U должна быть невырождена for j = п1:2 b(j) = b{j)IU(lj) b( 1 :j - 1) = *(1 :у - 1) - ^0) I/ (1 :j - 1,7) end b(i) = b(D/U(l 1) Заметим, что главная операция в обоих алгоритмах 3.1.3 и 3.1.4-это операция saxpy. Ошибки округления в этих версиях с saxpy ведут себя в основном так же, как и для вариантов со скалярным произведением. Чаще всего точность решения треугольной системы на удивление хорошая. См. Higham (1988d). 3.1.4. Случай нескольких правых частей Рассмотрим задачу вычисления решения XeRnxq для системы LX = В, где LeRn*"-нижняя треугольная матрица и BeRnxq. Это задача прямой подстановки в случае нескольких правых частей. Покажем, что задача такого рода может быть решена с использованием блочного алгоритма, в котором много матричных умножений, при условии, что q и п достаточно велики. Это окажется важным в последующих разделах, где обсуждаются различные блочные разложения. Отме¬ тим, что, хотя мы рассматриваем здесь только задачу с нижней треугольной матрицей, все, что говорится, применимо также и для верхнего треугольного случая. Чтобы реализовать блочный алгоритм прямой подстановки, разобьем систему
90 Гл. 3. Линейные системы общего вида LX = В на блоки следующим образом: Ljj 0 ... 0 x, *1 ^21 ^22 ••• ® X2 B2 I I *. ! . - . Ln 1 ^2 xN (3*1.3) Допустим, что диагональные блоки квадратные. По аналогии с выводом алгоритма 3.1.3, мы решаем систему LiiXl = В1 относительно Хх и далее исключаем Xt из всех блочных уравнений от 2 до N: 1 K> О О 1 1 * 1 ' Вг - L2iX, ^32 ^-33 *** ® X3 Въ — L3lXx _ LN2 Ln$ ... Lfjff ^ 1 1 Bn Ln1Xi Продолжая таким образом, мы получим следующую схему прямого блочного saxpy-исключения: for j = 1: N Решить LjjXj = Bj for / = у + I: N Bt-Bt-LtjXj end (3.1.4) end Заметим, что /-цикл содержит один пересчет блочного варианта saxpy следующего вида: Bj+i Bj+1 • = ’ — Bn BN -V+U -NJ х5. Для реализации этого алгоритма в виде умножения матриц на данной архитектуре, очевидно, что разбиение на блоки (3.1.3) должно давать достаточно «большие» Xj. Допустим, что в этом случае Xt имеет по крайней мере г строк. Тогда алгоритм может быть выполнен, если N = сей(л/г), Х19 ..., Aw_1eRrxfl и ХдеК(я~(*_ О»)** 3.1.5. Доля флопов 3 уровня Удобно взять на вооружение какую-нибудь меру, дающую количественную оценку для матричных умножений в данном алгоритме. С этой целью определим долю флопов 3 уровня в алгоритме, как относительное количество флопов, реализу¬ ющих матричные умножения. Такие флопы мы назовем флопами 3 уровня. Определим долю флопов 3 уровня для (3.1.4) при простом предположении, что п = rN. (Аналогичные выводы имеют силу и с неравными блоками, описанными выше.) Так как имеется N применений прямой подстановки для г х г-систем (вычисления реализуются на уровне 2) и общее число операций равно л2, то доля флопов 3 уровня аппроксимируется выражением 1 -■ Nr2
ЗА. Треугольные системы 91 Таким образом, для больших N почти все флопы-это флопы 3 уровня и поэтому разумно выбрать N настолько большим, насколько это возможно, при том условии, что предполагаемая архитектура может обеспечить высокий уровень производи¬ тельности при реализации блочных операций saxpy ширины не меньше г = njN, 3.1.6. Решение неквадратных треугольных систем Проблема решения неквадратных, т х п, треугольных1> систем заслуживает некото¬ рого упоминания. Рассмотрим сначала нижний треугольный случай, когда т ^ п, т. е. ГТП] ГМ Lxie R— MR" U2J b2J L21eR<"*-">*" t2eRM“" * Допустим, что матрица Llt нижняя треугольная и невырожденная. Если мы применим прямую подстановку к Ltlx — Ьу то х является решением системы в том случае, когда L2l(Liibl) = Ьг. Другими словами, не существует решения для всей системы. В такой ситуации может быть подходящей минимизация в смысле наименьших квадратов (см. гл. 5). Далее рассмотрим нижнюю треугольную систему Lx — Ьу когда число столбцов п превосходит число строк т. В этом случае применим прямую подстановку к квадратной системе L(\ :т, \:т)х(\:ту 1:т) = Ьу а для х(т+1:л) зададим произвольные значения. Чтобы получить добавочные комментарии по системам, имеющим больше неизвестных, чем уравнений, см. § 5.7. Рассмотрение неквадратных верхних треугольных систем проводится аналогич¬ но. Детали оставляем для читателя. 3.1.7. Уннтреугольные системы Унитреугольная матрица-это треугольная матрица с единицами на главной диагонали. Многие из треугольных матриц, вычисляемых ниже, обладают этим дополнительным свойством. Очевидно, что при этом не затрудняется реализация указанных выше процедур. 3.1.8. Алгебраические свойства треугольных матриц Мы приведем некоторые свойства произведений и обратных матриц для треуголь¬ ных и унитреугольных матриц, с целью использовать эти свойства в дальнейшем: а Обратная к верхней (нижней) треугольной матрице является верхней (нижней) треугольной. а Произведение двух верхних (нижних) треугольных матриц является верхней (нижней) треугольной, а Обратная к верхней (нижней) унитреугольной матрице является верхней (нижней) унитреугольной. а Произведение двух верхних (нижних) унитреугольных матриц является верх¬ ней (нижней) унитреугольной. Задачи 3.1.1. Предложить алгоритм для вычисления ненулевого z€ R", такого, что 1/2 = 0, где Ue R" х " является верхней треугольной, причем = 0, a ult ... ия _ 11 я _ t 9* 0. u Такие системы иногда называют трапециевидными. - Прим. перев.
92 Гл. 3. Линейные системы общего вида 3.1.2. Выяснить, как может быть вычислен определитель квадратной треугольной матрицы с наименьшим риском переполнения сверху и снизу. 3.1.3. Переписать алгоритм 3.1.4, предполагая, что U хранится по столбцам в массиве u.vec длины п{п + 1)/2. 3.1.4. Написать детально вариант (3.1.4) без предположения, что N делится на п. 3.1.5. Доказать все свойства треугольных матриц, приведенные в конце раздела. Замечания и литература к § 3.1 Фортран-программу для решения треугольных линейных систем можно найти в UNPACK (гл. 6). Точность решения треугольных систем анализируется в работе Higham N.J. (I988d). “The Accuracy of Solution to Triangular Systems”, Report 158, University of Manchester, Department of Mathematics. (To appear, SIAM J. Numer. Anal.) 3.2. L U-разложение Как мы только что видели, треугольные системы решаются «легко». Идея исключения Гаусса-это преобразование данной системы Ах — Ь в эквивалентную треугольную систему. Преобразование достигается составлением соответствующих линейных комбинаций уравнений. Например, в системе 3xA + 5л:2 = 9, 6xt + 7х2 = 4, умножая первую строку на 2 и вычитая ее из второй, мы получим 3jtj + 5х2 = 9, - Зх2 = -14. Это и есть исключение Гаусса при п = 2. Наша цель в данном разделе-дать полное описание этой важной процедуры, причем описать ее выполнение на языке матричных разложений. Данный пример показывает, что алгоритм вычисляет нижнюю унитреугольную матрицу L и верхнюю треугольную матрицу U так, что А = L17, т. е. Решение для исходной задачи Ах = b находится посредством последовательного решения двух треугольных систем: Ly — b, Их = и => Ах = LUx = Ly = b. L U-разложение - это «высокий уровень» алгебраического описания исключения Гаусса. Представление результата матричного алгоритма на «языке» матричных разложений полезно. Оно облегчает обобщение и проясняет связь между алгорит¬ мами, которые могут казаться очень разными на скалярном уровне. 3.2.1, Матрицы преобразования Гаусса Чтобы получить разложение, описывающее исключение Гаусса, нам нужно иметь некоторое матричное описание процесса обнуления матрицы. Пусть п = 2, тогда как ^#0ит = x2/xt, то
3.2. LU-разложение 93 В общем случае предположим, что xeRn и х* ф 0. Если Xi и мы обозначим то Мкх - Мк = I - xel, 0 0 - 0 (3.2.1) 1 0 -TJb+l 1 -7-п О ... 1 Х\ ’ хг Хк Хк **+1 0 0 Матрица Мк-это матрица преобразования Гаусса. Она является нижней унитре- угольной. Компоненты т(£ + 1:л)-это множители Гаусса. Вектор т называется вектором Гаусса. Для реализации данных идей имеется функция, которая вычисляет вектор множителей: Алгоритм 3.2.1. Если xeR" и элемент xt ненулевой, функция вычисляет вектор t длины п— 1, такой, что если М- матрица преобразования Гаусса, причем М(2:«, 1) = — / и у = Мх, то у(2:п) — 0. function: t — gauss (х) п = length (х) / = х(2:л)/х(1) end gauss Алгоритм требует п — 1 флоп. 3.2.2. Применение матриц преобразования Гаусса Умножение на матрицу преобразования Г аусса выполняется достаточно просто. Если матрица CeRnxr и Mk = I — те* , тогда преобразование вида МкС = (/ — xel) С = С - х(е£Q осуществляет одноранговую модификацию. Кроме того, поскольку т(1 :к) = 0, то задействованы лишь элементы матрицы С (к + 1 :). Следовательно, мы получаем Алгоритм 3.2.2. Если матрица CeR"xr и М задает п х «-преобразование Гаусса, причем М(2:и, I) = —тогда следующая функция заменяет С на МС. function: С = gauss.app (С, ;) п = rows (С) С (2: л, :) = С(2::) - /С(1, :) end gauss.app Этот алгоритм требует 2(« — 1)г флопов. Отметим, что если матрица М(к 4-1:«, к) — = — /, тогда обращение вида С = gauss.app(C(/c:«, :), /) заменяет С на МкС.
94 Гл. 3. Линейные системы общего вида Пример 3.2.1 С = 1 4 7 2 5 8 3 6 10 мс = 4 7 1 1 10 17 3.2J. Свойства ошибок округления в преобразованиях Гаусса Обозначим через Г вычисленный аналог вектора / в процедуре gauss, тогда нетрудно убедиться, что ?=/ + £, |e|<u|f|. Если вектор Г используется в процедуре gauss.app и fl((/ — tef)C) обозначает результат реальных вычислений, то П((/-?еГ)0 = (/-ГеГ)С + £, где |£|<Зи(|С| + И|С(1,:)|) + 0(и2). Очевидно, что при большом векторе t ошибки в вычисленных данных могут быть велики относительно |С|. По этой причине использование преобразований Гаусса требует тщательной проверки, которая будет рассмотрена ниже в § 3.4. 3.2.4. Приведение к верхнему треугольному виду Допустим, что матрица АеЯяхя. Матрицы преобразования Гаусса Ми..., M._j, как правило, можно подобрать так, что матрица = U является верхней треугольной. Чтобы убедиться в этом, сначала рассмотрим случай для п = 3. Предположим, что 1 4 7 2 5 8 3 6 10 Если 1 0 0 М1 = -2 1 0 » -3 0 1 тогда MtA = 1 4 7 О -3 -6 О -6 -11
3.2. LU-разложение 95 Аналогично, 1 0 0 1 4 7 0 1 0 =>, м2(АМ) = 0 -3 -6 0 -2 1 0 0 1 Обобщение этого примера позволяет нам представить к-й шаг следующим образом: • Мы имеем дело с матрицей А{к~1} = ‘Мк_{ которая с 1-го по (к — 1)-й столбец является верхней треугольной. • Множители Гаусса в Мк определяются по матрице Л(к~1}(к + 1:п9 к). • Особенно важно для продолжения процесса выполнение условия <&ГХ} Ф 0. Замечая, что полное приведение к верхнему треугольному виду достигается через п — 1 шаг, мы получаем следующий алгоритм к = 1 while Л(к9 к) ф 0/\к <п — 1 Г — gauss (А (к: п9 к)) Л(к:п9 :) = gaus&app(i4 (к: п9 ;), /) (3.2.2) к = к 4- 1 end Элемент Л(к9 к) необходимо проверять, чтобы избежать деления на нуль в проце¬ дуре gauss, в которой вычисляются множители вида А (/, к)/А(к9 к). Элементы А(к9 к) называются ведущими элементами, и их относительная величина оказывается крайне важной. 3.2.5* £ (/-разложение Если алгоритм (3.2.2) завершается при к = п9 то, говоря на матричном языке, он вычисляет матрицы преобразования Гаусса М1...МЯ_1, такие, что матрица Мл_,...М*А = U является верхней треугольной. Легко убедиться, что если Мк — I — тк*е1, тогда обратная к ней задается следующим выражением Мк = — / + T<V и поэтому А = LU9 (3.2.3) где (3.2.4) Очевидно, что L-это нижняя унитреугольная матрица, поскольку каждая матрица Мь1 является нижней треугольной. Разложение (3.2.4) называется LU-разложением матрицы А. Необходимость проверять в алгоритме (3.2.2) ведущие элементы на нуль говорит о том, что L (/-разложение может не существовать. Например, невозможно определить l(J и ии в следующем случае: «11 «12 «13 О U22 «23 О 0 н33 Чтобы убедиться в этом, приравняем соответствующие элементы и заметим, что мы должны получить следующее ип = 1, и12 = 2, /21 = 2, ы22 = 0 и /31 = 1. Однако если потом рассмотреть элемент (3.2), то мы придем к противоречивому уравнению 6 = /jl«12 + ^32 «22 ^ 4. 1 2 3 1 0 0 2 4 7 = /и 1 0 3 6 3 М ^32 1
96 Га. 3. Линейные системы общего вида Как мы только что показали, нулевой ведущий элемент в алгоритме (3.2.2) мо>~но отождествить с наличием вырожденной главной подматрицы. Теорема 3.2.1. Для матрицы /4 е R”х" существует LU-разложение, если det (А (1. к, 1: к)) ф 0, для к = 1: п — 1. Если LU-разложение существует и А не вырожде¬ на, тогда LU-разложение единственно и det А = ии...мпп. Доказательство. Предположим, что (к — 1)-й шаг в алгоритме (3.2.2) выполнен. В начале к-то шага матрица А будет заменена матрицей Мк^г. ..МХА = А(к~1). Заметим, что eft-1* является к-м ведущим элементом. Поскольку матрицы преобра¬ зования Гаусса - нижние унитреугольные, то, как следует из вида ведущей к х к части полученного уравнения, det (А (1: /с, 1: к)) = e(*f1}... eft-1} • Поэтому если А(\:ку У .к) не вырождена, то к-й ведущий элемент является ненулевым. Для доказательства единственности предположим, что A =LlUl и А = L2U2~ два LU-разложения невырожденной матрицы Л, тогда LI1 Lt = U2 С/f1. Так матри¬ ца L21Ll является нижней унитреугольной, a U2Uil-3то верхняя треугольная матрица, то отсюда следует, что обе матрицы должны быть равны единичной. Следовательно, Lx = L2 и Ux = U2. И наконец, если А = LU, то det(4) = det(LU) = det(L)det(U) = det(U) = = ии...ипн. 3.2.6. Несколько практических замечаний С практической точки зрения существует несколько улучшений, которые могут быть реализованы в алгоритме (3.2.2). Во-первых, поскольку мы уже получили нули в столбцах с 1-го до (к — 1)-го, то преобразование Гаусса нужно применять только к столбцам с к-ro до п-го. На самом деле нет необходимости применять преобразо¬ вание Гаусса также и к /с-му столбцу, так как мы знаем результат. Поэтому эффективным способом для вызова процедуры gaus&app является следующий А (к: и, к + 1: п) = gauss.арр(/1 (к: п> к-\- 1: п), /). Другое существенное замечание состоит в том, что множители, задающие матрицу Мк, могут храниться в позициях, в которых получены нули, т.е. в элементах А (к + 1: л, к). С учетом этих изменений мы получаем следующую версию алгоритма (3.2.2). Алгоритм 3.2.3 (Исключение Гаусса с внешним произведением). Предположим, что матрица A eR"xn обладает таким свойством, что подматрицы А(1: /с, I :к) невырож¬ дены для к = 1 :п — 1. Данный алгоритм вычисляет разложение Мп_х ...Мх А = U, где матрица U является верхней треугольной, а каждая матрица Мк~это матрица преобразования Гаусса. Матрица U хранится в верхнем треугольнике матрицы А. Множители, задающие матрицы Мк, запоминаются в элементах А(к + 1:и, /с), т.е. А (к + 1:п, к) = -Мк(к-\-\ :п,к). for к = 1: п — 1 / = gauss (Л (/с: и, к)) А(к + 1: л, к) = t А(к:п, к + 1 :п) = gauss.app(y4(fc:n, к + 1 :п9 t)) end Этот алгоритм требует (2/3) л3 флопов и является классической формулировкой метода исключения Гаусса. Заметим, что каждое прохождение через fc-цикл реали¬ зует внешнее произведение.
3.2. LU-разложение 97 3.2.7. Где хранить матрицу L? Алгоритм 3.2.3 представляет матрицу L в виде сомножителей. В частности, если tik)~это вектор множителей, задающий матрицу Мк, тогда на выходе алгоритма мы получим, что Л(/с+1:л, к) = /*к). Одно из наиболее благоприятных совпадений в матричных вычислениях состоит в том, что если L = Mi1..., тогда L(k + 1 :и, к) = Этот факт очевиден, если внимательно посмотреть на произведе¬ ние, задающее матрицу L. Действительно, L ~ (J + т(1Ч)...(/ + = / + £ к- 1 Поскольку столбец А (к + 1: п, к) содержит к-й вектор сомножителей /<*\ отсюда следует, что элементы А (/, к) содержат lik для всех / > к. 3.2.8. Решение линейной системы После разложения матрицы /I посредством алгоритма 3.2.3 в массиве А будут храниться матрицы L и U. Поэтому мы можем решить систему Ах = Ь, после¬ довательно решая треугольные системы Ly = b и Ux = у с использованием методов из § 3.1. Пример 3.2.3. Если алгоритм 3.2.3 применен к матрице А = 1 4 7 1 0 0 ' 1 4 7 2 5 8 = 2 1 0 0 -3 -6 3 6 10 3 2 1 0 0 1 тогда на выходе 4 7 -3 -6 2 1 Если вектор fc = (l, 1, I)7, то вектор у = (1, — 1, 0)т разрешает систему Ly = b, а вектор х = (—1/3, 1/3, 0)т разрешает систему Ux = v. 3.2.9. Gaxpy-версия L {/-разложения Исключение Гаусса, как и умножение матриц, описывается процедурой, содер¬ жащей тройной цикл, который может быть упорядочен разными способами. Алгоритм 3.2.3 соответствует “fc/Г версии исключения Гаусса, действительно, если мы распишем подробнее функцию вызова и внесем незначительные изменения, мы получим алгоритм for к = 1: п — 1 А{к+ 1 :п, к) = А{к+ 1к)/А(к, к) for j = к + 1: п for / = к + 1 :п A{i,j) = A(i,j)-A(k к) А (/с, j) end end end Заметим, что в вычислениях преобладает модификация с внешним произведением. Теперь мы получим ^/-вариант исключения Гаусса, который преобладает в gaxpy- 4 63
98 1 л. 3. Линейные системы общего вида версиях и прямом исключении. При таком подходе матрицы преобразования Гаусса не изменяют непосредственно всю матрицу А, как это делается в вариантах с внешним произведением. Их применяют постепенно. Столбец исходной матрицы А (:, J) остается неизменным до/-го шага. На данном шаге алгоритма столбец А (:, у) заменяется на столбец Mj, ,.. .М 2 А (:,/). После чего вычисляется /-матрица преобра¬ зования Гаусса. Чтобы дать строгое описание алгоритма допустим, что для 1 < у < п — 1 нам известны матрицы 1/(1:/ — 1, 1:у — 1) и L(:, 1:/ — I), т.е. мы знаем первые у — 1 столбцов матриц L и 17. Для вычисления у-х столбцов матриц L и U мы составим уравнение относительно этих столбцов А = LU: Л(:, у) = LX/(:,/). Отсюда следует, что А (1 :/ - I, у) = Ц1: / - 1, 1 :/ - 1) [/<J :/ - 1, у), A{y.n,j)= t HJ:n, k)U{k,j). к - 1 Первое уравнение эю нижняя треуг ольная система, которая может бьггь решена относительно вектора 1/(1:/ — 1,у). Когда это выполнено, второе уравнение может быть преобразовано так, что получаются формулы для элемента U{jtj) и столбца L(y + 1 :и, у), действительно, если мы положим v(j: и) = A{j:n, j) ~ £ L (/':«, к) IЦк, j) = к = 1 = Л (у: «,/)-£(/: и, 1:у- 1) С/(1 :> — 1,у), то U(у, у) = v(j) и Ц] + 1:«)/{/(/ j% Таким образом, L{j f 1 :rt, у)-это скалярная операция gaxpy, и поэтому мы получаем алгоритм for у = 1 :и Решить L (1 :у - 1, 1:/ - 1) V (1 :/ - 1, у) = А (1 - 1, у) v{j'n) = A{j-fuj\-L{j:ny lj) (3.2.5) U(у. у) = и (у); L(y + 1:я, у) - v( j + 1 :/г)/[/(/. /1 end Если мы изложим подробнее этот алгоритм и расположим вычисленные матрицы L и U на месте матрицы А, то мы получим Алгоритм 3.2А (Gaxpy-версия исключения Гаусса). Пусть матрица /4eRrt хя и глав¬ ные подматрицы А{\ :fc, 1:к) невырожденны для к = 1:и — I. Данный алгоритм вычисляет разложение А = LU, где L-нижняя унитреугольная матрица, а [/-верх¬ няя треугольная. Если i >у, то элементы А (г,у) содержат элементы L(i,j). Если г <у, то элементы j4 (t у) содержат элементы [7 (/. у). for у = 1 :п {Решить L(1:/ - 1, i :/ - 1) U (1 :/ - 1, у) = А (1 :/ - 1, у)} for к — 1: / — 1 for i = fc + 1: / - 1 yl(/,/) = i(f(y)-^(i. fc) ^ (fc, y) end end {v{j:n) = А (/:«, /) - L(/:«, 17 - I) U(\:/ - 1, /)} for k= i .j- 1 for / =y:« ^,/) = Л(М-Л(л end
3.2. LU-разложение 99 end {Hj + 1:n, j) = 1)0' + 1: Л U + 1h = MJ + 1: n, № (j, j) end Этот алгоритм требует 2л3/3 флопов. 3.2.10. Модификации Краута н Дулитла Отметим, что существует /Yfc-всрсия описанной выше процедуры, приводящая к методу со скалярным произведением для LtZ-разложения. Это более или менее соответствует тому, что известно как варианты Краута и Дулитла исключения Гаусса. 3.2.11. Блочное £ {/-разложение Исключение Гаусса можно организовать так, что умножение матрицы будет' основной операцией. Ключом к исследованию этой блочной процедуры является разбиение матрицы AeR**n следующим образом где г-это блочный параметр. Предположим, что мы вычислили ИУ-разложекие — Atl и далее решаем треугольные системы с несколькими правыми частями ^n^/i2 = ^12 и £21^11 — ^2i Для {/12 и £21 соответственно. Тогда где Я = А22 — L211/12. Отметим, что если г « я, то в вычислениях больше всего требуются флопы Э уровня при r-ранговой модификации матрицы А12. Мы можем повторить процесс для редуцированной матрицы Я. Продолжая аналогичным образом, получим Алгоритм 3.2.5 (Блочная версия Ll-разложения с внешним произведением). Пусть А е R* * я и главные подматрицы А (1: fc, I: fe) невырождены для к = 1: п — 1. Предпо¬ ложим, что г удовлетворяет условию 1 < г < п. Следующий алгоритм вычисляет разложение А = LU посредством г-ранговой модификации. Причем элементы A{itj) замещаются на элементы L(i, j) при i > j и элементы A (/, у) замещаются на U (i, j) при while X < п р = min (я, X + г - 1) Используется алгоритм 3.2.3 для замещения Л(Х:р, Х:р) = LC на I и Р. Решаем: I.Z = Л(Х:р, р + 1 :я). Замещаем: Л(Х:р, р + 1, я)«-Z Решаем: WU = А (р + 1: я, X: р). Замещаем: Л (р + I: и, X: р) W А(р + 1 :л, р + 1 :п) = 4(р + 1 :я, р + 1 :л) — WZ X = р +1 г я — г Х = 1 end Алгоритм требует 2и3/3 флопов. В соответствии с результатами § 3.1.5 давайте рассмотрим долю флопов 3-го
100 Гл. 3. Линейные системы общего вида уровня в этой процедуре. Если г « п (а это представляется разумным), то мы можем допустить для простоты, что п = rN. При реализации г х г L 17-разложения матрицы Л(Х:р, Х:р) = LU требуются только такие флопы, которые не являются флопами 3-го уровня. Поскольку в процессе всего вычисления приходится решать N таких систем, то очевидно, что доля флопов 3-го уровня будет задаваться соотношением Аналогично можно получить алгоритм блочного L U-разложения на основе базовой операции gaxpy. Заметим, что через г шагов алгоритма 3.2.4 мы получаем матрицы Ln, L21 и Uxx из (3.2.6). После этого решаем систему LIXUX2 = А12 относительно UХ2 и вычисляем А = А22 — L2XUX2. Повторяя этот процесс, мы получим Алгоритм 3.2.6 (Блочная gaxpy-версия L (/-разложения). Пусть матрица Л е R” х л имеет ненулевые главные миноры А(\ :ку \ :к) для к = 1:п — 1. И пусть целочислен¬ ный параметр г удовлетворяет соотношению 1 < г ^ п. Тогда следующий алгоритм вычисляет разложение А = LU посредством r-ранговой модификации. На выходе А (/, J) замещаются на L{i, j) для / > / и А (/, J) замещаются на U (/. j) для j ^ L while X < п ц = min (п, X + г — 1) гх — ц — X + 1 Выполняем г, шагов алгоритма 3.2,4 для Л(Х:л, Х:л) Замещаем А (X: р, р 4- I: п) в соответствии с решением Л(Х:ц, X:p)Z = Л(Х:р, ц -I- 1:л) A(\i + 1 :и, [L + I :п) = Л(р + 1 :л, р + 1 :п) — А (р + 1: л, X: р) А (X: р, р + 1: гг) X = р + 1 Алгоритм требует 2л3/3 флопов. В алгоритме 3.2.6 использование алгоритма 3.2.4 требуется только для тех флопов, которые не являются флопами 3-го уровня. Поэтому не трудно показать, что в алгоритме 3.2.6 доля флопов 3-го уровня задается соотношением 1 -3/(2N) при выполнении условия п = rN. Таким образом, доля флопов 3-го уровня в этой процедуре меньше, чем в алгоритме 3.2.5. Тем не менее если N достаточно велико, то нет большой разницы между этими двумя процедурами с точки зрения использо¬ вания флопов 3-го уровня. 3.2.12. {{/-разложение прямоугольной матрицы {(/-разложение прямоугольной матрицы А е R” х " может быть выполнено анало¬ гичным образом. Случай для т > п иллюстрируется уравнением N(2г3/3) 2и3/3 Х = 1 end 12 10 3 4 = 31 5 6 5 2 а уравнение Г12 3-1 Г10-1Г1 2 31 L4 5 6J |_4 lJLo -3 -6J
3,2. LU-разложение 101 описывает случай для т< п. LU-разложение матрицы AeRmxn всегда существует, если главные подматрицы Л(\ :к9 1 :к) нсвырожденны для к = 1 :min(m, п). Чтобы распространить алгоритмы квадратного L U-разложения, описанные выше, на случай прямоугольных матриц, их надо незначительно модифицировать. Например, чтобы реализовать случай т ^ п мы модифицируем алгоритм 3.2.5 следующим образом for j = 1 :min(m — 1, п) Решить L(1 :j\ 1 :j) U (1 :y, J) = относительно V (1: i, j) v{j у 1 :m) = (A(j + 1 :m, J) - L(j + 1 :m, 1:/ - 1) U(\:j, j)) L(j -I- 1 :m, j) « v(j -I- 1 :m)/v(j) end Алгоритм требует mn2 — «э/3 флопов. 3.2.13. Несостоятельность метода Как известно, исключение Гаусса требует невырожденности первых (и — 1) главных подматриц. Это условие может быть нарушено для довольно простых матриц, например ч::] Несмотря на то что матрица А имеет прекрасное спектральное число обусловлен¬ ности, для нее нельзя выполнить L (/-разложение, поскольку ее главная подматрица вырождена. Поэтому чтобы эффективно использовать исключение Гаусса для решения линейных систем общего вида, необходимо применить модификации метода. Анализ ошибок округления, изложенный в последующих параграфах, позволяет получить такие модификации. Задачи 3.2.1. Предположим, что элементы матрицы 4 (е) е R " х " являются непрерывно дифференци¬ руемыми функциями от параметра е. Пусть A s А (0) и все ее главные подматрицы вырождены. Показать, что для достаточно маленьких е матрица А (е) имеет L (У-разложение А (с) = L(e) U (е) и обе матрицы L (е) и U (е) непрерывно дифференцируемы. 3.2.2. Предположим, что мы разбили матрицу А е R“ х " следующим образом: где у4п-это (г х г)-матрица. Пусть Atl невырожденна. Тогда матрица S = А22 — A2l A Л12 называется представлением Шура матрицы Аи для матрицы А. Показать, что если Ахх имеет L(/-разложение, то через г шагов алгоритма (3.2.3) матрица А (г у I :п> г у 1:л) содержит матрицу S. Как может быть получена матрица 5 через г шагов алгоритма (3.2.4)? 3.23. Пусть матрица у4еК',хл имеет L (/-разложение. Показать, каким образом может быть решена система А х = Ь9 без хранения сомножителей, с вычислением LU-разложения ях(«+ 1) матрицы \_АЬ\. 3.2.4. Описать вариант исключения Гаусса, который получает нули в столбцах матрицы А в порядке п: — 1:2 и который получает разложение А = U L, где U - верхняя унитреугольная матрица, L- нижняя треугольная матрица. 3.2.5. Матрицы из R"х " вида N(y, к) = I — у el, yeR", называются матрицами преобразова¬
102 Гл. 3. Линейные системы общего вида ния Гаусса-Жордана, (а) Дать формулу существования матрицы N(y, к)'1. (Ь) Для данного вектора jc е R" найти вектор у, такой, что N {у, к) = сА? (с) Построить алгоритм, использующий матрицы преобразования Гаусса-Жордана, который замещает матрицу А на матрицу А~\ Каковы условия на матрицу А, обеспечивающие успех вашему алгоритму? 3.2.6* Описать детально версию алгоритма 3.2.4, применимую для произвольных т х п матриц. Замечания н литература к § 3.2 Представления Шура (задача 3.2.2) возникают во многих приложениях. Для расширения практического и теоретического кругозора в этом вопросе см. Cottle R. W. (1974). “Manifestations of the Shur Complement’’, Lin. Alg. and Its Applic. 8, 189-211. 6 некоторых прикладных областях представления Шура известны как «преобразования Гаусса». Использование матриц преобразования Гаусса-Жордана детально изложено в книге Fox L. (1964). An Introduction to Numerical Linear Algebra, Oxford University Press, Oxford- Как мы уже упоминали, версии исключения Гаусса со скалярным произведением давно известны и некоторое время использовались. С этими /fc-вариантами связаны имена Краута и Дулитла. Они были популярны во времена настольных вычислителей, поскольку требуют значительно меньше промежуточных результатов, чем исключение Гаусса. Эти методы все еще достаточно притягательны, так как их можно использовать с накоплением скалярного произведения. Дополнительные ссылки по этому вопросу можно найти в гл. 4 Fox (см. выше) или в работе Stewart (IMC, pp. 131-39). AJ1 ГОЛ-процедура может быть найдена в статье Bowdler H.J., Martin R. S., Peters G., and Wilkinson J. H. (1966). “Solution of Real and Complex Systems of Linear Equations”, Numer. Math. 8, 217-34, See also HACLA; pp. 93-110. См. также Forsythe G.E. (1960). “Crout with Pivoting”, Comm. ACM 3, 507-8. McKeeman W. M. (1962). “Grout with Equilibration and Iteration,” Comm. ACM. 5, 553-55- Организация циклов в L Cr-вычислениях обсуждается в работах Dayde M.J. and Duff I. S. (1988). “Use of Level-3 BLAS in LU Factorization on the Cray-2, theETA-ЮР, and the IBM 3090-200/VP’, Report CSS-229, Computer Science and Systems Division, Harwell Laboratory, Oxon Ox 11 ORA, England. Dongarra J.J., Gustavson F. G., and Karp A. (1984). “Implementing Linear Algebra Algorithms for Dense Matrices on a Victor Pipeline Machine”, SIAM Review 26, 91-112. Ortega J. M. (1988). ‘The ijk Forms of Factorization Methods I: Vector Computers”, Parallel Computers 7, 135-147. В первой статье исследуются блочная версия со скалярным произведением, блочная Gaxpy- версия и блочная версия с внешним произведением исключения Гаусса. Вычисление L U-разложения большой разреженной матрицы-тема многих исследований. См. Bjork A., Plemmons R.J. and Schneider Н. (1981). Large-Scale Matrix Problems, North-Holland, New York. DufTI. S., Erisman A. M. and ReidJ. K. (1986). “Direct Methods for Sparse Matrices”, Oxford University Press. Duff I. S. and Stewart G. W., eds. (1979). “Sparse matrix Proceedings”, 1978, SIAM Publications, Philadelphia, PA. 3.3. Анализ ошибок округления в методе исключения Гаусса В первых двух разделах мы оценим влияние ошибок округления, когда алгорит¬ мы используются для решения линейной системы Ах = Ь. Прежде чем приступить к этому анализу, полезно рассмотреть ситуацию, близкую к идеальной, при которой не возникает ошибок округления в процессе решения, а ошибки возникают при
3.3. Анализ ошибок округления 103 задании А и Ь. Таким образом, если fl(£) = b + е, а хранимая матрица fl (Л) = А + Е невырождена, то мы допускаем, что вычисленное решение % удовлетворяет соотношению (А + £)* = (Ь + Д \\Ц\а> < UIMIL, ikiu ^ Uikiu, (3*3.1) т.е. Я является решением системы, «близкой» к точной. Более того, если uk^iA) ^ < 1/2 (например), то, используя теорему 2.7.1, можно показать, что i£L си* Оценки (3.3.1) и (3.3.2) являются «наилучшими» оценками по норме. В общем случае не существует анализа ошибок округления в оо-норме для решения линейной системы, который требовал бы хранения А и b и позволял бы получить более тонкую оценку. Как следствие этого, мы не вправе критиковать алгоритм за нахождение неточного решения если матрица А плохо обусловлена относительно машинной точности, например u&^kl) ^ 1. 3.3.1. Ошибки в L {/-разложении Давайте сравним оценки ошибок для исключения Гаусса с идеальными оценка¬ ми, приведенными выше. Для удобства будем использовать бесконечную норму и остановимся на алгоритме 3.2.3 (версии с внешним произведением). Оценки ошибок, которые мы получим, также применимы к алгоритму 3.2.4 (gaxpy-версии). Наша первая задача-получить оценки ошибок округления, связанные с вычисле¬ нием треугольных сомножителей. Теорема 3.3.1. Пусть А-это п х п матрица, заданная в арифметике с плавающей запятой. Если в процессе реализации алгоритма 3.2.3 не возникает нулевых ведущих элементов, тогда вычисленные треугольные матрицы L и О удовлетворяют соотно¬ шению Ltf = Л + Я, (3.3.3) \Н\ < 3(я - 1)и(И + |t||D|) + О (и2). (3.3.4) Доказательство. Доказательство проведем по индукции относительно п. Очевидно, что теорема верна при п = 1. Пусть она верна для всех (п — 1) х (и — 1) матриц, заданных в арифметике с плавающей запятой. Если U в]п-1’ 1 и - 1 тогда на первом шаге алгоритма вычисляются вектор z = fl(vjа) и матрица Ах = =//(Я — zwT). Поэтому мы имеем *=■-»+/, 1/1 <■— (3.3.5) а а и Ах = B-zwT + F9 |F| ^2и(|Д| + |£|Мг) + 0(и2) (3.3.6) Используем алгоритм для вычисления LlZ-разложения матрицы Av По индукции Ах — LjL/j и результирующие треугольные матрицы Lx и б\ удовлетворяют
104 Гл. 3. Линейные системы общего вида соотношению tipi = Я, +я4, |Я,| ^ 3(и - 2)и(|Ли + llxllt?,!) + О (и2). (3.3.7) (3.3.8) Поэтому Из (3.3.6) следует, что UiKO +2и)(|В| + |£|Мг) + 0(и2), и поэтому, используя (3.3.7) и (3.3.8), мы получаем | Н, + F| < 3(и - l)u(|B| + |i|Mr + \Li\Wt\) + О (и2). Хак КаК |о ^ ^ «llnl ТЛ ПРГ«СЛ гтитьга итл откуда следует доказательство теоремы. □ Отметим, что если матрица А размера т х л, тогда теорема применима при условии, что п из соотношения (3.3.4) заменяется на меньшее из чисел пит. 3.3.2. Решение треугольных систем с приближенными треугольными матрицами Оценим влияние ошибок округления, если решение треугольных систем с мат¬ рицами L и С выполняется методами из § 3.1. Теорема 3.3.2. Пусть L и С вычислены в результате LV-разложения п х п матрицы А в режиме с плавающей запятой посредством алгоритма 3.2.3 или 3.2.4. Предполо¬ жим, что для нахождения решения р системы Ly = Ь и решения & системы 0Х = J) используются методы из § 3.1. Тогда (А + Е)х = Ь, где |£|<пи(ЗМ| + 5|£||t?|) + 0(u2). Доказательство. Из соотношений (3.1.1) и (3.1.2) мы имеем (3.3.9) (I + F)j> = Ь, |FK*u|L| + 0(u2), (C + G)£ = y, |<7| <nu((?| + 0(u2), поэтому (L + F)(0 + G)3c = (W + FC + LG + FG)* = b. Как следует из теоремы 3.3.1, LC = А + н, где |Я| < 3(п — 1)и(М| + |£||0|) + О (и2), поэтому, задавая матрицу E = H+FU + LG + FG, мы получаем (А + Е)х = Ь. Причем
3.3. Анализ ошибок округления 105 \E\^\H\ + \F\\0\ + \L\\G\ + O(u2)^ < Зии(И| + |£||(/|) + 2яи(|£-|Ц?|) + О (и2). Если величина |£| | (?| не слишком велика, то оценка (3.3.9) сопоставима с идеаль- ной оценкой (3.3.1). (Множитель п не имеет значения; ср. с результатом Уилкинсона из § 2.4.6.) Такая ситуация возможна, так как в исключении Гаусса нет никаких средств для управления возникновением маленьких ведущих элементов. Если маленькие ведущие элементы встречаются, то мы можем ожидать больших чисел в представлении матриц L и £?. Подчеркнем, что маленькие ведущие элеметы не являются необходимым следст¬ вием плохой обусловленности, что подтверждается примером с матрицей А Таким образом, исключение Гаусса может давать сколь угодно плохие результаты, даже для хорошо обусловленных матриц. Метод является неустойчивым. Для того чтобы исправить этот недостаток алгоритма, необходимо в процесс исключения ввести перестановки строк и/или столбцов, с целью удержать в подходя¬ щих границах числа, возникающие по ходу вычислений. Эта идея развивается в следующем разделе. Пример 3.3.1. Пусть Р = 10, / = 3 и для решения системы используется приближенная арифметика: [0.001 1.00 | Г| Г 1.00 j 1.00 2.00J UJ'L300J мы получим :Г1 °] Л- 1 1 |_1000 1J о -!°ooj эт, что ■*-[т ;]♦[:-•]■ [10 0.001 I 10-3 1.001 J Применяя исключение Гаусса, мы получим £’1 причем вычисления показывают, что £{?= °С~ • 1+1 - * I = А + Н. Отметим, что матрица 6 I является граничной матрицей из соотношения (3.3.4) LlO 3 1.001 J и дает верхнюю оценку для \Н\. Если мы продолжим решение задачи, используя методы для решения треугольных систем из § 3.1 и применяя арифметику той же точности, то мы получим вычисленное решение х = (0,1)т. Это не совпадает с точным решением х = (1.002 ... , 0.998 ...)т. Задачи 33.1. Показать, что отмена предположения о том, что матрица А задана в арифметике с плавающей запятой, как в теореме 3.3.1, приведет к замене в соотношении (3.3.3) коэф¬ фициента «3» на «4». 33.2. Пусть А - матрица размера п х а матрицы L и О получены при помощи алгоритма 3.2.3. (а) Сколько требуется флопов для вычисления || |£| |t71? (Ь) Доказать, что fi(\L\|t?|) < <(l +2«u)|t||tf| + G(uJ)? 3.3.3. Пусть jc = А ~1Ь. Доказать, что если е = х — & (ошибка) и г = b — А к (невязка), тогда
106 Гл. 3. Линейные системы общего вида Допустить согласованность между матричной и векторной нормами. 3.3.4. Используя двухразрядную с десятичным основанием плавающую арифметику, вычис¬ лить LU-разложение матрицы Что представляет матрица И из соотношения (3.3.3) для этого примера? Замечания и литература к § 3.3 Наш подход к обратному анализу ошибок мы позаимствовали в работе de Boor С. and Pinkus А. (1977). “A Backward Error Analysis for Totally Positive Linear Systems”, Numer. Math. 27, 485-90. Первой публикацией, связанной с анализом ошибок округления в исключении Гаусса, является работа Wilkinson J. Н. (1961). “Error Analysis of Direct Methods of Matrix Inversion”, J.ACM 8, 281-330. В последние годы были получены различные улучшенные оценки и был упрощен анализ. См. Paige С. С (1973). “An Error Analysis of Method for Solving Matrix Equations”, Math. Comp. 27, 355-59. Reid J.K. (1971). “A Note on the Stability of Gaussian Elimination”, J. Inst. Math. Applic. 8, 374-75. Robertson H.H. (1977). “The Accuracy of Error Estimates for Systems of Linear Algebraic Equations” J. Inst. Math. Applic. 20, 409-14. Добавления при переводе § 3.3 Вероятностные свойства ошибок округления впервые рассмотрены в работах Воеводин В. В. (1969). «Ошибки округления и устойчивость в прямых методах линейной алгебры».-М.: Изд-во МГУ. Воеводин В. В. (1977). «Вычислительные основы линейной алгебры».-М.: Наука. 3.4. Выбор ведущего элемента Приведенный в предыдущем разделе анализ показывает, что мы должны быть уверены в отсутствии больших элементов в вычисленных треугольных множителях L и О. Пример показывает источник возникших неприятностей: относительно малый ведущий элемент. Перестановкой строк от этих сложностей можно избавиться. В нашем примере, если P-это матрица перестановок вида А - Гo.oooi 1~| Г 1 о"|Г< L 1 и Lioooo iJL 0.0001 1 0 -9999 то РА = Сейчас треугольные множители содержат достаточно малые элементы. В этом разделе мы покажем, как определить перестановочный вариант матрицы
3.4. Выбор ведущего элемента 107 А, чтобы добиться достаточно устойчивого L V-разложения. Существует несколько способов достижения цели, и все они соответствуют разным стратегиям выбора ведущего элемента. Мы остановимся на стратегиях частичного и полного выбора ведущего элемента. Мы обсудим эффективные реализации этих стратегий и их свойства. А начнем с обсуждения применения матрицы перестановок. 3.4.1. Перестановочные матрицы Стабилизация процесса исключения Гаусса, которая обсуждается в данном разделе, предполагает переупорядочивание данных в виде перестановки двух мат¬ ричных строк. В соответствии с нашим желанием описывать все вычисления в «матричных терминах» нам необходимо ввести понятие перестановочной матри¬ цы. Перестановочная матрица-это матрица, отличающаяся от единичной лишь перестановкой строк, например 0 0 0 Г 10 0 0 0 0 10 0 10 0 /> = Перестановочную матрицу нет необходимости хранить полностью. Гораздо более эффективно перестановочную матрицу можно представить в виде целочисленного вектора р длины п. Один из возможных способов такого представления это держать в р(к) столбцовый индекс единственной «1» к-й строки матрицы Р. Так вектор р = (4123) соответствует кодировке приведенной выше матрицы Р. Также возможно закодировать Р указанием столбца той позиции, в которой находится элемент «1», например р — (2431). Если Р-это матрица перестановок, а А-некоторая матрица, тогда матрица АР является вариантом матрицы А с переставленными столбцами, а РА вариантом матрицы А с переставленными строками. Перестановочные матрицы ортогональны, и поэтому если Р перестановочная матрица, тогда Р~1 = РТ. Произведение перестановочных матриц также является перестановочной матрицей. В этом разделе для нас особый интерес представляют взаимные перестановки. Такие перестановки осуществляют матрицы, получаемые простой переменой мест двух строк единичной матрицы, например “О 0 0 Г 0 10 0 0 0 10 10 0 0 Е = Взаимные перестановки могут использоваться для описания перестановок строк и столбцов матрицы. В приведенном выше примере порядка 4x4 матрица ЕА отличается от матрицы А перестановкой 1-й и 4-й строк. Аналогично матрица АЕ отличается от матрицы А перестановкой 1-го и 4-го столбцов. Если Р ~ Еп... Ех и каждая матрица Ек является единичной с переставленными к и р(к) строками, тогда вектор р(\:п) содержит всю необходимую информацию о матрице Р. Действительно, вектор xeR" может быть замещен на вектор Рх следующим образом: for к = 1 :п х(к)<г+х{р(к)) end
108 Гл. 3. Линейные системы общего вида Здесь символ «<-►» обозначает «выполнение перестановки». x(fc)<->x(p(/c))<i>r = х(к\ х(к) = х(р(к))у х(р(к))= г. Поскольку каждая матрица Ек является симметричной и РТ — Е1... Еп, то также можно выполнить замещение вектора х на вектор Ртх: for к = п: — 1:1 (/>(£)) end Необходимо отметить, что операции перестановок не принадлежат к операциям плавающей арифметики. Тем не менее, операции с матрицами перестановок часто приводят к нерегулярной сортировке данных и могут потребовать значительных вычислительных затрат. 3.4.2. Частичный выбор ведущего элемента: общая идея Мы показали, как можно использовать взаимные перестановки в LV -разложе¬ нии, чтобы обеспечить появление множителей Гаусса, по абсолютной величине не превосходящих единицу. Пусть матрица А = 3 17 10 2 4 —2 6 18 -12 Чтобы добиться наименьших множителей в первой матрице разложения по Гауссу с помощью взаимных перестановок строк, надо сделать элемент аХ1 наибольшим в первом столбце. Если Р,-матрица взаимных перестановок, тогда о о I 0 1 о 1 о о Поэтому 6 18 -12 2 4-2 -3 17 10 1 0 0 6 18 -12 -1/3 I 0 =>М,Р,^ = 0 -2 2 -1/2 0 1 0 8 16 М,= Теперь, чтобы получить наименьший множитель переставить 2-ю и 3-ю строки. Поэтому если Р2 = в матрице Мг, необходимо 1 0 0 1 0 0 0 0 1 и М2 — 0 1 0 0 1 0 0 1/4 1 то М2Р2М1Р1А = 6 18 -12 0 8 16 0 0 6
3.4. Выбор ведущего элемента 109 Пример иллюстрирует общую идею, основанную на перестановке строк. Обобщая эту идею, мы получаем следующую схему: for к = 1: п — 1 Построить матрицу взаимных перестановок Ек9 такую, что если z-это fc-й столбец матрицы ЕкА, то |(z(/c)| = |H*:«)IL- А = ЕкА Построить матрицу преобразования Гаусса Мк9 такую, что если г-это к-й столбец матрицы МкЛ9 то v(k + 1 :и) = 0. А = МкА end Такая стратегия, основанная на перестановке строк, называется стратегией ча¬ стичного выбора. По окончании у нас образуется верхняя треугольная матрица В результате применения стратегии частичного выбора мы получаем множители, не превосходящие по абсолютной величине единицу. Это следует из того, что -1 • • • MlEiA)kk\ = max \(ЕкМк_ х ...MlElA)ik\ к < I < и для к = I :п — 1. Таким образом, стратегия частичного выбора является надежной защитой от появления чрезмерно больших множителей. 3.4.3. Детали стратегии частичного выбора Давайте рассмотрим полностью метод исключения Гаусса (G.E.) в сочетании со стратегией частичного выбора. Алгоритм 3.4.1. (G.E. с частичным выбором: версия с внешним произведением). Если матрица А е R* * ", то данный алгоритм вычисляет матрицы преобразования Гаусса и матрицы взаимных перестановок En_l9 такие что матрица Мя _ хЕп _ !... М1Е1А = U является верхней треугольной. При этом нет множителей, превосходящих I по абсолютной величине. Подматрица А{\:к, к) замещается на матрицу 1/(1: /с, к)9 к=\:п. Подматрица А(к+\:п, к) замещается на матрицу- Мк(к+ 1:п, к), к — 1:л— 1. Целочисленный вектор piv(\:n — 1) задает взаимные перестановки. В частности, матрица Ек представляет строки к и piv(k), к = 1 :п— 1. for к = 1: п — 1 Зададим ц, такое что к ^ р < п и \А(\хк)\ = I\А(к:п, /0IU А(к, k:n)++A{\i9 к:п)\ piv{k) = р if А(к, к)* 0 t = gauss (А(к:п, fc)); А(к + \ :п, к) = t А(к:п9 к + 1:л) = gaus&app(А (к: п9 к + 1 :«),*) end end Заметим, что если на к-м шаге || А(к:п9 1с) = 0, то в условиях точной арифметики первые к столбцов матрицы А линейно зависимы. В отличие от алгоритма 3.2.3, здесь это нам не доставляет трудностей. Мы просто обойдем нулевой ведущий элемент. Дополнительные затраты, вызванные применением стратегии частичного выбо¬ ра, являются минимальными относительно затрат плавающей арифметики, так как
110 Гл. 3. Линейные системы общего вида требуют лишь О (л2) операций сравнения для поиска ведущего элемента. В целом алгоритм требует 2л3/3 флопов. Чтобы решить линейную систему Ах = Ъ после вызова алгоритма 3.4.1, мы должны • Вычислить вектор у = Мп _ хЕп _ х... М1Е1Ь. • Решить верхнюю треугольную систему Ux = у. Вся необходимая для этого информация содержится в массиве А и целочисленном векторе piv. Пример 3.4.1. Если алгоритм 3.4.1 применить к матрице А из § 3.4.2, тогда на выходе мы получим [6 18 - 12*1 1/3 8 16 -1/2 1/4 6J и piv = (3,3). 3.4.4. Где хранить матрицу I? Метод исключения Гаусса вычисляет L 17-разложение матрицы А с переставлен¬ ными строками. Доказательством являются следующие рассуждения. Теорема 3.4.1. Если метод Гаусса с частичным выбором используется для вычисления верхней триангуляризации вида Mn-lEm_1...MlElA = V (3.4.2) посредством алгоритма 3.4.1, то РА = LC7, где Р = Еп _ t... Ех и L-это нижняя унитреуголъная матрица с элементами |/у| < 1. к-й столбец матрицы L ниже диагонали является перестановочной версией к-го вектора Гаусса. В частности, если Mk = I — t(k)l к, то L(k + 1: л, к) = g (к + 1: л), где 9 = Еп - \ ...Ек+ 11{к). Доказательство. Преобразование формулы (3.4.2) позволяет получить соотношение вида М„_ j ...MlPA = U, где Мп_х = Мл _ А и Мк — Еп _ j... Ек + iMkEk + 1... _ j, /с < л — 2. Так как каждая матрица Е} является матрицей взаимных перестановок, меняющей у'-ю строку с р-й строкой, где у, то матрица £^(1 :у — 1, 1 :у — 1) = _ j. Отсюда следует, что каждая матрица это матрица преобразования Гаусса с вектором Гаусса tk) = j -..Ек+ xtik}. Опираясь на результат теоремы, легко показать, как можно изменить алгоритм 3.4.1, чтобы на выходе в матрице A(i, у) содержалась матрица L(i, у) для всех i > у. Мы просто применим преобразование, задаваемое матрицей Ек, ко всем ранее вычисленным векторам Гаусса. Это достигается изменением записи “Л(<с, к: п) <-► А (р, к: л)” в алгоритме 3.4.1 на запись “А (/с, 1:л)<-Л(р, 1: л)”. 3.4.5. Gaxpy-версия В § 3.2 мы рассмотрели схему с внешним произведением и gaxpy-версию для вычисления L U-разложения. Объединив выбор ведущего элемента и схему с внеш¬
3.4. Выбор ведущего элемента 111 ним произведением, естественно было бы это же выполнить и для gaxpy-версии. Возьмем из алгоритма (3.2.5) общую структуру LlZ-процесса для gaxpy-версии. for j = 1: п Решить L( 1 :j - 1, 1 :j - 1) U (1 :j - 1, J) = A (1 :j - 1, J) v(J:n) = A(j:n, j) - L{j:n. 1 :j - 1) (7(1 :j - 1. j) U(j>j) = v(j) L(/+ l:n./)-»(/ + l:n)/U(J,j) end В сочетании со стратегией частичного выбора мы получаем следующий алгоритм for j = 1 :п Решить L(l :j — I, 1 :j - 1) V(1 :j - 1, j) = A (1 :j - 1, j) v{j.n) - A{j:n) - HJ.n, 1 :j- 1)(7(1 :j— I, J) Определить p, j < p < n, такое что |и(ц)| = ||t)(y:")llco Пусть Ej меняет строки j и р и переставляет: (у) <-* (р). if v(J) Ф О v(j+ 1:и) = »(/+ 1:и)А/) end uv.j) = v(j) L{j + \ v{j+ I: л) L(:, 1 :j — 1) = EjL(u l:j-l) end Если наполнить схему деталями и учесть замещение матрицы АУ то получим Алгоритм 3.4.3. (G.E. с частичным выбором: Gaxpy-версня). Алгоритм вычисляет нижнюю унитреугольную матрицу L, верхнюю треугольную матрицу U и матрицу перестановок Р, такие, что РА = LU. Матрица A (i, J) замещается на матрицу если / > у, и на матрицу V (ij) в противном случае. Матрица Р = Еп _ 1... Ех задается целочисленным вектором piv{\: п — 1). В частности, матрица Ej выполняет взаимные перестановки строк у и piv (у). for j = 1 :п {A(;.,j)=EJ-i...ElA(:,j)} for к — 1 :j — 1 A (k, j)<-+ A{piv(k), j) {Решить L( 1 :j - 1, 1 :j - 1) C7(l :j - 1, j) = A (1 :j - 1, j)} for к — 1 :y — 1 for / = к + 1 :j — 1 A (i, J) = A (i, j)-A (i. к) A (к, j) end end {v(y:n) = A (j:/2, y) - L(y: л, 1 :y ~ 1) U (1 :j - 1,y)} for к = 1 :j — 1 for i = j :n A{Uj) = A{i,j)-A{U k)A(Kl> end end {Определить E} и применить кии L(:, l:y — 1)} Найти p, такое, чтоуЧц^«и |Л(р,у)| = ||Л(у:л,у))^ piv(j) = р
112 Гл. 3. Линейные системы общего вида for к = 1 :j A(j, k)<r+A (|i, к) end {L(j + = v(j + 1 :n)/v(J)} if 0 for i = j + 1: n A(i,j) = A(/, J)/A(j, j) end end end Как и версия с внешним произведением, эта процедура требует 2лэ/3 флопов и О (п2) сравнений. Чтобы решить систему Ах = b после применения алгоритма 3.4.3, мы должны (а) положить с = РЪ (выполнить перестановки компонент вектора Ь\ (Ь) решить систему Ly = с (нижняя треугольная система) и (с) решить систему Ux = у (верхняя треугольная система). Пример 3.4.2. Если алгоритм 3.4.2 применить к матрице А из примера 3.4.1, то на выходе мы получим [О 18 — 12 П 1/3 8 16 1/2 1/4 6 J и piv = (3,3). 3.4.6. Анализ ошибок округления Давайте проверим на устойчивость метод со стратегией частичного выбора. Для этого надо подсчитать ошибки округления, которые появляются в процессе исклю¬ чения и в процессе решения треугольных систем. Учитывая, что перестановки не дают ошибок округления, несложно показать, с учетом теоремы 3.3.2, что вычислен¬ ное решение & удовлетворяет соотношению (А + Е)$ = Ь, где |£| <fn(3|i4| + 5РТ\Ц |{?|) + О (и2). (3.4.3) При этом мы считаем, что матрицы Р, L и С вычислены аналогично матрицам Р, L и Uy в соответствии с приведенным выше алгоритмом. Элементы матрицы L ограничены сверху единицей вследствие выбора ведущего элемента. Поэтому IILH^w, и мы имеем оценку \\E\\W <nu(3|MIL + ЩО\и + О (и2). (3.4.4) Наша задача оценить \\С\\^. Определим понятие фактор роста р следующим образом 1^}1 р = шах-——, (3.4.5) i,j,k IMIloo где A{k)-вычисленный аналог матрицы- А(к) = МкЕк... М1Е1А. Отсюда следует, что II^IL < 8w3p||4||ODu + О (и2) (3.4.6) Может ли эта оценка быть сопоставимой с идеальной оценкой (3.3.1), зависит от величины фактора роста р. (Множитель и3 на практике не является действенным и в наших суждениях может быть опущен.) Фактор роста является мерой величины чисел, появившихся в процессе исключения. На практике, р обычно бывает порядка
3.4. Выбор ведущего элемента 113 10, но оно может быть и таким же большим как 2n_l. Несмотря на это, большинство специалистов по численному анализу считает, что случайная после¬ довательность растущих элементов в исключении Гаусса с частичным выбором ведет себя близко к практике. Метод является надежным для использования. Пример 3.4.3. Если метод исключения Гаусса с частичным выбором использовать при решении задачи тогда в ГС/-разложении матрицы А элементы \еи\ < 1, а ипя = 2" 1 3.4.7. Метод блочного исключения Гаусса Исключения Гаусса с частичным выбором можно организовать так, что в нем будет много операций 3-го уровня. Мы детально исследуем блочную процедуру с внешним произведением, но отметим, что также возможно блочное представление gaxpy-версии и версии со скалярным произведением. См. Dayde и Duff (1988). Пусть матрица А е R"х " и для простоты п = rN. Разобьем матрицу А следующим образом: Первый шаг блочного преобразования является типичным и выполняется следую¬ щим образом: т Используем скалярный метод исключения Гаусса с частичным выбором (например, прямоугольные версии алгоритмов 3.4.1 или 3.4.2), чтобы вычислить матрицу перестановок PleRnx", нижнюю унитреугольную матрицу ГиеИлхя и верхнюю треугольную матрицу UtleRrxr9 так чтобы при р = 10, t = 3 в приближенной арифметике, то и Я = (1.00, 0.998) имеет правильные три цифры. Пример 3.4.4. Если матрица А е R " х * задается формулами г п — г • Преобразуем посредством матрицы Рх остальную часть матрицы А: • Решаем систему с нижней треугольной матрицей и многими правыми частями ^11^12 “ ^12 •
114 Гл. 3. Линейные системы общего вида • Выполняем преобразование 3-го уровня ^ = ^22 “ ^21^12 ‘ В результате этих вычислений мы получаем разложение Далее процесс повторяется для первых г столбцов матрицы А. В целом в течение к шагов (1 < к < N — 1) блочного алгоритма мы применяем скалярный метод исключения Гаусса к матрице порядка (п — {к — 1) г) х г. Решаем г х (п — кг) систему со многими правыми частями и выполняем преобразование 3-го уровня размера (п — кг) х (и — кг). Вклад операции 3-го уровня в общий процесс аппроксимируется соотношением 1 — 3/(2N). Поэтому для больших N процедура содержит много операций 3-го уровня. 3,4.8. Полный выбор ведущего элемента Другая стратегия выбора ведущего элемента, называемая полным выбором, обладает тем свойством, что возможная оценка фактора роста значительно меньше, чем 2я ~1. Заметим, что при частичном выборе к-й ведущий элемент определяется исследованием текущего подстолбца А(к:п, к). При полном выборе в позицию (к, к) помещается наибольший элемент текущей подматрицы А(к:п, к:п). Следовательно, мы вычисляем верхнюю триангуляризацию Мп _ ХЕ„ _ х.. .MlElAFl... Fn _ , = U та¬ ким образом, что на /с-м шаге имеем дело с матрицей A*" = Mk_lEk_l...MlE1AFl...Fk_l и определяем матрицы перестановок Ек и Fk из условий max \(EkAik ~ UFk)y|. к ^ i,j < n Имеет место аналог теоремы 3.4.1. Теорема 3.4.2. Если исключение Гаусса с полным выбором ведущего элемента используется для вычисления верхней триангуляризации Мп _ ХЕЯ. ,... M.E.AF,. Fn _ 1 = U, (3.4.7) то PAQ = LU, где Р = En_l...Ei, Q = Fl...Fn_ l9 a L- нижняя унитреуголъная матрица с элемен¬ тами |/.-| < 1; k-й столбец матрицы L ниже диагонали-это переставленный вариант к-го вектора Гаусса. В частности, если Мк = / — t{k)lk , то L(k + 1 :п, к) = g(к + I: п), гдед^ЕК_1...Ек+ /*>. Доказательство. Доказательство аналогично доказательству теоремы 3.4.1. Детали оставляем для читателя. Вот подробный алгоритм исключения Гаусса с полным выбором: Алгоритм 3.4.3 (G.E. с полным выбором ведущего элемента). Этот алгоритм вы¬ числяет разложение с полным выбором PAQ = LU, где L-нижняя унитреугольная матрица, a U- верхняя треугольная. Матрицы Р = Еп _ х... Ех и Q = F1...Fn_ х осуществляют взаимные перестановки. Подматрица А(\ :к, к) замещается матрицей U(\:k, к), к= 1Подматрица А(к+ \:п, к) замещается матрицей L{k + 1:и, к),
3.4. Выбор ведущего элемента 115 к = 1, п — 1. Матрица Ек переставляет строки к и р(к). Матрица Fk переставляет столбцы к и q(k). for к = 1: л — 1 Определить р и А., такие, что |Л(р, Х)| = тах{|Л(/,/)|:/ = k:n,j=k:n} А(к, 1 :л)<-*Л(р, 1 :я); «4(1 :/z, /с) <-► «4 (1: л, X) p(fc) = р; tf(fc) = X if A (fc, /с) * О / = gauss (Л (к: л, fc)) Л (к + 1: п, к) = / Л(/с:л, к + 1 :л) = gauss.app(«4(k: л, к 3- 1 :и), /) Алгоритм требует 2л3/3 флопов и такое же количество сравнений. В отличие от частичного, полный выбор ведущего элемента приводит к значительному увеличе¬ нию вычислительных затрат, поскольку на каждом этапе выполняется двумерный поиск. 3.4.9. Замечания по стратегии с полным выбором ведущего элемента Пусть rank (Л) = г < п. Из этого следует, что в начале (г + 1)-го шага подматрица А (г + 1: л, г -|- 1 :п) = 0. Это означает, что Ек = Fk = Мк — I для к ~ г + 1 :л и поэто¬ му алгоритм может быть завершен через г шагов в виде разложения такого рода Здесь Lxi и Uxl- это гхг матрицы, a L21 и t/Га ~ матрицы (л — г) х г. Таким образом, исключение Гаусса с полным выбором ведущего элемента может быть в принципе использовано для определения ранга матрицы. Однако ошибки округле¬ ния создают возможность изменения точного нулевого значения ведущего элемента. На практике можно «объявить», что матрица А имеет ранг /с, если ведущий элемент на к -|- 1 шаге достаточно мал. Подробно задача численного определения ранга матрицы обсуждается в § 5.4. Уилкинсон (1961) показал, что в условиях точной арифметики элементы матрицы А{к) = МкЕк... M1£,1^4F1... Fk удовлетворяют соотношению Верхняя граница этого неравенства является медленно растущей функцией от к. Этот факт в сочетании с обширным эмпирическим обоснованием позволяет предпо¬ ложить, что величина р всегда умеренна (например, р — 10), и это позволяет нам сделать вывод об устойчивости исключения Гаусса с полным выбором ведущего элемента. Этот метод решает слабо возмущенную линейную систему (А + Е) Jc = b точно в смысле соотношения (3.3.1). Тем не менее не имеется практических обоснований для предпочтения стратегии полного выбора перед частичным выбо¬ ром, исключая случай, когда стоит вопрос об определении ранга матрицы. Пример 3.4.5. Если исключение Гаусса с полным выбором ведущего элемента применяется при решении задачи end end \aik)\ ^ k112 (2‘31/2... kl/* ~ l))1/2 шах \au\. (3.4.8)
116 Гл. 3. Линейные системы общего вида при Р = 10, / = 3 в условиях приближенной арифметики, то Р = и л = (1.00, 1.00). Это решение верно до двух значащих цифр в каждой компоненте. Ср. с примером ЗАЗ. Для некоторых классов матриц нет необходимости производить выбор ведущего элемента. Выявить такие классы важно, поскольку выбор ведущего элемента усложняет процесс. Чтобы проиллюстрировать, какого рода анализ требуется для доказательства безопасного отказа от выбора ведущего элемента, рассмотрим случай с диагонально доминирующими матрицами. Будем говорить, что матрица А 6 R" * " является строго диагонально доминирующей, если Следующая теорема показывает, как это свойство может прекрасно гарантировать выполнение LCZ-разложения без выбора ведущего элемента. Теорема 3.43. Если матрица АТ является диагонально доминирующей, тогда LU-раз¬ ложение матрицы А существует, \1и\ < 1. Другими словами, если применять алго¬ ритм 3.4.1, то Р = /. Доказательство. Разобьем матрицу А следующим образом где а порядка 1 х 1, и заметим, что после одного шага LlZ-процесса с внешним произведением мы получим разложение вида Доказательство теоремы будет получено индукцией по л, если мы сможем показать, что матрица, транспонированная к В = С — vwT/a, является строго диагонально доминирующей, поскольку из разложения В = LlUl следует, что 3.4.10. Отказ от выбора ведущего элемента и KI > X * = ,:й- У- 1 Но доказательство факта, что ВТ - матрица с диагональным доминированием, получается без всяких осложнений. Из определения мы имеем
3.4. Выбор ведущего элемента 117 3.4.11. Некоторые приложения Мы сделаем выводы и приведем примеры, иллюстрирующие, как нужно рассуж¬ дать на языке матричных разложений, когда сталкиваешься с различными видами линейных уравнений. Пусть А -невырожденная п х п матрица, а В-матрица п х р. Рассмотрим задачу нахождения матрицы X (п х р\ такой, что АХ = В, т. е. задачу со многими правыми частями. Если имеются столбцовые разбиения матриц X = \хХг ..., хр] и В = = \_ЬХ йр], тогда имеем алгоритм Вычислить РА = LU. for к = 1: р Решить Ly — РЬк (3.49) Решить Uxk = у end Заметим, что разложение матрицы А выполняется однажды. Если В = /я, та у нас возникает задача вычисления А_1. Другой пример применения L V-разложения является «нетрадиционным»; пред¬ положим, мы хотим решить линейную систему Акх = й, где ЛеП"*я, йеН" и к- целое положительное число. Один подход состоит в вычислении матрицы С = Ак и далее в решении системы Сх = й. Он требует О (ки3) флопов. Намного более эффективный алгоритм следующий: Вычислить РА = LU for j = 1: к Вектор й замещается решением Ly = РЬ (3.4.10) Вектор й замещается решением Ux = й end В качестве последнего примера мы покажем, как избегать ловушки, связанной с явным вычислением обратной матрицы. Пусть заданы матрица А е R” * и и векторы deRn и сеКл, мы хотим вычислить s = cTA~1d. Один подход состоит в вычислении матрицы X = Л-1, как предлагается в задаче, и потом в нахождении s = cTXd. Более экономная процедура состоит в выполнении РА = LU и потом в решении треуголь¬ ных систем Ly — Pd и Ux = у. Далее следует, что s = сТх. Цель данного примера- подчеркнуть, что когда в формуле встречается матричное обращение, то мы должны рассуждать на языке решения систем, а не на языке формирования точной обратной матрицы. Задачи 3.4.1. Пусть А = LU будет L(/-разложением п х n-матрицы А% причем |е^| < 1. Обозначим через а] и и] i-e строки матриц А и U соответственно. Проверить уравнение ит,=ат,- X 1чи] J= 1 и, используя его, показать, что Hl/Ц^ ^ 2П~ 1 \\А Ц^. (Подсказка: возьмите нормы и используйте индукцию.) 3.4.2. Показать, что если разложение FAQ — LU получается методом Гаусса с полным выбором, то не существует элемента в U (/, i:n) большего по абсолютной величине, чем |n(i|. 3.4.3. Пусть для матрицы /!eR"Xn существует ^/-разложение, и пусть Ги U известны. Дать алгоритм вычисления (/, j) элемента матрицы А ~1 сложности (и — J)2 + (« — /) 2 флопов. 3.4.4. Показать, что если f-это обратная матрица, вычисленная посредством алгоритма (3.4.9), то ЛХ-* I + F, где « «и(3 + 5и2р)|М|Ц, \\X\U .
118 Гл. 3. Линейные системы общего вида 3.4.5. Доказать теорему 3.4.2. 3.4.6. Обобщить алгоритм 3.4.3 так, чтобы с его помощью можно было разложить на множители произвольную прямоугольную матрицу. 3.4.7. Написать подробно вариант алгоритма блочного исключения, набросок которого дан в § 3.4.7. Замечания и литература к § 3.4 Фортран-программа для решения линейных систем общего вида может быть найдена в Unpack (Часть 1), а Алгол версии в Bowdler H.J., Martin R. S., Peters G. and Wilkinson J. H. (1966). “Solution of Real and Complex Systems of Linear Equations”, Numer. Math. 8, 217-34. See also HACLA, pp. 93-110. Предположение, что \а{*}\ < nmaxкогда используется полный выбор ведущего элемента, было доказано для вещественного случая при п = 4 в работе Сгуег С. W. (1968). “Pivot Size in Gaussian Elimination”, Numer. Math. 12, 335-45. Другие работы, связанные с ростом и выбором ведущего элемента, включены в следующий список Businger Р. А. (1971). “Monitoring the Numerical Stability of Gaussian Elimination”, Numer. Math. 16, 360 61. Cohen A.M. (1974). “A Note on Pivot Size in Gaussian Elimination”, Lin. Alg. and Its Applic. 8, 361 -68. Day J. and Peterson B. (1988). “Growth in Gaussian Elimination”, Amer. Math. Monthly 95, 489-513. Erisman A. M. and Reid J. K. (1974). “Monitoring the Stability of the Triangular Factorization of a Sparse Matrix, Numer. Math. 22, 183-86. Higham N.J. and Higham D.J. (1988). “Large Growth Factors in Gaussian Elimination with Pivoting”, Report 152, Department of Mathematics, University of Manchester, M13 9PL, England, to appear SIAM J. Matrix Analysis and Applications. Reid J. K. (1971). “A Note on the Stability of Gaussian Elimination”, J. Inst. Math. Applies. 8,374-75. Trefethen L. N. and Schreiber R.S. (1987). “Average-Case Stability of Gaussian Elimination”, Numer. Anal. Report 88-3, Department of Mathematics, MIT. (To appear SIAM J. Matrix Anal. & Applic.) Wilkinson J, H. (1961). “Error Analysis of Direct Methods of Matrix Inversion”, J. ACM 8, 281-330. Составление программ для разреженного исключения Гаусса-особенно интересная тема с точки зрения роста элементов, поскольку ради минимизации заполнения иногда допускаются множители больше единицы. Duff I.S., Erisman A.M., and Reid J. K. (1986). Direct Methods for Sparse Matrice. Oxford Univer¬ sity Press. Связь между малыми ведущими элементами и близостью к вырожденности рассматривается в работе Chan Т. F. (1985). “On the Existence and Computation of LU Factorizations with small pivots”, Math. Comp. 42, 535 -548. Стратегия выбора ведущего элемента, которую мы здесь не обсуждаем, это попарный выбор. В этом подходе для обнуления нижнего треугольника матрицы А используются 2 х 2-матрицы преобразования Гаусса. Эта техника представляет интерес при определенном многопроцес¬ сорном обеспечении, поскольку на каждом шаге взаимодействуют только соседние строки. См. Sorensen D. (1985). “Analysis of Pairwise Pivoting in Gaussian Elimination”, IEEE Trans, on Computers C-34, 274-278. Как образец статьи, в которой описывается класс матриц, не требующий выбора ведущего элемента, см. Serbin S. (1980). “On Factoring a Class of Complex Symmetric Matrices Without Pivoting”, Math. Comp. 35, 1231-1234. Точно так же, как существует шесть «условных» вариантов скалярного метода исключения
3.5. Уточнение и оценивание точности 119 Гаусса, существует и шесть условных описаний блочного исключения Гаусса. Для озна¬ комления с этими процедурами и их реализациями см. Dayde M.J. and Duff I. S. (1988). “Use of Level-3 BLAS in LU Factorization on the Cray-2, the ETA-10P, and the IBM 3090-200/VF”, Report CSS-229, Computer Science and Systems Divison, Harwell Laboratory, Oxon OX 11 ORA, England. Дополнительные практические и теоретические подробности о блочном L(/-разложении могут быть найдены в Caliban D.A. (1986). “Block-Oriented, Local-Memory-Based Linear Equation Solution on the Cray-2: Uniprocessor Algorithms”, Proceedinqs of the 1986 Conference on Parallel Processing, pp. 375-378. Gallivan K„ Jalby W., Meier U. and Sameh A. H. (1988). “Impact of Hierarchical Memory Systems on Linear Algebra Algorithm Design”, IntT J. Supercomputer Applic. 2, 12-48. 3.5. Уточнение и оценивание точности Пусть для решения п х п системы Ах — Ь используется метод исключения Г аусса с частичным выбором ведущего элемента. Предположим, применяется ^-разрядная плавающая арифметика с основанием р. Уравнение (3.4.4) гарантирует, что если фактор роста умеренный, то вычисленное решение к удовлетворяет соотношению (А + Е)к = ft, IIFIL * ulMIL, и = р-‘. (3.5.1) В этом разделе мы исследуем практические разветвления этого результата. Сначала сделаем акцент на различии, которое следует делать между величиной невязки и точностью. Потом продолжим обсуждение масштабирования, итерационного уточнения и оценки обусловленности. Прежде чем начать, мы сделаем два замечания по поводу обозначений. Всюду используется бесконечная норма, так как это удобно для анализа ошибок округле¬ ния и для практической оценки ошибки. Кроме того, где бы в этом разделе мы ни употребили выражение «исключение Гаусса», мы всегда будем иметь в виду исключение Гаусса с некоторой устойчивой стратегией выбора ведущего элемента, такой, как частичный выбор. 3.5.1. Большая невязка дает плохую точность Невязкой вычисленного решения к для линейной системы Ах = Ъ является вектор Ь — Ах. Маленькая невязка обозначает, что вектор Ах эффективно «приближает» правую часть b. Из соотношения (3.5.1) мы имеем ||6 — % иНЛЦ^Ц^Н^ и по¬ этому получаем Вывод 1. Метод исключения Гаусса дает решение к с малой относительной невязкой. Из маленьких невязок не следует высокой точности. Сопоставляя (3.5.1) с теоремой 2.7.1, мы видим, что Пмй *( *' ( ' Это подтверждает второй ведущий принцип. Вывод 2. Если машинная точность и обусловленность удовлетворяют соотноше¬ ниям u^lO-d и х*, (Л) «10*, тогда исключение Гаусса дает решение с d — q правильными десятичными знаками.
120 Гл. 3. Линейные системы общего вида Для иллюстрации выводов 1 и 2 рассмотрим систему Г 0.986 0.579] Г *i 1 Г 0.235] L 0.409 0.237 J L х2 J L 0.107 J’ в которой (А) % 700 и х = (2 — 3)т. Вот что мы находим для различных вариантов машинной точности: р t хх хг \\x-x ||оо || 6 — Ах Цоо II х 11°° IMIIoollillco 10 3 2.11 -3.17 5•10“2 2.0 10-3 10 4 1.986 -2.975 8 • 10-3 1.5 - 10-4 10 5 2.0019 -3.0032 1 • ю-3 2.1 IQ"6 10 6 2.00025 -3.00094 3•10"4 to О ! «4 Можно ли признать вычисленное решение St удовлетворительным-зависит от требований, заложенных в исходной задаче. Во многих приложениях точность не так важна, но важна малость невязки. В этом случае бывает достаточно вычислить St при помощи исключения Гаусса. С другой стороны, если наличие правильных цифр в & спорно, то ситуация является не такой простой, и в оставшейся части мы ее, безусловно, обсудим. 3.5.2. Масштабирование Пусть 0-это основание системы счисления; обозначим через Dl и D2 следующие диагональные матрицы Dx = diag(prt...рГп), D2 = diag(pci ...pCn). Решение n x n линейной системы Ax = b может быть найдено решением масштаби¬ рованной системы (Df 1AD2)y = Df1 /? исключением Гаусса с учетом х = D^y. Мас¬ штабирование матрицы А и векторов b и у требует только 0{п2) флопов и может быть выполнено без ошибок округления. Отметим, что матрицы масштабирования D, и D2 неизвестны. Из вывода 2 следует, что если $ и >'-это вычисленные аналоги векторов л: и у, то ||ог'(*-дг)||. и>' rii, мй ^ <3'53) Поэтому, если x0C(£>f1/4D2) может быть сделано значительно меньшим, чем хф(Л), то можно ожидать соответственно более точного решения St, при условии, что ошибки оцениваются в D2-норме, которая определена следующим образом: \\z\\D^ = = W&2 ^Нао * Это и есть цель масштабирования. Заметим, что оно сопряжено с двумя вопросами: обусловленность масштабированной задачи и оценка для ошибки в £>2-норме. Поиск точного минимума функции xp(Df */Ш2) для произвольных диагональных матриц Di и различных р-это интересная, но очень трудная математическая задача. Различные результаты, полученные в этом направлении, не пригодны для практики. Однако это не слишком обескураживает, когда мы вспоминаем, что оценка (3.5.3) является эвристической, и не имеет смысла искать точный минимум этой эвристиче¬
3.5. Уточнение и оценивание точности 121 ской оценки. То, что мы ищем,-это быстрый приближенный метод для улучшения качества вычисленного решения. Среди множества подходов одним является простое строчное масштабирование. В этой схеме матрица D2 будет единичной, а матрица Dt выбирается так, что каждая строка в матрице DilA имеет приблизительно одинаковую оо-норму. Строчное масштабирование уменьшает вероятность сложения очень маленького числа с очень большим числом в ходе исключения, что в результате значительно уменьшило бы точность. Несколько более сложным, чем простое строчное масштабирование, является строчно-столбцовое уравновешивание. В данном случае наша цель - выбрать матри¬ цы Dt и D2 так, чтобы оо-норма каждой строки и столбца матрицы Dj"l/fD2 принадлежала интервалу [1/Р, 1], где (3-это основание плавающей системы счисле¬ ния. Среди работ в этом направлении смотри МсКеешап (1962). Не будет излишним подчеркнуть, что ни простое строчное масштабирование, ни строчно-столбцовое уравновешивание не могут «решить» задачу масштабирования. Действительно, каждый из этих методов может дать худший вектор £, чем какой-либо другой, не использующий масштабирование. Развитие этого взгляда подробно обсуждается в работе Forsythe and Moler (SLE, гл. 11). Основная рекомендация состоит в том, что масштабирование уравнений и неизвестных должно производиться на уровне исходной задачи. Обычная стратегия масштабиро¬ вания ненадежна. Лучше масштабировать (если вообще масштабировать) базис, по которому исходная задача задает значение каждого элемента ац. При этом можно принять во внимание единицы измерения и ошибки данных. Пример 3.5.1 (Forsythe and Moler (SLE стр. 34, 40)). Если система решаются в арифметике с основанием р = 10 и / = 3, тогда вычисляются, соответственно, решения £ = (0.00, 1.00) и £ = (1.00, 1.00). Заметим, что точным решением является jc = (1.0001 ..., 0.9999...). 3.5.3. Итерационное уточнение Пусть система Ах = b решена с использованием разложения с частичным выбором РА = LU и пусть мы хотим улучшить точность вычисленного решения £. Если мы выполним алгоритм то в точной арифметике получим Axnew = Ах + Az = (Ь — г) + г = Ь. К несчастью, непосредственное выполнение этих формул в плавающей арифметике приводит к вектору xnew, который не более точен, чем £. Этого можно ожидать, так как г — f 1 (b — AJt) имеет мало, если вообще имеет, правильных значащих цифр. (Вспо¬ мним Вывод 1.) Следовательно, z = А(А_1г) « А~1. «Погрешность ^ погрешность» и эквивалентная строчно-масштабированная задача 0.0001 1 I тЛ __ И j ' и UJ Ы г = b — AJt Решить Ly = Ргу Решить Uz— у, Xnew = * + 2Г, (3.5.4)
122 Гл. 3. Линейные системы общего вида является очень плохой поправкой с точки зрения улучшения точности £. Тем не менее Skeel (1980) провел анализ ошибок, который показывает, когда алгоритм (3.5.4) дает улучшенное решение xhew с точки зрения обратного анализа ошибок. В частности, если величина г = (||И|И_Ч11*)(тах(И||х|Ушт(И||х|)() i i не слишком велика, то алгоритм (3.5.4) вычисляет вектор x„clv, такой, что (А + E)xnew = Ь при очень малой матрице Е. Конечно, если использовать исключение Гаусса с частичным выбором, то вычисленное решение £ уже разрешает систему, близкую к исходной. Однако этого может не быть в случае применения стратегий выбора, которые используются для сохранения разреженности. В этом случае шаг итерационного уточнения с фиксированной точностью (3.5.4) может быть очень дешевым и оправданным. См. Arioly, Demmel и Duff (1988). Для того чтобы алгоритм (3.5.4) получил более точный вектор £, необходимо вычислить невязку Ь - А£ в плавающей арифметике с повышенной точностью. Обычно это означает, что если для вычисления разложения РА = LU и векторов хг у использовалась /-разрядная арифметика, то для вычисления невязки Ь-А£ используется 2/-разрядная арифметика, т. е. двойная точность. Процесс может быть итерационным. В частности, если мы вычислим разложение РА = LU и положим начальный вектор х = 0, то мы повторяем следующий процесс: г = b — Ах (Двойная точность) Решить Ly — Рг относительно у. Решить Uz = у относительно z. (3.5.5) х = л: + z. Мы назовем этот процесс итерационным уточнением со смешанной точностью. Исходная матрица А должна быть использована в вычислениях вектора г с двойной точностью. Основной результат работы алгоритма (3.5.5) содержится в следующем выводе. Вывод 3. Если машинная точность и и обусловленность удовлетворяют соотноше¬ ниям и = 10и (А) » 10*, то через к выполнений алгоритма (3.5.5) вектор jc имеет приблизительно min (d, k(d— q)) правильных знаков. Грубо говоря, если ux^f/l)^ 1, то с помощью итерационного уточнения можно в конечном счете получить решение, которое является предельно точным (для простой точности). Заметим, что этот процесс относительно дешевый. Каждое уточнение стоит О (и2) флопов, для сравнения: исходный вклад разложения РА = LU составляет 0(п3) флопов. Разумеется, результат не может быть улучшен, если матрица А достаточно плохо обусловлена относительно точности ЭВМ. Основной недостаток итерационного уточнения со смешанной точностью со¬ стоит в том, что его выполнение в некоторой степени является машинно-зависимым. Эго осложняет его использование в программном обеспечении, предназначенном для широкого распространения. Необходимость хранить исходную копию матрицы А является вторым недостатком, связанным с этим методом. С другой стороны, итерационное уточнение со смешанной точностью обычно очень легко реализовать на данной ЭВМ, которая имеет возможность накапливать скалярные произведения, т. е. возможность для вычисления скалярных произведений для строк матрицы А и вектора х с двойной точностью. В условиях вычислений с короткой мантиссой наличие программы итерационного уточнения может сущест¬ венно расширить класс разрешимых задач Ах = Ь.
3.5. Уточнение и оценивание точности 123 Пример 3.5.2. Если алгоритм (3.5.5) применяется к системе [0.986 0.5791 Гл1 J Г0.235 j 0.409 0.237J [_x2J ~ L° 1°7J причем Р = 10 и Г = 3, то итерационное уточнение дает следующую последовательность вычисленных решений [2.11 j Г 1.991 Г 2.001 “317J L_2"J L_300J Точное решение: jc = (2, -3). Пример 3.5.3. Если алгоритм 3.5.1 применяется к матрице Вп, заданной соотношением (2.7.9), тоу = (2*~\ 2"“2,..., 2, 1)т и ||у||х=PVIU- 3.5.4. Оценка обусловленности Предположим, что система Ах = b решена посредством разложения РА — LU и мы хотим установить количество правильных цифр в вычисленном решении Как следует из вывода 2, чтобы это сделать, нам надо оценить обусловленность ИадЙ) = 1МНоо1М-1Иоо* Вычисление не вызывает проблем, когда мы просто используем формулу IM1L = шах £ \atj\. 1 < I < п j = 1 Сложной задачей является только вычисление множителя М"1!!*- Понятно, что мы можем оценить эту величину при помощи Н^Н^, где Я = ..., :£„] и является вычисленным решением системы Ахх = et. (См. § 3.4.9.) Сложности применения этого подхода вызваны его стоимостью: вычисление стоит почти в три раза дороже, чем вычисление Jf. Главная проблема оценки обусловленности состоит в том, чтобы оценить обусловленность за О (л2) флопов, допуская наличие разложения РА = LU или других разложений, представленных в предыдущих главах. Подход, описанный в работе Forsythe и Moler (SLE, стр. 51), основан на итерационном уточнении и формуле и % \\z\\oc/\\x\\co> гДе вектор z является первой поправкой к вектору х в алгоритме (3.5.5). Общее время такого способа оценки обусловленности есть 0(w2), что получается из-за ошибок итерационного уточнения, т.е. машинно-зави¬ симой величины. Cline, Moler, Stewart и Wilkinson (1979) предложили очень удачный подход к задаче оценки обусловленности без этого недостатка. Он основан на использова¬ нии соотношения Ay = d^\\A-i\\„>\\y\\j\\d\\ao. Идея их способа оценки состоит в выборе вектора d таким, чтобы решение у являлось большим по норме, и потом положить Успех этого метода зависит от того, как близко отношение НуНю/Н^Н* к своему максимальному значению Рассмотрим случай, когда матрица А = Т является верхней треугольной. Отно¬ шение между векторами d и у полностью описывается следующей столбцовой
124 Гл. 3. Линейные системы общего вида версией алгоритма обратной подстановки р(1:л) = 0 for к — п; — 1:1 Выбрать d(k) (3.5.6) y(k) = {d(k)-p(k))/T(k, к) р(1:к-\)=р(\:к-\) + у(к)Т([:к-\у к) end Обычно этот алгоритм используется для решения заданной треугольной системы Ty = d. Однако сейчас мы свободны выбирать правую часть dy исходя из того «ограничения», что вектор у велик относительно d. Один способ поддержать рост в векторе д>-это выбирать элементы d(k) из множества {— 1, +1} так, чтобы максимизировать у {к). Если р(к) > 0, то положим d{k) — — I. Если р(к) < 0, то положим d(k) ~ 4- 1. Другими словами, алгоритм (3.5.6) работает с элементами d(k) = — sign (р (к)). Так как d является вектором вида d(i :п) = (± 1, ..., ±1)г, мы получаем оценку хф = ||T|IJMIco- Более надежный способ оценки получается, если выбирать d(k)e{— 1, 4-1} так, чтобы поддержать рост сразу и в у (к), и в изменении текущей суммы, заданной соотношением p(l:k— I, к) + Т(1 :к — 1, к)>(к). В частности, на к-м шаге мы вычисляем у(кУ =(1-р(к))/Г(к, к), ФГ = \у(к)+\ + \\р(\ :к - 1) + Т(1:к - 1, к)у(к|+||15 у(к)~ =(~\-р(к))/Т(К к), s(k\~ = |у(кГ | + \\р(\ :к - 1) + Г(1 :к - I, к)у(к\-\\х. Потом полагаем у{к) равным у(к)+, если s(k\+ ^ s(k\~y и у(ку в противном случае. Это дает Алгоритм 3.5Л (Метод оценки обусловленности). Пусть 7eRnx" является невырож¬ денной верхней треугольной матрицей. Данный алгоритм вычисляет оо-норму вектора у и скаляр х, такие, что \\Ту\\т « 1/|| и х « х^Т) р(\:п) = О for к = п: — 1:1 у(к)+ =(1 -р(к))/Т(к, к) y(fe)-=(-1 -р(к))/Т\к. к) р(кУ = р(1: к — I) 4- Т(1 :k — 1, к)у{к) + р(ку = р(\:к - 1) + Т(1 :к - 1, к)у(к)~ Н\у{кУ\ + IIр(кУ\\х > \у{к)~\ 4- \\р(кУ\\х у{к) = у(кУ;р(\:к-\) = р(кУ У(к) = у(ку;р(\:к-\) = р(ку end end • = iMumioo Алгоритм неоднократно использует обычную обратную подстановку. Сейчас мы в состоянии описать процедуру оценки обусловленности квадратной невырожденной матрицы «4, для которой известно разложение РА = LU: • Применим нижнюю треугольную версию алгоритма 3.5.1 к матрице UT и получим большое по норме решение системы Uy = d. • Решим треугольные системы LTr = у, Lw = Рг и Uz = w. • ^00 = IMIloO ll^lloo/lklloo •
3.5. Уточнение и оценивание точности 125 Отметим, что WzW^ < Метод основан на нескольких эвристических соображениях. Первое, если матрица А является плохо обусловленной и РА = LU, то в этом случае обычно и матрица U является соответственно плохо обусловлен¬ ной. Нижний треугольник L достаточно хорошо обусловлен. Таким образом, более целесообразно оценить обусловленность матрицы С/, чем матрицы L. Вектор г, поскольку он разрешает систему ATPTr = d, сильно смещен в направлении левых сингулярных векторов, соответствующих crmin(>l). Правые части, обладающие таким свойством, приводят к большим решениям задачи Az = г. Практика показывает, что метод оценки обусловленности, который мы описали, дает хорошие приближенные оценки реальных чисел обусловленности. См. Linpack. Задачи 3.5.1. Показать на примере, что существует более одного способа для уравновешивания матрицы. 3.5.2. Применяя арифметику с параметрами Р = 10, / = 2, решить систему при помощи исключения Гаусса с частичным выбором. Выполнить один шаг итерационного уточнения, применяя арифметику при Г = 4, вычислить невязку. (Не забудьте округлить вычисленную невязку до двух знаков.) 3.5.3. Пусть Р(А + Е) = L £/, где Р является перестановочной матрицей, L - нижней треуголь¬ ной с элементами \ltj\ < I и V - верхней треугольной. Показать, что 141.+. где р = vnin|£jj|. Сделайте вывод, что если при применении исключения Гаусса с частичным выбором в матрице А встречается малый ведущий элемент, то матрица А является плохо обусловленной. Обратное неверно. (Например А = Вп.) 3.5.4. (Kahan 1966). Система Ах = />, где А = 2 -1 1 2(1 + 10~10) -1 10 10 l0-i° > А = - 10 ~10 1 ю-10 l0-i° ]0-1° имеет решение х = (10 _J0, — 1, I). (а) Показать, что если (А + Е)у = Ь и \Е\ < 10 ~Н\А|, то \х~У\ ^ Ю 71*1 - То есть относительно малые изменения в элементах матрицы А не приводят к большим изменениям в векторе хотя кг/,(Л) = 10 10. (б) Обозначим D = diag (10 ~5, 10 ~5, 10 5). Показать, что (DAD) ^ 5. (с) Объяснить, что это означает в терминах теоремы 2.7.3. 3.5.5. Рассмотрите матрицу: Т= 1 0 м - м 0 1 - м м 0 0 1 0 0 0 0 1 Me R. Какая оценка числа хх {7) будет получена, если применяется алгоритм (3.5.6) с элементами d(k) — — sign(р(к)У> Какую оценку дает алгоритм 3.5.1? Каково действительное число хх(7)? Замечания н литература к § 3.5 Следующие работы имеют отношение к задачам масштабирования системы Ах = b
126 Гл. 3. Линейные системы общего вида Bauer F. L. (1963). “Optimally Scaled Matrices*1, Numcr. Math, 5, 73-87. Businger P. A. (1968). “Matrices Which Can be Optimally Scaled”, N inner. Math. 12, 346-48. Fenner T. and Loizou G. (1974). “Some New Bounds on the Condition Numbers of Optimally Scaled Matrices”, J. ACM 21y 514 24. Golub G. H. and Varah J.. M. (1974). “On a Characterization of the Best LrScaling of a Matrix", SIAM J. Num.Ana. 11, 472-79. McCarthy C. and Strang G. (I973)i “Optimal Conditioning of Matrices” SIAM J. Num. Anal. 10, 370-88. Skell R. (1979). “Scaling for Numerical Stability in Gaussian Elimination”, J. ACM 26, 494-526. Skeel R. (1981). “Effect of Equilibration on Residual Size for Partial Pivoting”, SIAM J. Num. Anal. 18, 449^55. van der Sluis A. (1969). “Condition Numbers and Equilibration Matrices” Numer. Math. 14, 14 23. van der Sluis A. (1970)i “Condition, Equilibration, and Pivoting in Linear Algebraic Systems, Numer. Math. 15, 74 86. Часть трудностей масштабирования связана с выбором нормы для измерения ошибок. Интересное обсуждение этого, часто не замечаемого вопроса, приводится в работе Kahan W. (1966). “Numerical Linear Algebra”, Canadian Math. Bull. 9, 757-801. Для изучения строгого анализа итерационного уточнения см. Jankowski М. and Wozniakowski М. (1977). “Iterative Refinement Implies Numerical Stability”, BII 17, 303 311. MolerC. B. (1967). “Iterative Refinement in Floating Point”, J. ACM 14, 316-7L Skeel R. D. (1980). “Iterative Refinement Implies Numerical Stability for Gaussian Elimination”, Math. Comp. 35, 817-832. Stewart G.W. (198 1)l “In the Imolicit Deflation of Nearly Singular Systems of Linear Equations”, SIAM J. Sci. and Stat. Comp. 2, 136 140. Метод оценки обусловленности, который мы описали, дается в работе Cline А. К., Molcr С. В., Stewart G. W., and Wilkinson J. Н. (1979). “An Estimate for the Condition Number of a Matrix”, SIAM J. Num. Anal. 16, 368-75. и включен в Linpack (pp. 1.10 1.13). Другие ссылки связанные с задачей оценки обусловлен¬ ности содержатся в работах Broyden С. G. (1973). “Some Condition Number Bounds for the Gaussian Elimination Process”, J. Inst. Math. Apptic. 12, 273 86. Cline A. K., Conn A. R., and Van Loan C. (1982). “Generalizing the LINPACK Condition Estimator”, in Numerical Analysis, ed., J. P. Hennurt, Lecture Notes in Mathematics no. 909, Springer-Verlag, New York. Cline A.K. and Rew R.K. (1983). “A Set of Counter examples to Three Condition Number Estimators", SIAM J. Sci. and Stat. Comp. 4, 602-611. Grimes R.G. and Lewis J. G. (1981). ‘‘Condition Number Estimation for Sparse Matrices”, SIAM J. Sci. and Stat. Comp. 2, 384-88. Hager W. (I 984)l “Condition Estimates”, SIAM J. Sci. and Stat. Comp. 5, 311-316, Higham N.J. (1987). “A Survey of Condition Number Estimation for Triangular Matrices”, SIAM Review 29, 575-596. Higham N.J. (1988). “Fortran Codes for Estimating the One-norm of a Real or Complex Matrix with Applications to Condition Estimation”, ACM Trans. Math. Soft. 14, 381-396. Lemcire F. (1973). “Bounds for Condition Numbers of Triangular Value of a Matrix”, Lin. Atg. and Its Applic. 11, 1-2. O’Leary D. P. (1980)l “Estimating Matrix Condition Numbers” SIAM J. Sci. Stat. Comp. 1, 205-9. Stewart G. W. (1980). “The Efficient Generation of Random Orthogonal Matrices with an Application to Condition Estimators", SIAM J. Num. Anal. 17, 403-9. Van Loan C. (1987). “On Estimating the Condition of Eigenvalues and Eigenvectors”, Lin. Alg. and Its Applic. 88/89, 715-732. Varga R. S. (1976). “On Diagonal Dominance Arguments for Bounding \\A ~11|^”, Lin. Alg. and Its Applic. 14, 211 17.
Глава 4 Линейные системы специального вида Основной принцип численного анализа состоит в том, что при решении задач всякий раз надо использовать их специфику. Можно надеяться, что в численных методах линейной алгебры алгоритмы решения задач с матрицами общего вида приспособлены к использованию таких свойств как симметричность, определен¬ ность, разреженность. Это и будет центральной темой данной главы, в которой наша главная цель - предложить специальные алгоритмы для вычисления специаль¬ ных вариантов LU-разложения. Мы начнем с установления зависимости между множителями L и V, когда матрица А является симметричной. Это достигается исследованием LDM^разло¬ жения в § 4.1. Потом мы займемся важным случаем, когда матрица А является одновременно симметричной и положительно определенной, и получим в § 4.2 устойчивое разложение Холецкого. В этом разделе мы также исследуем несиммет¬ ричные положительно определенные системы. В § 4.3 обсуждается ленточный вариант исключения Гаусса и другие методы разложения. Потом будет исследована интересная ситуация, когда А симметричная, но неопределенная. Наша трактовка этой задачи в § 4.4 выявляет двойственность стоящей перед исследователем проблемы выбора ведущего элемента. Мы предпочитаем выбирать ведущий эле¬ мент так, чтобы добиться устойчивости, и не обращаем внимания, что при этом может быть нарушена специфика. К счастью, в задаче с симметричной неопределен¬ ной матрицей имеется удачный способ разрешения этого конфликта. Любые блочные ленточные матрицы являются также просто ленточными, и поэтому к ним могут применяться методы из § 4.3. Однако бывают ситуации, когда такой подход неприемлем. Для иллюстрации мы рассмотрим в § 4.5 случай блочной трехднагональной системы. В последних параграфах мы исследуем несколько очень интересных 0(п2) алгоритмов, которые могут быть использованы для решения систем Вацдсрмонда и тёплицевых систем. 4.1. Разложения типа LDMT и LDLT Мы хотим создать метод, использующий специфику при решении задачи Ах = Ь. Для этого установим возможность L U-разложения матрицы А в виде произведения трех матриц LDMr, где D- диагональная, a L и М- нижние унитрсутольные. Когда такое разложение получено, решение Ах = Ь может быть найдено за О (я2) флопов посредством решения систем Ly = Ь (прямая подстановка), Dz — у и Мтх — z (обратная подстановка). Исследование LDM'-разложения позволяет для симмет¬ ричного случая установить следующий факт: если А — Ат, то L = М и работа, связанная с разложением, составляет половину от того, что требуется для исключе¬ ния Гаусса. Проблема выбора ведущего элемента поднимается в последующих разделах.
128 Гл. 4. Линейные системы специального вида 4.1 Л* ЬОМт-раэложеиие Наш первый результат связывает ЬОМт~разложение и L {/-разложение. Теорема 4.1.1. Если все ведущие главные подматрицы А в Rnx” невырожденны. тогда существуют единственные нижние унитреуг ольные матрицы L и М, и единственная диагональная матрица D — diag (dl dn)y такие, что А = LDMT. Доказательство. Из теоремы 3.2Л мы знаем, что для матрицы А существует L (/-разложение А = LL\ Пусть D=diag [dt 4Л ГД£ ии- ПРИ «=1:*. Заметим, что матрица D является невырожденной, а матрица МТ = 0~1V верхней унитреугольной. Поэтому А — LU = LD(D~lU) = LDMT. Единственность следует из единственности L {/-разложения, как было показано в теореме 3.2.1. □ Доказательство показывает, что ЬОМг-разложение может быть найдено при помощи исключения Гаусса, вычисляющего А — LU, с последующим определением D и М из уравнения U — 0МГ. Тем не менее может быть установлен интересный альтернативный алгоритм для непосредственного вычисления /., D к М. Допустим, что мы знаем первые у-1 столбцов матрицы L, диагональные элементы dledj- k матрицы D и первые у- I строк матрицы М для некоторого у, 1^,/^и. Чтобы получить способ вычисления Д М(у, 1:у — 1) и dp приравняем у-е столбцы в уравнении А = LDMT. В частности, i4(l:«,» = Lr, (4ЛЛ) где v = DMTej. «Верхняя» половина в соотношении (4ЛЛ) определяет v(\ :j) как решение известной нижней треугольной системы: L(l:y, \ :j)v(\:j) = A(\:j,j). Когда мы знаем v, мы вычисляем d{j) = v{j\> «(./■ 0 = ^(0/^(0, i= 11 «Нижняя» половина формулы (4ЛЛ) дает уравнение L(y 4- 1:л, 1 ^ -40’+ 1:/|» /Ь которое может быть преобразовано для получения способа вычисления у-го столбца матрицы L: W + 1 :я.у)рЦ)в -4(7 + 1 :л,у) - L(y + I :w, I :у - l)i(l:y - 1). Таким образом, матрица L{j + 1: п, у) задает скалярную gaxpy-операцию, и в целом мы получаем алгоритм for у = 1: п Решить £,(1 -j9 I'Л = -4(1:/»./) Для г(1:у). for /—1— I М(у, 0 = i?(0/rf(i) (4Л.2) end <*(/) = f(y) L(y + 1:и, у) = И ( / + 1: п, j) - L(J + 1:«, 1 :j - 1) v(1 :j - \))Ш end
4.1. Разложения mum LDMT и LDLr 129 Как и в случае L {/-разложения, возможно замещение матрицы А на множители L, D и М. Если для нахождения вектора v(l:/) используется столбцовая версия прямого исключения, то мы получаем следующую процедуру: Алгоритм 4.1Л. (LDMr). Если для матрицы Ае R" * ” выполнено L(/-разложение, то данный алгоритм вычисляет нижние унитреугольные ма1рицьт L и М и диаго¬ нальную матрицу D — diag(rf, dn), такие, что А = LDMT. Элемент atj замещается на ltj при i > у, на dh если i = у, и на если i < j, for 7 = 1 :n {Решить L(l:y, = A(i:j.j).} v(\J)= A(\:j,j) for к — 1 :j — I v(k + 1 :y) = + 1 :j) — v{k)A{k 4- I:/, k) end (Вычислить M[j, 1:у — 1) и запомнить в А( \: / - !,./).{ for /=1 :j — I A{i, j) = v(i)/A{k j) end {Запомнить d(j\ в A(j, 7).} Mb i) = »(/) {Вычислить L(y + I : w, j) и запомнить в A(j + I \ n, for к — 1: j — 1 A (7 4- I: я) = A (7 + I: n. 7) — v{k) A (7 4 I :/i. k) end A(7 + 1 :nr j) = A {j 4- 1: end Алгоритм содержит такой же объем работ, как и L {/-разложение, около 2и3/3 флОПОВ. Можно показать, что вычисленное решение £ системы Ах = 6, полученное посредством алгоритма 4ЛЛ и методами решения треугольных систем из § ЗЛ, удовлетворяет возмущенной системе {А + Е)Л = Ь, где |£| < яа(ЗМ| ) 5|1||/5||Мт|) + О(u2) (4.1.3) и матрицы L, б и Л?-это вычисленные версии матриц L, D и М соответственно. Как и в случае L (/-разложения, рассмотренного в предыдущей главе, верхняя оценка в формуле (4Л.З) дается без ограничений на выбор ведущего элеменга. Следовательно, чтобы алгоритм 4ЛЛ был практической процедурой, он должен быть модифицирован под вычисление разложения вида РА = LDMT, где Р матри¬ ца перестановок, выбираемая таким образом, что элементы матрицы L удовлетво¬ ряют условию f/,j| ^ 1. Детали этой модификации мы здесь не приводим, так как они могут быть получены непосредственно, наша же главная цель введения LDM ^раз¬ ложения -это описать специальные методы для симметричных систем. Пример 4.1.1. 10 10 20 1 0 0 И) 0 0 1 1 2 А = 20 25 40 = 2 1 0 0 5 0 0 1 0 _40 50 61_ 4 1_ _ 0 0 .0 о L
130 Гл. 4. Линейные системы специального вида и в завершение алгоритм 4.1.1 замещает матрицу А следующий матрицей: ~10 1 2 А = 4.1.2. Симметрия и LDL г-разложение Если матрица А симметричная, то в ЬОМт-разложении имеется избыточная информация. Теорема 4.1.2. Если представление А = LDMT есть LDMT-разложение невырожден¬ ной симметричной матрицы А, то L = М. Доказательство. Матрица M~lAM~T = M~lLD является одновременно и симмет¬ ричной, и нижней треугольной и поэтому диагональна. Так как D невырожденна, то отсюда вытекает, что M“*L тоже диагональна. Но M~lL является нижней унитре- уголъной, поэтому □ Учитывая этот результат, можно наполовину уменьшить работу алгоритма 4.1.1, когда он применяется к симметричной матрице. На j-м шаге нам уже известна строка М (у, 1 :у — I), так как М = L и мы предполагаем знание первых у- 1 столбцов матрицы L. Вспомним, что на у-м шаге алгоритма (4.1.2) вектор v определяется уравнением v = DMTej. Так как М = L, отсюда видно, что v = d(l)L(j, I) dU) Следовательно, вектор г(1 ;j — I) может быть получен простым масштабированием j-й строки матрицы L. Формула для j-й компоненты вектора v получается из j-то уравнения системы L(1 :у, \ :j)v = A(\ :j, j) »(/) = A (/• J) - ДА l-j - 1)^(1 j -1). и поэтому мы имеем for j = 1: n for i = 1 :j — 1 И0 = W. end v(j) = A(j, J) - Щ 1:j - 1)»(1:j - 1) d(j) = »(/) Hj + 1 :n,j) = (A(j + 1 :n. j) - HJ + 1 :n, 1 :J - l)t?(l :j - 1))/»(/) end С учетом замещения получаем Алгоритм 4.1.2 (LDLT). Если матрица А е R” х л симметричная и для нее существует ^-разложение, то данный алгоритм вычисляет нижнюю унитреугольную матрицу L и диагональную матрицу D = diag (dif.... dn\ такие, что А = LDLT. Элементы ais замещаются на li}, если / >у, и на diy если i = j.
4.1. Разложения типа LDMT и LDLr 131 for j = 1 :n {Вычислить i;(l :j).} for i = 1 :j — I end V(j) = A (A J) - *-(/■ 1V - 0^(1 :j - 1) {Запомнить d(J) и вычислить £(/ + 1 :n, j).} A(j+ 1:«./) = (Л(/ + 1:и,/)-4(/+ 1:Л» W- 1)^(1 :y — 1))/»(/) end Этот алгоритм требует и3/3 флопов, около половины количества флопов, требуемых для исключения Гаусса. В следующем разделе мы покажем, что если матрица А одновременно и симмет¬ ричная, и положительно определенная, то алгоритм 4.1.2 не только работает, но также чрезвычайно устойчив. Если матрица А симметричная, но не является положительно определенной, то, возможно, есть необходимость применять выбор ведущего элемента и использовать методы из § 4.4. Пример 4.1.2. 10 20 30 1 0 0 10 0 0 1 2 3 A = 20 45 80 — 2 1 0 0 5 0 0 1 4 30 80 171 3 4 1 0 0 I 0 0 1 и, если применять алгоритм 4.1.2, матрица А замещается матрицей А = 20 30 5 80 4 I Задачи 4.1.1. Показать, что если LD М т-разложение невырожденной матрицы существует, то оно единственно. 4.1.2. Модифицировать алгоритм 4.1.1 так, чтобы он вычислял разложение вида РА — LDMT, где L и М - нижние унитреугольные матрицы, D-диагональная матрица, а Р- матрица перестановок, выбираемая таким образом, что |/fi| < 1. 4.1.3. Пусть симметричная п х л-матрица А = (а^) хранится в векторе с следующим образом: с * (дп, д21,а„х% а22,..., Переписать алгоритм 4.1.2 для матрицы АЛ хранимой таким способом. Упростить индексацию в пределах внутреннего цикла, насколько это возможно. 4.1.4. Переписать алгоритм 4.1.2 для матрицы А, хранимой по диагоналям. Смотри § 1.2.8. Замечания и литература к § 4.1 Алгоритм 4.1.1 близок к методам Краута и Дулитла, в которых избегается модификация с внешним произведением. См. гл. 4 книги Fox L. (1964). An Introduction to Numerical Linear Algebra, Oxford University Press, Oxford. и также Stewart (IMC, стр. 131-149). Алгол-процедуру можно найти в работе Bowdler H.J., Martin R.S., Peters G., and Wilkinson J. H. (1966). “Solution of Real and Complex Systems of Linear Equations” Numer. Math. 8, 217-234. See also HACLA, pp. 93-110. 5*
132 Гл. 4. Линейные системы специального вида См. также Forsythe G.E. (1960). "Crout with Pivoting’', Comm. ACM 3, 507-508. McKeeman W. M. (1962), “Crout with Equilibration and Iteration", Comm. ACM. 5, 553-555. 4.2. Положительно определенные системы Матрица AeR"y " является положительно определенной, если хТАх > 0 для всех ненулевых векторов xeR". Положительно определенные системы составляют один из наиболее важных классов задач Ах — b со спецификой. Рассмотрим 2 х 2-сим- метричный случай. Если |_Я21 а22Л является положительно определенной, то х = (1, 0)т =>хтАх = аХ1 > 0, х = (0, 1)г=>хтЛх = а22 > 0, х = (I, 1)т=>хгЛх = Лц + 2йг12 + а22 > 0, х = (1, — 1)т=>хгЛх = аг1 — 2д12 4- д22 > 0. Последние два уравнения приводят к неравенству \al2\ < {ахх -I- а22)11. Из этих результатов мы видим, что наибольший элемент матрицы А лежит на диагонали и он положителен. Это верно и в общем случае. Положительно определенная матрица имеет «весомую» диагональ. Масса диагонали не столь заметна, как в случае с диагональным доминированием (ср. § 3.4.9), но она дает аналогичный эффект-устраняет необходимость выбора ведущего элемента. Мы начнем с нескольких замечаний о свойстве положительной определенности и о том, что она влечет за собой в несимметричном случае при выборе ведущего элемента. Потом мы остановимся на эффективной реализации процедуры Холец- кого, которая может быть использована для надежного разложения симметричной положительно определенной матрицы А. Исследуются gaxpy-версия, версия с внеш¬ ним произведением и блочная версия. Раздел заканчивается несколькими замеча¬ ниями о неотрицательно определенном случае. 4.2.1. Положительная определенность Пусть матрица AeRnxn является положительно определенной. Очевидно, что положительно определенная матрица невырожденна, так как в противном случае нашелся бы ненулевой вектор х, такой, что хГ Ах = 0. Однако, как показывают следующие результаты, из положительности квадратичной формы хТАх вытекают гораздо более сильные свойства. Теорема 4.2.1. Если матрица /leR" * п является положительно определенной и мат¬ рица XeRnxk имеет ранг к, то матрица В = ХТАХеRk*k также положительно определена. Доказательство. Если вектор zeRk удовлетворяет условию 0 > zTBz = (Xz)TA (Xz\ то Xz = 0. Но так как X - матрица полного ранга, отсюда следует, что z = 0. □ Следствие 4.2.2. Если А - положительно определенная матрица, то все ее главные подматрицы положительно определенные. В частности, все диагональные элементы положительны. Доказательство. Если v е R* - это целочисленный вектор, причем 1 < < ... < vk ^
4.2. Положительно определенные системы 133 ^ п, то X = /и (:, I?) является матрицей ранга /с, составленной из единичных столбцов с индексами vv ..., vk. Как следует из теоремы 4.2.1, матрица A(v, v) = XTAX является положительно определенной. □ Следствие 4.2.3. Если матриц А положительно определенная, то разложение А = LDMT существует и матрица D = diag(c/j, ..., dn) имеет положительные диагональные элементы. Доказательство. Из следствия 4.2.2 следует, что подматрицы A(l:k, 1:к) невы- рожденны для к = 1 :л, и поэтому согласно теореме 4.1.1 разложение А = LDMT существует. Если мы применим теорему 4.2.1 при X = L~T, то матрица В = = DMTL~T = L-1 ALT Т является положительно определенной. Так как MTL~T - это верхняя унитреугольная матрица, а матрицы В и D имеют одинаковую диагональ, то эта диагональ должна быть положительна. □ Существует несколько типичных ситуаций, которые на практике вызывают положительную определенность матрицы: • Квадратичная форма является энергетической функцией, положительность которой гарантирована ее физическим смыслом. • Матрица А является крест-произведением ХТХ , где X имеет полный столб¬ цовый ранг. (Положительная определенность следует из теоремы 4.2.1, если положить А = /„.) • Обе матрицы А и Ат диагонально доминирующие и все ан положительны. Доказательство того, что третье условие влечет положительную определенность, оставляем читателю. 4.2.2* Несимметричные положительно определенные системы Простое существование LDM7-разложения не означает, что оно вычисляется удовлетворительно, потому что результирующие^ множители могут иметь неприем¬ лемо большие элементы. Например, если е > 0, то матрица А = Г еш1 = Г 1 01 Г е 0 ]Г1т/е1 l-m ej L —m/г 1 J LO e + m2/zJ Lo 1 J является положительно определенной. Но если mjz »1, то рекомендуется применять выбор ведущего элемента. Следующая теорема подсказывает, когда можно ожидать роста элементов при LDMг-разложении положительно определенной матрицы. Теорема 4.2.4. Пусть A eR* ж п-положительно определенная матрица, и пусть Т = = (А + Ат)/2 и S = (A- Ат)/2. Если А = LDMTy mo lll^l|Mr|||f < И(||Т||2 + ||ST-*S||2). (4.2.1) Доказательство. См. Golub и Van Loan (1979). □ Теорема подсказывает, когда без всякого риска можно не делать выбора ведущего элемента. Допустим, что вычисленные множители L, б и М удовлетво¬ ряют условию II\L\\D\|Л?Г1 II, « с||\L\\D\MT\||,, (4.2.2) где с-константа умеренной величины. Как следует из формулы (4.2.1) и из анализа в § 3.3, если эти множители использовать для вычисления решения системы Ах = b,
134 Гл. 4. Линейные системы специального вида то вычисленное решение £ удовлетворяет системе (А + Е)£ = Ьу где ||£||f « u(3«|M||f + 5си2(||Т||2 + ||ST-‘S||2)) + 0(u2). (4.23) Легко показать, что ||Т||2 < |М||2, и тогда следует, что если O-i^a (4.14, IMII2 не слишком велико, то можно не делать выбор ведущего элемента. Другими словами, норма кососимметричной части S умеренна относительно обусловлен¬ ности симметричной части Т. Иногда в приложениях бывает возможно оценить (1. Тривиальный случай, когда А симметрична, тогда 0 = 0. 4.2.3. Симметричные положительно определенные системы Когда мы применяем полученные выше результаты к симметричной положи¬ тельно определенной системе, мы знаем, что разложение А = LDLT существует и, более того, оно устойчиво к вычислениям. Тем не менее в этом случае используется другое разложение. Теорема 4.2.5 (Разложение Холецкого). Если матрица А е R” * п является симметрич¬ ной положительно определенной, то существует единственная нижняя треугольная матрица СеКяхл с положительными диагональными элементами, такая, что А = GGT. Доказательство. Согласно теореме 4.1.2 существует нижняя унитреугольная матри¬ ца L и диагональная матрица D = diag^ dn\ такие, что А = LDLT. Так как элементы dk положительны, то матрица G = Lgmg(y/d[, ..., >/d~n) является вещест¬ венной нижней треугольной с положительными диагональными элементами. Также выполняется соотношение А = GGT. Единственность следует из единственности LD L г-раз л ожения. □ Разложение А = GGT известно как разложение Холецкого, а матрицы G назы¬ ваются треугольниками Холецкого. Заметим, что если мы вычислили разложение Холецкого и решаем треугольные системы Gy — Ъ и GTx = уу то Ъ — Gy = G (GTx) — = (GGT)x = Ах. Наше доказательство существования разложения Холецкого в теореме 4.2.5 конструктивно. Тем не менее более эффективные методы для вычисления треуголь¬ ника Холецкого могут быть получены преобразованием уравнения А = GGT. Как мы покажем в следующих нескольких разделах, это может быть достигнуто различ¬ ными способами. 4*2.4. Gaxpy-версия метода Холецкого Сначала мы получим реализацию метода Холецкого, богатую операциями типа gaxpy. Если мы сравним у-е столбцы в уравнении А = GGTy то мы получим Л(:,/)= I G(j. k)G(:, к). к = 1 Отсюда следует, что G (j, J) G (:, j) = А (:, j)- £ G(j, к) G(:, к) = v. (4.2.5) к = I
4.2. Положительно определенные системы 135 Если мы знаем (/ — I) первых столбцов матрицы G, то может быть вычислен вектор v. Отсюда через сравнение компонент в формуле (4.2.5) следует, что G(j:n,j) = = v(J:n)/y/v(J). Это и есть скалярная операция gaxpy, и поэтому мы получаем следующий метод, основанный на gaxpy-операции для вычисления разложения Холецкого: for у = 1т v(j:n) = A(J:n,j) for к — 1 :j — 1 v(j:n) = v(J:n) — G(J, k)G(j:n, к) end G(j:n. j) = v(j:n)/y/v(ji end Вычисления можно организовать так, что G замещает нижние треугольные матри¬ цы А. Алгоритм 4.2.1 (Метод Холецкого: Gaxpy-версия). При данной симметричной по¬ ложительно определенной матрице 4еКяхя следующий алгоритм вычисляет ниж¬ нюю треугольную матрицу G е R" * ", такую, что А = GGT. Для всех i ^ у G(i, у) замещает A (i, у). for у = 1: л if у > 1 A (j: п, j) = А (j:n, j) - A (j: и, J :j - 1) A (j, 1 :j - 1)T end A (j-n,j) = A (j: n, j)/у/A (j, j) end Алгоритм требует лэ/3 флопов. Пример 4.2.1. Матрица является положительно определенной. 4.2.5. Метод Холецкого с внешним произведением Альтернативная процедура Холецкого, основанная на модификации с внешним произведением, может быть получена из следующего разбиения: Здесь р = у/а и мы знаем, что а > 0, потому что А положительно определена. Заметим, что В — vvT/a тоже положительно определена, потому что она является главной подматрицей матрицы ХТАХ, где ч: -£]• Таким образом, если мы имеем разложение Холецкого GXG\ = В — vvT/ay то из формулы (4.2.6) следует, что А = GGTy где ^ Г Р о 1
136 Гл. 4. Линейные системы специального вида Далее наша цель - многократно выполнить разбиение (4.2.6) до предельно малень¬ ких подматриц, почти так же, как в ^‘/-алгоритме исключения Гаусса. Если мы замещаем нижнюю треугольную часть матрицы А на матрицу G, то получается Алгоритм 4.2.2 (Метод Холецкого: версия с внешним произведением). Дана симмет¬ ричная положительно определенная матрица А е R” * следующий алгоритм вычис¬ ляет нижнюю треугольную матрицу GeRnx", такую, что А = GGT. Для всех i > у G (/, j) замещает А (*\ у). for к — 1 :п А (/с. к) = у/МкТк) А (к + 1: я, к) = А (к + I: п, к)/А (к, к) for у = к + 1: п A{j:n. k)A{j, к) end end Алгоритм требует и3/3 флопов. Заметим, что у-цикл вычисляет нижнюю треуголь¬ ную часть модификации с внешним произведением А (к + 1: и, к + 1: п) = А (к + 1: и, к -h 1: п) — А (к + 1: п, к)А(к+ 1: п, к)Т. Возвращаясь к нашим рассуждениям в § 1.4.8 о сравнении gaxpy-версии и модифика¬ ции с внешним произведением, можно легко показать, что алгоритм 4.2.1 осуществ¬ ляет в два раза меньший векторный обмен, чем алгоритм 4.2.2. 4.2.6. Блочный метод Холецкого со скалярным произведением Пусть y4eRnx/7-симметричная положительно определенная матрица. Будем рассматривать матрицу А = (Аи) и ее множители Холецкого G = Gtj как блочные N х N-матрицы с квадратными диагональными блоками. Приравнивая (/', у)-е блоки из уравнения А = GGT при i ^у, мы получаем, что Обозначив S = Aij-J'£GikC]k, к = 1 мы видим, что GjjGjj = S, если i = у, и Gl7Gj, = S, если i > у. При правильном упорядочивании эти уравнения могут быть использованы для вычисления всех матриц Gu. Алгоритм 4.2.3 (Метод Холецкого: блочная версия со скалярным произведением). Дана симметричная положительно определенная матрица A eRw х следующий алгоритм вычисляет нижнюю треугольную матрицу GeR"x”, такую, что А = GGT. Нижний треугольник матрицы А замещается на нижнюю треугольную часть матрицы G. Матрица А рассматривается как блочная N х N-матрица с квадратными диагональ¬ ными блоками. for у = 1:N for i - j :N S = Ay - I GlkGl k= 1 if i=j Вычислить разложение Холецкого S = GjjGjj.
4.2. Положительно определенные системы 137 else Решить GfjGjj = S относительно G(j. end Выполнить замещение Аи на Си. end end Весь процесс включает п3/3 флопов, как и другие процедуры Холецкого, которые мы изучали. Процедура богата матричными умножениями, получаемыми при соответ¬ ствующем блочном разбиении матрицы А. Например, если п — rN и каждая А(]- это г х r-матрица, тогда доля операций 3-го уровня аппроксимируется выражением 1 ~ (1/N2)- Алгоритм 4.2.3 не полон в том смысле, что мы не уточнили, как выполняется произведение матриц GikGJk или как вычисляется г х r-разложение Холецкого S = G}jGJj. Эти важные детали должны быть тщательно проработаны для того, чтобы добиться хороших характеристик. Другая блочная процедура может быть получена из gaxpy-алгоритма Холецкого. Через г шагов алгоритма 4.2.1 нам известны матрицы GneRrxr и С721 eR<w_r) ж' в разложении U. Гсм О 1Г'г01Г<7„0 1т 1а21 а22J Lс21 /И_,До л]1с21 /„_J • После г шагов gaxpy-версии Холецкого мы преобразуем уже не матрицу А, а редуцированную матрицу А = Л22 — G2iGh, которую получили явно с учетом симметрии. Продолжая этот подход, мы получим блочный алгоритм Холецкого, /с-й шаг которого содержит г шагов gaxpy-версии Холецкого для матрицы порядка п — (к — 1)г, следовательно, вычисления 3-го уровня имеют порядок п — кг. Вклад операций 3-го уровня аппроксимируется соотношением 1 — ЗД2ЛГ), если п ^ rN. 4.2,7. Устойчивость процесса Холецкого Мы знаем, что в точной арифметике для симметричной положительно опреде¬ ленной матрицы существует разложение Холецкого. И, наоборот, если процесс Холецкого может быть реализован со строго положительными квадратными корня¬ ми, значит, матрица А положительно определена. Таким образом, чтобы выяснить, является ли матрица А положительно определенной, мы просто пытаемся вычис¬ лить ее разложение Холецкого, используя некоторые из методов, приведенных выше. В условиях ошибок округления ситуация становится более интересной. Числен¬ ная устойчивость алгоритма Холецкого следует из неравенства г вЬ < I у?к = к = 1 Оно показывает, что элементы треугольника Холецкого хорошо ограничены. Аналогичный вывод может быть получен из уравнения ЦС?||| — IM 112- Ошибки округления в разложении Холецкого были широко исследованы в клас¬ сической работе Уилкинсона (1968). Используя результаты 9той работы, можно показать, что вычисленное решение £ системы Ах — /?, полученное некоторой из наших процедур Холецкого, является решением возмущенной системы (А + Е)х — 6,
138 Гл. 4. Линейные системы специального вида где ||£||2 < спи\\А\\2 и сп-маленькая константа, зависящая от п. Более того, Уилкин¬ сон показал, что если ?nux2(/lX 1, где ^„-другая маленькая константа, тогда процесс Холецкого может быть выполнен, т. е. не возникает квадратных корней из отрицательных чисел. Пример. 4.2.2. Если алгоритм 4.2.2 применяется к положительно определенной матрице 100 15 о.оГ А = 15 2.3 0.01 0.01 0.01 1.00 и р = 10, t = 2, причем используется приближенная арифметика, тогда §и = 10, д2\ = 1-5, §3J = 0.001 и д22 = 0.00. Алгоритм обрывается при попытке вычислить §32. 4.2.8. Неотрицательно определенные матрицы Мы говорим, что матрица А будет неотрицательно определенной, если хТАх ^ 0 для любого вектора х. Симметричные неотрицательно определенные матрицы (sps) представляют большой интерес, и мы кратко обсудим некоторые преобразования типа Холецкого, которые могут быть использованы для решения различных 5/75-задач. Вначале необходимо получить результаты о свойствах диагональных элементов 5/75-матрицы. Теорема 4.2.6. Если матрица Ае R"*" является симметричной неотрицательно определенной, тогда KKfoi + flaV 2, (4-2.7) KI < Joifljj {**})> (4-2.8) max |ew| = max | ati\, (4.2.9) и i ait = 0=>Aft :) = 0, A(:, 0 = 0. (4.2.10) Доказательство. Если вектор jc = et + ej9 тогда 0 < xTAx = au + ап + 2aij9 если же x = ex — ej9 то получаем 0 < xTAx = au -I- an — 2atJ. Неравенство (4.2.7) следует из этих двух результатов. Равенство (4.2.9) очевидно следует из неравенства (4.2.7). Для доказательства неравенства (4.2.8) допустим без ограничения общности, что 1 = 1 и j = 2, и рассмотрим неравенство к2 + 2а12х + а ■*22* которое справедливо, поскольку матрица А (1:2, 1:2) является неотрицательно определенной. Чтобы это квадратное уравнение относительно jc удовлетворяло неравенству, необходимо, чтобы дискриминант 4а\г — 4апа22 был отрицательным. Справедливость (4.2.10) следует из (4.2.8). □ Рассмотрим, что произойдет, если метод Холецкого с внешним произведением применить к 5/75-матрице. Если нам встретится нулевой элемент А (к, к), тогда из (4.2.10) следует, что элементы А(к:п, к) нулевые, и «ничего не надо делать», поэтому мы получаем алгоритм
4.2. Положительно определенные системы 139 for к = 1 :п if А {к, к)>0 А (к, к) = ^А(к,к); А(к + 1:п, к) = А(к+ 1:л, к)/А (/с, к) for j = к + 1: л A{j:nt j) = A{j:n,j) - A(j:n. k)A(j, к) end end end Таким образом, простое изменение делает алгоритм 4.2.2 применимым в неотрица¬ тельно определенном случае. Однако на практике ошибки округления делают невозможным появление точных нулей и может быть предпочтительнее ввести в алгоритм выбор ведущего элемента. 4.2*9. Симметричный выбор ведущего элемента Для сохранения симметрии симметричной матрицы А мы рассмотрим только преобразования типа РАРТ, где Р- матрица перестановок. Использование только строчных перестановок (А «- РА) или столбцовых перестановок (А «- АР) нарушает симметрию. Перестановка вида А <- РАРТ называется симметричной перестановкой матрицы А. Заметим, что такая операция не переставляет внедиагональные элемен¬ ты на диагональ. Диагональ матрицы РАРТ-это переупорядоченная диагональ матрицы А. Пусть в начале /с-го шага алгоритма (4.2.11) мы симметрично переставили наибольший диагональный элемент матрицы А(к:п, к :п) в ведущую позицию. Если этот наибольший диагональный элемент нулевой, то А (к:п, к:п) = 0 в силу (4.2.10). В этом случае мы можем вычислить разложение РАРТ = GGT, где GeR(n *(* ~!))- нижняя треугольная матрица. Алгоритм 4.2.4. Пусть А е Rrtxr'- симметричная неотрицательно определенная мат¬ рица и rank (А) = г. Следующий алгоритм вычисляет матрицу перестановок Р9 индекс г и нижнюю п х г треугольную матрицу G, такие, что РАРТ = GGT. Нижний треугольник А(:, 1: г) замещается на нижнюю треугольную часть матрицы G. Матрица Р — РГ...Р{, где /^-тождественная матрица с переставленными /с-й и piv(к)-й строками. г = 0 for к = 1: п Найти q (к < q ^ я), такое, что А (q, q) = max {А (к, к)... А (и, л)}. if A (q, q) > 0 r = r+ I piv (к) = q A (к, :)<-+A (q, :) /!(:, q) A (kt k) = yjA (k, k) A (k + 1: n, k) = A (k + 1: n, k)/A (k, k) for j = к + 1: n A(j:n,j) = A(J:n,J) - A{j:n, k)A{j, k) end end end
140 Гл. 4. Линейные системы специального вида На практике для определения малости А (к, к) используется некоторый барьер. Тем не менее ситуация бывает крайне непростой, и читатель может проконсультировать¬ ся у Higham (1989). Добавим, что в § 5.5 обсуждается выбор барьера в случае задачи неполною ранга. В заключение отметим, что правильное эффективное использова¬ ние алгоритма 4.2.4 возможно, лишь когда осуществляется доступ только к нижней треугольной части матрицы А. 4.2.1. Предположим, что матрица А + /2? эрмитова и положительно определенная, причем А> £eRtlX*. это 01Начает чхо Лт д v > 0 для любого вектора ;с Ф 0. (а) Показать, что матрица симметричная и положительно определенная. (Ь) Сформулировать алгоритм сложности 8л3/3 лля решения системы (Л + r0)(-v + iy) — Ь + /V, где Ьу с, х и у принадлежат R" Сколько памяти он требует? 4.2.2. Пусть матрица симметричная и положительно определенная. Построить алгоритм для вычисления верхней треугольной матрицы ReR',Xl1, такой, что А = RRT. 4.2.3. Пусть матрица /4eRrtX" положительно определенная, и пусть Т= (А 4 A7 )/2t a S = = {А — АТ)/2. (а) Показать, что IM ~1II2 < II Г 11|2 и хт А 1 х ^ хт Т~ 1 х для всех xeR". (b) Показать, что если А = LDMry тогда dk > 1/|| Т~11|2 при к = I 4.2.4. Найти вещественную 2 х 2 матрицу А. обладающую свойством, что хт Ах > 0 для всех вещественных не нулевых векторов длины 2, но которая не является положительно определен¬ ной для векторов из множества С2 х 2. 4.2.5. Пусть матрица Показать, что если обе матрицы А и Ат - строю диагонально доминирующие, тогда А положительно определена. Диагональные элементы матрицы А по¬ ложительны. 4.2.6. Показать, что функция fix) = (хг Ax)j2 является векторной нормой на R" в том и только том случае, когда А положительно определена. 42.7. Модифицировать алгоритм 4.2.1 так, что если осгрсчается квадратный корень из отрицательного элемента, то алгоритм находит единичный вектор х, удовлетворяющий условию хт Ах < 0, и заканчивается. 42.8. Числовая сфера W{A) комплексной матрицы А определяется как множество W{A) = = {хИ Axix"х =1}. Показать, что если ЩА) не содержит нуля, то лля матрицы А существует L (/-разложение. 42.9. Используя SVD, показать, что если матрица А е R’"х", где m ^ л, тогда существуют матрицы и ГеЧяХп , такие, что А = QP, где QTQ — /„ и Р симметричная и неотри¬ цательно определенная. Это разложение иногда называется полярным разложением по ана¬ логии с разложением комплексного числа г — е* ьг*с| | z |. 42.10. Пусть матрица А = / + иит. причем Л*=К*Хи и ||ы|[2 = L Дать точное описание диагонального и поддиагонального множителей Холецкош матрицы А: Замечания и литература к § 4.2 Определенность квадратичной формы ,тт А х часто может быть установлена при рассмотрении математических свойств исходной задачи. Например, дискретизация дифференциальных опе¬ раторов частных производных дает возможность доказать положительную определенность матриц. Вопрос о необходимости выбора ведущего элемента при решении положительно определенных систем рассматривается в работе Задачи Golub G.H. and Van Loan С. (1979). “Tjnsymmetrii: Positive Definite Linear Systems", Lin. Alg. and Its Applic. 28, 85-98.
43. Ленточные системы 141 Результаты этой статьи были вызваны более ранней работой по линейным системам вида (/ + S.) х = Ъ, где S - кососимметричная матрица: Buckley А. (1974). “A Note on Matrices А = I + Иу И Skew-Symmetric”, Z. Angew. Math. Mcch. 54, 125-126. Buckley A. (1977), On the Solution of Certain Skew-Symmetric Linear Systems”, SIAM ). Num. Anal. 14, 566 -570. Симметричные положительно определенные системы составляют наиболее важный класс задач Ах В со спецификой. Алгол-программы для GG* и L.DLr разложений даются в работе Martin R.S., Peters G., and Wilkinson J. H. (1965). "Symmetric Decomposition of a Positive Definite Matrix”, Numer Math. 7, 362 -383. See also HACLA, pp. 9 30. Техника итерационного уточнения, которую мы обсуждали в § 3.5.Э и связи с LU-разложснием, также может применяться при GGT и LDLJ-разложениях. См. Martin R. S., Peters G., and Wilkinson J. H. (1966). ‘'Iterative Refinement of the Solution of a Positive Definite System of Equations”, Numer. Math. 8, 203 2. See also HACLA, pp. 31 44. Анализ ошибок округления для разложения Холецкого обсуждается в работах IUgham N.J. (1989). “Analysis of the Cholesky Decomposition of a Semi-definite Matrix”, in Reliable Numerical Computation, cds. M.G. Cox and S.J. Hammarling, Oxford University Press. Kielbasinski A. (1987). “A Note on Rounding Error Analysis of Cholesky Factorization”, Lin. Alg. and Its. Applic. 88/89, 487 494. Meinguet J. (1983). "Refined Error Analyses of Cholesky Factorization”, SIAM J. Numer. Anal. 20, 1243 1250. Wilkinson J. H. (1968). “A Priori Error Analysis of Algebraic Processes”, Pro. International Congress Math. (Moscow: Izdat. Mir, 1968), p, 629 639. Вопрос об изменении треугольника Холецкого С при возмущении матрицы А = GGT иссле¬ дуется в статье Stewart G. W. (1977b). "Perturbation Bounds for the QR Factorization of a Matrix”, SIAM J. Num. Anal. 14, 509 518. Алгол-процедур а для обращения симметричной положительно определенной матрицы без использования дополнительной памяти дается в работе Bauer F.L and Reinsch С. (1970). "Inversion of Positive Definite Matrices by the Gauss-Jordam Method”, in НАСLA, pp. 45-49. Фортран-программы для решения симметричных положительно определенных систем имеют¬ ся в LINPACK, гл. 3 и 8. 4.3. Ленточные системы Во многих приложениях, в которых присутствуют линейные системы, матрица коэффициентов является ленточной. В этом случае уравнения всегда могут быть упорядочены так, что каждое неизвестное xt появляется только в нескольких уравнениях, «соседних» с i-м уравнением. Формально мы говорим, что матрица А = (rty) имеет верхнюю ширину ленты q> если — 0 для всех j > i + q, и нижнюю ширину ленты р, если а„ = 0 для всех / > j + р. При решении ленточных систем можно добиться реальной экономии, так как треугольные множители LU, GGT, LDM Т и т. д., также являются ленточными. Прежде чем продолжить, мы советуем читателю просмотреть § 1.2, где обсуждаются некоторые аспекты преобразований с ленточными матрицами. 4.3,1, Ленточное L [/-разложение Наш первый результат показывает, что если матрица А является ленточной и А = LU. тогда L(U) сохраняет нижнюю (верхнюю) ширину ленты матрицы А.
142 Гл. 4. Линейные системы специального вида Теорема 4.3,1. Пусть для матрицы АеR" х л существует LU-разложение А = LU. Если А имеет верхнюю ширину ленты q и нижнюю ширину ленты р> тогда U имеет верхнюю ширину ленты q и L имеет нижнюю ширину ленты р. Доказательство. Доказательство проведем по индукции относительно п. Выпишем разложение _Га и^П О 1Г1 0 1 Га wT 1 "Ь 5 J L/а /„-J LO B-i?ivT/aJL0 /„- J ’ Очевидно, что В — vwT/a имеет верхнюю ширину ленты q и нижнюю ширину ленты р, потому что только первые q компонент w и первые р компонент v являются ненулевыми. Пусть L1Ul будет L//-разложением этой матрицы. Используя предположение индукции и разреженность w иг, получаем, что ч:л] - Ч: Я имеют необходимые размеры ширины ленты и удовлетворяют соотношению А = LU. Модификация исключения Гаусса для ленточных матриц, имеющих /^-разло¬ жение, получается непосредственно. Алгоритм 4.3.1 (Ленточное исключение Гаусса: версия с внешним произведением). Дана матрица А е R” х " с верхней шириной ленты q и нижней шириной ленты р, следующий алгоритм вычисляет разложение А = LU при условии, что оно сущест¬ вует. Элементы A (i. j) замещаются на L{i,j\ если / > у, и на U(ifj) в противном случае. for k = 1: п — 1 for i = к + 1 :min(fc + р, п) A(i,k) = A(i,k)/A(k. к) end for j = к + 1 :min(к + q, n) for i = к + 1: min (k -I- p, n) Aii,j) = A(i,j)-A(i. k)A(kJ) end end end Если n»p и n»q, то этот алгоритм содержит около 2 npq флопов. Также существуют ленточные версии алгоритма 4.1.1 (LDMr) и всех процедур Холецкого, мы оставляем их формулировку как упражнения. 4.3.2. Решение треугольных ленточных систем Аналогичная экономия может быть получена при решении треугольных ленточных систем. Алгоритм 4.3.2 (Ленточная прямая подстановка: столбцовая версия). Пусть матрица LeRnxn является нижней унитреугольной с нижней шириной ленты р. Для данного вектора be R" следующий алгоритм замещает Ъ на решение системы Lx = Ь.
4.3. Ленточные системы 143 for j = 1 :п for 1=7+ 1 :min(/ + p, n) b{i) = b{i) - L{i,j) b{j) end end Если n » /?, тогда этот алгоритм требует около 2 tip флопов. Алгоритм 4.3.3 (Ленточная обратная подстановка: столбцовая версия). Пусть U eRn х " является невырожденной треугольной матрицей с верхней шириной ленты q. Для данного вектора be R" следующий алгоритм замещает b на решение системы Ux = b. for j = п: —1:1 for I = max (1,7 - q) :j - 1 end end Если n » q, то этот алгоритм требует около 2 nq флопов. 4.3.3. Структура данных ленточной матрицы Приведенные выше алгоритмы записаны так, словно матрица А хранится обычным образом в массиве п х п. На практике алгоритм решения ленточной линейной системы создается для структуры данных, которая имеет преимущества от наличия многих нулей в матрице А. Вспомним из § 1.2.6, что если матрица А имеет нижнюю ширину ленты р и верхнюю ширину ленты q, то она может быть представлена в массиве A. band размера (р + q + 1) х «, в котором ленточный элемент хранится в позиции A.band(i — 7 + q + 1,7). При таком размещении ненулевая часть /-го столбца матрицы А содержится в 7-м столбце массива A. band. Другая возможная структура данных для ленточной матрицы, которую обсуждали в § 1.2.8, осуществляет хранение матрицы А по диагонали в 1-мерном массиве +. diag. Независимо от принятой структуры данных, организация вычислений с ленточ¬ ным расположением памяти требует тщательности, чтобы уменьшить дополнитель¬ ные затраты на вычисление индексных выражений. Для пояснения рассмотрим выполнение алгоритма 4.3.! с заменой ссылок на массив А соответствующими ссылками на массив A. band: for к = 1: п - 1 for / = к + I :min(k + pt п) A. band(i — к + q + 1, к) = A.band(i — к + q + 1, к)/A.band(q + 1, к) end for 7 = к + 1 :min(fc + q, n) for 1 = к + 1: min (к +/?, n) A.band(i —j + q + 1,7) = A.band(i—j + q + 1,7) — A. band(i — к + q + 1, k)A. band(k — j + q + 1,7) end end end
144 Гл. 4. Линейные системы специального вида Хотя все сделано правильно, такой буквальный перевод алгоритма 4.3Л не является оптимальным, потому что имеется излишек в индексной арифметике. Например, первый i-цикл лучше записать следующим образом: £ = q + 1 for i = q + 2: q + p + 1 A.bund0, k) = A.band{i, к)/А{вч к) end (Это сработает из-за «угловых нулей», наличие которых в массиве A. baud мы допускаем, ср. § 1.2.6.) Создание эффективной ленточной процедуры требует преобразований таког о рода. Умные компиляторы все сделают сами, но стремление к наибысчрейшей реализации может потребовать, чтобы программист полностью пересмотрел целочисленные вычисления. Эго одна из причин, почему программы для ленточных матриц неудобны для чтения. 4.3*4. Ленточное исключение Гаусса с выбором ведущего элемента Исключение Гаусса с частичным выбором тоже может быть приспособлен!) для использования ленточной структуры матрицы А. Тем не менее если РА = LV, то ленточные свойства матриц L и U не такие простые. Например, если А трех- диагональная матрица и ее первые две строки переставлялись па самом первом шаге алгоритма, то элемент к13 ненулевой. Следовательно, перестановки строк увели¬ чивают ширину ленты. Как именно увеличивается лента это содержание следую¬ щей теоремы. Теорема 4.3.2. Пусть матрица А е R* х * певырождсипа и имеет верхнюю и нижнюю ширину ленты q и р соответственно. Если используется исключение Гаусса с частичным выбором для вычисления матриц преобразования Гаусса My = /-auV, j= 1:и- I и матриц перестановок Р{... Л, ь таких, что Мп- j Р„- L... ML PVA - V будет верхняя треугольная матрица, тогда матрица II имеет верхнюю ширину ленты р И- q и — 0 для всех / ^ / и i > /' + р. Доказательство. Пусть разложение РА = LU выполнено исключением Гаусса с частичным выбором, напомним, что Р — Ри_,... Р^ Представим матрицу Р1 = ], где {s,,..., s„}~перестановки набора {1, 2,..., «}. Если > i + ру из этого следует" что ведущая главная подматрица матрицы РА порядка / х / вырождена, гак как (PAjij — j, j = I p 1 и Si - p — 1 ^ г. Из этого вытекает, что матрицы V и А вырожденны, что противоре¬ чит условию. Таким образом, sL < i -у р для i = I: и, и поэтому РА имеет ширину ленты р + q. Это следует из теоремы 4.3.1, согласно которой V имеет ширину ленты Р + Ч- Утверждение относительно а(Л может быть установлено, если заметить, что матрица М} должна обнулить только элементы (/+ К/),..., 0 + Р> У) частично уменьшенной матрицы PjM{-x Р^-\...Р1 Л.П Таким образом, выбор ведущего элемигга нарушает структуру ленты в том смысле, что матрица U становится «толще», чем верхний треугольник матрицы А, и пока мы ничего не можем сказать о ширине ленты матрицы L. Тем не менее, так
43, Ленточные системы 14f> как у-й столбец матрицы L переставлялся су-м вектором Гаусса aJf из этого следует, что матрица L имеет самое большее р -f 1 ненулевых элементов в столбце. 4.3.5. £ {/-разложение матрицы Хессенберга В качестве примера вычислений с несимметричной ленточной матрицей мы покажем, как исключение Гаусса с частичным выбором может быть применено для разложения верхней матрицы Хессенберга Я. (Напомним, что И является верхней матрицей Хессенберга. если — 0, i>j+ 1-) После (Д — 1)чо шага исключения Г аусса с частичным выбором у нас останется верхняя матрица Хессенберга вида X X X X X X 0 X X X X X 0 0 X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X Благодаря специальной структуре этой матрицы мы видим, что следующая матрица перестановок Р3 или тождественная, или совпадает с матрицей перестановок 3-й и 4-й строк. Более того, следующая матрица преобразования Гаусса Мк имеет единствен¬ ный ненулевой множитель в позиции (к + 1, к). Это поясняет Д-й шаг следующего алгоритма. Алгоритм 4.3.4 (£ {/-разложение матрицы Хессенберга). Для данной верхней треу¬ гольной матрицы Хессенберга HeR* * п следующий алгоритм вычисляет верхнюю треугольную матрицу М„_, Рп У„.МХРХА = U, здесь каждая матрица Рк является перестановочной, а каждая матрица Мк-матрица преобразования Гаусса, элементы которой ограничены единицей. Элементы H{i,k) замещаются элементами {/(/, Д), если i ^ Д, и элементами (Мк)к + х если / — Д -J- 1. Целочисленный вектор piv (I: п — I) задаст перестановки. Если Рк = /, то piv [к) = 0. Если Рк переставляет Д-ю и (к + 1)-ю строки, то piv {к) = I. for к = 1 :л — 1 if IИ {к, к)\<\Щк.+ 1,Д)| piv{k\= 1; Н[к, к:п)<~Н{к+ I; к:п) else piv (к) = О end if Н(к, Д) Ф 0 /= -И(к + 1,Д)/Я(Д, Д) for у = к н- I: п Н(к + \J) = Н(к + 1, /) + / Н(к, j) end Н{к + 1, Д) - / end end Этот алгоритм требует п1 флопов.
146 Гл. 4. Линейные системы специального вида 4.3.6, Ленточный метод Холецкого Остаток этого раздела посвящен ленточной задаче Ах = b, где матрица А является симметричной положительно определенной. Тот факт» что выбор ведущего элемента не нужен для таких матриц, приводит к некоторым очень компактным, элегантным алгоритмам. В частности, как следует из теоремы 4.3.1, если A = GGT является разложением Холецкого матрицы А, то матрица G имеет такую же нижнюю ширину ленты, как и матрица А. Это приводит к следующей ленточной версии алгоритма 4.2.1 метода Холецкого, основанного на gaxpy- операции. Алгоритм 43.5 (Ленточный метод Холецкого: Gaxpy-версня). Для данной симмет¬ ричной положительно определенной матрицы AeRn х п с шириной ленты р следую¬ щей алгоритм вычисляет нижнюю треугольную матрицу G с нижней шириной ленты р, такую, что А = GGT. Для всех / ^ j матрица G (/, у) замещает элементы A (i, j). for j = 1: n for к — max(l,y — p):j — 1 X = min(/c + p, n) = A(j'Xj) - A(j, fcM(/:X, к) end X = min {j + p, n) A(j'Xj) = A{f‘XJ)fy/A(Jtj) end Если n » p, тогда алгоритм требует около п{р2 + 3р) флопов и п квадратных корней. Конечно, в серьезных приложениях должна быть использована соответствующая структура данных при задании матрицы А. Например, если мы храним только нижнюю треугольную часть, тогда будет достаточным массив размером (р + 1) х п. (См. § 1.2.6.) Если наша ленточная процедура Холецкого сочетается с программами решения ленточных треугольных систем, тогда решение задачи Ах - b потребует приблизи¬ тельно пр2 4- 1пр 4- 2п флопов и п квадратных корней. Из этого следует, что для маленьких р квадратные корни представляют значительную часть вычислений и предпочтительнее использовать LDL-подход. Действительно, тщательный подсчет флопов на этапах А = LDlI, Ly = b, Dz — у и llx = z обнаруживает, что требуется пр2 + 8пр 4 р флопов без квадратных корней. 43.7. Решение трехдиагональных систем Как образец применения LDiJ-процедуры для решения системы с узкой лентой рассмотрим случай симметричных положительно определенных трехдиагональных систем. Пусть 1 О L =
43. Ленточные системы 147 и D = diag^,..., сГД тогда из уравнения А = LDZJ мы получаем, что = ^1* ак,к-1 ” г*-1 <4-ь fc = 2:«, Qkk =* dk + 1 dk-1 = <4 + e* -1 я*, к -1, к = 2: л. Таким образом, 4 и ^ могут быть найдены из следующей процедуры: <*1 = Лц for /с *= 2:л &к— 1 = <*k,k-l/dk-U dk = Пи — Cjt-1 end Чтобы получить решение системы Ах = 6, мы решаем системы Ly = b, Dz = у и Lfx = z. С учетом замещения получаем Алгоритм 4.3.6 (Решение симметричной трехдиагональной положительно определенной системы). Для данной п х п симметричной трехдиагональной положительно определенной матрицы А и вектора beR" следующий алгоритм замещает Ь на решение системы Ах = b. Предполагается, что диагональ матрицы <4 хранится в векторе d(\ :л), а поддиагональ-в векторе е(1:п — 1). for к = 2 : п t =: е(к — 1); t(fc - 1) = //^(lc - IX* d(k) = d(k) - te(k - 1) end for к = 2: n Ъ{к) = Ь{к)-е(к- l)6(fc — 1) end b(n) = b(n)/d(n) for к = n - 1: -1:1 b(k) = b(k)/d(k) - e{k)b(k + 1) end Алгоритм требует 8л флопов. 4.3.8. Вопросы векторизации Пример с трехдиагональной системой затрагивает болевую точку: задачи с узкой лентой и векторно-конвейерные архитектуры плохо совмещаются. Узкая лента приводит к коротким векторам. Тем не менее иногда бывает, что большой независимый поток таких задач может решаться в одно время. Давайте посмотрим, как могут быть организованы такие вычисления в свете вопросов, поднятых в § 1.4. Для простоты предположим, что мы должны решать л х л нижние унитреуголь- ные двухдиагональные системы ^ _ i :т^ и что т » л. Допустим, у нас есть массивы Е(1: л — 1, 1: ш) и В (1: л, 1: т\ такие, что Е{\: л — 1, к) содержит поддиагональ матрицы А(к\ а 5(1: л, к) содержит к-ю правую часть Ь(к). Мы можем выполнить замещение Ь{к) на решение х**0 следующим образом: for к = 1 :т for /= 2:л 5(/, к) = ВЦ, к) - E(i - 1, к) ВЦ - 1, к) end end
148 Гл. 4. Линейные системы специального вида Трудность, связанная с этим алгоритмом, который по очереди последовательно решает каждую двухдиагональную систему, состоит в том, что внутренний цикл не векторизуем. Это следствие того, что B(i, к) зависит от B(i — 1, к). Если мы переставим к-й и /-й циклы, получим for I = 2: п for к = 1: т B(i, к) = B(i, к) - E(i - I, к) B(i - 1, к) (4.3.1) end end Сейчас внутренний цикл хорошо векторизуется, так как он содержит векторное сложение и векторное умножение. К несчастью, алгоритм (4.3.1) является процедурой с шагом, не равным единице. Тем не менее эта трудность легко исправима, если хранить поддиагонали и правые части по строкам. То есть мы используем массивы £(l:m, l:«— I) и В(\:т, \:п— 1) и храним поддиагональ матрицы А{к) в Е(к9 \ :п— 1) и Ь{к)Т в В(к9 1:«). Вычисления (4.3.1) могут быть преобразованы к виду for i = 2: п for к = I: m В(к. i) = В(к, 0 - Е(к, i - I) В(к. i ~ I) end end который снова иллюстрирует влияние структур данных на производительность. Задачи 4*3.1. Построить ленточную процедуру LDMT подобно алгоритму 4.3.1. 4.3.2. Показать, как результат алгоритма 4.3.4 может быть использован для решения верхней хессенберговой системы Их — b. 4.3.3. Предложить алгоритм для решения несимметричной трехдиагональной системы Ах = Ьу который использует исключение Гаусса с частичным выбором и требует хранения только четырех векторов длины //, заданных в плавающей арифметике. 4.3.4. Для матрицы GeR"*" определен индекс профиля т(С, /) = min {j:cu Ф 0}, где / — 1:л. Показать, что если А = GGt-3to разложение Холецкого матрицы А, то m(A% i) = m(G, i) для / = 1:п. (Говорят, что G и А имеют одинаковый профиль.) 4.3.5. Пусть матрица А е R" х " симметричная положительно определенная с индексами профи¬ ля mi = m(A, /), где /=1:л. Допустим, что матрица А хранится в одномерном массиве v следующим образом: v = (яп, а22> аз,«.3» азз» атх)- Написать алгоритм, который замещает v на соответствующие элементы множителя Холецкого G и потом использует это разложение для решения системы Ах — Ь. Сколько требуется флопов? 4.3.6. Для матрицы CeRnXl’ задан индекс р(С, /) = щах {/: си Ф 0}. Предположим, что для матрицы i4eRnX" известно L(/-разложение А = LI/, а также т(А, 1) < т{А, 2)< < т(А, л), р(А, 1) <р(А, 2) < ... t£p(A, п). Показать, что т(А, i) = m(L, i) и р(А, i) = p(U, i) для i = 1 :n. Вспомнить определение m(A, i) из задачи 4.3.4. 4.3.7. Построить gaxpy-версию алгоритма 4.3.1. 4.3.8. Предложить векторизуемый алгоритм с единичным шагом для решения симметричных положительно определенных трехдиагональных систем Aik)x{k) = h(k). Допускается, что диаго¬
4.3. Ленточные системы 149 нали, поддиагонали и правые части хранятся по строкам в массивах D, Е и В, и что Ь{к) замещается на х(к). 4.3.9. Предложить версию алгоритма 4.3.1, в которой матрица А хранится по диагоналям. 4.3.10. Построить пример симметричной положительно определенной 3 х 3-матрицы, трех¬ диагональная часть которой не является положительно определенной. Замечания и литература к § 4.3 Мы хотим подчеркнуть, что наш подсчет флопов означает только оценку объема работы. Читатель не должен придавать большого значения их точному количеству, особенно в области ленточных матриц, где так много зависит от разумной модификации. Фортран-программы для линейных ленточных систем можно найти в Linpack, гл. 2. 4 и 7. Литература, имеющая отношение к ленточным системам, огромна. Мы включили некоторые наиболее представительные статьи: Allgower Е. L. (1973). “Exact Inverses of Certain Band Matrices”, Numer. Math. 21, 279 284. Bohte Z. (1975). “Bounds for Rounding Errors in the Gaussian Elimination for Band Systems”, J. Inst. Math. Applic. 16, 133 142. Duff I. S. (1977). “A Survey of Sparse Matrix Research”, Proc. IEEE 65, 500 535. Martin R. S. and Wilkinson J. H. (1965). “Symmetric Decomposition of Positive Definite Band Matrices”, Numer. Math. 7, 355 361. See also HACLA, pp. 50 56. Martin R.S. and Wilkinson J. H. (1967). “Solution of Symmetric and Unsymmetric Band Equations and the Calculation of Eigenvalues of Band Matrices”, Numer. Math. 9, 279 301. See also HACLA, pp. 70 92. Значительный интерес в области решения задач с ленточными матрицами представляет тема, связанная с методами для уменьшения ширины ленты. См. Cuthill Е. (1972). “Several Strategies for Reducing the Bandwidth of Matrices”, in Sparse Matrices and Their Applications, ed. D.J. Rose and R. A. Willoughby, Plenym Press, New York. Gibbs N. E., Poole W.G., Jr., and Stockmeyer P. K. (1976). “An Algorithm for Reducing the Bandwidth and Profile of a Sparse Matrix”, SIAM J. Num. Anal. 13, 236 250. Gibbs N. E., Poole W. G., Jr., and Stockmeyer P. K. (1976). “A Comparison of Several Bandwidth and Profile Reduction Algorithms”, ACM Trans. Math. Soft. 2, 322 330. Как мы упоминали, трехдиагональные системы возникают чрезвычайно часто. Поэтому нет ничего удивительного, что уделяется огромное внимание специальным методам для решения этого класса ленточных задач: Ficsher С. and Usmani R. А. (1969). “Properties of Some Tridiagonal Matrices and Their Application to Boundary Value Problems”, SIAM J. Num. Anal. 6, 127 142. Higham N.J. (1986c). “Efficient Algorithms for computing the condition number of a tridiagonal matrix”, SIAM J. Sci. and Stat. Comp. 7, 150-165. Kershaw D. (1982). “Solution of Single Tridiagonal Linear Systems and Vectorization of the ICCG Algorithm on the Cray-1”, in Parallel Computation, ed. G. Rodrigue, Academic Press, NY, 1982. Lambiotte J. and Voiht R.G. (1975). “The Solution of Tridiagonal Linear Systems of the CDC-STAR 100 Computer”, ACM Trans. Math. Soft 1, 308-329. Malcolm M. A. and Palmer J. (1974). “A Fast Method for Solving A Class of Tridiagonal Systems of Linear Equations”, Comm. ACM 17, 14-17. Rose D.J. (1969). “An Algorithm for Solving a Special Class of Tridiagonal Systems of Linear Equations”, Comm. ACM 12, 234 236. Stone H. S. (1973). “An Efficient Parallel Algorithm for the Solution of a Tridiagonal Linear System of Equations”, J. ACM 20, 27-38. Stone H. S. (1975). “Parallel Tridiagonal Equation Solvers”, ACM Trans. Math. Soft. 1, 289 307. В гл. 4 работы George J.A. and Liu J. W. (1981). Computer Solution of Large Sparse Positive Definite Systems, Prentice-Hall, Englewood Cliffs, New Jersey содержится прекрасный обзор по ленточным методам для положительно определенных систем.
150 Гл. 4. Линейные системы специального вида Добавления при переводе В следующей работе установлен явный вид матриц, обратных к блочно-ленточной и блочно- хессенберговой: Нечепуренко Ю. М. Об одной факторизации элементов обратной матрицы. -ЖВМ и МФ. 1984, Т. 24, JNs 4, с, 601-605. Параллельный алгоритм для трехдиагональной системы порядка л, требующий 31ogw тактов 4л-процессорной ЭВМ, описан в работе Нечепуренко Ю. М. Полиномиально устойчивый быстрый параллельный алгоритм для трех¬ диагональных систем.-ЖВМ и МФ, 1986, Т. 26, № 7, с. 963-969. 4.4. Симметричные неопределенные системы Симметричная матрица, квадратичная форма которой хТАх принимает и положительные, и отрицательные значения, называется неопределенной. Хотя неопределенная матрица может иметь Ь01/-разложение, элементы множителей могут быть произвольной величины: Конечно, можно призвать на помощь некоторые стратегии с выбором из § 3.4. Однако они теряют симметрию, и вместе с этим пропадает шанс для построения метода решения неопределенных систем «со скоростью Холецкого». Надо приме¬ нить, согласно нашим рекомендациям из § 4.2.9, симметричный выбор ведущего элемента, т. е. преобразование данных вида А «- РАРТ. К несчастью, симметричный выбор не всегда устойчив при вычислении LDLт-разложения. Если £| и г2 малы, то независимо от матрицы Р матрица имеет маленькие элементы на диагонали и в процессе разложения появляются большие числа. При симметричном выборе ведущие элементы всегда выбираются из диагонали и получаются ужасные результаты, если эти числа малы относительно тех внедиагональных элементов, которые обнуляются. Таким образом, LDLT- разложение не может быть рекомендовано как надежный подход к решению симметричной неопределенной системы. По-видимому, это действительно очень сложная задача - включить внедиагональные элементы в процесс выбора ведущего элемента и при э!ом сохранить симметрию. В данном разделе мы обсудим два способа, как это можно сделать. Первый метод предложен Aasen (1971), он вычисляет разложение где L— (lij)-нижняя унитреугольная матрица, а Г-трехдиагональная. Матрица Р является перестановочной и выбирается так, что |/у| < 1. Метод с диагональным выбором вычисляет матрицу Р так, что РАРТ = L7Lr, (4.4.1) РАРТ = LDIT, (4.4.2) где матрица D состоит из блоков размеров 1x1 и 2x2. И снова матрица Р выбирается так, что элементы нижней унитреугольной марицы L удовлетворяют условию |/у| < 1. Оба разложения требуют п3/3 флопов и после вычисления могут
4 А. Симметричные неопределенные системы 151 использоваться для решения системы Ах = Ь с объемом работы 0(п2): PAPt = LTLt, Lz = P6, Tw = z, LTy = w, x = Py =>Лх = 6, PAPT = LDLT, Lz = Pb, Dw = z, LTy = w, x = Py=>Ax = b. В этих процедурах имеется только одна «новая» тема, которую имеет смысл обсудить-это решение систем 7W = z и Dw = z. В методе Аазена симметричная неопределенная трехдиагональная система решается за 0(п) операций при помощи исключения Гаусса с выбором. Отметим, что на этом уровне вычислений не будет серьезной платы за невнимание к симметрии, поскольку общий объем вычислений О (и3). В подходе с диагональным выбором система Dw — z составлена из множества симметричных неопределенных систем порядка 1 х 1 и 2 х 2. Задачи порядка 2x2 могут быть решены посредством исключения Гаусса с выбором. Опять же не будет вреда от пренебрежения симметрией на этой фазе вычислений сложности О (л). Таким образом, центральный вопрос этого раздела-это эффективное вычисле¬ ние разложений (4.4.1) и (4.4.2). 4*4.1. Алгоритм Парлетта - Рейда Парлетт и Рейд (1970) показали, как, используя преобразования Гаусса, можно вычислить разложение (4.4.1). Их алгоритм достаточно хорошо просматривается на примере к ~ 2 шагов случая п = 5. На начальном шаге матрица А преобразована к виду где перестановочная матрица Pv выбирается так, что элементы матрицы преобразо¬ вания Гаусса Mt ограничены по модулю единицей. Изучая вектор (г3> v4, vs)T на предмет выбора максимального элемента, мы определим 3x3 перестановочную матрицу Р2* такую, что Если максимальный элемент нулевой, мы положим М2 = Р2 — I и перейдем к следующему шагу. В противном случае мы положим Р2 = diag(/2, Р2) и at Pj 0 0 0 0 vA х х х 0 v5 х х х v4 => 1ез1 = шах{|53|, |о4|, |05|}. -”5_ М2 = I - а,2> еТу где a<2) = (0 0 0 vJS э v5/v3)T и заметим, что a, ООО 0 0 х х х 0 0 х х х
152 Гл. 4. Линейные системы специального вида В общем случае процесс продолжается в течение п — 2 шагов, предоставляя нам трехдиагональную матрицу т= ^"-2) = (Мя.2Л-2... МхР1)А{Мп-2Ря.1...МхР1)т. Можно показать, что формула (4.4.1) содержит матрицы Р = Рп-г...Р1 и L=(M„-2Pn-2...M1Pl РТ)~\ Анализируя матрицу L, обнаруживаем, что ее первый столбец-это вектор еи а все ее поддиагональные элементы в /с-м столбце при к > 1 «задаются» множителями матрицы Мк _ i. Эффективная реализация метода Парлетта-Рейда требует аккуратности, когда вычисляется преобразование А(к) = Мк (Рк Aik~l) Pi) М{, (4.4.3) Чтобы разобраться, в чем трудности при минимуме обозначений, предположим, что матрица В = Вт имеет порядок п — к, и пусть нам надо выполнить преобразование В+ =(l — we\)B{l — we\)T, где yeRn~k и ^-это первый столбец матрицы Такие вычисления совпадают с формулой (4.4.3), Если положить и-Be| w, то нижняя половина симметричной матрицы В+ — В — wuT — uwT может быть вычислена за 2 (п — к)2 флопов. Суммируя эту величину по переменной к от 1 до п — 2, получим, что процедура Парлетта-Рейда требует 2л3/3 флопов, что в два раза больше, чем хотелось бы. Пример 4.4,1. Если алгоритм Парлетта-Рейда применяется к матрице то L = 0 1 2 3 1 2 2 2 А = 2 2 3 3 * _3 2 3 4_ />1 = е2\ /4-(0, 0,2/3, \/Ъ)т е\, Рг = [е1е2еАе3 1 м2 = /4“(0. 0, 0, 1/2)т^ е4> ell 10 0 0 0 3 0 0 0 10 0 и Т= 3 4 2/3 0 01/3 10 0 2/3 10/9 0 _0 2/3 1/2 1_ _0 о о £1 4.4.2. Метод Аазена Метод сложности л3/3, предложенный Аазеном (1971), может быть получен пересмотром некоторых вычислительных деталей метода Парлетта-Рейда. Введем
4.4. Симметричные неопределенные системы 153 необходимые обозначения для трехдиагональной матрицы Т: Pi о а2 -в : P„-i ри-l аЯ Для ясности мы временно игнорируем выбор ведущего элемента и допускаем, что разложение A = LTLT существует, здесь L-нижняя унитреугольная матрица со столбцом L( 1, 1) = ev Метод Аазена организован следующим образом: for у = 1: п Вычислить h(\ :у), где h = TLTej = Hej. Вычислить а (/)• if у ^ п — 1 (4,4.4) Вычислить Р(Д end if у^ п — 2 Вычислить L(i Ч 2:n,j -h 1). end end Таким образом, работа у-го шага метода Аазена состоит в вычислении у-го столбца матрицы Ти (/Ч 1)-го столбца матрицы L, Алгоритм использует тот факт, что матрица И = TLT является верхней хессенберговой. Вектор h(\ :j) — Н(\ :j,j) содержит необходимую информацию для вычисления коэффициентов а (Д Р(/) и L(j + 2:n,j + 1) по формуле (4.4,4). Давайте посмотрим почему. Рассмотрим у-й столбец уравнения А = LH: А (♦, j) — L (:, 1 :у + 1)А(1:у+ 1). (4.4.5) Соотношение (4.4,5) показывает, что вектор /4(:,у) является линейной комбинацией первых (/н-l) столбцов матрицы L. В частности, A(j + 1:и,у) = L(/ + 1: л, 1 :у)А(1:» + L(j Ч 1:и.у+ 1 )h(j+ 1). Отсюда следует, что если вычислить г(/Ч 1:л)~Л(/+ l:w,/)-L(/+ 1:л, 1:у)Л(1:у), то L(j Ч 1:nj + \)h(j ч 1) = v(j Ч 1 :я). (4.4.6) Таким образом, вектор £(/ч2:и,у‘ч 1) коллинеарен вектору г(/ч2:и). Так как матрица L нижняя унитреугольная, мы получаем из (4.4.6), что г(/Ч 1 ) = А(/Ч 1), и, следовательно, учитывая, что это одно и то же уравнение, мы получаем следующую формулу для (/ Ч 1)-го столбца матрицы L: Щ Ч 2: л,у Ч 1) = г(/Ч 2:n)/v(j ч 1). Заметим, что L(y ч 2: и, у Ч 1) задается скалярной операцией gaxpy. Т = р,
154 Гл. 4, Линейные системы специального вида Теперь получим формулы для a (J) и Р(у). Сравним (лУ)-й и (j + 1,У)-й элементы в уравнении И = 7ХГ, С учетом условия 0(0) = 0 мы находим, что Л (/) = = Р(/- I)L{jJ- 1) + а(/) и Л(/ + 1) = »(/ + 1), следовательно, —PC/-U РСО = t)(/+ l). С учетом этих формул мы можем полностью описать процедуру Аазена: for j - 1:л Вычислить А(1 :Д где h = TLTer в(0 = А(Л else a0) = *0)-P0- 1)T(m- 1) end (4.4.7) if / ^ fi — 1 в(/+ 1:л) = Л(/ + 1:п, 1 :у)Л(1 Р(Й ■=»(/ + 1) end if j < л — 2 r £(/ + 2:nJ+ 1)= u(/ + 2 :n)/v(j + I) end end Для полноты описания нам необходимо показать в деталях вычисление вектора А(1:Д Из (4.4.5) следует, что A{\:j,j) = L{\:j,l:Ahi}:j\ (4.4.8) Эта нижняя треугольная система может быть решена относительно h(\:j\ так как мы знаем первые j столбцов матрицы L. Тем не менее значительно более эффек-» тнвный способ для вычисления H(\ :j,j) можно получить, используя j-й столбец уравнения Н = TLT. В частности» учитывая условие Р(0)Г(д 0) = 0, мы имеем h{k) = р(/с - 1)Г(Д к — I) + a(k)L(jt fc) + p(k)L(j, к+ 1) для к — 1:/ Эта формула срабатывает, за исключением случая к — у, поскольку у нас еще нет вычисленных коэффициентов а(Д и р(/). Тем не менее, когда вектор Л(1 :у — 1) известен, мы можем получить А(/) из последней строки треугольной системы (4.4.8), а именно h{j) = A(j,f) - £ L(/. k)h(k). к- 1 Суммируя полученные результаты и используя рабочий массив /(1:и) для L {/, 1:Д мы видим, что вычисление вектора А (1 :j) из (4.4.7) может быть организова¬ но следующим образом: if у = 1 A(l) = /I(l, I) elseif j =2 A(l) *■ P(lk А(2) = А(2, 2) else (4.4.9) /ОД-О; /(I) = 0; /(2:у - 1) = Щ. 2 :у — I); /(/1=1 Л(/) = Л(ДУ) for к1
4.4. Симметричные неопределенные системы 155 Л (fc) = р(к - l)/(k - 1) + о (к) ((к) + р(к)/(к + 1) А(Й = Л(Л-/(МА(к) end end Заметим, что с учетом 0(/>метода для вычисления А(1 :/), gaxpy-вычисления вектора v(j + 1 :ti) являются доминирующей операцией в (4.4.7). В течение /то шага данная gaxpy содержит около 2j(n — j) флопов. Суммируя по У = 1: л, покажем, что метод Аазена требует л3/3 флопов. Таким образом, алгоритмы Аазена и Холецкого требуют одинаковое количество арифметических операций. 4.4.3. Выбор ведущего элемента в методе Аазена Как было установлено, столбцы матрицы L являются масштабированными столбцами г-векторов из (4.4.7). Если некоторые из масштабированных коэф¬ фициентов велики, т.е. если некоторые из компонент г(/ + 1) малы, то ситуация крайне плохая. Чтобы выбраться из нее, нам необходимо переставить наибольшую компоненту вектора г(/+ 1:и) в верхнюю позицию. Конечно, подобные пере¬ становки должны быть применимы как для неприведенной части матрицы Ау так и для предварительно вычисленной части матрицы L. Алгоритм 4*4.1 (Метод Аазена). Если матрица АеВ?*п симметричная, то следую¬ щий алгоритм вычисляет матрицу перестановок Р, нижнюю унитреугольную матрицу L и трехдиагональную матрицу Т, такие, что РАРТ = LTLT, где |/у| < 1. Матрица перестановок Р задается целочисленным вектором ph. В частности, Р = Pi... Л1-2* где /j-это единичная матрица с переставленными {/ + 1)-й и /иг (//й сфоками. Диагональ и поддиагональ матрицы Т хранятся в векторах а(1:л) и Р(1 :п — 1) соответственно. В матрице L(2:w, 2 :п) вычисляется только подднаго- нальная часть. for j = I: п Вычислить h(\ :j) посредством (4.4.9). ifj= 1 V> = 2 о(/) = А(/) else end if j ^ n — 1 v(j + I :w) = A(j + I :n. j) - L(/ + 1 :n, 1 :./)A(l :j) Найти q, такое, что | = 11v<j + L:и)11™> ПРИ j+l^q^n. pivfj) = q\ v(J + ])<-»r(?); L{j + 1, 22:]) A{j + l,j: !:«)<-► A{q. j+ 1:«) A(J + 1 :n,j + 1 + I :n, q) m=Hf + о end if j < n — 2 L(j + 2:nJ+ \)-v(j + 2:n) If v{f+ l)#0 Щ + 2:n.j+ 1) = L{j + 2 :nj + Ц/с</ + 1) end end end
156 Гл. 4. Линейные системы специального вида Метод Аазена устойчив в том смысле, в каком устойчив метод исключения Гаусса, т.е. получается точное разложение матрицы, близкой к А, если выполнено условие 11 ^1 Ь/l М \\г ~ Ь где Т-вычисленный аналог трехдиагональной матрицы 71 В общем случае это почти всегда имеет место. При практической реализации алгоритма Аазена нижняя треугольная часть матрицы А замещается матрицами L и Т. Возьмем случай и = 5 «1 Pi «2 /32 Р2 «3 U2 ^43 * Рэ hi /5з ^54 Заметим, что при таком расположении столбцы матрицы L сдвинуты влево. 4.4.4. Методы с диагональным выбором Мы сейчас опишем вычисление блочного ЕВЬг-разложения по формуле (4.4.2). Мы следуем результатам работы Банча и Парлетта (1971). Пусть S л — я где Pt - перестановочная матрица и s — I или 2. Если матрица А ненулевая, то всегда можно сделать выбор этих парамеров таким, что Е будет невырожденной, поэтому мы можем записать PAP\ = \h 0 1Г£ 0 IP- Е'1С1 LСЕ'1 /„- J |_0 fi-CE'HLo J' Для достижения устойчивости s х .v-ведущий «элемент» Е должен быть выбран так, что элементы матрицы А = (йу) = В - СЕ ~1 СТ (4.4.10) ограничены соответствующим образом. С этой целью зададим ае(0, 1) и введем следующие обозначения: ц0 = шах | аи |, щ = шах | аа 1. i, j i Стратегия Банча-Парлетта для выбора ведущего элемента имеет следующий вид if щ » ац0 S = 1 Выбираем матрицу Р1У такую, что \etl | = щ. else s = 2 Выбираем матрицу Pl9 такую, что \e2i I = р0* end Легко проверить из формулы (4.4.10), что если s= 1, то
4.4. Симметричные неопределенные системы 157 |ау| <(1 +сГ1)ц0, (4.4.11) если же s = 2, то За (4А12) Сравнивая величину (I + а-1)2, фактор роста, связанный с двумя шагами метода при s= 1, и величину (3 — а)/(1 — а), соответствующий фактор при 5 = 2, Банч и Парлетт пришли к выводу, что а = (1 + является оптимальным с точки зрения минимизации оценки роста элементов. Указанное выше приведение потом повторяется для симметричной матрицы А порядка п — 5. Используя индукцию, устанавливаем, что разложение (4.4.2) существует и требует л3/3 флопов, если не учитывать работу, связанную с выбором ведущего блока. 4.4.5. Устойчивость и эффективность Как показал Банч (1971а), рассмотренный выше метод со стратегией диагональ¬ ного выбора так же устойчив, как и исключение Гаусса с полным выбором. К несчастью, в целом процесс требует между л3/12 и и3/6 сравнений, так как р0 включает двумерный поиск на каждой стадии приведения. Действительное коли¬ чество сравнений зависит от общего числа 2x2 ведущих блоков, но, вообще, метод Банча-Парлетта для вычисления разложения (4.4.2) значительно более медленный, чем метод Аазена. Смотри Barweil и George (1976). Метод Банча и Кауфмана (1977)-это не то же, что и диагональный выбор. В этой схеме на каждой стадии процесса приведения необходимо исследовать два столбца. Эта стратегия хорошо иллюстрируется рассмотрением самого первого шага приведения: а = (I + ,/Г7)/8; Х = |аг1| = шах{|«21|ая1 (} if Я. > О tfii I ^ аА. s= Рх=1 else О = Iflprl = max{|flir| |er-i.rl. kr+i.rl.|я«г1} if а\ац | > aX2 *=l, Pi =1 elseif | a„ | ^aa s = 1 и выбрать Pt так, что (Pf АР^ц = arr. else s = 2 и выбрать Рг так, что (/>[ АРг)21 ~ агр, end end end В целом, алгоритм Банча-Кауфмана требует л3/3 флопов, О (и2) сравнений и, как и все методы этого раздела, л2/2 ячеек памяти. Пример 4.4.2. Если алгоритм Банча-Кауфмана применить к матрице А = 1 10 20 10 1 30 20 30 1
158 Гл, 4, Линейные системы специального вида то на первом шаге к = 20, г = 3, ст=1и/? = 3. Матрица перестановок Р = [et е3 ej при применении дает 1 20 10 PAP1 = 20 1 30 10 30 1 Потом используется 2 х 2-ведущий блок, с которым выполняется приведение РАРТ = 1 О 590 399 0 0 1 1 0 20 170 1 399 0 20 1 0 о -10601 399 1 0 0 1 540 170 399 399 о о 4.4.6. Сравнение метода Аазена с диагональным выбором Поскольку в процессе выбора ведущего элемента должны изучаться «будущие» столбцы, то это делает затруднительным (хотя и возможным) получение алгоритма диагонального выбора с большим содержанием gaxpy-операций. С другой стороны, метод Аазена по своей природе богат gaxpy-операциями и, возможно, предпочти¬ тельнее выбрать его для векторно-конвейерных реализаций. В конце отметим, что для обеих процедур возможны блочные варианты. Задачи 4.4.1. Показать, что если все главные подматрицы порядков 1x1 и 2 х 2 симметричной матрицы А вырождены, то А -нулевая матрица. 4.4.2. Показать, что если матрица А положительно определенная, то в алгоритме Банча - Кауф¬ мана могут выбираться ведущие блоки порядка 2x2. 4.4.3. Реализовать алгоритм 4.4.1 так, что используется только нижняя треугольная часть матрицы А, и при этом a (у) замещает Л (у, у) для у = 1 :л, р(у) замещает A(j + 1, у) для у = 1 :п — 1 и Цг9 у) замещает А (£, у — 1) для у = 2:и — 1 и i = у + 1 :и. 4.4.4. Пусть матрица Ае R невырожденная и симметричная. Построить алгоритм, который вычисляет разложение от сТ * paptJ\R 0ir*TsTl, Is -МJL 0AfTJ где R 6 R1 x 1 и M 6 R(" x k>-нижние треугольные и невырожденные матрицы и Р-матрица перестановок. Матрица ^-диагонально доминирующая. Замечания н литература к § 4.4 Основные ссылки по вычислению разложения (4.4.1) следующие Aasen J. О. (1971). “On the Reduction of a Symmetric Matrix to Tridiagonal Form”, BIT 11,233-242. Parlett B. N. and Reid J. K. (1970). “On the Solution of a System of Linear Equations Whose Matrix is Symmetric but not Definite”, ВГГ 10, 386-397. Литература по диагональному выбору содержит работы Bunch J. R. (1971a). “Analysis of the Diagonal Pivoting Method”, SIAM J. Num. Anal. 8, 656-680.
4.5. Блочные трехдиагональные системы 159 Bunch J. R. (1974). “Partial Pivoting Strategies for Symmetric Matrices”, SIAM J. Num. Anal. 11, 521-528. Bunch J. R. and Kauftnan L. (1977). “Some Stable Methods for Calculating Inertia and Solving Symmetric Linear Systems”, Math. Comp. 31, 162-179. Bunch J. R., Kaufman L., and Partlett B. N. (1976). “Decomposition of a Symmetric Matrix”, Numer. Math. 27, 95-109. Bunch J. R. and Partlett B.N. (1971). “Direct Methods for Solving Symmetric Indefinite Systems of Linear Equations”, SIAM J. Num. Anal. 8, 639-655. Предпоследняя ссылка содержит алгол-вариант метода с диагональным выбором, имеющийся в Linpack гл. 5. Вопрос о том, имеет ли метод Аазена преимущества перед алгоритмом Банча - Кауфмана, изучается в работе Barwell V. and George J. А. (1976). “A Comparison of Algorithms for Solving Symmetric Indefinite Systems of Linear Equations”, ACM Trans. Math. Soft. 2, 242-951. Они полагают, что оба алгоритма ведут себя одинаково на условных процессорах, возможно со слабым преимуществом метода Аазена, когда п больше чем 200. Характеристики данных в этой статье являются основой для интересного статистического анализа Hoaglin D. (1977). “Mathematical Software and Exploratory Data Analysis”, in Mathematical Software III, ed. John Rice, Academic Press, New York, pp. 139-159. Маленькое преимущество метода Аазена, возможно, вызвано более простой стратегией выбора. Другая идея для дешевой стратегии выбора, сохраняющая границы ошибок, основана на менее жестком критерии перестановок; идея взята из области, связанной с методами разрежен¬ ных исключений. См. Fletcher R. (1976). “Factorizing Symmetric Indefinite Matrices”, Lin. Alg. and Its Applic. 14, 257-272. Мы также упомянем статью Dax A. and Kaniel S. (1977). “Pivoting Techniques for Symmetric Gaussian Elimination”, Numer. Math. 28, 221-242, в которой диагональные ведущие элементы «строятся», если это необходимо, при помощи треугольных матричных множителей. К несчастью, метод может потребовать О (л3) сравнений. Перед решением симметричной системы Ах — Ь возможна ситуация, когда матрицу А желательно уравновесить. Алгоритм сложности О (я2), выполняющий эту задачу, дан в работе Bunch J. R. (1971b). “Equilibration of Symmetric Matrices in the Мах-Norm”, J. ACM 18, 566-572. Наконец, напомним, что методы, аналогичные методам этого раздела, существуют также и для кососимметричных систем, см. Bunch J. R. (1982). “A Note on the Stable Decomposition of Skew Symmetric Matrices”, Math. Comp. 158, 475 -480. 4.5. Блочные трехдиагональные системы Во многих областях приложения возникают матрицы, имеющие блочную структуру, которую можно эффективно использовать. Например, в задачах оптимизации с ограничениями часто требуется решать линейные системы вида где Л-симметричная положительно определенная матрица, а ^-матрица полного столбцового ранга. В данной ситуации имссг смысл использовать структуру системы, а не трактовать (4.5.1) как «еще одну» симметричную неопределенную систему. Для ознакомления с деталями см. Heath (1978). (4.5.1)
160 Гл. 4. Линейные системы специального вида Чтобы изучить проблему, как именно можно использовать блочную структуру, выберем для рассмотрения решение блочных трехдиагональных систем вида 1 • • • F, 0 “ d2 . F„-1 “ *1 *2 = " ьГ Ь2 0 ЕП-, Dn — 1 i 1 1 Здесь мы считаем, что все блоки имеют размер q х q и что х, и Ь{ принадлежат R*. В этом разделе мы рассмотрим два подхода к этой задаче - блочное /.(/-разложение и уступающую ему схему, известную как циклическая редукция. Другие аспекты, связанные с блочными трехдиагональными системами, обсуждаются в § 10.3.3. 4.5.1. Блочное L //-разложение Мы начнем с рассмотрения блочного L(/-разложения для матрицы (4.5.2). Определим блочные трехдиагональные матрицы Ак следующим образом: D г I\ Е\ D2 0 Pk-i Dk к = I: и. (4.5.3) Сравнивая блоки в представлении А = —1 *»ч О 1 1 С О 1 L! / v2 .. : F»-i 1 1 е . О 1 о Ек-! U„ (4.5.4) мы формально получаем следующий алгоритм для вычислений L, и С/,: Ul = Dl for i = 2:п Решить Li-iUi-Y = Ei-i относительно Li-i. Ui = A — Li-iFi-i (4.5.5) end Процедура определена до тех пор, пока С/, невырожденны. Это гарантировано, если, например, матрицы А19...9 А„ невырожденны. Имея вычисленное разложение (4.5.4), мы можем получить вектор х из (4.5.2)
4.5. Блочные трехдиагональные системы 161 посредством блочной прямой и обратной подстановки: У1 = ЬХ for i—2\n у. = bt - Li-iyi-l (4.5.6) end Решить Unxn = yn относительно xn. for / = /i — 1: —1:1 Решить UpCi = yt — F^i+i относительно x,. end При выполнении алгоритмов (4.5.5) и (4.5.6), для каждого блока L/, требуется разложение, так как решаются линейные системы, содержащие эти подматрицы. Это может быть сделано при помощи исключения Гаусса с выбором. Однако это не гарантирует устойчивость процесса в целом. Чтобы понять это, рассмотрите случай, когда размер блока равен единице. 4.5.2* Блочное диагональное доминирование Чтобы получить удовлетворительные границы для L- и £/„ необходимо сделать дополнительные предположения о блочных матрицах, которые встречаются ниже. Например, если для i = 1 :п у нас выполнено отношение диагонального блочного доминирования II A”1 Hi (II ^i-i Hi + 11 111) < A = F0 = 0, (4.5.7) то разложение (4.5.3) существует и можно показать, что матрицы L, и 1){ удовлетворяют неравенствам IIANi^K (4.5.8) IIAIIi (4.5.9) 4.5.3. Сравнение блочного и ленточного решений Сейчас разумно спросить, почему мы не можем просто рассматривать матрицу А из (4.5.2) как матрицу qn х qn, имеющую скалярные элементы с шириной ленты 2^г — 1. Тогда можно было бы применить ленточное исключение Гаусса, описанное в § 4.3. Эффективность такого подхода зависит от таких вещей, как размеры блоков и структура разреженности каждого блока. Чтобы проиллюстрировать это на очень простом примере, предположим, что мы хотим решить систему Е Я [:;]■[:;]■ где блоки Dy и D2-диагональные, a FY и Ех - трехдиагональные. Допустим, что каждый из этих блоков размера «хии что решать задачу (4.5.10) при помощи алгоритмов (4.5.4) и (4.5.6) «безопасно». Заметим, что t/j = А* (диагональная матрица) Lx = Ех Ui *, (трехдиагональная) U2 = F>2 — Lx Fl9 (пятидиагональная) У1 = ь» y2 = b2- El{Dl V,). ^гх2=у2, 01 *1 = У1 ~ F1 *2- 6 63
162 Гл. 4. Линейные системы специального вида Следовательно, некоторые очень простые п х п вычисления с исходными ленточ¬ ными блоками дают решение. С другой стороны, простое применение ленточного исключения Гаусса к системе (4.5.10) вызвало бы много необязательной работы и хранения, как для системы с шириной ленты л + 1. Тем не менее заметим, что переставляя строки и столбцы в системе, при помощи перестановок Р = l>i. е„+1, е2,..., е„, е2я] (4.5.11) (для случая п = 5) мы найдем, что X X 0 X 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 0 X X X 0 X 0 0 0 0 X 0 X X X 0 0 0 0 0 0 0 0 X X X 0 X 0 0 0 0 X 0 X X X 0 0 0 0 0 0 0 0 X X X 0 X 0 0 0 0 X 0 X X X 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 X 0 X X Эта матрица имеет ширину ленты три, и поэтому вполне приемлемая процедура решения для этой переставленной матрицы-это ленточное исключение Гаусса. Тема перестановок для изменения ширины ленты является важной. См. George и Liu (1981, гл. 4). Мы отсылаем также читателя к работам Varah (1972) и George (1974) для дальнейшего детального изучения решения блочных трехдиагональных систем. 4.5*4. Блочная циклическая редукция Теперь мы опишем метод блочной циклической редукции, который может быть использован для решения некоторых важных специальных видов блочной трех- диагональной системы (4.5.2). Для простоты допускаем, что матрица А имеет вид D F F D А = (4.5.12) F F D где F и D-матрицы q х q, удовлетворяющие условию DF = FD. Предположим также, что п = 2* — 1. Эти условия имеют место в некоторых важных приложениях, таких, как дискретизация уравнения Пуассона в прямоугольнике. В этом случае
4.5. Блочные трехдиагональные системы 163 4 -1 -1 4 £> = (4.5.13) -1 и F = —lq. Целое число л определяется размером сетки и часто может быть выбрано таким, что л — 2* — 1. (Sweet (1977) показал, что делать, если размер не удовлетворяет такому условию.) Основная идея циклической редукции-уменьшать вдвое размерность задачи, повторяя это неоднократно, пока у нас не останется простая q х q система относительно неизвестного подвектора Эта система потом решается стандартными способами. Ранее исключенные xt находятся в процессе обратной подстановки. Для понимания общей процедуры достаточно рассмотреть случай л = 7: Ь1 *= Dx А + Fx2, b2 — Fxx + Dx 2 + Fx3, Ь3 » Fx2 + Dxэ + Fx4, b4 = Fx j + Dx4 + Fx5, *5 = Fx4 + Dx5 + Fx6, (4.5.14) b6 = Fx5 + Dx6 + Fx7, bn = Fxb + Dxv Для j = 2, 4 и 6 мы умножим уравнения i — 1, j и / + 1 на матрицы F, — D и F соответственно, и, складывая результат, получим (2F2 - D2)x2 + F2x4 = F(bx + b3) - Db2y F2x2 + (2F2-D2)x4 + F2x6 = F(b3 + b5) - Db4, F2x4 + (2F2 - D2)x6 = Fib, + 67) - Db6. Таким образом, следуя этой тактике, мы удалим все х с нечетными индексами и у нас останется уменьшенная блочная трехдиагональная система вида = %», F(l>x3 + + Fil)x6 = b'4\ Fil)x4 + D{1)x6 = b%\ где матрицы D(l) = 2F2 — D2 и F(1) = F2 являются перестановочными. Применяя такую же стратегию исключения, как и выше, мы умножим эти три уравнения соответственно на F41*, —D*1* и F(1). Если эти преобразованные уравнения сложить вместе, мы получим простое уравнение (2Ц*"У - &"2)х4 = + *£>) - которое запишем в виде D<2>*4 = й<2). Это полная циклическая редукция. Мы решим эту (маленькую) систему q х q относительно х4. Векторы х2 и хб находятся потом решением систем
164 Гл. 4. Линейные системы специального вида Л<плг2 = № — F[1}xv — ^fin “ ^n)^4* В заключение мы используем первое, третье, пятое и седьмое уравнения из (4,5.14) для вычисления jc,, jc3, х5 и х7 соответственно. Для произвольного и вида и = 2* — 1 положим D{0) = D, F[0) = F, bim = b и вычислим: for p= 1:1c- I D[p) = 2 [Fip~ u]2 - [D(p~!)]2 fip) _ [/г(л- Uj2 r = 2P (45.15) for j= l :2k~'-1 bf = F«-^(^Jr-r/i + u ftjrL> end end Элементы x, затем вычисляются следующим образом: Решить = Ь{\~и относительно x2*-i for p = к — 2: — 1:0 г = 2Р (4.5.16) for у= if / = 1 r = ^-i>r-F(p>x2,r elseif j = 2к p + l С — b^j- 1>г - F,p)X(2j_2)r else <• = *^1>г -+ *(2у-2)r) end Решить f>(p,A'(2j- i)r = с относительно х<2,- i>r- end end Объем работы, требуемой для реализации этих рекурсий, сильно зависит от разреженности блоков Dip) и Fip}. В худшем случае, когда эти матрицы полные, общий объем флопов имеет порядок logfc)^. При выполнении необходимо быть внимательным, чтобы обеспечить устойчивость процесса. Для дальнейшего изучения см. Buneman (1969). Пример 45.1. Пусть q = I, D — (4) и F = ( — 1) в (4.5.14), к мы хотим решить систему: 4 -1 0 0 0 0 0 *1 2 -1 4 -1 0 0 0 0 *2 4 0 -1 4 -1 0 0 0 *3 6 0 0 -1 4 -1 0 0 *4 8 0 0 0 -1 4 -1 0 Л5 10 0 0 0 0 -1 4 -1 *6 12 0 0 0 0 0 -1 4 X ? 22 Выполняя (4.5,15), мы получим следующую редуцированную систему: 14 1 0“ хг 24~ 1-14 1 *4 -48 0 1 -14 *6 -80
4.5. Елочные трехдиигонильмые системы 165 [- 194] - [*4] [— 776], р = 2. Элементы йотом получаются через (4,5.16): р = 2: = 4, р = I: лг = 2, = 6, р = (к jc, = 1, лс3 = 3, jc5 = 5, х7 - 7. Циклическая редукция является примером алгоритма типа разделяй и властвуй. Другие процедуры типа разделяй и властвуй обсуждаются в § 1.3.8 и § 8.6. Задачи 4.5.1, Показать, что матрицы с блочным диагональным доминированием нсвырожленны. 4.5.2, Проверить, что из условия (4.5.7) вытекают соотношения (4.5.8) и (4.5.9). 4.5J. Пусть применяется блочная циклическая редукция, причем D задается формулой (4.5.13), a F ~ — J^. Что можно сказать о ленточной структуре вычисляемых матриц и й(р1‘! Замечания и литература к § 4.5 Обсуждение симмегричных неопределенных систем, упомянутых в начале раздела, может быть найдено в работе Heath М.Т. (1978). “Numerical Algorithms for Nonlinearly Constrained Optimization”, Report STAN-CS 78-656, Department of Computer Science, Stanford University, (Ph. D. thesis), Stanford, California. Следующие статьи позволяют разобраться в нюансах различных блочных матричных вычислений: Fourer R. (1984). “Staircase Matrices and Systems”, SIAM Review 26, I 71. Geoigc J.A. (1974). “On Block Elimination for Sparse Linear Systems” SIAM J. Num. Anal. 11, 585 603. George J. A. and Liu J.W. (1981). Computer Solution of Large Sparse Positive Definite Systems, Prentice-Hall, Englewood Cliffs, New Jersey. Merriam M. L (1985). “On the Factorization of Block Tridiagonals With Storage Constraints”, SIAM J. Sci. and Stat. Comp. 6, 182-192. Varah J. M. (1972). “On the Solution of Block-Tridiagonal Systems Arising from Certain Finitc-Diffe- renoe Equations”, Math. Comp. 26, 859-868. Свойство блочного диагонального доминирования и его различные аспекты являются цент¬ ральной темой работы Feingold D.G. and Varga R. S. (1962). “Block Diagonally Dominant Matrices and Generalizations of the Gershgorin Circle Theorem”, Pacific. J. Math. 12, 1241 1250. Ранние методы, которые содержат идею циклической редукции, описаны в статьях Buz bee В. L., Golub С. Н., and Nielson С. W. (1970). ~Оп Direct Methods for Solving Poisson’s Equations”, SIAM J. Numer. Anal. 7, 627-656. Hockney R. Wr. (1965). “A Fast Direct Solution of Poisson’s Equation Using Fourier Analysis”, J. ACM 12, 95 113. Накопление правой части должно быть выполнено с большой тщательностью, в противном случае мы получим существенно худшую точность. Устойчивый способ выполнения -этой процедуры описан в работе Buneman О. (1969). “A Compact Non-Iterative Poisson Solver”, Report 294. Stanford University Institute for Plasma Research, Stanford, California. Другая литература, посвященная циклической редукции, содержится ниже: Buzbee В. L., Dorr F. W., George J» A,, and Golub G. H. (1971). “The Direct Solution of the Discrete Poisson Equation on Irregular Regions”, SIAM J. Num. Anal. 8, 722 736.
166 Гл. 4. Линейные системы специалыюго вида BuzbeeB. L.» and DorrF. W. (1974). ‘The Direct Solution of the Biharmonic Equation on Rectangular Regions and the Poisson Equation on Irregular Regions”, SIAM J. Num. Anal. 11, Concus P. and Golub G. H, (1973), “Use of Fast Direct Methods for the Efficient Numerical Solution of Nonseparable Elliptic Equations”, SIAM J. Num. Anal. 10, 1103-1120. Dorr F.W. (1970X “The Direct Solution of the Discrete Poisson Equation on a Rectangle", SIAM Review 12, 248-263, Dorr F.W. (1973). “The Direct Solution of the Discrete Poisson Equation in 0{n2) Operations”, SIAM Review 15, 412-415. Heller D, (1976). “Some Aspects of the Cyclic Reduction Algorithm for Block Tridiagonal Linear Systems", SIAM J. Num. Anal. 13, 484 496, Различные обобщенна и расширения циклической редукции могут быть предложены дм решения задачи с нерегулярными границами: Diamond М. A. and Ferreira D, LV, (1976). "On a Cyclic Reduction Method for the Solution of Poisson's Equation”, SIAM J. Num. Anal. 13. 54-70, задачи произвольной размерности: Sweet R.A. (1974). "A Generalized Cyclic Reduction Algorithm" SIAM J. Num. Anal. 11, 506-520. Sweet R. A. (1977). "A Cyclic Reduction Algorithm for Solving Block Tridiagonal Systems of Arbitrary Dimension”, SIAM J. Num. Anal. 14, 706-720, и задачи с периодическими условиями на концах: Swamrauber Р. N. and Sweet R. А. (1973). "The Direct Solution of the Discrete Poisson Equation on a Disk", SIAM I. Num. Anal. 10, 900-907. Для определенных матриц, возникающих в связи с эллиптическими дифференциальными уравнениями в частных производных, блочное исключение до некоторой степени соответствует естественным операциям на основной сетке. Классическим примером является метод гнездо¬ вого сечения, описанный в работе George А. (1973). "Nested Dissection of a Regular Finite Element Mesh", SIAM J. Num. Anal. 10, 345-363. В заключение упомянем общий обзор Bunch J. R. (1976). "Block Methods for Solving Sparse Linear Systems”, in Sparse Matrix Computations, ed. J. R. Bunch and D. J. Rose, Academic Press, New York. 753-763. 4.6. Системы Вандермонда Пусть вектор jc(0:n)eR” + 1. Матрица VeR(n + ■>*("+!) вида 'l I ... 1 “ ... x. 1 I называется матрицей Вандермонда. В этом разделе мы покажем, как можно решить системы VTa =*/—/(0:л) и Vz = Ь — Ь{0:п) за О (я2) флопов. Для удобства нижний индекс элементов векторов и матриц начинается с 0.
4,6, Системы Вандермонда 167 4,6.1. Интерполяционный многочлен V гв =f Системы Вандермонда возникают во многих задачах аппроксимации н интер¬ поляции. Действительно, ключом к получению быстрого метода решения системы Вандермонда является осознание того факта, что решение УТа — / эквивалентно построению интерполяционного многочлена. Это следует из того, что если УТа — /и />(*)= (4.6,1) J—о ТО для г = 0:л. Напомним, что если компоненты xt различны, тогда существует единственный многочлен степени п, который интерполирует узлы (xQtf0)3..., (*„,/,). Соответствен- но матрица Кневырожденыа тогда и только тогда, когда xt различны. Считаем, что это условие выполнено на протяжении всего раздела. Первый шаг для вычисления а} из (4.6.1) состоит в определении представления Ньютона интерполяционного многочлена р: р(х) = £ ск( П (х - х$. (4.6.2) *-0 «=0 Константы ск это разделенные разности, они могут быть определены следующим образом: с(0:л)=/(0:л) for ft = 0:л — 1 (4.6.3) for I — п: — 1 :к + 1 ci = (cl-ci-1)f(xl- end end См. Conte и de Booz (1980, гл. 2). Сейчас рассмотрим задачу получения а(0:л) из с(0:л). Обозначим через Pnix\"->Potx) многочлены, полученные при помощи итерационной формулы Р*(х) = сл Гог к — п — 1: -1:0 Ры(х) = ск + (х-хк)рк+1(х) end и отметим, что р0(х) = р(х). Выпишем рк(х) = 4к) + 441 х + ... + 4kV"k и приравняем одинаковые степени х в уравнении рк = ск + (х - **)/>*+ь это дает следующую рекурсию для коэффициентов 4Ь)< - Ся for к = л- 1: —1:0 аР = ск- xk4++i11 for I = к + 1: п — 1 end 4*} = 4k+1) end Соответственно коэффициенты щ = 40> могут быть вычислены следующим образом:
168 Гл, 4. Линейные системы специального вида а(0:п) = с(0:л) for к = п— 1: — 1:0 (4.6.4) for i = к : п — 1 1 end end Комбинирование этого итерационного процесса с (4.6.3) приводит к следующему алгоритму: Алгоритм 4.6.1. Для данных вектора x(0:ri)eRn+x с различными элементами и вектора /(0:w)eRrt следующий алгоритм замещает / на решение а = а(0:л) системы Вандермонда F(jc0,хп)Та = /. for к = 0:п — 1 for i = п: — 1: к + 1 ДО = ДО -/(/ - 1))/М0 - *(/ - * - 1)) end end for к — п — 1: — 1:0 for i = к:п — 1 ДО =/(0-/(/+!)*(*) end end Алгоритм требует 5«2/2 флопов. Пример 4.6.1. Пусть алгоритм 4.6.1 используется для решения системы 1111 1 *0 10 12 4 8 26 1 3 9 27 <*2 58 1 4 16 64 Яз 112 Первый к-цикл вычисляет представление Ньютона для р(х): р(х) = 10 4- 16(.х — 1) + 8(х — 1)(х — 2) + (х — 1)(х — 2)(х - 3). Второй fc-цикл вычисляет а — (4 3 2 1)т, исходя из вектора (10 16 8 1)т. 4.6.2. Система Vz = b Сейчас рассмотрим систему Vz — Ь. Чтобы получить эффективный алгоритм для этой задачи, мы опишем что делает алгоритм 4.6.1 на матрично-векторном языке. Обозначим нижнюю двухдиагональную матрицу Lk (а) е R*" + 1) х (« + 0 через " h о 1 -а 1 0 Ма) = . 0 •р • 1 0 -а 1
4.6. Системы Вандермонда 169 и диагональную матрицу Dk через D* = diag(l,..., 1, xk+i - Xo,...,xK~xm-k-i). к+ I С учетом этих обозначений легко убедиться исходя из (4.6.3), что если /=/(0:л) и с = с(0:п)-это вектор разделенных разностей, тогда с = U т/, где V-это верхняя треугольная матрица вида UT = D--\Ln.l(l)...DolL0(lY Аналогично из (4.6.4) мы имеем а = II с, где L-это нижняя унитреугольная матрица вида: H = L0(x0)T...Llt-l(xn-l)T. Таким образом, a = [TUTf, где V~T = lT UT. Другими словами, алгоритм 4.6.1 решает систему VTa=f при помощи неявного вычисления ”UL’’-разложения матрицы V~l. Соответственно решение системы Vz = b задается соотношением z=V-lb=U(Lb) = (L0(\)TDol...Ln-U')TD^MLn-AXn-i)~Lo(Xo)bl Это наблюдение вызывает следующий алгоритм: Алгоритм 4.6.2. Для данных вектора л(0:л)ей”+1 с различными элементами и вектора b = b(0:n)eRn + 1 следующий алгоритм замещает b на решение z = z(0:п) системы Вандермонда K(jc0,..., xn)z = b. for к = 0: п — 1 for i = п: — 1 :к + 1 b(i) = b(i)-x(k)b(i- 1) end end for к = n — 1: — 1:0 for i = к + 1: n b(i) = bmx(i)-X(i-k-D) end for i = к: n — 1 b(i) = b(i)-b(i+ 1) end end Алгоритм требует 5пг/2 флопов. Пример 4.6.2. Пусть алгоритм 4.6.2 используется для решения системы till 12 3 4 1 4 9 16 1 8 27 64 Первый /с-цикл вычисляет вектор (3)£2(2)Lj (1) zO zl z2 z3 0 -1 3 35 0 -1 3 35 _ o" -1 6 6
170 Гл. 4. Линейные системы специального вида Второй к-цикл потом вычисляет LoOrDo'MlWMl)7^ 0 3 -1 -A 3 0 35 1 4.6.3. Устойчивость Алгоритмы 4.6.1 и 4.6.2 рассмотрены и проанализированы в работе Bjdrck и Регеуга (1970). Их вывод состоит в том, что эти алгоритмы часто получают удивительно точные решения, даже когда матрица F плохо обусловлена. Они также показали, как модифицировать решение, когда добавляется новая координатная пара (хя+1./я+1) к множеству узлов интерполяции, и как решать конфлюэнтные системы Вандермонда, т. е. системы с матрицами вида У= V(x0. xi- х2, х}) 1 1 0 1 *0 *1 1 *3 Xo V2 2xi *§ v3 x0 V3 *1 3*i xl Задачи 4.6.1. Показать, что если V— У(х0, .... яи), то det(H) = П (x,-Xj). «»/>/>0 4.6X (Gautschi (1975а)). Проверить следующее неравенство для случая п ~ 1: ,-1, ^ _ A » + W max П | = о — *|| i*k Равенство достигается, если все х, лежат на одном луче комплексной плоскости. Замечания и литература к § 4.6 Наши рассуждения по линейным системам Вандермонда выведены из статей Bjorck A. and Регеуга V. (1970). "Solution of Vandermonde Systems of Equations", Math. Comp. 24, 893-903. Bjorck A. and Elfving T. (1973). "Algorithms for Confluent Vandermonde Systems", Numer. Math. 21, 130-137. Последняя ссылка содержит алгол-процедуру. Более глубокий анализ решения систем Ван¬ дермонда может быть найден в работах Higham N.J. (1987b). "Error Analysis of the Bjorck-Регеуга Algorithms for Solving Vandermonde Systems", Numer. Math. 50, 613-632. Higham N.J. (1988a). "Fast Solution of Vandermonde-like Systems Involving Orthogonal Polyno¬ mials", IMA J. Numer. Anal. 8, 473-486. См. также Galimberti G. and Регеуга V. (1970). "Numerical Differentiation and the Solution of Multidimensio¬ nal Vandermonde Systems", Math. Comp. 24, 357-364. Galimberti G. and Регеуга V. (1971). "Solving Confluent Vandermonde Systems of Herraitian Type”, Numer. Math. 18, 44-60.
4.7. Тёплицевы системы 171 Van de Vcl H. (1977). "Numerical Treatment of a Generalized Vandermonde Systems of Equations" Lin.Alg.and Its Applic. 17, 149-174. Интересные результаты, имеющие отношение к обусловленности систем Вандермонда могут быть найдены в работах Gautschi W. (1975а). "Norm Estimates for Inverses of Vandermonde Matrices", Numer. Math. 23, 337-347. Gautschi W. (1975b). "Optimally Conditioned Vandermonde Matrices”, Numer. Math. 24, 1-12. В работе Golub G.H. and Tang W. P. (1981). "The Block Decomposition of a Vandermonde Matrix and Its Applications", BIT 21, 505-517. приводится блочный алгоритм Вандермонда, который дает возможность обойти комплексную арифметику в некоторых задачах интерполяции. Вычисление разделенных разностей, которое мы обсуждали, дается подробно в гл. 2 работы Conte S. D. and de Boor С. (1980). Elementary Numerical Analysis: An Algorithmic Approach, 3rd ed., McGraw-Hill, New York. Добавления при переводе к § 4.6 Важным частным случаем матрицы Вандермонда является матрица Фурье (i- мнимая единица). К числу основополагающих работ по быстрым алгоритмам умножения Fя на вектор относится Cooley J.W., Tukey J.W (1965). "An Algorithm for the Machine Computation of Complex Fourier Series", Math. Comp. 19, 297-301. Литература, посвященная быстрому преобразованию Фурье и его применениям, весьма обширна. См., например, Тыртышников Е. Е. (1981). Об алгоритмах дискретного преобразования Фурье. Численные методы алгебры-М.: Изд-во Моск.ун-та. Нечепуренко Ю.М. (1985). Быстрые алгоритмы умножения на вектор матрицы Вандермонда. Архитектура ЭВМ и численные методы.-М.: ОВМ АН СССР. Воеводин В. В., Тыртышников Е. Е. (1987). Вычислительные процессы с тёплицевыми матрица- ми-М.: Наука (особенно § 4). Блейхут Р. (1989). Быстрые алгоритмы цифровой обработки сигналов-М.: Мир. Nechepurenko Yu. М. and Tyrtyshnikov Е. Е. (1990). "Multi-Dimensional Discrete Fourier Transform and Its Optimization", Sov. J. Numer. Math. Modelling, 5, N 3. Асимптотически оптимальные приближенные алгоритмы умножения для вещественных мат¬ риц Вандермонда описаны в Нечепуренко Ю. М. (1987). Асимптотически оптимальные алгоритмы умножения для матрицы экспонент. Архитектура ЭВМ и численные методы-М.: ОВМ АН СССР, с. 26-34. 4.7. Тёплицевы системы Матрицы, элементы которых равны вдоль каждой диагонали, возникают во многих приложениях и называются тёплицевыми матрицами. Формально матрица ТеRn х п является тёплицевой, если существуют скаляры г-и+1,..., г0,..., гя-и такие, что Uij = fj^i для всех / и / Таким образом, матрица
172 Гл. 4, Линейные системы специального вида Т= ' -1 9о /*-2 Г-3 Г_2 является теплицевои. Тёплицевы матрицы относятся к обширному классу персимметричных матриц. является персимметричной, если она симметрична Ьц = b„^i Говорят, что матрица BeRnxn для всех I и / Это эквивалентно требованию В = ЕВТЕ, где Е=1е„...,е1] = /„(:, и:-1:1) является п х п-матрицей перестановок. Легко проверить, что (а) тёплицевы матрицы-персимметричные и (Ь) обратная к невырожденной тёплицевой матрице является персимметричной. В этом разделе мы покажем, как правильное использо¬ вание свойства (Ь) поможет нам решать тёплицевы системы за время 0(п2). Обсуждение ограничивается важным случаем, когда матрица Т симметричная и положительно определенная. 4.7.1. Три задачи Допустим, что у нас имеются скаляры rn, такие, что для k = 1 :п матрицы 71 = 1 1 Гк-2 Г*_! гк-2 Гк-2 Гк-1 Г*_2 положительно определенные. (Мы не ограничиваем общности нормализацией диагонали.) В этом разделе описаны три алгоритма: • Алгоритм Дурбина для задачи Юла-Уолкера Т„у = — (fj,..., гп)т. • Алгоритм Левинсона для задачи с произвольной правой частью Тпх = Ь. • Алгоритм Тренча для вычисления В = Т”1. При выводе этих методов обозначим через Ек перестановочную к х к-матрицу, Ек = /*(:, к:-1:1). 4.7.2. Решение уравнений Юла-Уолкера Мы начнем с представления алгоритма Дурбина для уравнений Юла-Уолкера, которые возникают в связи с линейными задачами предсказания. Пусть для некоторого к, которое удовлетворяет условию 1 < к < л — 1, мы решили систему Юла-Уолкера Тку = —г = — (г1?..., гк)т порядка к. Покажем, как теперь можно
4.7. Теплщевы системы 173 решить систему порядка к + 1 за О (к) флопов. Сначала заметим, что z= Tkl(-r-aEkr) = у-аТкх Екг и а = -r*+i - rTEkz. Так как Тк 1 персимметричная, Тк 1 Ек = Ек Ткх, и поэтому г = у - аЕк 77’ г = у + аЕку. Подставляя это в верхнее выражение для а, находим а = -г*+ , - гтЕк(у + аЕку) = - (гк+, + гтЕку)/(1 + гту). Знаменатель является положительным, поскольку Тк+ { положительно определена и, кроме того, Г/ я*ЛгГт* Екг1П Гг* о 1 Lo 1 J LrTEk 1 J Lo 1 J L0 1+гтЛ‘ Мы продемонстрировали fc-й шаг алгоритма, предложенного Дурбиным (I960). Он состоит в решении систем Юла-Уолкера Г* У4 = -#*«= - (Г, /*)г для к = 1: п и может быть записан следующим образом: У0--', for к s= 1: п — 1 Р* = 1 + [И*>]ГУ*> а* = - (/•*+, + i*k) тЕк/к,)фк (4.7.1) zk = y(k) + akEk}Sk> ,.„Й end Как теперь нами установлено, этот алгоритм требует Зп2 флопов для произвольного вектора у — у{н\ Возможно, однако, уменьшить общий объем работы, используя некоторые приведенные выше выражения: р* = 1 + 0<*)]г/с) = = 1 + [г(*"1)Ггк] [у(к~1) + а*_! = = (1 + + ак-1 ((У*~ °]Г Ek-i У{к u + гк) = — Pk- 1 + Пк-1 (“ Рк- 1 Цк- l) = — 0 — ak-i)Pk-i. Применяя эту рекурсию, мы получаем следующий алгоритм: Алгоритм 4,7Л (Дурбин). Даны вещественные числа 1 = г0, гп, такие, что матрица Т= (r^_j^)eRn х п является положительно определенной, следующий алгоритм вычисляет вектор >>eRn, такой, что Ту = — (г,,..., гп)т.
174 Гл. 4. Линейные системы специального вида у(1)=-г(1); р-1; а = —г(1) for /с = 1: я — 1 Р“(1-а2)Э а - - (г (к + 1) + г (к: - 1:1)гу(1 :к))/р for / = I: к z{Q - y(i) + ау(к + I - Q end у(1 :*)-*(!:*); у(к+1)«а end Алгоритм требует 2л2 флопов. Мы включили вспомогательный вектор г для прозрачности алгоритма, но он может быть убран. Пример 4.7.1. Пусть мы хотим решить систему Юла-Уолкера 1 0.5 0.21 ГуЛ Г0.5*1 0.5 10.5 Ы=- 0.2 , 0.2 0.5 1 J Ly3J *-ол J используя алгоритм 4.7.1. После первого прохождения через цикл мы получим а “ 1/15, В - 3/1. Потом вычислим величины Р = (1 — а2)Р = 56/75, а - - (г3 + г&х + гху2)/р = -1/28, 2\ -У\ + *У1 = -225/420, *2 = + аУг - -36/420, дающие окончательное решение у — (—75,12, —5)г/140. 4.7.3. Задача с произвольной правой частью Если еще немножко потрудиться, можно решить симметричную положительно определенную тёплицеву систему, которая имеет произвольную правую часть. Предположим, что мы решили систему Ткх^Ь = (Ь^9ЬУ (4.7.2) для некоторого к, удовлетворяющего условию 1 < к < л, и что сейчас мы хотим решить систему ик \Т Здесь, как и выше, г = (г^..., г*) . Допустим также, что решение системы Юла-Уол¬ кера fc-ro порядка Тку = —г уже получено. Так как v = Г*-1 ф -р£*г) = X + то отсюда следует, что р = - rTEkv = bk+i - rTЕкх - \кгту — = (Ьк+1 - rTEkx)/( 1 + гту). Следовательно, мы можем сделать переход от (4.7.2) к (4.7.3) за О (к) флопов. В целом мы можем эффективно решить систему Тл х = Ьу решая системы
4.7. Тёплицевы системы 175 Г**'*1 = Ь{к) = ЬДТ и = -гсм = (ггк)т «параллельно» для к = 1Это составляет содержание следующего алгоритма. Алгоритм 4.7.2 (Левшкои). Даны вектор 6eR" и вещественные числа 1 ■*= r0. rlt..., г„, такие, что матрица T(r|/_y|)eRn х" является положительно определенной; следующий алгоритм вычисляет вектор х е R", такой, что Тх = Ь. ^(1) г(1); х(1) = 6(1); р«1; а=-т(1) for к * 1 :л — 1 р е (1 - а)2 р; И = (Ъ(к + 1) - г(1: к)тх(к: -1:1))/Р t?(t:k) = x(l:fc) + |i>'(fc:-l:l) х(1 :к) = с(1:1с); х(Лс+1) = ц If к<п- 1 а = - (r(fc + 1) + г(1 :*)ту(*: -1:1»/р z (1: fc) = у(1: fc) + ау(к: — 1:1) /(l:fc) = z(l:fc); y(fc+l) = a end Алгоритм требует 4л2 флопов. Векторы z и v введены для ясности, и без них можно обойтись. Пример 4.7Л. Пусть мы хотим решить симметричную положительно определенную тёплицеву систему используя приведенный выше алгоритм. После первого прохождения через цикл мы получим Потом вычислим величины Р = (I _ а2)Р = 56/75, р - (*з - гх*2 - г2Х[)/р = 285/56, = х, + ру2 — 355/56, v2 = х2 4- \аух = —376/56, дающие окончательное решение х = (355, —376, 285)г/56. 4.7.4. Вычисление обратной матрицы Одно из наиболее удивительных свойств симметричной положительно опреде¬ ленной тёплицевой матрицы ТК состоит в том, что обратная к ней может быть вычислена полностью за 0(п2) флопов. Чтобы получить алгоритм, реализующий эту процедуру, разобьем Т~1 следующим образом: end a = 1/15, Р = 3/4, (4.7.4) где А - Tn-i, Е = Ещ-1 и r = i)7*. Из уравнения следует, что Av — —уЕг — —у^^,..., r„_i)r и у = 1 — rT Ev. Если вектор у разре¬ шает систему Юла-Уолкера (л — 1) порядка Ау = — г, тогда из этих выражений
176 Гл. 4. Линейные системы специального вида вытекает, что У = 1/(1 + гТу), v — у Еу. Таким образом, последние строку и столбец матрицы Т"1 получить легко. Нам осталось развить формулы для получения элементов подматрицы В ю (4.7.4), Так как АВ f Ervr = /„-!, отсюда следует, что В = А~Х -(A~LEr)vl - /Г1 + —. У И так как А = Т„-} является невырожденной и тешшцевой, обратная к ней персимметрична. Таким образом, ЬУ = (Л-% + -^ = = < + ^ = h*-j, и — i Vn-jVn-i ViVj (4.7 5) Это показывает, что, хотя В не является псрсимметричной, мы можем легко вычислить элемент bUi используя ег о отражение относительно северо-восточной - юго-западной диагонали. Это в сочетании с фактом, что А~1 персимметричная, приводит нас к определению В от «краев» к «середине». Поскольку порядок операций правильно описать затруднительно, мы сначала покажем наглядно формальные детали алгоритма, С этой целью допустим, что известны последние строка и столбец матрицы А~1: А~х = и и и и и и и и U и и и и и и V и и и и и и и и и к к к к к Здесь и и к обозначают неизвестные и известные элементы соответственно и п = 6. Поочередно используя персимметрию матрицы А “1 и рекурсию (4,7,5), мы можем вычислить В следующим образом: к к к к к к ' ’ к к к к к к ‘ к и и и и к к и и и к к персомм. к и и и и к (4.7.5) к и и и к к ► к и и и и к к и и и к к к U и и и к к к к к к к к к к к к к к к к к к к
4.7. Тёплицевы системы 177 ' к к к к к к ' * к к : к к к к ' к к к к к к к к г к к к к аерсимм- к к и V к к И 7.5) к к и к к к к к V и к к к к ■ к к к к к к к к к к к к • к к к к к к к к к к к к к к к к ’ к к * к , к к ' к к к к . к к перси мм. к к к к к к к к к к 1 к к к к к к к к к к к к . к к Конечно, когда вычисляемая матрица одновременно и симмет ричная и персиммет- ричная, такая, как Л \ то необходимо вычислять только «верхний клин» матрицы, например X X X X X X X X X X X X (П = 6). С учетом последнего замечания, мы готовы представить алгоритм полностью. Алгоритм 4.73 (Треич). Даны вещественные числа I = rc, rvгп7 такие, что матрица Т = (Г| 4- _ j |) е Rrt * п является положительно определенной, следующий алгоритм вычисляет матрицу В = Т„ 1. Вычисляются только тте для которых i ^ у и I +у < л + К Используя алгоритм 4.7.1, решить систему Тп-±у = —(г19, гя- 1)"г. Y — 1/(г(1 :я — 1)г^(я: — 1:1» г(1:я — 1) = у у(п — 1: —1:1) ВЦ 1) = у for i = 2:floor((« — l)/2) + 1 for j = i:n — I + 1 (t(n + I - j)v{n + 1 - i) - H(i - l)p(/ - l))/y end end Алгоритм требует 13я2/4 флопов. Пример 4.7.3. Если приведенный выше алгоритм применяется для вычисления обратной матрицы В положительно определенной тёп лицевой матрицы Г I 0.5 0.21 0.5 1 0.5 , Lo.2 0.5 1-J то мы получим у = 75/56, bxi = 75/56, bl2 = “5/7, 6,3 = 5/56 и Ь22 = 12/7.
178 Гл. 4. Линейные системы специального вида 4.7.5. Вопросы устойчпвоста Анализ ошибок упомянутых выше алгоритмов был проведен Cybenko (1978), и мы вкратце опишем некоторые из его результатов. Оказывается, ключевыми величинами являются ак из (4.7.1). В точной арифметике эти скаляры удовлетворяют соотношению |о»1 < 1 и могут быть использованы для оценки 11 Т~11 |t: f 1 1 1 "_11 -f la I “«й , m f<IIT.-4l< n7TT^- <*W П (1 — aj) П(1-а/ 1 jl j-i ;-i Более того, решение системы Юла-Уолкера Тпу = —г{1 :л) удовлетворяет соот- ношению i в f"n (1 + ак) \ — 1 (4.7.8) llyll в том случае, если все ак неотрицательные. Теперь если 4-это вычисленное алгоритмом Дурбина решение уравнений Юла-Уолкерн, то rD = Т„£ + г может быть оценено следующим образом: llr^fl ft; и П (1 + |6к|), *-1 где йк - вычисленный аналог а*. С помощью сравнения, так как каждый |г,| ограничен единицей, получаем, что ||гс|| »нЦу)^, где гс-невязка, соответствую¬ щая вычисленному решению, полученному алгоритмом Холецкого. Заметим, что невязки могут быть сравнены по величине в том случае, если справедлива формула (4.7.7). Эксперимент дает основания предположить, что это имеет место, даже если некоторые из а* отрицательные. Аналогичные объяснения применимы к численному поведению алгоритма Левинсона. Для метода Тренча можно показать, что матрица S- вычисленный аналог обратной к Г“\ удовлетворяет условию Ш!г!Уи.й!±!4! мл-и, ,.,1-10,1 В свете формулы (4.7.7) видно, что правая часть является приближенной верхней оценкой для иПГ'М!, которая аппроксимирует величину относительной ошибки, когда Т"1 вычислена при помощи разложения Холецкого. Задача 4.7,1. Для произвольного вектора 1?е1Г определим векторы i>+ = (и + £йи)/2 и и — (и - Env)j2. Пусть матрица А е R* * п является симметричной и перенмметричной. Показать, что если Ах = Ь, то Ах+ = Ь+ и Ах^ = Ь.. 47.2. Пусть матрица U eR"х * является верхней унитреугольной и обладает свойством: 1/(1:1с— 1, к) = Ек-, где определен как в (4.7.1). Показать, что UTTMU = diag(l, Ра Э.-,)
4.7. Тёплицевы системы 179 4.7.3. Пусть вектор zeR", и пусть матрица SeR" * " ортогональна. Показать, что если X = lz. Si. ..., 5"“^], тогда ХТХ является тёплицевой. 4.7.4. Рассмотреть LDL ^разложение п х п симметричной, трехдиагональной, положительно определенной тёплицевой матрицы. Показать, что dn и 1пл _ i сходится при п -» оо. 4.7А Показать, что произведение двух нижних треугольных теплицевых матриц является гёплицевым. 4.7.6. Дать алгоритм вычисления деН, такого, что Тп + Д(е„е[ + erf) является вырожденной. Предположить, что 7^ = (Г|/_^) является положительно определенной ИГ0=1. 4.7.7. Переписать алгоритм 4.7.2 таким образом, чтобы не требовались векторы z и г. 4.7-8* Предложить алгоритм для вычисления хя (Г4) при к - 1 :я. Замечания я литература к § 4-7 Всякий кто отважится проникнуть в литературу по быстрым тёп лицевым методам, должен прежде всего прочитать Bunch J. R. (1985). "Stability of Methods for Solving Toeplitz systems of Equations", SIAM J. Sci. Stat Comp. 6, 349-364. для выяснения вопросов устойчивости. Как и вообще, среди «быстрых алгоритмов» есть много неустойчивых теплицевых методов и необходимо проявлять осторожность. Первоначальными работами по трем методам, описанным в этом разделе, являются: Durbin J. (1960)l "The Fitting of Time Series Models**, Rev. lnst.Int.Stat 28, 233-243. Levinson N. (I947)l ’The Weiner RMS Error Criterion in Filter Design and Prediction", J. Math. Phys. 25, 261-278. Trench W.F. (1964). "An Algorithm for the Inversion of Finite Toeplitz Matrices", J. SIAM 12, 515-522. Более детальное описание несимметричного алгоритма Тренча дается в работе Zohar S. (1969). Toeplitz Matrix Inversion: The Algorithm of W.F. Trench", J.ACM 16, 592-601. Другие ссылки относительно обращении теплицевой матрицы содержат работы Trench W.F. (1974). ’Inversion of Toeplitz Band Matrices", Math.Comp.28, 1089 1095. Watson G. A. (1973). "An Algorithm for the Inversion of Block Matrices of Toeplitz Form”, J.ACM 20, 409-415. Оценки ошибок, которые мы приводили, взяты из анализа ошибок округления, имеющегося в работах Cybenko G. (1978). "Error Analysis of Some Signal Processing Algorithms”, Ph.D. thesis, Princeton University. Cybenko G- (1980). The Numerical Stability of the Levinson-Durbin Algorithm for Toeplitz Systems of Equations", SIAM J.Sci. and Slat Comp. 1, 303-319. Также известны методы треугольного разложения теплицевых систем сложности О (я3). Phillips J.L. (1971). The Triangular Decomposition of Hankel Matrices”, Math. Comp. 25, 599-602. Rissanen J. (1973). "Algorithms for Triangular Decomposition of Block Hankel and Toeplitz Matrices with Application for Factoring Positive Matrix Polynomials", Math.Comp. 27, 147-154. Упомянем следующие работы, описывающие некоторые важные приложения теплицевых матриц: Makhoul J. (1975). "Linear Prediction: A Tutorial Review", Proc. IEEE 63(4), 561-580.
180 Гл. 4. Линейные системы специального еида Markel J. and Gray А. (1976). Linear Prediction of Speech, Springer-Verlag, Berlin and New York. Oppenheim A. V. (1978). Applications of Digital Signal Processing, Prentice^ Hal L. Englewood Cliffs. Добавлении прн переводе к $ 4.7 Отметим монографии, посвященные проблемам вычислений с матрицами типа тёплипевых; Воеводин В. В.. Тыртышников Е. Е. (1978). Вычислительные процессы стёплицевыми матрица¬ ми. М.: Наука. Тыртышников Е Е. (1989). Тёплицеяы матрицы, некоторые их аналоги и приложения. - М.: ОВМ АН СССР. Различные алгебраические вопросы, связанные с тёплицепыми матрицами к их обобщениями, рассматриваются в книгах Heinig G., Rost К. (1984). ''Algebraic Methods for Toeplitz-ltke Matrices and Operators”, Berlin, Akademie Verlag. Иохвидов И. С. (1974). Ганкелеиы и тсплицевы матрицы и формы. М.: Наука. Обширная библиография и сведения о приложениях имеются в следующих обзорных работах: Воеводин В. В., Тыртышников Е. Е. (1983). Вычисления с тепл «левыми матрицами. Вычисли¬ тельные процессы и системы. Вып. L-М.: Наука, 124 -266. Лифанов И. К.. Тыртышников Е. Е. (1990). Тсплицевы матрицы и сингулярные интегральные уравнения.-Вычислительные процессы н системы. Вып. 7. М.: Наука, 94 278. Bullheel A. (1985)i "Triangular Decomposition of Toeplitz and Related Matrices: A Guided Tour in Algorithmic Aspects”, Bull. Soc. Math. Bcld.t A 37, N 2, 101-141. В последнее время появилось довольно много работ, посвященных «сверхбыстрым» алгорит¬ мам, решающим тсплицевы системы порядка п за О (пlogin) операций. Отмстим здесь лишь некоторые наиболее свежие из них; de Hoog F. (1987). ”А New Algorithm for Solving Toeplitz Systems of Equations”, Lin.Aig.Appl 88/89, 123-138. Amtnar G. S., Gragg W.G. (1988). "Superfast Solution of Real Positive Definite Toeplith Systems”, SIAM J. Math. AnaL Appl. 9, N 1, 61-76. Тыртышников E. E. (1989). Новые быстрые алгоритмы для систем с ганке левой и теплице вой матрицами.-ЖВМ и МФ, 29, № 5, 645 652. Рекордное число операций для произвольных (блочных) систем с невырожденными ведущими (блочными) подматрицами составляет 8/3«log2«. См. упоминавшуюся выше монографию (Е.Е. Тыртышников (1989)), а также Tyrtyshmkov Е. Е. (1989). "Fast Algorithms for Toeplitz and Quasi-Toeplitz Systems”, Sov. J, Numcr. Anal. Math. Modelling, 5, 138-160.
Глава 5 Ортогонализация и метод наименьших квадратов В этой главе речь пойдет главным образом о решении переопределенных систем уравнений методом наименьших квадратов, т.е* о минимизации функционала || Ах — fr||2, где i4eRWXK, beRm* Наиболее падежные методы решения этой задачи связаны с приведением матрицы А к разнообразным каноническим формам путем ортогональных преобразований* Центральную роль при этом играют отражения Хаусхолдера и вращения Гивенса, с рассмотрения которых мы и начинаем згу главу* В § 5*2 обсуждается вычисление разложения А = QR, где Q-ортогональная, R верхняя треугольная марица* Око сводится к нахождению ортонормированного базиса в range (Л). В§ 5.3 показано, что бЛ-разложенис может быть применено для решения задачи минимальных квадратов с матрицей полного ранга* Этот метод мы затем сравниваем с методом нормальных уравнений, предварительно развив соответствующую теорию возмущений. В § 5.4 и § 5.5 мы рассматриваем методы, пригодные в сложной ситуации, когда матрица А неполноранговая (или почти неполноранг овая). Здесь представлены бЛ-разложение с выбором ведущего элемента по столбцу и SVD. В § 5*6 мы обсуждаем некоторые шаги, которые MOiyr быть предприняты для улучшения качества вычисленного решения задачи минимальных квадратов* § 5.7 содержит несколько замечаний о недоопределенных системах. 5.1. Матрицы Хаусхолдера и Гивенса Напомним, что и х л-матрица Q называется ортогональной, если QTQ = Ортогональные матрицы играют важную роль при решении задач на собственные значения и задач минимальных квадратов. В этом разделе мы вводим ключевые для эффективных вычислений с ортогональными матрицами преобразования: отра¬ жения Хаусхолдера и вращения Гивенса. 5.1*1» Двумерный случай Полезно посмотреть, какой геометрический смысл имеют вращения и отражения в случае п = 2. Ортогональная 2 х 2-матрица Q называется матригрй вращения, если Если у = QTx, то у получается поворотом * на угол 0 против часовой стрелки. Ортогональная 2 х 2-матрица Q называется матрицей отражения, если cos(0) sin (0) — sin (0) cos (0). cos(0) smf0)1 sin(0) —cos
182 Гл. 5. Ортогонолиэация и метод наименьших квадратов Если у = Ст,х = Qx* то у получается отражением х относительно оси, определяемой как 5 = span ГГсо8(6)/2]| lLsin(6)/2 J J Вращения и отражения привлекательны с вычислительной точки зрения, так как они легко строятся и могут быть использованы для обнуления отдельных элементов векторов при надлежащем выборе угла поворота или плоскости отражения. Промер 5.1.1. Пусть х = (1, у/3)Т. Положим Г cos(—60°) sin(-60°)] Г 1/2 -УЗ/2] L — sin {—60°) cos(—60°) J в L л/3/2 1/2 J* Тогда QT х ** (2,0). Таким образом, поворот на (—60°) обнуляет вторую компоненту X. Если Г cos(30°) sin(30°)I _ Г Jbp. 1/2 ] 4 L sin(30®) —cos(30°)J L 1/2 -7I/2J’ to QTx = (2, 0)г. Таким образом, вторую компоненту х можно обнулить, отражая х относи¬ тельно прямой с наклоном 30°. 5.1.2. Отражения Хаусхолдера Пусть v € R"—ненулевой вектор, п х л-Матрица Р вида Р = / — 2wT/vTv (5.1.1) называется отражением Хаусхолдера (матрицей Хаусхолдера, преобразованием Хаусхолдера). Вектор v называется вектором Хаусхолдера. При умножении матрицы Р на вектор х последний отражается относительно гиперплоскости span {в}1. Легко проверить, что матрицы Хаусхолдера симметричны и ортогональны. Отражения Хаусхолдера похожи на введенные в § 3.2.1 преобразования Гаусса в двух отношениях: они являются одноранговыми модификациями единичной матрицы и они могут быть использованы для обнуления выбранных компонент вектора. В частности, предположим, что задан вектор 0 ф xeR" и мы хотим, чтобы вектор Рх был кратен et первому столбцу 1п. Для любого xeR" имеем „ / 2vvT\ 2vT х Рх = 1 / =— ) X = х =— * \ V V/ V1 V и поэтому из Лсеврап^} следует, что vespan{х, ех}. Полагая v = х + аеи получаем так что vT х = хт х + ах* vTv = хтх + 2ахх + а2, / xrx + axt \ vTx Рх яг I 1 — 2-= =■ 1х — 2а-=г-ех. \ хтх + 2ахх + a2/ vTv Чтобы коэффициент при х оказался нулевым, достаточно положить a = ± 11 х | \2.
5Л. Матрицы Хаусхолдера и Гивенса 183 Тогда Именно простота нахождения v делает отражения Хаусхолдера очень полезными. Пример 5,1*2. Для х - (3, 1» 5, 1)г и v = (9, 1, 5, 1)г матрица — 27 -9 -45 —9~ удовлетворяет Рх = (—6, О, О, 0)г. 5.1.3. Вычисление вектора Хаусхолдера С нахождением матрицы Хаусхолдера (или, что то же самое, вектора Хаусхол¬ дера) связан ряд важных на практике деталей. Одна из них-выбор знака при определении v по формуле (5.1.2). Если х почти коллинеарен ?х, то вектор v = х — signal) 11*112?! имеет малую норму. Вследствие этого возможно появление большой относительной ошибки при вычислении множителя (3 = 2/vTv. Эту труд¬ ность можно обойти, просто взяв а с тем же знаком, что и первая компонента вектора х: Это обеспечивает выполнение неравенства ||р||2 ^ ||х||2 и гарантирует почти точ¬ ную ортогональность вычисленной матрицы Р (см. ниже). Заметим также, что Менее критично, но полезно придерживаться в дальнейшем такой нормировки вектора г, что г(1) = 1. Это нестандартная нормировка, но она упрощает пред¬ ставление нескольких важных алгоритмов, в которых требуется хранить вектор Хаусхолдера. Мы будем называть v(2:n) существенной, или значимой, частью г. Заметим, что значимая часть v может быть записана на место обнуляемой части вектора х. Следующая процедура вычисляет вектор Хаусхолдера: Алгоритм 5.1.1 (Вычисление вектора Хаусхолдера). По w-вектору х данная функция вычисляет л-вектор и, такой, что г(1) = 1 и все компоненты вектора (1 — 2vv /vTv)х, кроме первой, равны нулю. function: v = bouse (х) п = length(х); ц = ||х||2; v = х if Ц*0 P = x(l) + sign(x(l))p v(2:n) = a (2:w)/p end v(\) = 1 end house Этот алгоритм требует примерно 3п флопов. 5.1.4. Умножение на матрицы Хаусхолдера Применяя преобразование Хаусхолдера к матрицам, очень важно учесть спе¬ циальную структуру матрицы Хаусхолдера. Пусть /4-матрица, P = I — 2vvT/vTv. -9 53 -5 -1 —45 -5 29 -5 -9 -1 -5 53 1? = х + sign (xj 11x112?!.
184 Гл. 5. Ортогонализация и метод наименьших квадратов Тогда РА — (i — 2 ) А = А + d/, v v) где w = рЛтг, Р = — 2/vTv. Таким образом, хаусхолдерова модификация матрицы слагается из умножения матрицы на вектор и модификации внешним произведением векторов. Если бы мы не заметили этого и обращались бы с Р как с матрицей общего вида, то объем работы возрос бы на порядок. Преобразование Хаусхолдера никогда не требует явного формирования матрицы Хаусхолдера. Следующие две функции формально подтверждают это. Алгоритм 5.1.2 (Умножение на матрицу Хаусхолдера слева). Для данной т х «-матри¬ цы А и ненулевого w-вектора v, где v(\) = 1, следующий алгоритм строит на месте матрицы А матрицу РА, где Р = I — 2vvT/vTv. function: А = rowJiouse (Л, и) р = ~2/vT v w = pATv А = А + vwT end row.house Алгоритм 5.1.3 (Умножение на матрицу Хаусхолдера справа). Для данной m х «-мат¬ рицы А и ненулевого т-вектора г, где г(1) = 1, следующий алгоритм строит на месте матрицы А матрицу АР, где Р — I — 2vvT/vTv. function: А = coLhouse (/4, г) Р = —2/vTv w = р Л г А — А + wt)T end coLhouse Каждая из вышеприведенных процедур преобразования Хаусхолдера требует около 4ти флопов. Заметим, что как в rowJiouse, так и в coLhouse можно учесть наличие нормировки и(1)=1. При малых m это может оказаться существенным для rowJiouse, а при малых «-для coLhouse, поскольку экономит одно умножение. В типичном случае функции house, coLhouse и rowJiouse используются для обнуления заданной части строки или столбца матрицы. Пусть, к примеру, мы хотим записать на место матрицы AeRmxn (m ^ «) матрицу В = QT А, где Q - такая ортогональная матрица, что B{j + 1 :m,J) = 0 для некоторого у, 1 < «. Допустим еще, что Л(у:т, 1:у— 1) = 0 и мы хотим разместить значимую часть вектора Хаусхолдера на месте Л(у -h 1 :m, у). Эта задача может быть решена следующим образом: С вычислительной точки зрения мы подействовали матрицей Хаусхолдера Р = / — — 2vvT/vTv порядка m — у + 1 на нижние m — у + 1 строк матрицы А. Однако математически мы при этом также действовали m х М-матрицей Хаусхолдера на всю матрицу А. Невзирая на это, нетривиальная часть вектора Хаусхолдера была записана на месте обнуляемых элементов массива А. v(J:m) = house {A(j:mJ)) А (у: го, у:«) — row.house (A{j:m,j:n), v(j:m)) A (у 4- 1: w,y) = v(j + t:m)
5.1. Матрицы Хаусхолдера и Гивенса 185 5.1.5. Ошибки округления Матрицы Хаусхолдера обладают очень хорошими свойствами в отношении ошибок округления. Уилкинсон (АЕР, pp. 152-62) показывает, что вектор 0, вычисляемый функцией house, очень близок к точному вектору v. Если Р = / — — 2vvT/бТ€у то \\Р-Р\\2 = 0(и). Далее, вычисленные преобразования с матрицей Р близки к точным преобразова¬ ниям с матрицей Р: fl(PA) = Р(А + Е), ||£||2 = 0(и|М||2), fl{AP) = (A+E)P, ||£||2 = 0(uM||2). 5.1.6. Факторизованное представление Во многих из описываемых ниже алгоритмов разложения, основанных на преобразованиях отражения, вычисляется произведение матриц Хаусхолдера Q = QxQi .. Qr> QJ = l-2—r- (5.1.3) Vut VU) где r n и каждое vu> имеет вид г,Л = (0, О,..., О, «ДОv!/>)T. . v 7-1 Явное вычисление Q обычно не требуется, даже если Q используется в последующих вычислениях. Например, если CeRnxq и нам нужно вычислить QT С, мы просто выполняем цикл for у = 1: г C = QjC end Хранение хаусхолдеровых векторов v(l\ ..., v(r) фактически равносильно факторизо¬ ванному представлению матрицы Q. Для иллюстрации экономичности этого пред¬ ставления рассмотрим массив А, и пусть его элементы A(j + 1 :пу у) содержат значимые компоненты ги)(У + 1 :п)у-ro хаусхолдерова вектора. Тогда запись матри¬ цы QTC на место CeRnxq может быть реализована следующим образом: for у = 1: г »(Л = U v(j + l:w)= A(j У 1у) (5.1.4) С (у: и,:) = row.house (C(j:ny:)y v(j:n)) end Здесь используется около 2qr(2n — г) флопов. Если бы матрица Q была явно представлена как п х w-матрица, то вычисление QT С потребовало бы 2rt2q флопов. Конечно, в некоторых приложениях явное формирование матрицы Q или, возможно, некоторой ее части, все же необходимо. Для вычисления произведения Q хаусхолдеровых матриц из (5.1.3) возможны два алгоритма: прямое накопление е = /„ for у = 1: г Q = QQj end
186 Га. 5. Ортогонализация и метод наименьших квадратов и обратное накопление Q = h for j = г: — 1:1 Q = QjQ end Вспомним, что ведущая часть Qj размера (у — 1) х (у — 1) является единичной матрицей. Поэтому в начале обратного накопления матрица Q «почти единичная» и заполняется постепенно в процессе итераций. Это обстоятельство можно исполь* зовать для сокращения требуемого количества флопов. Напротив, при прямом накоплении матрица Q становится полной уже после первого шага. Ввиду этого прямой порядок перемножения матрицы Q менее экономичен/ Обратное накопление является нанлучшей стратегией и может быть детализировано следующим образом: е=/„ for j = г: — 1:1 в(Л = 1; v(j + 1 :«) = АЦ + 1 :«,/) (5.1.5) = rowJiouse (QU-nJ.n), v(j:n)) end При этом требуется около 4(n2r — nr2 + r3/3) флопов. 5.1.7. Блочное представление Пусть, как в (5.1.3), Q = Qi... б,-произведение я х n-матриц Хаусхолдера. Та* как каждая Q} является одноранговой модификацией единичной матрицы, из структуры хаусхолдеровых векторов следует, что матрица Q является г-ранговой модификацией единичной матрицы и может быть представлена в виде Q = 1 + WYT, (5.1.6) где WuY-n х r-матрицы. Для вычисления блочного представления (5.1.6) ключевой является следующая лемма: Лемма 5.1.1. Пусть Q — I + WYT — ортогональная я х п-матрица. где W. УейихЛ Если Р = I — 2vvT/vTv, где eeR". г — —2QvfvTv, то Q+=QP = I+W+y19 где W+ — [W z], Y+ = [У и] — п х (j + \Уматрщы. Доказательство. QP = (I + WYT) (i-2~) = / + WYT-2^^ \ V V/ VTV = / + WYT + ztT = I + [W г] [У |?]Г. □ Многократно применяя эту лемму, мы можем получить блочное представление матрицы Q ш (5.1.3) из факторизованного представления следующим образом: Алгоритм 5.1 А Пусть Q — Qx ... Qr-произведение п х «-матриц Хаусхолдера, как в (5.1.3). Алгоритм вычисляет матрицы Щ УеКи*г, такие, что Q = I + WYT.
5.1. Матрицы Хаусхолдера и Гиеенса 187 У= »(1) W= -2r“,/[i'“,]Ti’(“ for j = 2 : г z — — 2(7 + WYT)ififi/l i^]V* W— [W z] Y— [Y v<*} end Этот алгоритм требует около 2г2л - 2г3/ 3 флопов, если учитывается наличие нулей в ги>. Заметим, что У-просто матрица хаусхолдеровых векторов, являющаяся поэтому нижней треугольной с единичной диагональю. Ясно, что главной задачей в нахождении WY-представления (5.1.6) является вычисление матрицы W. Блочное представление произведений хаусхолдеровых матриц привлекательно в тех случаях, когда требуется умножить Q на какую-либо матрицу. Пусть CeR"**. Тогда преобразование C«-grC = (/+ *УУТ)ТС«С+ У(«^С) содержит много операций уровня 3. В то же время при факторизованном представ¬ лении матрицы Q вычисление QTC использует лишь операции уровня 2, а именно, умножение матрицы на вектор и модификацию внешним произведением. Конечно, разница между уровнями 2 и 3 сглаживается по мере того, как матрица С становится более узкой. Отметим, что WT-представление не является с геометрической точки зрения обобщением преобразования Хаусхолдера. Блочные отражения имеют вид Q = I — -~2VVJ\ где KeR"*r удовлетворяет V7 V= 1г. См. Schreiber, Parlett (1987), Schreiber, Van Loan (1989). Пример 5.1,3. Если n = 4, г = 2, (1, .6, О, .8)т и (0, 1, .8, .6)т-хаусходцеровы векторы, соответствующие матрицам Qt и Q2 соответственно, то -1 1.080 -0.6 -0.352 0 -0.800 -0.8 0.264 QiQi = / + Г 1 0.6 0 0.81 |_0 1 0.8 0.6J* 5.1.8. Вращения Гивенса Отражения Хаусхолдера чрезвычайно полезны для крупномасштабных обнуле¬ ний, как, например, аннулирование всех компонент вектора, кроме первой. Однако в тех случаях, когда необходимо избирательное зануление элементов, предпочти¬ тельнее использовать вращения Гивенса. Эти двухранговые модификации единичной матрицы имеют вид 1 0 •• . о .. • 0 0 с • • . в • • 0 0 — S - С • 0 0 0 • 0 • 1 i к (5.1.7)
188 Гл. 5. Ортогонализация и метод наименьших квадратов где с = cos (0), s = sin (0) для некоторого 0, Ясно, что вращения Гивенса - ортогональ¬ ные матрицы. Умножение слева на G (/, /с, 0)т равносильно повороту на 0 радиан против часовой стрелки в координатной плоскости (/, к). Действительно, если jc е R" и у — = G (/, ку 0)г;с, то Из этих соотношений ясно, что мы можем обратить ук в нуль, положив Таким образом, обнуление заданного элемента вектора с использованием вращения Гивенса является делом очень простым. На практике существуют лучшие способы вычисления с и sy чем (5.1.8). Напри¬ мер, следующий алгоритм включает защиту от переполнения. Алгоритм 5.1.5. По скалярам а и b эта функция определяет с = cos (0) и s = sin (0) так, что function; [с, s] = givens (а, b) if 6 = 0 с = I; s = 0 р|ср if 1*1 > \а\ end end end givens Этот алгоритм использует 5 флопов и одно извлечение квадратного корня. Заметим, что он вычисляет 0, поэтому не приходится привлекать обратные тригонометри¬ ческие функции. Пример 5.1.4. Пусть х = (1, 2, 3, 4)г, cos(G) = 1/^5, sin(©) = 2/^5. Тогда <7(2, 4, ЩТ х = (1, ч/20. 3, 0)т. 5.1.9* Умножение на матрицы Гивенса Простота строения G (/, к, 0), разумеется, должна быть использована при вычислении произведений матриц вида G (/, /с, 0)ТЛ и AG (i, к, 0). Заметим, что умножение справа затрагивает только строки i и к, а умножение слева-только столбцы i и к. Эти вычисления реализуются следующими функциями. cjc, — sxk, j=i, Yj = J sxt + cxkf j = fc, Xj , j Ф i, к. (5.1.8) т = —a/b\ s = 1 jyJT~+x*\ с — sx else
5.1. Матрицы Хаусхолдера и Гивенса . 189 Алгоритм 5.1.6. Пусть А е R2 х с = cos (0), s = sin (0). Следующий алгоритм записы- Г с вает на место А матрицу А. function: А = row.rot (А, с, s) q = cols (А) for j = 1: q Ti = A(l,fb t2 = A(2,j) A(l,j) = ex, -5x2; A(2,j) = szl + cx2 end end row.rot Этот алгоритм требует 6q флопов. Алгоритм 5.1.7. Пусть ЛеН9*2, с = cos (0), s = sin (0). Следующий алгоритм записы- Г с *1 вает на место А матрицу L —5 с J function: А = coLrot (А, с, 5) q = rows (А) for i = 1:q xx = A(i, lk x2 = A{i, 2) A(i, 1) = сij — sx2; A(it 1) = sxl + cx2 end end coLrot Этот алгоритм требует 6q флопов. Вспоминая, что A([i к],:) означает строки / и к матрицы А, мы видим, что Л([/ *], :) = row.rot(A([i с, s) осуществляет преобразование A<-G{i, к, 0)т А. Аналогично A(:,\_i к]) = col.rot (Л(:,[/ /с]), с, s) осуществляет преобразование о«- Л С (/, к, 0). Для дальнейшей иллюстрации типичного применения процедур Гивенса допус¬ тим, что А-т х л-матрица, такая, что A (i — I: 1 :j — 1) = 0 и мы хотим обнулить A (i,j) вращением i-й и (/ — 1)-й строк. Вот как этого можно достигнуть: [с, s] = givens (A(i - 1,У), A(iJ)), A(i— 1 :i, j'n) = row.rot (A(i — 1 :i,j:n)4 c\ 5). 5.1.10. Ошибки округления Численные свойства вращений Гивенса не менее хороши, чем для отражений Хаусхолдера. Можно, в частности, показать, что вычисленные функцией givens £ и £ удовлетворяют С = <?(1+Ес), £c = 0(u), S = S(1+£S), £S = 0(U). Если с и s в дальнейшем используются для нахождения преобразования Гивенса, то
190 Гл. 5. Ортогонализация и метод наименьших квадратов вычисленное преобразование является точным преобразованием близкой матрицы: // [<?(/, к, е)гЛ] » G(i, к, 0)Г(Л + Е), ||£||2 « и |М||2, // [A 6\i, к, в)] = (А + Е) G (I, к, 0), ||£||2 * и М||2. Детальный анализ ошибок для вращении Гивенса можно найти у Уилкинсона (АЕР, pp. 131-39). 5.1 Л1. Представление произведений матриц Гивенса Пусть Q — Gx ... Gt - произведение матриц вращения Гивенса. Так же как и в слу¬ чае отражений Хаусхолдера, ортогональную матрицу Q экономичнее хранить в фак¬ торизованном виде, а не вычислять явно произведение вращений. Прием, предло¬ женный Стьюартом (1976), позволяет очень компактно это осуществить. Идея состоит в том, чтобы связать с каждым вращением единственное число с плавающей точкой р. Именно, если -U :]• c2 + s2 = I. то определим скаляр р следующим образом: if е = 0 Р= • elseif И < \с\ р = sign {c)s/2 else (5.1.9) р = 2sign (s)/c end По существу это означает, что мы храним s/2, если синус меньше косинуса, и 2/с в противном случае. Восстановление матрицы ±Z при этом производится сле¬ дующим образом: if р= 1 с = 0; s = 1 elseif |р| < 1 s = 2 р; с = у/\ — s2 else (5.1.10) с = 2/р; 5 = VI-с2 end То что фактически может быть восстановлена матрица — Z (а не Z), обычно несущественно, поскольку если Z обнуляет в матрице какой-нибудь элемент, то и — Z делает то же самое. Хранение меньшего из чисел СИ5 обусловлено тем, что формула у/\ — х1 работает с плохой точностью, если х близок к единице. Другие детали см. Stewart (1976). Конечно, для воспроизведения G (/, к, 6) нам необходимо знать / и к, помимо р. Это обычно не вызывает затруднений, как мы покажем в § 5.2.3. 5.1.12. Распространение ошибок Здесь мы сделаем несколько замечаний о распространении ошибок округления в алгоритмах, использующих последовательности преобразований Хаусхолдера или Гивенса. Более точно, пусть дана матрица А — А0€ Rmxn и матрицы Ах, ...,Ар = В
5.1. Матрицы Хаусхолдера и Гивенса 191 вычисляются по формуле (5.1.11) Предположим, что описанные выше алгоритмы Хаусхолдера и Гивенса исполь¬ зуются как для получения, так и для применения матриц Qk и 2к. Пусть Qk и Zk - ортогональные матрицы, которые были бы получены в отсутствие ошибок округления. Можно показать, что где ||£112 ^ с и ||^41| 2 > причем константа с не очень сильно зависит от л, т и р. Иными словами, В-результат точного ортогонального преобразования матрицы, близкой к А. 5.1.13. Быстрые вращения Способность вращений Гивенса обнулять элементы матриц избирательно делает их важным инструментом в задачах с определенной структурой. Это стимулировало разработку процедур быстрых вращений. Идея быстрых вращений сводится к хитро¬ умному представлению матрицы С, являющейся произведением вращений Гивенса. Именно, Q представляется парой матриц (М, D), где МТМ = D — diag(J,) и все dt положительны. Матрицы Q, М и D связаны формулой Обратим внимание, что (AfD“1/2)r (AfD~1/2) = D~iflDD~112 = /, так что матрица MD~lf2 ортогональна. Для разъяснения деталей лучше всего спуститься на уровень 2 х 2-матриц. Пусть заданы jc = (jcx jc2)т и D = diag(J1, d2Y Допустим, что d1 и d2 положительны. Положим по определению (5.1.12) Q = МХГ1'2 « Afdiag (1/^). (5.1.13) (5.1.14) и заметим, что и Если х2 ФО, ах ** — хх/хг, = —aid2/dx> то где = —а4 p! =(d2/dx) (xjxj)2. Аналогично, предположив х^Ои определив М2 как (5.1.15)
192 Гл. 5. Ортогонализация и метод наименьших квадратов где о2 = — х2/х1 и Р2 = — (d1/d2)a2, получим [ ] и где у2= -a2f>z = {djd2) (х2/хх)2. Легко показать, что для i— 1,2 матрица j = D1/2 Af.-D,- 1/2 ортогональна, причем вторая компонента вектора JT(D~111 х) равна нулю. (Фактически J может оказаться отражением, так что популярный термин «быстрые вращения» верен лишь отчасти.) Заметим, что у, удовлетворяет соотношению yty2 = 1. Поэтому в вышеприве¬ денных формулах всегда можно выбрать М£ таким образом, что «коэффициент роста» (1 + у, ) будет ограничен числом 2. Матрицы вида удовлетворяющие — 1 < a, < 0, суть быстрые преобразования Гивенса размера 2x2. Обратим внимание, что умножение справа на матрицу быстрого вращения требует только половину того количества умножений, которое необходимо для осуществления обычного преобразования Гивенса. Кроме того, обнуление выпол¬ няется без явного вычисления квадратного корня, что может оказаться сущест¬ венным при проектировании СБИС. В п х л-случае требуемые изменения почти такие же, как для обычных вращений Гивенса. Преобразования первого типа имеют вид 1 ... О о ... О О ... 0 1 ... О * F(i,k,ot,P) = О 1 а ••• 0 к 1 (5.1.16) 0 --- 0 ••• 0 ••• 1 i к а структура преобразований второго типа такова: 1 ... о О ••• О о 1 а 0 * F(i,k,a,0) = (5.1.17) О 0 ••• 1 0 к О 0 1 О к 1
5.1. Матрицы Хаусхолдера и Гивенса 193 Таким образом, если MgR"x”hD = diag (dt) удовлетворяют соотношению МТ М — = D и F-rt х «-матрица быстрого вращения, где FTDF — Dnew диагональна, то Mnew — где Мяен. = MF. Тем самым представление (М, D) для быстрого вращения можно модифицировать, получив (Mnewt Dnew). Функции givens будет соответствовать Алгоритм 5.1.8. По xeR2 и положительному de R2 следующий алгоритм вычисляет 2 х 2-матрицу быстрого вращения М, такую, что вторая компонента вектора Мтх нулевая и матрица МтDM = Dt диагональна, где D — diag(dx , d2). Если type = 1, то M имеет вид (5.1.14), а при type = 2-вид (5.1.15). Диагональные элементы матрицы Dt записываются на место вектора d. function: [а, Р, type] ~ fastgivens (a ,J) if jc(2)^0 а= —аг(1)/^(2); р = —а^(2)/^/( 1); у= -ар if у< 1 type = 1 т = d(\); d(l) = (l +у) d(2); rf(2) = (l +yjt elze type = 2 a= 1/a; p = 1/P; у = 1/y d(l) = (l+y) </(!); </(2) = (l + y) d(2) end else type = 2 a = 0; P = 0 end end fast.givens Алгоритм применения быстрого преобразования Гивенса схож с row.rot и col.rot. Для преобразования строк мы имеем: Алгоритм 5.1.9. По AeR2xq и матрице быстрого вращения М типа 1 или 2, следующий алгоритм записывает Мт А на место А. function: А = row.fastrot (А, а, р, type) if type — 1 for j = 1: q = /l(l,y); *2 = Л(2,у) (1, у) = +т2 A(2j) = xx + at2 end else for 7 = 1: q zi=A{\,jX t2 = A(2,j) Mhj) = zx + рт2 у4(2,» = ат! + x2 end end end row.fastrot Этот алгоритм требует 4q флопов. Заметим, что формула Л([/ /с],:) = row.fastrot (А{{г /с],:), а, Р, type) 7 63
194 Гл. 5. Ортогонализация и метод наименьших квадратов осуществляет преобразование А «- F (/, к, а, рУ)Т А соответствующего типа. Хотя fastgivens и выбирает подходящий тип преобразования, коэффициент роста 1 + у все же может достигать двух. Тем самым после s преобразований элементы матриц D и М могут увеличиться в 2* раз. Это означает, что по ходу процедуры быстрых вращений необходимо все время отслеживать значения диагональных элементов Ь, чтобы избежать переполнения. Такие нетривиальные дополнительные расходы способны ухудшить производительность. Тем не менее рост элементов М и D не является неуправляемым, поскольку всегда матрица MD“1/2 ортого¬ нальна. Свойства быстрых вращений по отношению к ошибкам округления соот¬ ветствуют нашим ожиданиям от использования матриц Гивенса. Например, если вычислить Q —f l(Ki 6~^2)^ где $ и б - вычисленные М и D, то Q ортогональна с рабочей точностью: ||(5Г(5 — I || 2 ^ и. Задачи 5.1.1. Выполните bouse для .v = (1, 7, 2, 3, — 1)т. 5.1.2. Пусть х и у -ненулевые векторы из R". Дайте алгоритм нахождения такой матрицы Хаусхолдера /\ что вектор Рх кратен у. 5.13. Пусть хеСп и хх = \хх \еш, 0е R. Предположим, что jc Ф 0, и определим и = х + е'в ||х||2 ех. Покажите, что матрица Р = / — 2иин/и*1 и унитарна и Рх = — е,в||jc||2e1. 5.1.4. Используя матрицы Хаусхолдера, покажите, что det (/ + хут) = 1 -f хту> где х и у-задан¬ ные л-векторы. 5.13. Пусть хеС2. Дайте алгоритм нахождения унитарной матрицы вида такой, что вторая компонента вектора QH х нулевая. 5.1.6. Пусть х и у-единичные векторы в R". Используя преобразования Гивенса, постройте алгоритм, вычисляющий такую ортогональную матрицу g, что QT х = у. 5.1.7. Найдите с ~ cos(0) и л = bin (6), такие, что 5.13. Допустим, что матрица Q = /+ YTYT ортогональна, где YeKnxJ; ТеR7*7-верхняя треугольная матрица. Покажите, что если Q+ — QP, где Я — I — 2vvT/vT и-матрица Хаусхолдера, то Q+ может быть представлена в виде Q+ = / + У+ Т+ Y+, где Y+ eR" х ^ + 1); Г+ eR^+ ^ В- верхняя треугольная. 5.1.9. Опишите детальную реализацию алгоритма 5.1.4, предположив, что значимая часть у-го хаусхолдерова вектора, vij)( j 4- 1: п), хранится в А (у -Н 1:л, j). Поскольку У эффективно пред¬ ставляется в А, ваша процедура должна лишь построить матрицу W 5.1.10. Покажите, что если матрица S кососимметрична (ST ~ —S), то Q = (/ + 5)(/ — S)'1 ортогональна. (Q называется преобразованием Кэли матрицы S.) Постройте такую матрицу S ранга 2, что для любого вектора х лишь первая компонента QTx будет, возможно, отлична от нуля. Замечания и литература к § 5.1 Описанные в этом разделе преобразования широко используются как блоки, из которых собираются более сложные алгоритмы. Поэтому важно, чтобы на этом элементарном уровне вычисления выполнялись аккуратно. См. статью Lawson C.L., Hanson R.J., Kincaid D.R., and Krogh F.T. (1979). ’’Basic Linear Algebra Subprograms for Fortran Usage”, ACM Trans. Math. Soft. 5, 308-23.
5.2. QR-разложение 195 Элементарные процедуры линейной алгебры (BLAS) детально описаны в пакете Unpack. Хаусхолдеровы матрицы названы так в честь А. Хаусхолдера, который первым стал широко использовать их в численном анализе. Однако свойства этих матриц были известны достаточно давно. См. Turnbull Н. W. and Aitken А. С. (1961). Ап Introduction to the Theory of Canonical Matrices, Dover Publications, New York, pp. 102-5. Другая литература по преобразованиям Хаусхолдера включает Cuppen J. J. М. (1984). "On Updating Triangular Products of Householder Matrices”, Numer, Math. 45, 403-10. Gourlay A.R. (1970). "Generalization of Elementary Hermitian Matrices”, Comp. J. 13, 411-12. Kaufman L. (1987). "The Generalized Householder Transformation and Sparse Matrices", Lin. Alg. and Its Applic. 90, 221-234. Parlett B.N. (1971). "Analysis of Algorithms for Reflections in Bisectors", SIAM Review 13, 197-208. Tsao N. K. (1975). "A Note on Implementing the Householder Transformations”, SIAM J. Numer. Anal. 12, 53-58. Детальный анализ ошибок округления для преобразований Хаусхолдера проведен в книге Лоусона и Хенсона (SLS, рр, 83-89). Вот основные статьи по блочным преобразования Хаусхолдера и относящимся к ним вычислениям: Bischof С.Н. and Van Loan С. (1987). "The WY Representation for Products of Householder Matrices", SIAM J. Sci. and Stat. Comp. 8, s2-sl3. Higham N.J. and Schreiber R.S. (1988). "Fast Polar Decomposition of an Arbitrary Matrix", Report 88-942, Dept, of Computer Science, Cornell University, Ithaca, NY 14853. Schreiber R. and Parlett B.N. (1987). "Block Reflectors: Theory and Computation", SIAM J. Numer. Anal. 25, 189-205. Schreiber R. and Van Loan C. (1989). "A Storage Efficient WY Representation for Products of Householder Transformations”, SIAM J. Sci. and Stat. Comp, to appear. Вращения Гивенса, названные в честь У. Гивенса, именуются также вращениями Якоби. Основываясь на этих преобразованиях, Якоби в 1846 г. разработал алгоритм для решения симметричной проблемы собственных значений. Обсужденная в нашем тексте схема хранения вращений Гивенса описана в деталях в статье Stewart G.W. (1976). "The Economical Storage of Plane Rotations", Numer. Math. 25, 137-138. Быстрые вращения называются также преобразованиями Гивенса без вычисления квадрат¬ ного корня. (Вспомним, что стандартный порядок вычисления преобразования Гивенса включает вычисление квадратного корня.) Быстрые вращения могут быть организованы несколькими способами. См. Gentleman М. (1973). "Least Squares Computations by Givens Transformations without Square Roots”, J. Inst. Math. Appl. 12, 329-336. Hammarling S. (1974). "A Note on Modifications to the Givens Plane Rotation", J. Inst. Math. Appl. 13, 215-218. Van Loan C.F. (1973). "Generalized Singular Values With Algorithms and Applications”, Ph. D. thesis, University of Michigan, Ann Arbor. Wilkinson J. H. (1977). "Some Recent Advances in Numerical Linear Algebra", in The State of the Art in Numerical Analysis, ed. D.A.H. Jacobs, Academic Press, New York, pp. 1-53. Мы хотим еще раз повторить, что успешная реализация быстрых вращений требует нетри¬ виальных затрат на контроль за процессом. 5.2. QR-разложение В этом разделе мы покажем, как применить преобразования Гивенса и Хаусхол¬ дера для получения различных разложений матрицы. Мы начинаем с QR-разложе¬ 7*
196 Гл. 5. Ортогонализация и метод наименьших квадратов ния, которое для т х «-матрицы А выглядит так: А = QR, где QeRmxm-ортогональная, ReRmxn-верхняя треугольная матрица. В этом разделе мы предполагаем m^ti. Если А имеет полный столбцовый ранг, то первые п столбцов матрицы Q образуют ортонормированный базис подпространства range (А). Тем самым QR-разложение дает один из способов получения ортонор- мированного базиса для набора векторов. Существует несколько путей вычисления QR-разложения. Мы изложим методы, основанные на преобразованиях Хаусхол¬ дера и Гивенса, а также на быстрых вращениях и блочных отражениях. Кроме того, мы обсуждаем процесс ортогонализации Грама-Шмидта и его модификацию, отличающуюся большей численной устойчивостью. 5.2.1. QR-разложение: преобразования Хаусхолдера Мы начинаем с метода, использующего для получения QR-разложения преоб¬ разования Хаусхолдера. Суть алгоритма может быть пояснена на простом примере. Пусть т = 6, п = 5 и матрицы Хаусхолдера //1 и Я2 таковы, что H2HtA = X X в X X X 0 X X X X 0 0 X X X 0 0 X X X 0 0 X X X 0 0 X X X Займемся теперь элементами, выделенными жирным шрифтом. Найдем хаусхолде- — 4 х 4 рову матрицу #3eR , такую, что X X X 0 X 0 X 0 Если #3 =diag(/2, Я3), то X X X X X 0 X X X X 0 0 X X X 0 0 0 X X 0 0 0 X X 0 0 0 X X HzH2HyA = Выполнив п таких шагов, мы получаем верхнюю треугольную матрицу НпНп_1 ... Ях А = R, так что, положив Q = Hv ... Нп, имеем А = QR. Запишем изложенное формально. Алгоритм 5.2.1 (QR-разложение: преобразования Хаусхолдера). По матрице А е R"1 х пу т ^ я, следующий алгоритм находит хаусхолдеровы матрицы Ях,..., Нп, такие, что при Q = Н1 ... Яп матрица QТ А = R верхняя треугольная. При этом верхний треугольник матрицы R записывается на место верхнего треуголь¬
5.2. QR-разложение 197 ника матрицы Л, а компоненты у + 1: т у-го хаусхолдерова вектора хранятся в Л(/ + 1 :m,y),y <т. for у = 1: п v{J:m) — house (A (y:m,y)) A{j:mJ:n) = row.house j:n), v(j:m)) if j<m A (J + 1 :m,y) = i?(/ + 1 :m) end end Этот алгоритм требует In2(m — и/3) флопов. Покажем наглядно, что именно записывается на место матрицы Л. Если г0) = [0,..., 0, 1, t^]т есть у-й хаусхолдеров вектор, то по завершении алгоритма Гп Г\2 Г13 r 14 П5 2 Тп **23 Г 24 **25 41) |/2) V3 r33 r34 **35 41} (2) V4 (3) Г44 **45 4° (2) *5 (3) v5 (4) *5 **55 . 4!) t>(2) V6 |Х3) v6 W(4) V6 (5) 4 Если необходимо явно получить матрицу Q — Нх ... то это можно делать по ходу алгоритма, используя (5.1.5). Дополнительные затраты составляют 4 (т2п — — тп2 + л3/3) флопов. Вычисленная верхняя треугольная матрица R есть точная R для некоторой близкой к Л матрицы, в том смысле что ZT(A + E) = R, где Z-некоторая ортогональная (точно) матрица, и ||£ ||2 » |]Л ||2и. 5.2.2. QR-разложение: метод блочных отражений В алгоритме 5.2.1 много операций уровня 2: умножений матриц на векторы и модификаций внешним произведением. Реорганизация вычислений с использова¬ нием введенного в §5.1.7 блочного представления произведений хаусхолдеровых матриц позволяет получить процедуру уровня 3. Идея состоит в применении преобразований Хаусхолдера группами, или кластерами, представленными в И'Т-форме (см. § 5.1.7). Для иллюстрации этой основной идеи рассмотрим маленький пример. Пусть и = 12 и «блочный параметр» г = 3. На первом шаге генерируются матрицы Хаусхолдера Hl9 Н2и Я3, как в алгоритме 5.2.1. Но в отличие от алгоритма 5.2.1, где Hi применяются сразу ко всей матрице Л, мы применим Нх, Н2 и Нъ лишь к Л (:, 1:3). После этого мы строим блочное представление HiH2H3 = I 4- WlY\ и осуществляем модификацию уровня 3: Л(:,4:12) = (/+ ^ ) Л (:,4:12). Далее генерируем, как в алгоритме 5.2.1, #4, Н5 и Н6. Однако эти преобразова¬ ния применяются к Л(:,7:12) лишь после нахождения блочного представления
198 Г л, 5. Ортогонализация и метод наименьших квадратов НАНЪ Нь — / 4- W2 У2 ■ Общая схема выглядит так: X — I; fc = О while X < л т = min(X + г — 1, п): к = к + 1 Используя алгоритм 5.2.1, привести к верхнему треугольному виду А(Х:ту Х:п), построив хаусхолдеровы матрицы HXi.., , tft. (5.2.1) Используя алгоритм 5.1.4, получить блочное представление I +WkYk = = НХ...НГ А(Х:т, г + 1 :п) = (/ + Wk Yk)r А{Х\т, т + 1 :п) X = т + 1 end Структура нулей хаусхолдеровых векторов, задающих матрицы Нх, ... , Нх, влечет за собой равенство нулю первых X — 1 строк матриц Wk и Yk. Этот факт следует использовать в практической реализации. Запись (5.2.1) естественно рассматривать, разбив матрицу А на блочные столбцы А - [/li, ... . Л*], N = ceil (л/г), где блочный столбец Ак обрабатывается на к-м шагу. На fc-м шагу (5.2.1) строится блочное преобразование Хаусхолдера, обнуляющее поддиагональную часть Ак. После этого модифицируются остающиеся блочные столбцы. Свойства (5.2.1) по отношению к ошибкам округления по существу те же, что и для алгоритма 5.2.1. Требуемое количество флопов несколько увеличивается вследствие необходимости вычислять матрицу W. Однако в результате нашей группировки почти все флопы связаны с перемножением матриц. Именно, доля операций уровня 3 в (5.2.1) составляет примерно 1 — 2/N. Другие детали см. Bischof, Van Loan (1987). 5.2.3. QR-разложение: преобразования Гивенса Вращения Гивенса также могут быть использованы для вычисления QR-разло- жения. Проиллюстрируем общую идею на примере 4 х 3-матриц: х х х ххх ххх XXX "ххх О х х О х х О х х Здесь мы показали 2-векторы, определяющие соответствующие вращения Гивенса. Ясно, что если обозначить Gjj-e вращение в этом приведении, то матрица QT А = R будет верхней треугольной, где Q = Gx ... Gt и /-общее количество вращений. Для произвольных тип имеем: Алгоритм 5.2.2 (QR-разложенне: преобразования Гивенса). По матрице Л е R"1 * п, следующий алгоритм записывает на место А верхнюю треугольную матрицу R = QTA, где Q ортогональна. X X X X X X (3,4j) X X X (2,3) X X X X X X 0 X X и 0 X X _ 0 X X X X X X X X (3,4) 0 X X (2,3) 0 X X 0 X X 0 0 X 0 0 X 0 0 X
5.2. QK-разложеиие 199 for j = 1 :n for i = m: — 1 :j + 1 [c, s] = gfvens(/4(j — 1,7), A(iJ)) A(i — 1 :iyj:n) = ro*.rot (A(i — \:i,j:n)9 c, s) end end Этот алгоритм требует 3л2(т-л/3) флопов. Заметим, что пару (с, 5) можно, согласно (5.1.9), закодировать одним числом р, которое может быть сохранено на месте обнуляемого элемента А(/, j). Операция типа jc <-QTx может тогда быть реализована с использованием (5.1.10)-нужно только позаботиться о соблюдении надлежащего порядка следования вращений. Для приведения А к верхнему треугольному виду годятся и другие последова¬ тельности вращений. Например, заменив операторы for в алгоритме 5.2.2 на for i = т : — 1:2 for j = 1 :min{/ — 1, n} мы придем к построчному порядку появления нулей в матрице А. Еще один изменяемый параметр нашей процедуры связан с плоскостями, в которых происходят обнуляющие каждый из элементов аи вращения. Например, вместо поворота строки / — I и i для обнуления аи в алгоритме 5.2.2 мы могли бы использовать строки j и /, т. е. for У = 1: п for i = т: — 1 :j -I- 1 [с, = givens (A(j, Д A(i. j)) MU ']» y:«) = rowj»t(yl([y i\, j:n\ c, s) end end 5.2A QR-разложение хессенберговои матрицы с использованием вращений Как пример использования вращений Гивенса для матриц с определенной структурой мы рассмотрим их применение к вычислению QR-разложения верхней хессенберговой матрицы. Общую идею мы снова иллнЗстрируем на маленьком примере. Предположим, что и = 6 и после двух шагов мы вычислили С(2, 3, е2)г С(1, 2, X X X X X X 0 х X X X X 0 0 X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X Тогда для обнуления элемента (4, 3) мы вычисляем G (3, 4, 63). Имеем G(3, 4, 6,)т G(2, 3, 02)т <7(1, 2, Q,)TA = X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 X X X 0 0 0 0 X X
200 Га. 5. Ортогонализация и метод наименьших квадратов В целом мы имеем Алгоритм 5.2.3 (QR-разложение хессенберговой матрицы). Если Л е R* * ” - верхняя хессенбергова матрица, то следующий алгоритм записывает на место А матрицу QT А = R, где Q - ортогональная, R - верхняя треугольная матрица. Q — Gi ... Gn_x есть произведение вращений Гивенса, причем Gj имеет вид G} = G (/, j + 1, ОД for у = 1: n — 1 [с, s] = givens (Л (у, у), А (у + 1,у) Л(У‘7+ 1,У:л) = row.rot (A(j:j + 1, j:n\ с, s) end Алгоритм требует около 3пг флопов. 5.2.5. QR-разложение: быстрые вращения Описанные в § 5.1.13 быстрые вращения могут быть использованы для вычис¬ ления (М, 0)-представления матрицы Q. Именно, если М- невырожденная, D- диагональная матрица, причем матрица МТ А = Т-верхняя треугольная, МтМ = = D-диагональная, то матрица Q = MD~1/2 ортогональная, a QTА — 1/2 т = R- верхняя треугольная. Вспоминая выписанные в §5.1.13 функции fastgivens и fast.row.rot, получаем следующий аналог QR-разложения методом вращений: Алгоритм 5.2.4 (QR-разложение: быстрые вращения). По матрице Ае Rmxn, m ^ л, следующий алгоритм вычисляет невырожденную матрицу MeRmxm и положитель¬ ный вектор d(\:m), такие, что матрица МтА = Т верхняя треугольная и МТМ = = diag^ , ... , dm). Матрица Тзаписывается на место матрицы А. for ! = 1: п d(i)= 1 end for j= 1 :n for i = m: — 1 :j + 1 [a, p, type] = fastgivens (A (/ - 1: /, y), d(i - 1: /)) A(i— 1: у: w) = fastrow.rot (A(i — 1: /, j:n\ a, P, type) end end Этот алгоритм требует 2n2(m — n/3) флопов. Как отмечалось в предыдущем разделе, в алгоритмах быстрых вращений (подобных вышеприведенному) необхо¬ димо принимать меры предосторожности против переполнения. Это означает, что если элементы матриц М, D и А становятся большими, необходимо периодически проводить перемасштабирование. Применение быстрых вращений является привлекательным, если необходимо получить QR-разложение ленточной матрицы с узкой лентой, ввиду отсутствия необходимости вычисления квадратных корней. (По этой же причине в § 4.3.7 мы предпочли LDlT разложению Холецкого в случае матриц с узкой лентой.) Более конкретно, если А е Rm х п имеет верхнюю ширину ленты q и нижнюю ширину ленты ру то Q т А = R имеет верхнюю ширину ленты р + q. В этом случае метод вращений для QR-разложения требует около 0(пр(р + q)) флопов и 0(пр) вычислений квадратных корней. Таким образом, если ру q « л, на вычисление квадратных корней приходится значительная доля общего количества вычислений.
5.2. QR-разложение 201 5.2.6. Свойства QR-разложения Описанные выше алгоритмы «доказывают» существование QR-разложения. Здесь мы выявим связь между столбцами матрицы Q и подпространствами range (A), range (Л)1 и рассмотрим вопрос о единственности. Теорема 5.2.1. Если A = QR есть QR-разложение матрицы Ае Rmxw, имеющей полный столбцовый ранг, и А — [at,, a„], Q = [<7,,... , qm]~разбиения на блочные столбцы, то span {ах, ... , я*} = span , ... . qk}, к = 1 :п. В частности, если Qx — Q(\ :m, 1 :п) и Q2 = Q( \ :т, п + 1 :m), wo range (/i) = ranged), range(zl)1 = range (02) и A = Qx Rx, где Rx — /?(1 :n, 1:«). Доказательство. Сравнивая k-e столбцы в A = Q R, находим, что k ok = I <7,- e sPan {i • • - • - 4k} • (5-2.2) *=1 Тем самым span {at, ... , ak} ^ span {qx,... , Однако из rank (Л) = n следует, что span {аг,... , ak} имеет размерность к, и поэтому должно совпадать с span {qx, ... , qk}. Доказательство остающейся части теоремы тривиально. Матри¬ цы (?!= (? (1 :tn, i :п) и Q2 = Q (1 :m, п + 1:т) легко вычисляются по факторизо¬ ванному представлению Q. Теорема 5.2.2. Пусть AeRmxn имеет полный столбцовый ранг. Тогда «усеченное» QR-разложение А — QXR\, где (>! eRmx” имеет ортонормированные столбцы, a Rx верхняя треугольная матрица с положительными диагональными элементами, будет единственным. Далее Rx = GT, где G - нижнетреугольный множитель в разложении Холецкого матрицы АТА. Доказательство. Так как АТ А = (Qx Rx )т (Qx Rt) = Rx, мы видим, что G = является множителем Холецкого матрицы АтА. По теореме 4.2.5 этот множитель единствен. Поскольку Qx = ARx* > Qx также единствен. Во всех случаях, когда нам необходимо обратиться к «усеченному» QR-разложению какой-нибудь матрицы Л, как в теореме 5.2.2, мы будем записывать А = QXRX. 5,2.7. Классический метод Грама- Шмидта Мы переходим к обсуждению двух альтернативных методов прямого вычисле¬ ния разложения A — QlRl. Если rank (А) = п, то уравнение (5.2.2) может быть разрешено относительно qk: Як = (ак- X rik q^j /гкк. Таким образом, qk можно рассматривать как единичный в 2-норме вектор, направ¬
202 Гл. 5. Ортогонализация и метод наименьших квадратов ленный вдоль k- 1 = I rikqit 1-1 где для обеспечения zk€span {ft,, ft-i }Х мы выбираем rik=qfak, i = 1 :к — L Это приводит к классическому алгоритму Г рама - Шмидта (CGS) для вычисления A=Ql Rl. for к - \ :п R{l:k-\,k) = Q(l :m, l:k - l)T к) г = A{ 1 :mt к) - Q{ 1 :m. 1 :fe — 1) Л(1 ;k - 1, fc) (5,13) W. k)-Uh k) = z/R(k, k) end На к-м шаге CGS генерируются fr-e столбцы матриц Q к R. 5.2,8, Модифицированный метод Грима-Шмидта К несчастью, классический метод Грама-Шмидта отличается крайне плохими численными свойствами, В типичном случае происходит сильная потеря ортого¬ нальности вычисленных векторов qi. Любопытно, что другая организация этого же вычисления, известная под названием модифицированный метод Грама-Шмидта (MGS), дает куда лучшую с вычислительной точки зрения процедуру. На к-м шаге MGS находятся fc-й столбец матрицы Q (обозначаемый ft) и fc-я строка матрицы R (обозначаемая rl). Для вывода метода MGS определим матрицы Л№)е GRmx(n-*+l) ^ А - £ ft rj = £ ft rl = [0 (5.14) i=l Отсюда следует, что если A'k' = lz В ] I п-к ’ то = ||z||2, ft = 2jrkk и (rk.ft +1 ... rkn) = qlВ. Затем вычисляем внешнее произве¬ дение Л<к+1> = В — ft (гд,к+1 ... гь) и переходим к следующему шагу. Этим к-й шаг MGS полностью описан. Алгоритм 5.15 (Модифицированный метод Грама - Шмидта). По матрице А е Rm * л. rant(/4) — л, следующий алгоритм вычисляет разложение А = где столбцы матрицы QleRmxn ортоиормированы, а матрица RtsRnxn верхняя треугольная. for к= \ .п R{k к) = \\А[1:т, к)||2 Q(l:m, k) = A(l:m, k)/R(kt к) for j = к + 1: п R(k,j) = Q(l:m, к)Т j) = А{\j) - к) R(k, у) end end
5.2. QR-разложение 203 Алгоритм требует 2тп1 флопов. Записать и Qu и Яг на место матрицы А невозмож¬ но; как правило, вычисления организуют таким образом, что на место А записы¬ вается Си а матрица Rx хранится в отдельном массиве. 5.2.9. Вычислительные затраты и точность Если необходимо построить в range (А) ортонормированный базис, то при использовании метода Хаусхолдера требуется 2т п2 — 2пъ /3 флопов для получения Q в факторизованном виде, и еще 2тп2 — 2я3/3 флопов для вычисления первых п столбцов Q. Таким образом, для задачи нахождения ортонормированного базиса в range (A) MGS примерно в два раза эффективнее, чем ортогонализация по Хаусходдеру. Однако было показано (Bjorck 1967b), что вычисленная методом MGS матрица Qi = [^i удовлетворяет С1 Ci = I + Rmgs* ||£«»lli ъиу.2(А)у в то время как в методе Хаусхолдера соответствующий результат имеет вид й\йх Поэтому если для нас критична ортонормированносгь, метод MGS следует приме¬ нять для вычисления ортонормированного базиса лишь в тех случаях, когда исходные векторы достаточно независимы. Пример 5.2.1. Применение модифицированного метола Грама-Шмидта к матрице Н ЧГ i-J’ с 6-разрядной десятичной арифметикой дает Г 1.00000 0 "1 Wi42]= 0.001 -707107 . L 0 0.707100 J Задачи 5J.I. Адаптируйте алгоритм QR-разложения методов Хаусхолдера на случай ленточной матрицы с нижней шириной ленты р и верхней шириной ленты д. 5.2.2. Модифицируйте алгоритм QR-разложсния методом Хаусхолдера гак, чтобы он вычислял разложение А = QL, где L нижняя треугольная, a Q ортогональная матрица. Считайте, что матрица А квадратная. Функция вычисления хауехолдерова вектора г = house (л) должна быть при этом переписана так, чтобы все компоненты вектора (/ — 2vtTlvrv)x^ кроме последней, равнялись нулю. 5.23. Модифицируйте алгоритм QR-разложекия методом Гиненса так, чтобы нули вносились в матрицу по диагоналям. То есть элементы обнуляются в порядке (m, 1), {т — I, I), (т, 2), (iт — 2, I), (м — 1, 2), (iт, 3) и т, д. 5JA. Адаптируйте алгоритм QR-разложсния методом быстрых вращений для случая трех- диагональной п х л-матрицы А. Считайте, что полдиагональ, диагональ и наддиагональ матрицы А хранятся вг(1:л- 1), и(1 :л),/(1— 1), соотвегственно. Организуйте вычисления таким образом, чтобы на место этих векторов записалась бы ненулевая часть матрицы Т 5l23. Пусть LeRm * ", m 5s п,-нижняя треугольная матрица. Покажите, как можно использо¬ вать матрицы Хаусхолдера Нп для нахождения такой нижней треугольной матрицы Lj eR" * ", что
204 Гл. 5. Ортогонализация и метод наименьших квадратов Подсказка: Для случая 6x3 второй шаг связан с нахождением такой матрицы #2, что и матрица А имеет полный ранг, то тт||Лх — b\\\ — \\d\\\ ~(vTd/\\v{\2)2. 5*2.7. Пусть ЛеК" * ”, D = diag (*/,,..., JjeR" х Л. Укажите, как построить такую ортогональ¬ ную матрицу Q, что матрица QTA — DQT = R является верхней треугольной. Не заботьтесь об эффективности - это просто упражнение на манипуляцию с QR-разложением. Замечания и литература к § 5.2 Идея использования преобразований Хаусхолдера для решения задачи наименьших квад¬ ратов была предложена в Householder A. S. (1958). “Unitary Triangularization of a Nonsymmetric Matrix”, J. ACM 5, 339-342. Проработка практических деталей была проведена в Businger P. and Golub G. Н. (1965). “Linear Least Squares Solutions by Householder Transfor¬ mations”, Numer. Math. 7, 269 76. См. также HACLA, pp. Ill -118. Golub G. H. (1965). “Numerical methods for Solving Linear Least Squares Problems”, Numer. Math. 7, 206 216. Основные ссылки по QR-разложению методом Гивенса включают Gentleman М. (1973). “Error Analysis of QR Decompositions by Givens Transformations”, Lin. Alg. and Its Appl. 10, 189-197. Givens W. (1958). “Computation of Plane Unitary Rotations Transforming a General Matrix to Triangular Form”, SIAM J. App. Math. 6, 26- 50. Обсуждение использования QR-разложсния для решения многих задач статистических вычис¬ лений можно найти в Golub G. Н. (1969). “Matrix Decompositions and Statistical Computation”, in Statistical Computa¬ tion, ed. Milton R.C. and Nelder J. A., Academic Press, New York, pp. 365-97. Как изменяется QR-разложсние при возмущении матрицы А? Этот вопрос исследован в Stewart G. W. (1977). “Perturbation Bounds for the QR Factorization of a Matrix”, SIAM J. Numer. Anal. 14, 509-518. Основной результат - изменения в Q и R ограничены произведением обусловленности А на относительное возмущение А. Различные аспекты процесса Грама - Шмидта обсуждаются в Abdelmalek N. N. (197i)_ “Roundoff Error Analysis for Gram-Schmidt Method and Solutions of Linear Least Squares Problems”, BIT 11, 345-368. Bjorck A. (1976b). “Solving Linear Least Squares Problems by Gram-Schmidt Orthogonalization”, Math. Comp. 20, 325- 328. QR-разложение матрицы с определенной структурой обычно само структурировано. См. Bojanczyk A. W., Brent R. P., and de Hoog F. R. (1986). “QR Factorization of Toeplitz Matrices”, Numer. Math. 49, 81- 94. x 0 0 ~ x 0 СГ x x 0 x x 0 xxx _ xxx X X 0 “ x 0 0 x x 0 x 0 0 _x X 0J Lx 0 0_ при условии, что строки 1 и 3 не изменяются. 5.2.6, Покажите, что если Ь =
5.3. Задача наименьших квадратов 205 5.3. Задача наименьших квадратов: случай полного ранга Рассмотрим задачу нахождения вектора л, удовлетворяющего уравнению Ах — = Ь, где матрица данных А еRmхп и вектор наблюдений be Rm заданы, причем m > п. Когда уравнений больше, чем неизвестных, мы говорим, что система А х = Ъ переопределена. Обычно переопределенная система не имеет точного решения, поскольку b должен принадлежать range (Л), являющемуся собственным подпрост¬ ранством Rm, Чтобы все же как-то решить задачу, попытаемся минимизировать || Ах — Ь\\р для некоторого подходящего р. Оптимальные решения будут различными в разных нормах. Например, если Л = [ 1 1 1]т, b = (Ьх Ь2 Ь3 )т, где Ьх ^ Ь2^ Ьъ^ 0, то можно проверить, что Р = 1 =>.vopr = A2, р = 2 ^>xopt = (bl + 62 + 63)/3, р= co=>xopt = (/>! + Ьъ)(2. Минимизация в 1-норме и в оо-норме затруднена тем, что функция/(л) = || Ах — Ь\\р не дифференцируема для этих значений р. Несмотря на это, в этой области был достигнут существенный прогресс, и для минимизации в 1-норме и в оо-норме имеется несколько хороших методик. См. Bartels, Conn, Sinclair (1978), Bartels, Conn, Charalambous (1978). В отличие от минимизации в произвольной р-норме, задача наименьших квад¬ ратов (задача LS) min \\Ах — Ь\\2 (5.3.1) .veR" лучше поддается решению по двум причинам: • у(jc) — ^||Ах — 6||2-дифференцируемая функция х, поэтому значение х в точ¬ ке минимума удовлетворяет градиентному уравнению Vy (х) = 0. Это урав¬ нение оказывается легко строящейся симметричной линейной системой, поло¬ жительно определенной, если А имеет полный столбцовый ранг. • 2-норма сохраняется ортогональными преобразованиями. Это означает, что мы имеем право искать такую ортогональную матрицу Q, что эквивалентная задача минимизации \\(QT А)х— (QT Ь)\\г решается «легко». В этом разделе мы проследим эти два подхода к решению для случая, когда А имеет полный столбцовый ранг. Будут подробно рассмотрены и сопоставлены методы, основанные на нормальных уравнениях и QR-разложении. 5.3.1. Следствия полноты ранга Пусть xeR", zeR\ aeR. Рассмотрим равенство ||А(х + az) — b\\\ = I\Ax — b\\\ + 2azT AT(Ax - b) + a2\\Az\\2, где y4eRwxwf be Rm. Если x является решением задачи LS (5.3.1), то должно выполняться АТ(Ах — b) = 0. В противном случае, взяв z = — Ат(Ах — b) и сделав а достаточно малым, мы сможем получить противоречащее неравенство \\А(х + + a z) — b\\2 < II Ах — b\\2. Можно также заключить, что если хих + az являются решениями задачи LS, то zenull(/4). Таким образом, если А имеет полный столбцовый ранг, задача LS имеет
206 Гл. 5. Ортогонализация и метод наименьших квадратов единственное решение xLS, удовлетворяющее симметричной положительно опреде¬ ленной линейной системе AtAxls = АТЬ. Составляющие ее уравнения называются нормальными уравнениями. Поскольку Vy(x) = Ат(Ах — Ь\ где \j/(x) = -\\Ах - Ь\\1У мы видим, что решение нормальных уравнений эквивалентно решению градиентного уравнения V у = 0. Назовем rLS = Ь ~~ Ах^$ минимальной невязкой и будем использовать обозначение РLS = \\AXzs ^ II2 для ее величины. Заметим, что если мало, мы можем «предсказать» b по столбцам А. До сих пор мы предполагали, что Л е Rm х " имеет полный столбцовый ранг. Это предположение будет отброшено в § 5.5. Однако даже если гапк(Л) = п, мы можем ожидать неприятностей в наших процедурах в случае, когда А почти неполно¬ ранговая. Оценивая качество вычисленного решения задачи LS, следует иметь в виду два важных вопроса: • Насколько близко к ги? + Насколько мало tLS = Ъ — A£t$ по сравнению с rLS = - Ax^l Относительная важность этих двух критериев меняется от приложения к приложе¬ нию. Во всяком случае, важно понимать, как возмущения А и Ь воздействуют на xLS и • Интуиция подсказывает нам, что если столбцы А почти линейно зависимы, эти величины могут оказаться весьма чувствительными к возмущениям. Чтобы внести ясность в эти вопросы, нам нужно распространить понятие обусловленности на прямоугольные матрицы. 5.3,2. Обусловленность прямоугольных матриц При анализе задачи наименьших квадратов естественно работать в 2-норме. Напомним (см. § 2.7.3), что в 2-норме обусловленность квадратной невырожденной матрицы равна отношению наибольшего сингулярного числа к наименьшему. Для прямоугольных матриц с полным столбцовым рангом мы примем это свойство за определение: /4eRmx", гапк(/0 = и=>х2(/0 = ^44т- Если столбцы А почти линейно зависимы, то и2(Л) велико. Следующий пример дает понять, что для плохо обусловленных задач LS их .решения и минимальные невязки весьма чувствительны к возмущениям. Пример 5.3.1. Пусть t 1 0 0 1 0 0 10“6 , ЬА = 0 0 >6 = 0 0 0 0 0 1(Г8 1 0
5 3. Задача наименьших квадратов 207 и пусть хls и <%is минимизируют \\Ах —Ь\\2 и \\(А + б А)х — {Ь + 6/>)Ц2 соответственно. Тогда Xls ~ [о. ’ [ 0.9999 -Ю4] ’ rLS L'J fu> = -0.9999-ИГ2 0.9999-10° Поскольку х2(Л} — 10б, мы имеем 0.9999-10* ^ х2 (Л)2 - -- Ю12-10‘8 Uuh Шг 11^1Д ~ rLS I 11*112 2 -:0.7070-10~2«x2(,4)J!^^= !0л- 10 ®. М»2 На примере 5.3.1 мы наблюдаем, что чувствительность xLS к возмущениям зависит, видимо, от ус2(А)2. В конце этого раздела мы разовьем теорию возмущений для задачи LS и применим ее к оценке процедур решения, основанных на нормальных уравнениях и QR-разложении. К описанию этих процедур мы сейчас переходим. 5.3,3. Метод нормальных уравнений Для решения задачи LS полного ранга наиболее часто используемая процедура- это метод нормальных уравнений. Алгоритм 5.3.1 (Нормальные уравнения). По матрице А е Rmхтакой, что rank(i4) = = и, и вектору beRm алгоритм вычисляет решение xLS задачи LS min \\Ах — £|| 2, где beRm. Вычислить нижний треугольник матрицы С = А 7 А, d=ATb Вычислить разложение Холецкого С = GGr. Решить систему Gy = dvi GTх^ = Алгоритм требует (т + «/3)«2 флопов. Подход с использованием нормальных уравнений удобен тем, что он опирается на стандартные алгоритмы: разложение Холецкого, перемножение матриц, умножение матрицы на вектор. В случае т » л привлекательно также ужимание т х «-матрицы данных А в существенно меньшую п х «-матрицу С = АТА, Займемся вопросом о точности вычисленного методом нормальных уравнений решения &lS . Для ясности предположим, что ошибки округления отсутствуют при формировании с = АтА и d= АтЬ. (В типичном случае используемые в этих вычислениях скалярные произведения вычисляются в режиме накопления, так что наше допущение не является резким отклонением от истины.) Из уже известных нам сведений о численных свойствах разложения Холецкого (ср. § 4.2.7) следует, что (АТА + E)XLS = ATb, где ||£||2 * и|Мт||2 ||Л||2 « и \\АтА\\2, так что мы можем ожидать ll*tS-*Ls!l2 ! лТ л\ / л\2 — *их2(АГА) = ии2(Л)2. I1*lsII2 (5.3.2)
208 Гд, 5. Ортогонализация и метод наименьших квадратов Другими словами* точность вычисленного методом нормальных уравнений решения зависит от квадрата числа обусловленности. Это, как видно, согласуется с примером 5.3.1. Дальнейшие уточнения см § 5.3.9. Пример 5.3.2. Следует иметь в виду, что формирование АТ А может повлечь за собой серьезные потери информации. Пусть 1 1 2 A = 10 3 0 * b = НГ 5 0 10 3 1СГ3 Тогда к2 (А)* 1.4-Ю3, = (1 1)г, pls = 0. Выполнение метода нормальных уравнений в десятичной арифметике с усечением (/ — 6) вызывает ошибку при делении во время процесса, так как матрица fi[AT А) [: :] является вырожденной. С другой стороны, в семиразрядной арифметике с усечением %LS = (2.000001, ())т и ||Xu - Xut \: 2/ II-TLS|| 2 « u(/I)2. 5.3.4. Решение задачи LS через QR-ртыожение Пусть задана матрица у4еНт*л, тхя, и вектор £eRm. Предположим* что гатрица QeRm*my что матрица Г R. П п (5.3.3) m — п вычислена такая ортогональная матрица QeRm*m является верхней треугольной. Если QTb ТО -М " ld\ m-п \\Лх - Ы1 = \\QTAx - Qrb\\z = ll/^t X - c\\l + ll^lli для любого xeR". Ясно, что если rank(yf) = rankfRj) = л, то Хщ определяется из верхней треугольной системы /^Xls — с. Заметим, что PbS = 11^11 2 ‘ Мы делаем вывод, что задача LS полного ранга может быть легко решена, если мы вычислили QR-разложение матрицы А. Детали зависят от того, какая именно процедура QR-разложения была использована. Если используются матрицы Хаус¬ холдера и QT применяется к Ь в факторизованном виде, то мы получаем Алгоритм 5.3.2 (Решение задачи LS преобразованиями Хаусхолдера)* По матрице Ае Rmxn полного столбцового ранга и вектору b€ R* следующий алгоритм вычис¬ ляет вектор x^eR”, такой, что ||/1.*ls — b\\2 достигает минимума. Применив алгоритм 5.2.1, записать на место А ее QR-разложение. for j = 1:/? {Применить j-t преобразование Хаусхолдера.} v(j) = 1; t?(> + I :m) = A(j 4- 1 :mj) b{j:m) = tQw.house(b{j:m), v{j:m)) end Решить систему /?(1:я, l = /?(1 :n) обратной подстановкой.
5.3. Задача наименьших квадратов 209 Этот метод решения задачи LS полного ранга требует 2п2 (т — п/3) флопов. При этом О(тп) флопов на модификацию Ь и 0(/?2) флопов на обратную подстановку несущественны по сравнению с объемом работы, требующимся для факторизации матрицы А. Можно показать, что вычисленное хгявляется точным решением задачи min \\(А + &А)х-{Ь + ЬЬ)\\г, (5.3.4) где ||5 А\\р < (6т - Зп + 41) ли \\А\\Р + 0(и2} (5.3.5) и \\ЪЬ\\2 < (6т - Зп + 40) пи \\Ь\\2 + О (и2). (5.3.6) Эти неравенства устанавливаются в книге Лоусона и Хенсона (SLS, pp. 90 и далее). Они показывают, что кщ удовлетворяет «близкой» задаче LS. (Мы не можем обратиться к относительной ошибке в не имея теории возмущений для задачи LS, о которой (теории) мы будем говорить ниже.) Отметим, что аналогичные результаты имеют место при использовании преобразований Гивенса для QR-раз¬ ложения матрицы. 5.3.5. Срыв в случае «почти неполноранговостк» Так же как и метод нормальных уравнений, метод Хаусхолдера решения задачи LS аварийно обрывается на стадии обратной подстановки, если rank(/l)<n. С численной точки зрения, неприятностей можно ожидать при ъг{А) = х2(R) ^ 1 / п. Напомним, что в методе нормальных уравнений завершение факторизации Холец¬ кого проблематично уже при к2(Л) порядка )/ч/и. (См. пример 5.3.2.) Отсюда вывод у Лоусона и Хенсона (SLS, рр 126 127), что при фиксированной машинной точности ортогонализация Хаусхолдера позволяет решать более широкий класс задач LS. 5.3.6. О методе MGS Обратим внимание на то, что в отличие от ортогонализации Хаусхолдера метод MGS не строит ортонормированный базис для range (А). Тем не менее добываемой в нем информации достаточно для решения задачи LS. Именно, MGS вычисляет разложение A = QlR}9 где Q,f=RrrtX,? имеет ортонормированные столбцы, а RjSR**" верхняя треугольная. Тем самым система нормальных уравнений (АТ А)х *= АТЪ приводится к верхнегреугольному виду Rx х = Q]Ь. Метод MGS может быть легко приспособлен к решению задачи LS и так же устойчив, как и метод Хаусхолдера. См. Bjorck (1967b). Однако затраты в MGS чуть выше, поскольку он все время работает с m-векторами, в то время как в QR-разло¬ жении Хаусхолдера длина вектора уменьшается по ходу процесса. 5.3.7. Решение задачи LS методом быстрых вращений Быстрые вращения также могут быть использованы для решения задачи LS. Допустим, что матрица МтМ = D диагональная, а
210 Гл. 5. Ортогонализация и метод наименьших квадратов верхняя треугольная. Если то IIАх - Ь\\\ = \\D'xl2MTAx - D~inMTb\\l = для любого xeR\ Ясно, что получается решением невырожденной верхней треугольной системы st х = с. Можно показать, что вычисленное таким путем решение $i$ является точным решением близкой задачи LS в смысле (5.3.4)-(5.3.6). Это может показаться удивительным, поскольку по ходу вычислений могут появиться большие числа. Элемент масштабирующей матрицы D может удваиваться после каждого шага метода быстрых вращений. Однако увеличение элементов D должно быть точно скомпенсировано увеличением элементов Л/, так как матрица D ~1/2 М ортогональна на протяжении всего вычисления. Именно этот феномен позволяет благополучно провести анализ ошибок. Однако, как обсуждалось в § 5.1.13, возможность роста элементов требует постоянного контроля за матрицей D для избежания переполнения. Ввиду нетри¬ виальных издержек такого контроля итоговый алгоритм будет, вероятно, медлен¬ нее, чем подход Хаусхолдера, и, безусловно, более сложен в реализации. 5.3.8, Чувствительность задачи LS к возмущениям Здесь мы построим теорию возмущений, которая поможет нам провести срав¬ нение метода нормальных уравнений и QR-разложения для решения задачи LS. Нижеследующая теорема изучает воздействие изменений в А и Ь на решение задачи LS и соответствующую невязку. Тем самым выявляется обусловленность задачи LS. В ходе анализа нам понадобятся два легко устанавливаемых факта. Эти равенства можно проверить, воспользовавшись сингулярным разложением. Теорема 5.3.1. Пусть х, г, Jt, f удовлетворяют \\Ах — b\\2 — min, г = b — Ах, IIU + 8 А)$ - (Ь + &Ь)\\2 * min, г - (Ь + 6*) - (А + SA)Jt, где А и ЪА принадлежат Rmx", т^п, 0 ФЬ и ЪЬ принадлежат Rm. Если \\А\\1\\(АТА)~'\\2 = к2(А)\ (5.3.7) и где р„ = (|у4х„ -6||2, то
S3. Задача наименьших квадратов 211 Н*-*1Ь 11*11 ~ < в { + tg(0)x2(,4)2 } + 0(е2), (5.3.8) <е(1 +2x2M))min(l,m-«) + 0(e2). (5.3.9) Доказательство. Определим Е и/ равенствами £=8Л/е, / =5&/е. По предполо¬ жению ||8а4||2 < <Tn(i4), так что по теореме 2.5.2 имеем rank (Л 4- tE) — п для всех /е[0, с]. Отсюда следует, что решение x(t) уравнения (А + tE)T(A + tE) x(t) = (А + tE)T (b + tf) (5.3.10) непрерывно дифференцируемо для всех fe[0, е]. Поскольку х = *(()), jf = x(e), имеем * = х4-Ех(0) + О(е2). Предположения Ь ф 0 и sin(0) Ф 1 гарантируют, что х отличен от нуля, так что <5.з..о И*11а 11*11 а Чтобы оценить ||х(0)||2, продифференцируем (5.3.10) и положим f = 0. Это дает ЕТАх + ЛтЕх + АтАх( 0) = ATf+ ЕТЬ, т. е. х(0) = (АТА)~1 AT(f- Ex) + (ATA)-lETr. (5.3.12) Подставив это в (5.3.11), беря соответствующие нормы и используя легко прове¬ ряемые неравенства ||/||2 < ||6||2, ||£||2 < ||v41|2, получаем Pls \\л\\2\\х\\2 Так как Ат(Ах — Ь) = 0, Ах ортогонален к Ах — Ь, поэтому ||6 -Ах\\22 4- \\Лх\\1 = \\Ь\\22. Таким образом, \\Л\\11|*«| >H*llt-p2s. откуда, используя (5.3.7), II*- *11 2 И*Н3 {КаМ) (^<в>+1)+Кг<",>г }+ 0(е1) Тем самым (5.3.8) доказано. Чтобы доказать (5.3.9), введем дифференцируемую вектор-функцию г(/): г(Г) = (Ь 4- tf) — (А + tE)x(t) и заметим, что г = г(0) и/* = г(б). Используя (5.3.12), можно показать, что г(0) = (1-А(АтА)~1Ат) (/- Ех)-А(АтАУ1Етг.
212 Гл. 5. Ортогонализация и метод наименьших квадратов Поскольку \\f — г||2 = е ||г(0)||2 + 0(е2), имеем ijzih^mh+o{^ т2 I*** <е| \\I-A(ATA)-lAT\i2[l + MJlMl) + + \\А(АтА)~1\\2 МИгЩ^} +0(е2). Неравенство (5.3.9) следует теперь из того, что IMIU 1*12 = МИ2 М+*>||2<х2(>01|/>||2, PLs=UI-A(ATA)-iAT)b!a2^Ul-A(ATA)-iATn2 ||Л||2 и ||(/-(^T/l)_‘:^7'||2 = min(m-M, 1). Интересной отличительной чертой оценки (5.3.8) является множитель tg(0)x2(/l)2 = —р=^==т Х2(Л)2. ч/11*111 - рЬ Таким образом, в задачах с ненулевой невязкой мерой чувствительности х^ к воз¬ мущениям служит квадрат числа обусловленности. По контрасту с этим чувстви¬ тельность самой невязки зависит от х2 (4) только лишь линейно. Все это подтверж¬ дается примером 5.3.1. 5.3.9. Сравнение метода нормальных уравнений и QR-разложення Поучительно провести сравнение метода нормальных уравнений и QR-разложе- ния для решения задачи LS. Вспомним ряд важных моментов проведенного обсуждения: • Чувствительность решения задачи LS к возмущениям примерно пропорцио¬ нальна величине к2(Л) + р1^и2(Л)2. • Метод нормальных уравнений дает Л^, относительная ошибка которого зависит от квадрата числа обусловленности. • Подход, использующий QR-разложение преобразованиями Хаусхолдера, ре¬ шает близкую задачу LS и поэтому дает решение, относительная ошибка которого примерно равна и(и2(Л)+ р^х2(у4)2). Таким образом, мы можем заключить, что если р^ мало, а х2(Л) велико, метод нормальных уравнений не решает близкую задачу и поэтому полученное им решение будет, как правило, менее точным, чем при хаусхолдеровом подходе. Напротив, оба метода дадут примерно в одинаковой степени неточные результаты при применении к плохо обусловленным задачам с большими невязками. Упомянем напоследок два других фактора, играющих роль в споре QR против нормальных уравнений: • Арифметические затраты на решение нормальных уравнений при т»п примерно вдвое меньше; слабее также и требования к объему памяти.
5.3. Задача наименьших квадратов 213 • Хаусхолдерово QR-разложение применимо к более широкому классу матриц, потому что процесс Холецкого для АТ А срывается еще до начала обратной подстановки для QT А = R. Уж по крайней мере это обсуждение должно вас убедить, как труден бывает выбор «верного» алгоритма! Задачи 5.3.1. Пусть АтАх=АтЬу [Ат А + F)$ = Ат Ь, 2 ||Т||2 а„(/1)2. Покажите, что если г = — b— Ах, г — b — А£, то t — г ~(/ — А(АТА + F)~1 Ат)Ах% и, как следствие этого. 5.3.2. Пусть j4€Rmx", m > л, yeR"V Построим матрицу А = [A v]eRmxl;, + ll Покажите, что <у1(А)'^ c*i(A} и an+i (i4) ^ о„(А). Тем самым число обусловленности разве что возрастает при добавлении к матрице еще одного столбца. 5.3.3. Пусть /4eRmxn, weR". Определим Покажите, что оп(й) > сгп(/4) и а, (Я) ^ yj \\А || \ + || w|| \ • Таким образом, при добавлении еще одной строки число обусловленности матрицы может как увеличиться, так и уменьшиться. 5.3.4. Постройте алгоритм решения задачи LS, использующий метод MGS. Дополнительных двумерных массивов не потребуется, если записывать г $ на место ai} при / ^ j и вычислять ц] Ъ по мере построения ортонормированных qx. 5.3.5 (Cline 1973). Пусть /leRmx" имеет ранг л, и гауссово исключение с частичным выбором ведущего элемента используется для вычисления разложения РА = LU, где LeRmxn нижняя треугольная матрица с единичной диагональю, 1/еНихп верхняя треугольная матрица, i>eRmxm матрица перестановок. Объясните, как можно использовать разложение из 5.2.5 для нахождения вектора zeR", минимизирующего \\Lz — РЬ\\2. Покажите, что если Ux — z, то || Ах — Ь || 2 достигает минимума. Покажите, что этот метод решения задачи LS с точки зрения количества операций лучше, чем хаусхолдерово QR-разложение, если m < 5/3 п. 5.3.6. Матрица С = (АТА)~\ где гапк(Л) = л, часто возникает во многих статистических приложениях и известна под названием ковариационной матрицы. Допустим, что получено разложение А = QR. (а) Докажите С = (Ят/?)~1. (Ь) Дайте алгоритм вычисления диагонали матрицы С, требующий л3/3 флопов, (с) Покажите, что где Сл = (5Т S)-1. (d) Используя (с), постройте алгоритм, записывающий верхнюю треуголь¬ ную часть С на место верхней треугольной части R. Ваш алгоритм должен требовать 2л3/3 флопов. Замечания и литература к § 5.3 Мы ограничились аппроксимацией наименьшими квадратами, но это не значит, что мы против минимизации в других нормах. Бывают случаи, когда целесообразно минимизировать \\Ах — Ь\\р для р = 1 и оо. Некоторые алгоритмы для этого описаны в Barrodale I. and Roberts F.D.K. (1973). “An Improved Algorithm for Discrete L1 Linear Approxi¬ mation”, SIAM J. Num. Anal. 10, 839-848. Barrodale I. and Phillips C. (1975). “Algorithm 495: Solution of an Overdetermined System of Linear Equations in the Chebychev Norm”, ACM Trans. Math. Soft. 1, 264-270. Bartels R. H., Conn A. R., and Sinclair J. W. (1978). “Minimization Techniques for Piecewise Difle- M II 2 (\+vTClv)/a —vTCJ a — Cxv/ a C\ ]
214 Гл. 5. Ортогонализация и метод наименьших квадратов rentiable Functions: The Solution of an Overdetermined Linear System”, SIAM J. Num. Anal. 15, 224-241. Bartels R.H., Conn A, R. and Charalambous С (1978). “On Cline’s Direct Method for Solving Overdetermined Linear Systems in the Le Sense”, SIAM J. Num. Anal. 15, 255-270. Cline A. K. (1976a). “A Descent Method for the Uniform Solution to Overdetermined Systems of Equations”, SIAM J. Num. Anal. 13, 293-309. Две замечательные книги по линейной задаче наименьших квадратов-это Лоусон и Хенсон (SLS) и Bjorck А. (1988) Least Squares Methods: Handbook of Numerical Analysis Vol. 1, Solutions of Equations in Rw, Elsevier North Holland. Гауссовы преобразования для решения задачи LS заслужили некоторое внимание ввиду относительной дешевизны их использования по сравнению с матрицами Хаусхолдера и Ги¬ венса. См. Cline А. К. (1973). “An Elimination Method for the Solution of Linear Least Squares Problems”, SIAM J. Num. Anal. 10, 283-289. Peters G. and Wilkinson J. H. (1970). “The Least Squares Problem and Pseudo-Inverses”, Comp. J. 13, 309-16. Plemmons R.J. (1974). “Linear Least Squares by Elimination and MGS” J. Assoc. Comput. Mach. 21, 581-585. Вопросы обусловленности задачи LS обсуждаются в Golub G.H. and Wilkinson J. H. (1966). “Note on the Iterative Refinement of Least Squares Solution”, Numer. Math. 9, 139-48. Saad Y. (1986). “On the Condition Number of Some Gram Matrices Arising from Least Squares Approximation in the Complex Plane”, Numer. Math. 48, 337-348. Van der Sluis A. (1975). “Stability of the Solutions of Linear Least Squares Problem”, Numer. Math. 23, 241-554. См. также Bjorck A. (1987). “Stability Analysis of the Method of Seminormal Equations”, Lin. Alg. and Its Applic. 88/89, 31-48. «Полу нормальные» уравнения-это RT Rx = AT b, где A = QR. В этой статье показано, что решение пол у нормальных уравнений дает приемлемое решение задачи LS, если выполнить один шаг итеративного уточнения с фиксированной точностью. Фортранные программы для решения задачи LS преобразованиями Хаусхолдера можно найти в Linpack, гл. 9. Реализация метода MGS решения задачи LS на алголе приведена в Bauer F.L. (1965) “Elimination with Weighted Row Combinations for Solving Linear Equations and Least Squares Problems”, Numer. Math. 7, 338-52. См. также HACLA, 119-133. Задачи наименьших квадратов часто имеют специальную структуру, которую, конечно же, следует использовать. Из многих статей на эту тему отметим две: Сох М. G. (1981) “The Least Squares Solution of Overdetermined Linear Equations having Band or Augmented Band Structure”, IMA. J. Numer. Anal. 1, 3-22. Cybenko G. (1984). “The Numerical Stability of the Lattice Algorithm for Least Squares Linear Prediction Problems”, BIT 24, 441-455. Использовать матрицы Хаусхолдера для решения разреженных задач LS следует с осторож¬ ностью, не допуская чрезмерного заполнения. Литература на эту тему включает DuffI.S. and Reid J. К. (1976) “A Comparison of Some Methods for the Solution of Sparse Overdetermined Systems of Linear Equations”, J. Inst. Math. Applic. 17, 267-280. Gill P. E. and Murray W. (1976). “The Orthogonal Factorization of a Large Sparse Matrix”, in Sparse Matrix Computations, ed Bunch J. R. and Rose D.J., Academic Press, New York, pp. 177-200. Kaufman L. (1979). “Application of Dense Householder Transformations to a Sparse Matrix”, ACM Trans. Math. Soft 5, 442-451. Reid J.K. (1967) “A Note on the Least Squares Solution of a Band System of Linear Equations by Householder Reductions”, Comp. J. 10, 188-189.
5 А. Другие ортогональные разложения 215 Хотя отражения Хаусхолдера более эффективны для вычисления QR-разложения, в некото¬ рых контекстах выгоднее использовать матрицы Гивенса. Если, к примеру, А разрежена, то аккуратное применение вращений Гивенса может свести заполнение к минимуму. См. DufTI. S. (1974). “Pivot Selection and Row Ordering in Givens Reduction on Sparse Matrices", Computing 13, 239-248. George J. A. and Heath M.T. (1980). “Solution of Sparse Linear Least Squares Problems Using Givens Rotations”, Lin. Alg. and Its Applic. 34, 69-83. 5.4. Другие ортогональные разложения Если матрица А неполного ранга, то QR-разложение необязательно дает базис подпространства range (/1). Эта проблема может быть решена, если перед QR-разло- жением переставить столбцы матрицы А, т.е. АП = QR, где П-матрица пере¬ становок. Данные в матрице А могут быть сконцентрированы еще больше, если разрешить умножение справа на подходящую ортогональную матрицу Z:QTAZ = Т. Для выбора Q и Z имеются интересные возможности, которые, наряду с QR-разложе¬ нием с выбором ведущего столбца, будут рассмотрены в этом разделе. 5*4.1. Случай неполного ранга: QR с выбором ведущего столбца Если АеRmxn и rank(Л)<п, то QR-разложение необязательно строит орто¬ нормированный базис подпространства range (А). Например, если А состоит из трех столбцов и -ее QR-разложение, то гапк(Л) = 2, но ranged) не совпадает ни с одним из подпространств span {ql9 q2}> span {qt, qz}9 span {q2> q3}. К счастью, существует простая модификация хаусхолдеровой процедуры QR- разложения (алгоритм 5.2.1), дающая ортонормированный базис подпространства range (А). Модифицированный алгоритм вычисляет разложение где г = rank(А\ Q ортогональна, Яц-верхняя треугольная невырожденная матрица, П- матрица перестановок. Если ввести разбиения по столбцам А П = = [аС1, ... , и Q = [qlt 0Ж], то для к = 1 :п имеем: откуда range(^4) = span,qr}. Матрицы Q и П являются соответственно произведениями матриц Хаусхолдера и матриц элементарных перестановок. Допустим, что для некоторого к мы уже вычислили матрицы Хаусхолдера Я*,... , Нк_1 и матрицы перестановок Пх, ... , 1 1 1 А = [а, а2 а3] = lqt q2 ?3] 0 О 1 0 О 1 (5.4.1) г п — г min {г, к} а<л= £ rik 4fespan {?, qr) ,
216 Гл. 5. Ортогонализация и метод наименьших квадратов Пк_!, такие, что (5.4.2) = Лс*-п = (/ ж\21 к — 1 п — к + 1 R\ ] к-I т — к + 1 где невырожденная верхняя треугольная матрица. Пусть теперь /^£2-1) = = [г£*-1),..., zj,*_1)]-разбиение по столбцам, и пусть р-наименьший индекс, удовлетворяющий к < < л, такой, что Заметим, что если к — 1 = rank (Л), то этот максимум равен нулю, и процесс закончен. В противном случае пусть П* - единичная п х «-матрица с перестав¬ ленными р-м и к-м столбцами, и найдем такую хаусхолдерову матрицу Ик, что из R{k) = HkRik~l)Ylk следует Rik)(k + I :mf к) = 0. Иными словами, П* переставляет наибольший столбец из R%2 1) в ведущую позицию, а Нк обнуляет все его поддиагональные компоненты. Нормы столбцов не нужно будет вычислять заново на каждом шагу, если воспользоваться свойством выполняющимся для любой ортогональной матрицы QeRiXJ. Это уменьшает накладные расходы, связанные с выбором ведущего столбца, с 0{тп2) до О(тп) флопов, так как мы сможем вычислять новые нормы столбцов через старые, например, ||г(Л||2 = ||z°“1' ||| - rjy. Собирая вместе полученные результаты, мы приходим к следующему алгоритму (Businger, Golub (1965)): Алгоритм 5.4.1 (Хаусхолдерово QR-разложение с выбором ведущего столбца). По матрице А е Rm х п, т ^ л, следующий алгоритм вычисляет г = rank (А ) и разложение (5.4.1), где Q =#! ... НГУ П = Пг ... П,. На место верхнего треугольника матрицы А записывается верхний треугольник матрицы R; компоненты j + I: т /то хаус- холдерова вектора хранятся в A(j + 1 Матрица перестановок П закодирована в целочисленном векторе piv таким образом, что П; есть единичная матрица с переставленными строками j и piv(j), for j = 1: п c(j) = A(l:m,j)T A(l:m, j) end г = 0; т = max {с(Д , c(«)} Найти наименьшее fc, I ^ к ^ «, такое, что с (к) ~ т while т > 0 г = г + 1 piv (г) = к; А(\:т, г)<г+А{\:т> к); с(г)<г+с(к) v(r:m) =house(.4(r:m, г)) A(r:m, r:n) = row.house(^(r:m, r:«), r(r:m)) A{r + 1: m, r) = v(r + 1: m) for i = r + 1: n ||z^'1,||2 = max {||zj* l)||2 114* ‘Ml2 }• (5.4.3) с(/) = с(0-Л(г, j)2 end
5.4. Другие ортогональные разложения 217 if г < п т = max {г(г 4- I),, г(л)} Найти наименьшее ку г + 1 < к < п, такое, что с(к) — т. else т-0 end end Этот алгоритм требует 4тлг — 2г2 (т + п) 4- 4гэ/3 флопов, где г = гапк(Л). Как и в процедуре без выбора ведущего столбца, т.е. в алгоритме 5.2.1, ортогональная матрица Q хранится в факторизованном виде в поддиагональной части А. Прнмер 5.4.1. Если алгоритм 5.4.1 применить к А = 1 2 3 1 5 6 1 8 9 1 11 12 то П — [еъ е2 ej, и с точностью до трех значащих цифр мы получаем AH=QR= -0.182 -0.816 0.514 0.191 -0.365 0.408 -0.827 0.129 0.548 0.000 0.113 -0.829 -0.730 0.408 0.200 0.510 -16.4 -14.600 0.0 0.816 0.0 0.000 -1.820 -0.816 0.000 5.4.2. Полные ортогональные разложения Вычисленная алгоритмом 5.4.1 матрица R может подвергнуться дальнейшему приведению, если на нее умножить подходящую последовательность матриц Хаус¬ холдера. В частности, можно использовать алгоритм 5.2.1 для вычисления z-■21=[«;]-[то]<5А4) где ^-преобразования Хаусхолдера, Т\х - верхняя треугольная матрица. Отсюда следует, что qtAZ-T.[TX J (5.4.5) г п — г где Z= IlZj ... Z,. Всякие разложения такого рода мы будем называть полными ортогональными разложениями. Заметим, что null (Л) = range (Z( 1 :п, г + 1://)). См. задачу Р5.2.5 по поводу деталей учета структуры в (5.4.4). 5.4.3. Двухдиагонализация Пусть AeRmxn, т^п. Мы покажем, как вычислить такие ортогональные матрицы U(m х т) и К(« х п), что
218 Гл. 5. Ортогонализация и метод наименьших квадратов UTAV= dt л о О d2 f2 О ... О ... о о *4-1 Л-i о <4 (5.4.6) Каждая из матриц U ~ Uх ... Un и V— Vx дение матриц Хаусхолдера: Vn~2 может быть найдена как произве¬ X X X X X X X X X X X X Vj} 0 X X X X X X X 0 X X X X X X X 0 X X X X X X X 0 X X X X X 0 0 ‘ X X 0 0 “ 0 X X X У*Л 0 X X X 0 X X X 0 0 X X 0 X X X 0 0 X X 0 X X X 0 0 X X ла X X 0 0 X X 0 0 ■ 0 X x 0 0 X X 0 0 0 X X 0 0 X X 0 0 X X 0 0 0 X 0 0 X X _ 0 0 0 X - X X 0 0 ' 0 X X 0 Uax 0 0 X X 0 0 0 X 0 0 0 0 В общем, Uk вносит нули в /с-й столбец, a Vk обнуляет нужные элементы к-й строки. В итоге мы имеем Алгоритм 5.4.2 (Двухдиагонализация Хаусхолдера). По матрице AeRm+n, п, следующий алгоритм переписывает две верхние диагонали А двумя диагоналями матрицы UTAV=B, где В-верхняя двухдиагональная матрица, U = Ul., Un9 V= Vx ... Vn-2- Значимая часть хаусхолдерова вектора матрицы Uj хранится в A(j + 1 :m, 7), а матрицы Vj-в А (j, j 4-2: л). for j = 1 :л t?(l :m) = house(y4(y:m, 7)) A(j:m, j:n) = row.house (A(j:m, j:n)y v(j:m)) A(j+ I :m, 7) « r(7 + l:w) if j < и - 2 r(7 + 1:«) = house (A(7. 7 + l*«)r) A{j\m,j + 1:n) = coLhouse (A(j:m,j+ l:w), v{J + 1 :/t)) ^(7,7 + 2:л) =* v(j + 2:л)т end end
5.4. Другие ортогональные разложения 219 Этот алгоритм требует 4т п2 — 4и3/3 флопов. Впервые двухдиагонализация была описана в Golub, Kahan (1965) с использованием именно этой методики. Если желательно получить матрицы Us и Vs в явном виде, то их можно накопить, затратив соответственно 4т2п — 4л3/3 и 4л3/3 флопов (ср. § 5.1.6). Упомянем еще, что двухдиагонализация матрицы А имеет отношение к трехдиагонализации мат¬ рицы АТА. См. § 8.2.1. Пример 5.4.2. Применение алгоритма 5.4.2 к матрице А = 1 2 3 4 5 6 7 8 9 10 11 12 дает с точностью до трех значащих цифр 5 = 12.8 21.8 0 1.00 0.00 0.00 0 2.24 -0.613 0.00 -0.667 -0.745 0 0 0 0.00 -0.745 0.667 0 0 0 О.- -0.0776 -0.833 0.392 -0.383 -0.3110 -0.451 -0.238 0.802 -0.5430 -0.069 0.701 -0.457 -0.7760 0.312 0.547 0.037 5.4.4. R-двухдиагонализация При т»п более быстрый метод двухдиагонализации получится, если перед применением алгоритма 5.4.2 привести матрицу А к верхнетреугольному виду. Конкретно, допустим, что мы вычислили такую ортогональную матрицу Q eRm х т, что матрица «гЧ?] верхняя треугольная. Мы двухдиагонализуем квадратную матрицу Rx, UTRRt F= Вх. Здесь UR и V-ортогональные п х п-матрицы, /^-верхняя двухдиагональная п х л-матрица. Обозначив V — (MiagfC/*, /т_я), получим, что 17^-['■]-» есть двухдиагонализация матрицы А. Идея этого метода двухдиагонализации упомянута у Лоусона и Хенсона (SLS, р. 119) и проанализирована более детально в Chan (1982а). Мы будем именовать этот метод /?-двухдиагонализацией. Сравнивая его затраты флопов (2тп2 + 2и3) с затра¬ тами алгоритма 5.4.2, мы видим, что при т ^ 5л/ 3 он требует меньшего (приблизи¬ тельно) количества вычислений.
220 Гп. 5. Ортогонализация и метод наименьших квадратов 5.4.5. Сингулярное разложение и его вычисление Следующий за двухдиагонализацией матрицы А шаг алгоритма Голуба - Райнша вычисления SVD заключается в аннулировании надциагональных элементов матри¬ цы В. Это итерационный процесс, осуществляемый алгоритмом, описанным в Golub, Kahan (1965). К сожалению, мы должны отложить обсуждение этой итерации до § 8.3, так как оно требует понимания симметричной проблемы собственных значений. Здесь достаточно сказать, что этот итерационный процесс вычисляет ортогональные матрицы Uz и Гг, такие, что VIBVZ = X = diag(a1,..., а„)еГхл Положив U = UBUZ и V=VBVi, мы видим, что UTAV=Z есть сингулярное разложение матрицы А. Объем вычислений, связанных с этой частью алгоритма, зависит от того, насколько много мы хотим знать о SVD. Например, при решении задачи LS никогда не требуется явно формировать UT; достаточно лишь умножать ее на b по ходу процесса. Для других приложений требуется только матрица U1 = £/(:, \:п). Всего возможно шесть вариантов; суммарные затраты SVD-алго¬ ритма для каждого случая приведены в таблице ниже. Поскольку возможны две схемы двухдиагонализации, мы приводим подсчет числа операций в двух столбцах. При двухдиагонализации по алгоритму 5.4.2 получается SVD-алгоритм из Golub, Reinsch (1970), а при использовании /^-двухдиагонализации мы получаем алгоритм R-SVD, детально описанный в Chan (1982а). Сравнивая столбцы нашей таблицы, содержащие приближенные оценки объема работы, мы заключаем, что подход R-SVD более эффективен, кроме случая т % л. Требуется SVD Голу5а - Рейнча Я-SVD Е Е, V £,// Е,1/, V ЕД/,, V 4mn2 — 4п3/3 4тп2 + 8п3 4гл2п — 8mn2 14mn2 — 2n3 4m2n + 8mn2 + 9n3 14mn2 + 8n3 2mn2 + 2n3 2mn2 + lln3 4m2n + 13n3 6mn2 -|- lln3 4 m2n + 22n3 6mn2 + 20n3 Задачи 5.4.1. Пусть 4еИт*Л, где т < п. Приведите алгоритм вычисления разложения UTAV=IB 0], где В верхняя двухдиагональная т х «-матрица. (Подсказка: используя матрицы Хаусхол¬ дера, приведите А к виду х х 0 0 0 0 0 х х 0 0 0 0 0 х х 0 0 ’ 0 0 0 х х 0 а затем вытесните элемент (ш, т-1-1) вверх по (т + 1) = у столбцу, действуя справа враще¬ ниями Гивенса.) 5.4.2. Найдите эффективный способ двухдиагонализации верхней треугольной п х «-матрицы с использованием вращений Гивенса.
5.5. Задача LS неполного ранга 221 5.4.3. Покажите, как привести к верхнему двухдиагональному виду трехдиагональную мат¬ рицу TeR'1*'1, используя вращения Гивенса. 5.4.4. Пусть AeVLm*n, и пусть О Ф v удовлетворяет \\Av\\2 = 6я(Л)||г||2* Пусть П-матрица перестановок, такая, что из Пт v = w следует |ип| = IMI^. Покажите, что если А П = QR- Q R-разложение матрицы А П, то |гии| ^ у/по„(А). Таким образом, всегда существует такая перестановка П, что QR-разложение матрицы АП «проявляет» близость к неполноте ранга. 5.4.5 Пусть даны .v, jeRm и GeRmxm, причем Q ортогональна. Покажите, что если Ст* = Га1 1 , <2Г>=ГР1 V L и J m — 1 L гJ т— 1 то иТv= хту — ар. 5.4.6. Пусть даны A = [я4,.. ., ] е Rm х " и 6 е Rm. Для любого подмножества столбцов А {ас , ..., аСк} определим res[^Ci,..., аСк\ = min ||[ос1 аСк] л -Ь\\2. Опишите альтернативную процедуру выбора ведущего столбца для алгоритма 5.4.1, такую, что если в окончательном разложении QR = АП — [aCi,... , ас ]. то для к — 1 \ п res[fltj,..., acJ = min res [лГ1,..., aCk_r ас ]. Замечания и литература к § 5.4 Аспекты полного ортогонального разложения обсуждаются в Golub G. Н. and Pereyra V. (1976). “Differentiation of Pseudo-Inverses, Separable Nonlinear Least Squares Problems and Other Tales”, in Generalized Inverses and Applications, ed. M. Z, Nashed, Academic Press, New York, pp. 303 -324. Hanson R.J. and Lawson C. L. (1969). “Extensions and Applications of the Householder Algorithm for Solving Linear Squares Problems”, Math. Comp. 23, 787-812. Wedin P. A. (1973). “On the Almost Rank-Deficient Case of the Least Squares Problem”, BIT 13, 344 354. Вычисление этого разложения детально описано в Businger P. A. and Golub G. Н. (1969). “Algorithm 358: Singular value Decomposition of the Complex Matrix”, Comm. ACM 12, 564 565. Chan T. F. (1982). “An Improved Algorithm for Computing the Singular Value Decomposition”, ACM Trans. Math. Soft. 8, 72-83. Golub G. H. and Kahan W. (1965). “Calculating the Singular Values and Pseudo-Inverse of a Matrix”, SIAM J. Num. Anal. 2, 205-224. Golub G. H. and Reinsch C. (1970). “Singular Value Decomposition and Least Squares Solutions”, Numer. Math. 14, 403 -420. См. также HACLA, pp. 134-151. Любопытный подход к оценке ранга, использующий QR с выбором ведущего столбца и оценку обусловленности, обсуждается в Chan Т. F. (1987). “Rank Revealing QR Factorizations”, Lin. Agl. and Its Applic. 88/89, 67-82. 5.5. Задача LS неполного ранга Если матрица А неполного ранга, то задача LS имеет бесконечное множество решений, и мы вынуждены прибегать к специальным приемам, направленным на решение трудной задачи численного определения ранга. После некоторых предварительных замечаний, связанных с SVD, мы показы¬ ваем, как можно использовать QR-разложение с выбором ведущего столбца для
222 Гл. 5. Ортогонализация и метод наименьших квадратов нахождения решения хв с тем свойством, что Ахв есть линейная комбинация г = rank (/4) столбцов. Затем мы обсуждаем решение й минимальной 2-нормой» которое может быть получено через SVD. 5.5.1. Решение с минимальной нормой Пусть aeRmxn и rank (Л) = г <п. Задача LS неполного ранга имеет бесконечное множество решений, так как если х-решение и zenull(i4), то х + z-также решение* Множество всех решений X = {xeR": \\Ах — Ь\\2 = min} выпукло, так как если xlr х2е%> Хе[0, 1], то \\A(Xxt +(1 -к)х2)-6||2 ^\\\Ах1 -Д||2 + (1 -Х)\\Ах2 -Ь\\2 = тхп ЪАх-Ь\\2. Тем самым Xxt + (1 - \)хге%. Отсюда следует, что х имеет единственный элемент с минимальной 2-нормой, который мы обозначим xLS. (Заметим, что в случае полного ранга решение задачи LS единственно, поэтому его 2-норма, естественно, минимальна. Поэтому наши нынешние обозначения согласуются с введенными в § 5.3.) 5.5.2. Полное ортогональное разложение и xLS Для вычисления xLS годится любое полное ортогональное разложение. Действи¬ тельно, если Q и Z- ортогональные матрицы, такие, что елг.т. [ \ 5 ] . Г п — Г ТО \\Лх - 612 = \mTAZ)ZTx - QTb)\\22 = II Ти IV - с\\22 + \\d\\I где zrx = rwl г , ег* = [‘1 г • L У J п — г L a J m — г Если мы хотим, чтобы х минимизировало сумму квадратов, то ясно, что мы должны иметь w = Tf^c. Чтобы 2-норма х была минимальна» у должен быть нулевым, так что —[?']■ 5.5.3. Сингулярное разложение и задача LS Среди всех полных ортогональных разложений SVD, безусловно, дает особенно много информации. Оно доставляет удобное выражение как для х^> так и для нормы минимальной невязки — *11 г • Теорема 5.5.1. Пусть UTAV= Z есть сингулярное разложение матрицы AeRmxn, г = rank(>4). Если U = иж] и К=[г1г..., v^-разбиения по столбцам и
5.5. Задача LS неполного ранга 223 6eR"\ то Xls= i~vt (5.5.1) 1=1 Ci доставляет минимум функционалу \\Ах — Ь\\2 и имеет наименьшую 2-норму среди всех таких х. Кроме того, pls=\\AxLS-b\\12= £ (ujb)2. (5.5.2) i = r+l Доказательство. Для любого xeR" имеем: Mx-*||I = ||(l/T>IF)(FTx)-t/rA||i = ||Za||! = = L (cr^Oi - иТ Ь)2 + X (“ir*)2. 1=1 » = г + 1 где a = Vхх. Ясно, что если х-решение задачи LS, то ai = (ихbjCi) для i = 1: г. Если мы положим а (г + 1:л) = 0, то получившееся х будет, очевидно, иметь мини¬ мальную 2-норму. 5.5.4. Псевдообратная матрица Заметим, что если определить матрицу A* eRnxm соотношением А* = VL* UTy где £+ =diag 0,... , o') eR"*'", \ Oj or / то x£S = A* b и pLS = || (i — A A* )A||2. Матрица А* называется псевдообратной к A. Она является единственным минимальным в F-норме решением задачи min \\AX-Im\\F. (5.5.3) хлпхт Если rank(i4) = n, то А* = (АТА)~1 Ат, а если m = л = гапк(Л), то А* = А”х. Обычно А* определяют как единственную матрицу A'eR”xm, удовлетворяющую четырем условиям Мура- Пенроуза: (i) АХА = А, (iii) (АХ)Т = АХ, (ii) ХАХ = Х, (iv) (ХА)Т = ХА. Эти условия сводятся к требованию, чтобы Л А* и А* А были ортогональными проекторами на range (А) и range (Ат) соответственно. Действительно, АА* = = 1^(71,где Ux = U(l:my 1 :г), и А* А = V, V\, где Vt = V{\:л, 1 :r). 5.5.5. Некоторые вопросы чувствительности к возмущениям В § 5.3 мы исследовали чувствительность к возмущениям задачи LS полного ранга. Поведение *ls в этой ситуации описано в теореме 5.3.1. Если отбросить предположение о полноте ранга, то. х не является даже непрерывной функцией данных и малые изменения в А и Ь могут вызвать произвольно большие изменения в хм = А* Ь. Проще всего это можно увидеть, изучив поведение псевдообратной матрицы. Если А и 8 Л принадлежат RMXW, то показано (Wedin (1973), Stewart
224 Гл. 5. Ортогонализация и метод наименьших квадратов (1975а)), что им - 5Л)+ - А+ ||F < 2Ц5ЛЦ, max { \\А+ Ц. ||(А + 8А)+ \\\ } Это неравенство обобщает теорему 2.3.4, в которой оцениваются возмущения в обратной матрице. Однако в отличие от случая квадратных невырожденных матриц верхняя граница необязательно стремится к нулю при стремлении к нулю 5 А. Если 1 0 0 0 0 0 , 5 А = 0 Е 0 0 0 0 го * Г100П ..По о 1 ^ -Lo о oj' = 1/е CJ и ||Л+ — (у4 + 6/4) + |12 = 1 / е- Численное нахождение решения задачи LS в присутст¬ вии подобных нарушений непрерывности является серьезным испытанием. 5*5.6. QR с выбором ведущего столбца и основные решения Пусть имеет ранг г. QR-разложение с выбором ведущего столбца (алгоритм 5.4.1) дает разложение А П = Q R, где *= Г **• 1 г . L О О J т — г г п — г С помощью этого приведения легко получить решение задачи LS. Действительно, для любого xeRn имеем: \\Ах-Ь\\1= \тТАП) ,(Птл:)-(егбШ где Пт*=р1 ' . <2Т* = Г ^1 Г • LхJ и—г L«J m—r Так что если х доставляет минимум задаче LS, должно быть Положив в этом выражении z равным нулю, получим основное решение Заметим, что хв содержит максимум г ненулевых компонент, так что в Ахв участвует только подмножество столбцов А. Основное решение не является минимальным в 2-норме, если только блок R12 не
5.5. Задача LS неполного ранга 225 равен нулю, поскольку II XLS II2 min ze Rnr L *n-r J (5.5.4) В самом деле, с помощью этой характеристики ||л'^||2 можно показать, что ]\хя“ II *1*12 Детали см. в Golub, Регеуга (1976). 12 112- (5.5.5) 5.5.7. Численное нахождение ранга с помощью а П = QR Если для вычисления хв используется алгоритм 5.4.1, то необходимо проявлять внимание при определении rank (Л). Чтобы почувствовать трудность этой задачи, допустим, что У7(Я....Я^П,...П.)-Л».[Л« j»« ] m‘_t к п-к есть матрица, вычисленная после к шагов алгоритма, выполненных в режиме с плавающей точкой. Предположим, что rank(А) = к. Ввиду наличия ошибок округления R^\ не будет в точности нулевой. Однако если достаточно мала по норме, разумно завершить приведение и объявить, что ранг А равен к. Типичный критерий остановки мог бы выглядеть так: ll^llz^eiMlb (5.5.6) для некоторого малого машинно-зависимого параметра е,. Из свойств матриц Хаусхолдера по отношению к ошибкам округления (ср. § 5.1.12) мы знаем, что R(k) есть точный треугольный множитель для матрицы А + Ек, где |£J2<C2Hl3' е2 = 0(И). Используя теорему 2.5.2, имеем: <5k + l(A^£k) = ak+l{Rik))^\\R^\\2^ Так как а*+ i(A) ^ а*+1(А + Ек) + II^И2, отсюда следует, что aft+1(i4)<(El + е2)1М!12- Иными словами, относительное возмущение порядка 0(е, + е2) в матрице А может дать матрицу ранга к. С этим критерием остановки мы заключаем, что QR с выбором ведущего столбца обнаруживает неполноту ранга, если по ходу приве¬ дения оказывается мала для некоторого к < п. К сожалению, это происходит не всегда. Матрица А может быть очень близка к неполноранговой, и ни один из блоков не будет маленьким. Таким образом, QR с выбором ведущего столбца сам по себе не является вполне надежным методом обнаружения неполноты ранга. Однако если получить хорошую оценку обуслов¬ ленности R, то практически невозможно, чтобы близость к неполноте ранга осталась незамеченной. 8 63
226 Гл. 5. Ортогонализаг+ия и метод наименьших квадратов Пример 5.5.1. Пусть Тп (г) имеет вид Г„(с) = diag (1, л,') -с —с 1 -с — с — с \ -с 1 I где с2 + s2 = I, с, л>0. {См. Лоусон и Хенсон [SLS, р. 31].) Эти матрицы не изменяются алгоритмом 5.4.1. поэтому || ||2 ^ У"1 для k = I :п — I. Это неравенство означает, в част¬ ности, что матрица Т}00 (0.2) не имеет особенно малых главных подматриц, так как s" а 0.13. Однако можно показать, что а„ = 0(10 8). 5.5.8. Численный ранг и SVD Мы сосредоточиваем наше внимание на SVD, которое способно управиться с проблемой неполного ранга в условиях влияния ошибок округления. Это отно¬ сится как к версии Голуба Райнша, так и к версии Чана. Вспомним, что если А = U Л V* есть сингулярное разложение матрицы А, то *x_v = X l-L— ”. ■ (5.5.7) i - 1 CTi где r= rank (>)). Обозначим реально вычисленные U, V и £ = diag (ст,) через 0, V и £. = diag (а,). Допустим, что обе последовательности сингулярных чисел изме¬ няются от наибольшего к наименьшему. Можно показать, что C=W+&U; WTW=IM; ||Д1/||2«е. (5.5.8) V=Z + AV; ZrZ = l„\ ЦДЦ|2<е, (5.5.9) t = Wr{A + AA)Z; ||ДЛ||2<е|М||2, (5.5.10) где 8-малое кратное машинной точности и. Другими словами, алгоритм SVD вычисляет сингулярные числа «близкой» матрицы А + АА. Заметим, что б и V необязательно близки к соответствующим точным матри¬ цам. Однако мы можем показать, что ок несильно отличается от ок. Используя (5.5.10) и теорему 2.5.2, имеем ak = min \\А - В\\2 = rank (В)--.It - 1 = min ||(f - В) - Wt(AA)Z\\2. rank (В) = к~ 1 Поскольку || 1УТ(Д A)Z\\2 < с М Иг = eci и min ||Sl-B||2 = al rank (В) = к - I мы получаем, что |ak — 6к\ < гах для /с = \:п. Тем самым, если ранг матрицы А равен г, мы можем ожидать, что п — г из вычисленных сингулярных чисел будут малы. Близость матрицы А к неполноранговой не может остаться незамеченной, если вычислить SVD матрицы А.
5.5. Задача LS неполного ранга 227 Пример 5.5.2. Применение алгоритма SVD из пакета Linpack к матрица ^100 (0.2) из примера 5.5.1 дает при машинной точности ИГ17 стл = 0.367805646308792467* 10~в. Один из возможных путей оценки г = rank (А) исходя из вычисленных сингу¬ лярных чисел-завести некий допуск 5>0 и условиться, что численный ранг матрицы А равен г, если сингулярные числа а, удовлетворяют ах ^ ... > аг> 5 ^ а,+ 1 ^ ... > Допуск 8 должен быть увязан с машинной точностью, например 8 = и||/1||(Ю. Однако если общий уровень относительных ошибок в данных превышает и, 5 должен быть соответственно больше, например 8= \0~2\\А\\^, если элементы матрицы верны с точностью до двух значащих цифр. Если принять г за численный ранг, то можно рассматривать ^ йТЬ л f i-i как приближение к Такие как Цх:. Ц2 а 1 / а. ^ 1 /8, 5 можно выбирать также из соображений получения приближенного решения задачи LS с разумно малой нормой. Более тонкие методы этого будут обсуждаться в § 12.1. Если <т^ » 6, у нас есть основания быть довольными найденным xf, так как тогда А может с надежностью рассматриваться как матрица ранга г. С другой стороны, множество {61у ... , стя} может и не разбиться на четко определенные подмножества больших и малых сингулярных чисел, что делает определение г описанным методом отчасти произвольным. Это ведет к более сложным методам оценки ранга, которые мы здесь обсудим в контексте задачи LS. Допустим, например, что г = и, и предположим на время, что в (5.5.10) Д А = 0. Тогда ст, = Oj для i = 1 :п. Обозначим i-е столбцы матриц U,W,VuZ соответственно щ, n'i. , zt. Вычитая из х^ и переходя к нормам, получаем „ „ „ V 11(^’Гb)Zi — (uf A)t’i II2 / f ( wfby I + J I — ■ i= i ai V i=t+} \ <rf / Используя (5.5.8), (5.5.9), легко проверить, что IK^rb)zt — {ujA)i>, ||2 < 2(1 + e)e ||/>||2 (5.5.11) и поэтому г I n / b \ ^ И*,-*«л12«-2(1 +s)e||A|2+ / I — • i=/+I ' ' Параметр г можно найти как целое число, минимизирующее эту оценку сверху. Обратим внимание, что первый член оценки возрастает с а второй убывает. В тех случаях, когда важнее минимизировать невязку, чем получить точное решение, мы можем определить f, основываясь на предположительной степени близости Ц b — А л\ Н 2 к истинному минимуму. По аналогии с проведенным выше анализом можно показать, что ||b - Ах. II2 - ||/> - AAxs ||2 < (и - г) ||/>||2 +е||Л|12^ г + Si(l + е)). а*
228 Гл. 5- Ортогонализация и метод наименьших квадратов Снова можно выбрать г так, чтобы оно минимизировали верхнюю оценку. Описанные приемы могут быть включены и компьютерную программу, где в качестве приближений и берутся соответственно и ut. Проведенный анализ может быть распространен на случай А А ф 0, Детали см, в Varah (1973). 5.5.9. Некоторые сравнения Как уже упоминалось, при решении задачи LS посредством SVD достаточно вычислить только £ и К Следующая таблица сравнивает эффективность этого подхода с другими рассмотренными алгоритмами. L $->Алгоритм Число фЛОПов Нормальные уравнения пт2 + Л3/3 Ортогонализация Хаусхолдера 2тп2 -2rtVz Модифицированный Грама- Шмидта 2тпг Ортоеонализация Гивенса ЗтгР-я* Оидиагоиаяизация Хаусхолдера */тп2-Ъпъ/2 R - бидиагонализация 2тп2+2п3 SVD Голуба-Рейниа В н3 SVD Шана 1 j 2m/?z+ff?i3 Задачи 5.5Л, Покажите, что если г « — г где г = гапк(Л) и Т невырожденна, то матрица _Г Г'1 С “I г Lo О J п^г г m — г удовлетворяет соотношениям АХ А — А и (АХ)Т = АХ. В этом случае будем называть X {Х^Упсевдообратной к матрице А. Покажите, что для матрицы А обшего вида Хв ^ Xhy где X (1,3)-псевдообратная к А. 5.5.2. Определим Z?(X)eRnxm как Д(Х) = [АТ А + X/J 1 Лт, где X > 0. Покажите, что ||ЩХ)-/Г||2 = 1V г = rank (Л), о,М)[в,и) + X] так что В (X) А + при X -» 0. 5.5.3. Рассмотрим задачу LS неполного ранга зеК” ' ^ где KcRrxr, SeRrx*"_r*, yeR', zERn'r. Предположим, что R невырожденная верхняя тре¬ mtn ucR' : о : -и I
5.5. Задача LS неполного ранга 229 угольная матрица. Покажите, как найти для этой задачи решение минимальной нормы, вычисляя подходящее QR-разложение без выбора ведущего столбца к решая систему для подходящих у и z. 5.5.4 Покажите, что если Ак-*а и А? ->Л+, то существует такое целое к0, что rankM*) постоянен для всех к ^ к0. 5.5.5. Покажите, что если А в R™ * л имеет ранг и, то такой же ранг имеет и матрица А + t\ если выполнено неравенство ||£Цд M+ll2 < I. Замечания и литература к § 5.5 Фор гран кую процедуру решения задачи LS посредством SVD или QR-разложения с выбо¬ ром ведущего столбца можно найти в пакете Lin pack. Литература по псевдообратиым матрицам весьма обширна, как свидетельствуют 1775 ссылок, приведенных в N ashed М. Z. (1976). Generalized Inverses and Applications, Academic Press, New York. Дальнейшее обсуждение дифференцирования пссвдообратной матрицы см. в Lawson С. L. and Hanson RJ. (1969). “Extensions and Applications of the Householder Algorithm for Solving Linear Least Squares Problems” Math. Comp. 23, 787 812. Golub G.H, and Pereyra V. <1973). ‘The Differentiation of Pseudo-In verses and Nonlinear Least Squares Problems Whose Variables Separate”, SIAM J. Num. AnaL 10, 413 432. Обзорное изложение теории возмущений для задачи LS есть у Лоусона и Хенсона (SLS, ch. 7 9), а также в Wedin Р. А. (1973). “Perturbation Theory for Pseudo-Inverses”, BIT 13, 217 232. Stewart G. W. (1977aX ”On the Perturbation of Pseudo-In verses, Projections, and Linear Least Squares”, SIAM Review 19, 634 662. QR-pa сложение с выбором ведущего столбца было впервые рассмотрено в Businger P. and Golub G. Н. (1965), “Linear Least Squares Solutions by Householder Transfor¬ mations”, Numer. Math. 7, 269 276. См. также HACLA, pp. 111-118. Даже для задачи полного ранга выбор ведущего столбца, по-видимому, приводит к более точным результатам. Объяснить, почему это так, пытается анализ ошибок, проведенный в Jennings L.S, and Osborne М. R. (1974). “A Direct Error Analysis for Least Squares”, Numer. Math. 22, 322 332. Уметь вовремя остановиться в алгоритме 5.4.1 трудно, но важно. В проблеме неполного ранга бывает полезно получить информацию о наименьшем сингулярном числе верхней треугольной матрицы Р. Это можно сделать, применив приемы из § 3.5-4 или из ста'j ей Anderson N. and Karasalo I. (1975). “On Computing Bounds for the Least Singular Value of a Triangular Matrix”, BIT 15, 1-4. Karasalo 1. (1974). “A Criterion for Truncation of the QR Decomposition Algorithm for the Singular Linear Least Squares Problem”, BIT 14, 156 166. См. также Лоусон и Хенсон (SLS. гл. 6). Различные другие аспекты неполноты ранга обсуждаются в Foster L.V. (1986). “Rank and Null Space Calculations Using Matrix Decomposition without Column Interchanges” Lin. Alg, and Its Applic. 74, 47-7L Hansen P.C. (1987). “The Truncated SVD as u Method for Regularization”, BIT 27, 534 553. Stewart G. W. (1984). “Rank Degeneracy”, SIAM J. Sci. and Slat. Comp. 5, 403-413. Stewart G, W. (1987). “Collinearity and Least Squares Regression”, Statistical Science 2, 68-100. Varah J.M. (1973). “On the Numerical Solution of Ill-Conditioned Linear Systems with Applications to III-Posed Problems”, SIAM J. Num. Anal. 10, 257 267. Мы еще вернемся к этим вопросам в 12.1 н $ 12.2,
230 Гл. 5. Ортогонализация и метод наименьших квадратов 5.6. Взвешивание и итерационное уточнение В § 3.5 в контексте квадратных линейных систем были введены понятия масштабирования и итерационного уточнения. Здесь мы обобщаем эти идеи на случай задачи наименьших квадратов. 5.6Л. Взвешивание по столбцам Пусть Ge R" х * - невырожденная матрица. Решение задачи LS min \\Ах — b f|2, ЛеН"' * ", he RM (5.6.J) может быть получено, если найти минимальное в 2-норме решение уи задачи min |[(Л G)y — h ||2у (5.6.2) а затем положить х0 = С yls. Если rank (Л) = то хСг = х^. В противном случае х0 есть решение задачи (5.6,1). минимальное в G-норме, которая определяется как Выбор матрицы С важен. Иногда он можег быть сделан на основе априорной информации о неопределенностях в матрице Л. См. Лоусон и Хенсон (SLS, pp. \ 85-188). В других случаях может оказаться желательным нормировать столбцы А у положив G = G0=diag(l/Mfcl)|2l 1/1 Л«)||2). Показано, что (Van der Sluis (1969)) ]Д = ттк2(Л G)=>p ^ х2(Л G0) ^ G диагональна Поскольку реально достигнутая в v^ точность зависит от к2 (Л G), постольку это довод в пользу того, чтобы положить С = G0. Заметим, что взвешивание по столбцам воздействует на сингулярные числа. Вследствие этого методы определения численного ранга, будучи примененными к Л и AGf могут возвращать различные оценки. См. Stewart (1984b). 5.6.2. Взвешивание по строкам Пусть D = diagU/^ .... - невырожденная матрица. Рассмотрим взвешенную задачу наименьших квадратов min || D (Л х - Ь) || 2l Ае Rm х ", b € Rm. (5,6,3) Допустим, что гапк(Л) = л и хп есть решение задачи (5,6.3). Тогда решение xLS задачи (5.6.1) удовлетворяет xd - XLS -= Иг°2 А) 1 л'г{02 - l)(b - Axls). (5.6.4) Это показывает, что взвешивание по строкам в задаче LS изменяет ее решение. (Важное исключение-случай be range (Л), так как тогда xD = xLS.) Один из способов определения 1>-положить dk равным некоторой мере не¬ определенности в /?А, например, обратному к стандартному отклонению hk. Значения rk = ek(b — Axd) имеют тенденцию быть маленькими при больших dk. Более точно воздействие dk на rk можно прояснить следующим образом. Определим D(8) = diag(t/„ ..., dK_ р dkч/1 + 8, где 8 > — 1. Если л (б) минимизирует |] D[8)(Ax — b) \\2 и rk(S) есть fc-я компонента
5.6. Вмешивание и итерационное уточнение 23) b — Лх(6), то можно показать, что '*(h) = 1 + ■ (5'6,5) Это явное выражение показывает, что /*(5)-монотонно убывающая функция 5. Конечно, при вариации всех весов гк изменяется значительно более сложным образом. Дальнейшее обсуждение взвешивания по строкам можно найти у Лоусона и Хенсона (SLS, рр, 183 185). Пример 5.6.1. Пусть 1 2 1 3 4 L _ 0 5 6 , Л — 0 7 8 0 Если D = /4, то х1} = (— I Д85)г и г = b A ~ (0.3Т — 0.4, -0.1.0.2)', С upyi ой стороны, если I) ~ diiig(]000t I. I, I), jo мы имеем vri^( -L43f 1.21)т и г =/> — Ах0 = [0.000428, — 0.571428, — 0.142853, 0.285714]т 5.6.3. Обобщенные наименьшие квадраты Во многих задачах на оценивание вектор наблюдений Ь связан с jc уравнением h = Ax+\\\ (5.6.6) где вектор шума и* имеет нулевое среднее значение и симметричную положительно определенную ковариационную матрицу сг2 W. Предположим, что W известна и W.— ВВТ для некоторою BeRm * *. Матрица В может быгь задана или она может вычисляться как треугольный множитель Холецкого матрицы W, Для того чтобы все уравнения (5.6.6) в равной степени влияли на определение л:, статистики часто решают задачу наименьших квадратов min || в"1 (^-6) |1а. (5.6.7) Очевидный подход к численному решению этой задачи сформировать А — В'1 А и ? — Д-1Ь, а затем применить любую из описанных выше методик к минимизации || Я-т — />||2. К сожалению, результат будет неважным, в случае сели матрица В плохо обусловлена. Гораздо более надежный метод решения (5.6.7) с использованием ортогональных преобразоваЕшй был предложен в Paige (1979а, 1979b). Он основан па той идее, что (5.6.7) эквивалентно обобщенной задаче наименьших квадратов min vTv. (5.6.8) b = Ах 4 Bv Обратим внимание, что эта задача определена, даже если обе матрицы А и В не¬ полного ранга. Хотя техника Пейджа проходит и в этом случае, мы се изложим в предположении, что обе эти матрицы имеют полный ранг. Первый шаг заключается в вычислении QR-разложения матрицы А: *l Q Q'A = = Г е2 1 L п т — п J L0 Затем определяется ортогональная матрица ZeRmy", такая, что
232 Га. 5. Ортогонализация и метод наименьших квадратов QlBZ = Го 5 1, Z = Г Z, Z2 1, L п т — п J L п т — п А где матрица S верхняя треугольная. С использованием этих ортогональных матриц условие из (5.6.8) трансформируется в [S :Но*'ЫеТ' crf-][s i] Заметим, что «нижняя половина» этого уравнения определяет г, Su = Qlb, v = Z2u, (5.6.9) а «верхняя половина» отвечает за х: Rlx = Qjb- (Ql BZy Z\ A- Q\ BZ2 ZT2)v = Q\b- Q\BZ2u. (5.6.10) Привлекательность этого метода в том, что вся потенциально плохая обусловлен¬ ность собрана в треугольных системах (5.6.9) и (5.6.10). Более того, Paige (1979b) показал, что описанная процедура численно устойчива, чего нельзя сказать ни об одном из методов, явно формирующих В~1 А. 5*6.4. Итерационное уточнение Один из приемов уточнения приближенного решения задачи LS проанализирован в Bjorck (1967, 1968). Он основан на той идее, что если о][^]-[о]- ^R'”- ЬеК"- <56“> то || b — Ах || 2 = niin. Это следует из того, что из г + Ах = Ь и А7 г = 0 следует АТ Ах = АТ Ь. Выписанная выше расширенная система невырожденна, если rank (А) = и, что мы и будем в дальнейшем предполагать. Эта формулировка задачи LS через квадратную линейную систему дает возмож¬ ность применить схему итерационного уточнения (3.5.5): г(0) = Q. х{0) = Q fork = 0, 1, ... Г/ л] Г/>№)1 Г/№)1 L Ат о J L z«k> J L g«J г + 1, т г r<*, -I г pm -I L х» + 1> J ~ L х№» J + L z« J • end Невязки f{k) и g(k) должны вычисляться в режиме с повышенной точностью, и для этой цели надо сохранять исходную матрицу А. Если имеется QR-разложение матрицы А, то найти решение расширенной системы достаточно легко. Именно, если А = QR и Rx = R(l:«, 1:и), то система вида
5.6. Взвешивание и итерационное уточнение 233 преобразуется к к о R, О R, L-л О О О ’ А " Л ‘ /2 = /2 Z G где 07-ГЯ " , eV-Г? 1 ” • L/2J tn - п L/2J т-п Таким образом, р и z могут быть найдены решением треугольных систем R[h = д и /l1z==/1— А и вычислением p = J. В предположении что G хранится в факторизованном виде, каждая итерация требует Smn — 2 п2 флопов. Ключом к успеху итерационного процесса является уточнение как невязки задачи LS, так и ее решения (а не только решения). Bjorck (1968) показал, что если х2 (А) « Р* и используется Г-разрядная арифметика по основанию р, то x(fc) имеет примерно k(t — q) верных цифр по основанию Р, при условии что невязки вычисляются с двойной точностью. Заметим, что в этой оценке фигурирует х2(Л), а не х2(/4)2. Задачи 5.6.1. Проверьте (5.6.4). 5.6.2. Пусть AeRmxn имеет полный ранг. Определим диагональную матрицу А = diag (1 I, (1 + 5), 1, ... , 1), к — 1 т — к где 8 > — 1. Обозначим решение задачи LS min || А (Ах — Ь)\\2 через л(8), а его невязку через г(б) = А - Лх(8). (a) Покажите, что /о / о A(ATA)~l Атекек \ = V 1 +Ье1А{АтА)-'Атек ) Г(0)' (b) Пусть гк(Ь)-к-я компонента г(8). Покажите, что МО) М5) = 1 + Ъе1А(АтА)~х Атек (с) Используя (Ь), докажите (5.6.5). 5.6.3. Покажите, как использовать SVD для решения обобщенной задачи LS в случае, когда матрицы А и В (5.6.8) неполного ранга. 5.6.4. Пусть Ае Rmx* имеет ранг п. Для а ^ 0 определим М(а); Покажите, что '-["■ .1 S„+„(M(a)) = min jet, - ^ JЬЛА)г + (^) | и найдите значение а, минимизирующее к2(М(а)).
234 Гл. 5. Ортогонализация и метод наименьших квадратов 5.6.5. Еще один метод итерационного уточнения для задачи LS заключается в следующем: х(0> = О for к = 0, 1,... И*1 = h — А л:(к> (с двойной точностью) \\Az(k) — r<k)||2 = min vlfc+ II _ v(*i _j_ Z(M end (а) Предполагая, что имеется QR-разложение матрицы А, дайте оценку требуемого количества флопов на итерацию. (Ь) Покажите, что приведенный выше итерационный процесс получится, если положить g{ki = 0 в схеме итерационного уточнения из § 5.6,4. Замечания и литература к § 5.6 Взвешивание по строкам и столбцам для задачи LS обсуждается у Лоусона и Хенсона (SLS, pp. 180 188). Различные эффекты масштабирования обсуждаются в Van der Sluis А. (1969). “Condition Numbers and Equilibration of Matrices", Numer. Math. 14, 14-23. Stewart G. W. (1984b). “On the Asymptotic Behavior of Scaled Singular Value and QR Decom¬ positions", Math. Comp. 43, 483 490. Теоретические и вычислительные аспекты обобщенной задачи наименьших квадратов пред¬ ставлены в Kourouklis S. and Paige С.С. (198t). “A Constrained Least Squares Approach to the General Gauss-Markov Linear Model", J. Amer. Stat. Assoc. 76, 620-625. Paige C.C. (1979a). “Computer Solution and Perturbation Analysis of Generalized Least Squares Problems", Math. Comp. 33, 171- 184. Paige C.C. (1979b). “Fast Numerically Stable Computations for Generalized Linear Least Squares Problems", SIAM J. Num. Anal. 16, 165- 171. Paige C.C. (1985). “The General Limit Model and the Generalized Singular Value Decomposition", Lin. Alg. and Its. Applic. 70, 269-284. Итерационное уточнение для задачи LS обсуждается в Bjorck А. (1967а). “Iterative Refinement of Linear Least Squares Solutions I", BIT 7, 257 -278. Bjorck A. (1968). “Iterative Refinement of Linear Least Squares Solutions II", BIT 8, 8 30. Bjorck A. (1987). “Stability Analysis of the Method of Seminormal Equations for Linear Least Squares Problems", Lin. Alg. and Its Applic. 88/89, 31 48. . Bjorck A. and Golub G-H. (1967). “Iterative Refinement of Linear Least Squares Solutions by Householder Transformation", BIT 7, 322 337. Golub G. H. and Wilkinson J. H. (1966). “Note on Iterative Refinement of Least Squares Solutions", Numer. Math. 9, 139- 148. 5.7. Квадратные и недоопределенные системы Развитые в этой главе методы ортогонализации могут быть применены к реше¬ нию квадратных систем, а также систем, в которых уравнений меньше, чем неизвестных. В этом коротком разделе мы обсудим некоторые из возможностей. 5.7.1. Использование QR и SVD для решения квадратных систем Основанные на QR-разложении либо на SVD методы решения задачи наимень¬ ших квадратов могут быть применены для решения квадратных линейных систем: достаточно положить т = п. Однако с точки зрения количества операций гауссово исключение остается самым дешевым способом решения квадратной линейной системы, как свидетельствует следующая таблица:
5.7. Квадратные и недоопределенные системы 235 Таблица 5.7.1 Метол Флопы Гауссово исключение 2/?*73 Ортогонализация Хаусхолдера 4/7 3/3 Модифицированный Грама Шмидта 2/г1 Двухдиагонализация 8л3/3 SVD I2//3 Тем не менее методы ортогонализации заслуживают внимания по целым трем причинам: • При подсчете количества флопов наблюдается тенденция к преувеличению преимущества гауссова исключения. С учетом издержек векторизации и обме¬ нов с памятью QR-подход сравним по эффективности. • Гарантирована устойчивость методов ортогонализации; в отличие от гауссова исключения, нет нужды беспокоиться о «коэффициенте роста». • В случаях плохой обусловленности ортогональные методы особенно ясно демонстрируют свою надежность. Очень хорошо ведет себя QR с оценкой обусловленности, и, конечно, непревзойденным методом получения осмыслен¬ ного решения почти вырожденной системы является SVD. Мы не заявляем о категорическом предпочтении ортогональных методов, мы только предлагаем конкурентоспособные альтернативы гауссову исключению. Заметим еще, что число операций для SVD в табл. 5.7.1 предполагает, что вектор Ъ известен во время разложения. В противном случае требуемое число операций возрастает до 20 и3, так как становится необходимым явное формирование матри¬ цы С/. 5,7.2, Недоопределенные системы Будем называть линейную систему Ах = Ь, AeR"iX\ be Rm, (5.7.1) недоопределенной, если т < п. Отметим, что такая система либо не имеет решений, либо имеет бесконечное множество решений. Во втором случае важно различать алгоритмы, находящие минимальное в 2-норме решение и не находящие. Первый из представляемых нами алгоритмов относится к этой последней категории. Алгоритм 5.7.1. По матрице ^eRmxn, глпк(А) = т и вектору beRm следующий алгоритм находит xeRny такое, что Ах = Ь. QT А П = R (QR с выбором ведущего столбца) Решить систему R(\ :m, 1:m)z = QTb. Положить x = П I I. L 0 J Этот алгоритм требует 2 m2 и — m3/3 флопов. Если мы будем работать с АТУ мы сможем найти решение минимальной нормы. Алгоритм 5,7.1. По матрице i4eRmx", rank(v4) = m, и вектору beRm следующий алгоритм находит минимальное в 2-норме решение системы Ах = Ь.
236 Гл. 5. Ортогонализация и метод наименьших квадратов АТ = QR (QR-разложение) Решить систему R(\ :m, 1 :m)Tz = b. x = GO, * :m)z Алгоритм требует максимум 2 m2n — 2m3/3 флопов. Для вычисления решения минимальной нормы недоопределенной системы мож¬ но также использовать SVD. Если. г А — Y, °i ui vf r — rank (A) i = 1 сингулярное разложение матрицы А, то Как и в задаче наименьших квадратов, использование SVD желательно во всех случаях, когда А почти неполного ранга. 5.7.3. Возмущенные недоопределенные системы В заключение мы приводим теорему о возмущениях для недоопределенных систем полного ранга. Теорема 5.7.1. Пусть гапк(Л) = т<и и 4eRwxn, 5ЛеК'пхл и bbeRm удовлетворяют е = шах {еи, £„} <ат(А), где еа = || 8 А \\2/\\ А ||2 и еь = || 56||2/|| b ||2. Если х и х-решения с минимальной нормой, удовлетворяющие Ax = b(A+bA)X = b + bb, то ^< х2(i4)(e^min {2, п - т + 1} + £„) + 0(е2). II Х II 2 Доказательство. Определим Е и/ как 8А/е и 6 Ь/е. Заметим, что rank (А + /£) = т для всех 0 < / < е и что *(/) = (А + tE)T((A + tE)(A + tE)T) ~1 (b + tf) удовлетворяет (A + tE)x (t) = b + tf. Дифференцируя это выражение no t и полагая / = 0, получаем х(0) = (1- АТ(ААТГ1А)ЕТ{ААТ)-1Ь + AT(AAT)~l(f- Ex). Так как || * ||2 = И АТ(ААТГ1 Ь ||2 2* oJA) || {ААТГ'Ь ||2, || I — AT(AAT)~l А ||2 = min(l, и — /и) и if и ^1/ЬМЬ И*И2" Ш2 ’
5.7. Квадратные и недоопределенные системы 237 то мы имеем I * - X ||2 _ х(е) - х(0) _ £ ||х(0)||2 + 0 II* Иг II *112 II лг II2 ^ „ Л 11^112 . II/II2 . ll^lUl t j\ л/ 2\ --> W+1*1;+йтгАА)+1°(е ’• откуда следует утверждение теоремы. □ Обратим внимание на отсутствие множителя х2(Л)2 по сравнению со случаем переопределенных систем. Задачи 5.7.1. Выведите выписанное выше выражение для jc(0). 5.7.2. Найдите решение минимальной нормы для системы Ах = h, где А = {\ 2 3] и Л = !. Замечания н литература к § 5.7 Некоторые интересные моменты, связанные с вырожденными системами, рассматри¬ ваются в Ghan Т. F. (1984). “Deflated Decomposition Solutions of Nearly Singular Systems”. SIAM. J. Numer. Anal. 21, 738-754. Golub G. H. and Meyer C. D. (1986). “Using the QR Factorization and Group Inversion to Compute, Differentiate, and Estimate the Sensitivity of Stationary Probabilities for Markov Chains”, SIAM J. Alg. and Dis. Methods 7, 273-281. Вот несколько статей no недоопределенным системам: Arioli М. and Laratta A. (1985). “Error Analysis of an Algorithm for Solving an Underdetermined System”, Numer. Math. 46, 255-268. Cline R. E. and Plemmons R.J. (1976). “L2-Solutions to Underdetermined Linear Systems”, SIAM Review 18, 92-106.
Глава 6 Параллельные матричные вычисления Параллельные вычисления с матрицами - это область интенсивных исследова¬ ний. Поскольку данное научное направление зародилось совсем недавно, литерату¬ ры здесь предостаточно и в ней преобладает «изучение отдельных случаев». Трудности машинной зависимости мы обходим, занимаясь проработкой алгорит¬ мов на достаточно высоком уровне. Рассматриваются парадигмы распределенной и общей памяти. Технические детали сведены к минимуму, и мы лишь слегка касаемся нескольких важных языковых и системных проблем, чтобы сосредото¬ читься на главных вопросах. Как следствие, в этой главе мало конкретных рецептов-здесь вы не найдете четких рекомендаций о том, как решать матричную задачу X на параллельной машине Y. В § 6.1 и § 6.2 ключевые идеи вводятся на примере операции gaxpy. В § 6.3 обсуждается параллельное умножение матриц для систем как с распределенной, так и с общей памятью. Затем в § 6.4, 6.5 и 6.6 рассматривается параллельное вычисление различных матричных разложений. Мы делаем акцент на разложении Холецкого, но всюду даются указания насчет LU- и QR-разложений. 6.1. Операция gaxpy на распределенной памяти В этом разделе разрабатываются средства записи алгоритмов для распределен¬ ной памяти. Чтобы проиллюстрировать их и выявить ключевые положения, рассматривается операция gaxpy: z — y + Ах, AeR"xny x,y,ze R". (6.1.1) Более сложные вычислительные процессы будут рассмотрены в § 6.3-6.5. 6.1.1. Системы с распределенной памятью В мультипроцессоре с распределенной памятью имеется сеть процессоров, и в каждом из них есть локальная память и своя программа. Процессоры общаются один с другим, посылая и принимая сообщения. К числу важных факторов при разработке эффективных алгоритмов в случае распределенной памяти относятся: а) число процессоров и размер локальной памяти; б) организация связи между процессорами; в) соотношение скорости вычислений и скорости межпроцессорного взаимодействия. Наша цель-показать совершенно неформально, как эти факторы взаимосвязаны и как они влияют на разработку алгоритма. В рамках концепции распределенной памяти рассматриваются две модели вычислений: полностью синхронная «систолическая» модель и асинхронная модель
6.1. Операция gaxpy на распределенной памяти 239 передачи сообщений. В систолическоймодели процессоры отмеряют порции вычислительной и коммуникационной работы в соответствии с отсчетом времени по глобальным часам. Абсолютно синхронная, пошаговая природа систолических вычислений в какой-то степени облегчает показ потока вычислений. По этой причине они являются превосходной моделью для того, чтобы начать знакомство с параллельными матричными вычислениями. После того как мы расскажем о систолическом решении задачи (6.1.1), она же будет рассмотрена в контексте модели с обменом сообщениями. Этот стиль работы с распределенной памятью предполагает, что процессоры координируют свою деятельность на основе принимаемых сообщений. Глобальных часов здесь нет. 6.1.2* Сети процессоров В мультипроцессоре с распределенной памятью каждый процессор имеет локаль¬ ную память и выполняет свою собственную локальную программу, изменяющую значения локальных переменных. В этой главе мы будем постоянно обозначать через р число процессоров, а о типе связей между ними будем говорить как о сетевой топологии. К числу популярных топологий относятся кольцо, сетка и тор, изобра¬ женные на рис. 6.1.1 -6.1.3. Каждый из алгоритмов для распределенной памяти в этой главе будет приспосабливаться к одной из этих трех топологий. Однако имеется несколько других очень важных коммуникационных схем, в том числе гиперкуб (интересен общностью, оптимальностью и коммерческой доступностью) и дерево (для реализации процедур, построенных по принципу «разделяй и власт¬ вуй»). См. Ortega, Voigt (1985)-там обсуждаются различные возможности. Proc(f) | Ргос (2) ы Ргос (3) |— \ргос (*) Рис. 6.1.1. 4-процсссорное кольцо. —I Ргос (f, 1) I Ргос (/, 2) 1- - Хргос (1, 3) ~Г~ —Г~ —Г" —| Ргос (2,1) | ,|,р- Ргос {2,2) | 1 Ргос (2, 3) —| Ргос]') Н Ргос (3,2) н —| Ргос (4,1) | Рп I г Ргос (3,3) пг Рпс а. з) —Г" L“HrJ и н Proc(3,b\- Ргос (4, Рис. 6.1.2. Сетка 4x4. 1) Мы употребляем слово «систолический», говоря об использующем распределенную память вычислительном процессе, в высокой степени сегментированном и синхронном. Из сформулированных Кунгом [Kung. 1982] свойств вычислений на систолических массивах мы оставляем здесь некоторые, но не все.
240 Гл. 6. Параллельные матричные вычисления п Ргос (1,1) НС Ргос (1,2) \Ргос(2,П Proc (I, 3) \Ргос(1,1/) Proc (2t 1) Proc (3,1) н Proc (2,3) I Proc (3,2) Proc (3,3) Proc (2,4) ~r Proc (3,4 j—I ft-oclb.I) Proc (4,2) H Proc (4,3) Proc (4,4) Рис. 6,1.3. Top 4x4. Заметим, что в торе каждый столбец и каждая строка процессоров образуют кольцо. 6.1.3. Имена для соседей В мультипроцессоре каждый процессор имеет числовую метку id. Чтобы указать на р-й процессор в кольце, мы используем обозначение Proc (р). В двумерных сетях используем двойную индексацию: Proc (/,». Будем говорить, что Ргос (А.) является соседом для Ргос(р), если между ними существует прямое физическое соединение. Так, в 4-процессорном кольце Proc (2) и Ргос (4)- соседи для Ргос(З). Для тора размером 4x4 соседями для Ргос(1, 3) являются Ргос(1, 2), Ргос(1, 4), Ргос (2, 3) и Ргос (4, 3). Соседи процессора обычно играют довольно заметную роль в его локальной программе, и поэтому для ссылки на них мы договоримся об удобном нечисловом обозначении. Говоря об индексах левого и правого соседей в кольце, будем писать left и right. Так, в 4-процессорном кольце Ргос (4) имеет локальные переменные left и right, значения которых соответственно равны 3 и 1. В двумерных сетях каждый отдельный процессор Ргос (/,/) имеет локальные переменные north, east, south и west, содержащие метки четырех его соседей, т. е. (I — 1» A (A j + 1)> U + I, J) и (/, j — 1) соответственно. Для сетки может произойти ссылка на несуществующие процессоры, если Ргос (/,у) находится на границе, но мы не будем останавливаться на этой детали. Для определения соседей для тора должна использоваться «круговая» арифметика. 6.1.4. Инициализация и окончание Подобно программам, написанным для единственного процессора, локальные программы начинаются с инициализаций. Например, перед началом собственно вычислений должны быть заданы матрица, ее размеры, множество блочных пара¬ метров. Однако в случае мультипроцессора с распределенной памятью также должна быть доступной информация о процессорной сети. В самом деле интересую¬ щая нас часть локальной программы может ссылаться на:
6.7. Операция gaxpy на распределенной памяти 241 • Общее число процессоров р в сети. • Метку id, т.е. индекс или индексы, определяющие исполняющий процессор. • Подходящие значения для left и right, если процессор входит в кольцо, и подходящие значения для north, east, south и wcs/, если процессор является частью тора или сетки. В интересах нашего изложения мы соберем все эти инициализации в одну команду locJnit (local initalization - локальная инициализация). Пусть для иллюстрации р-й процессор в /^-процессорном кольце должен разместить подматрицу А(\:т, i:p:n) в локальном массиве А1ос. Тогда локальная программа будет начинаться с предложе¬ ния вида loc. init [р, р = ту .id, left, right, т, п, А./ос = А(\1\р:п)~\. В такой манере будут начинаться все наши локальные программы. Выражение “р = ту. id' - это просто способ сказать о том, что локальная переменная р содержит числовую метку процессора. Как мы видели в случае сетки и тора, id может быть двумерной меткой: (а, р) = ту. id. Оператор loc. init-это удобное средство сгруппировать в одном месте все отвлекающие аспекты локальной программы, и тем самым оно позволяет нам сосредоточиться на алгоритмических проблемах более высокого уровня. Все локальные программы заканчиваются оператором quit. Это обозначение подчеркивает тот факт, что процессор становится бездействующим после того, как завершено выполнение его собственной локальной программы. Другие процессоры могут оставаться работающими. 6.1.5. Связь между процессорами В условиях распределенной памяти процессоры должны общаться между собой. Нам нужен язык для описания этого действия, и для этой цели мы примем простые отображения «отправить» (send) и «принять» (receive): send ({матрица}, {куда}) recv{{матрица), {откуда}). Таким образом, если Ргос(/,у) выполняет инструкцию send (Л, south), то процессору Ргос(/ + 1,7) посылается копия локально хранимой матрицы А. Конечно, размер матрицы может быть 1 х 1 или п х 1,-в этих случаях посылается скаляр или вектор. Будем считать, что всякий раз, когда в операторах send или recv дается имя какой-либо матрицы, ее элементы располагаются в локальной памяти слитно. На практике, возможно, в этом не будет необходимости, но это требование заставля¬ ет нас думать в правильном направлении о структуре данных. Итак, запись send (А, (/:), left) незаконна, если Л-локальная матрица, хранимая по столбцам. Локальные программы, совокупность которых определяет распределенное вы¬ числение, выглядят так же, как обычные последовательные программы, за исключе¬ нием того, что они включают коммуникационные примитивы типа send и recv, семантику которых мы сейчас обсуждаем. Если Ргос(|д) выполняет инструкцию send (V, X), то процессору Ргос(Х) отсылается копия локальной матрицы V. Выполнение локальной программы в Ргос(р) возобновляется немедленно. Мы полагаем (как отмечалось выше), что элементы матрицы V расположены слитно в локальной памяти в Ргос(р). Мы также полагаем, что процессор имеет право посылать сообщение самому себе. Если Ргос(р) выполняет инструкцию recv(V, X), то выполнение локальной программы приостанавливается до тех пор, пока от Ргос(>) не поступит сообщение.
242 Гл. 6. Параллельные матричные вычисления Как только сообщение получено, оно помещается в локальную матрицу К, а процес¬ сор Ргос(р) возобновляет выполнение своей локальной программы. Предполагается, что полученное V имеет ту же структуру данных, что и в Ргос (к). При разработке программы для распределенной памяти мы должны позабо¬ титься о том, чтобы гарантировать, что требуемое сообщение будет действительно отправлено. В противном случае локальная программа может «зависнуть», ожидая несуществующего сообщения. Хотя наши обозначения «отправить» и «принять» совершенно достаточны для записи алгоритмов, они в действительности скрывают некоторые важные детали, связанные с реализацией: • Длина сообщения в байтах или каких-то других единицах. Обработка более длинных сообщений требует больше времени. Наше обозначение не отражает этой важной стороны вычислений с распределенной памятью. • Путь сообщения по процессорной сети. Отправленное сообщение может следовать от одного процессора к другому по окружному пути, если системное обеспечение выбора маршрута сочтет это подходящим. Тем самым затрудня¬ ется предсказание коммуникационных издержек. • Буферизация принимаемых сообщений. Поскольку процессоры имеют ограни¬ ченную память, локального пространства может быть недостаточно для того, чтобы разместить в нем лавину принимаемых сообщений. Эту возможность мы игнорируем. 6.1.6. Некоторые распределенные структуры данных Предположим, что xeR" и требуется распределить х по локальным запоминаю¬ щим устройствам ^-процессорной сети. Имеется два «канонических» подхода к этой проблеме-строчная и столбцовая схемы хранения. Будем считать на данный момент, что п = гр. В столбцовой схеме хранения мы рассматриваем х как г х р-матрицу *,Хр = [*(1 = '•)*('• + 1:2г)...*((/>- 1 )г+ 1:л)] и храним каждый столбец в одном процессоре, т.е. х((р — l)r + 1: р г) е Ргос (ц). (Здесь «е» означает «хранится в».) Замети м^ что каждый процессор берет на хранение порцию соседних компонент вектора х. В строчной схеме хранения мы рассматриваем х как р х г-матрицу *pxr = lx(\:p)xip+ \:2p)...x({r — 1 )р + 1:л)] и храним каждую строку в одном процессоре, т.е. х(р:р:я)€Ргос(р). О схеме хранения по строкам иногда говорят как о круговом методе распределения вектора х, потому что его компоненты напоминают карты в колоде, которые «сдаются» процессорам по кругу. Если п не является точным кратным для р, то эти идеи работают после незначительной модификации. Рассмотрим столбцовую схему хранения при п= 14 и р = 4: ХТ = OjXj-KjX* | Xsx6x7xe I x9xl0xl! I *12X13JC14] • Proc(l) Proc(2) Proc(3) Proc(4) В общем случае, если n=pr + qc0^q<p, то процессоры Proc(l),..., Ргос (q) могут взять себе по г + 1 компонент каждый, а процессоры Proc(g + 1), ..., Ргос(д) могут взять на хранение по г компонент. В строчной схеме хранения мы просто полагаем, что в Ргос(р) размещается х(\х:р:п).
6Л. Операция gaxpy на распределенной памяти 243 Далее рассмотрим распределение п х «-матрицы А на кольцевой сети процессо¬ ров. Снова предположим для ясности, что п = гр. Есть четыре очевидных возмож¬ ности: Способ задания матрицы Схемы хранения Что помещается в Ргос (р) По столбцам Подряд А(:. (р- 1)/ + 1 :*i) По столбцам По кругу А(\\:р:п) По строкам Подряд Л((И " + 1 По строкам По кругу .4 (р :/!.:) Распределение матрицы на сетке или торе может быть осуществлено нескольки¬ ми способами. В случае рх х /?2-сети простейшую распределенную структуру данных получаем, рассматривая Л = Л(/,/) как блочную рх х /?2-матрицу и помещая Ai} в Ргос (/,/). Возможны также двумерные круговые отображения. 6.1.7. Систолическая модель Теперь мы рассмотрим систолические вычисления. В систолической сети процес¬ соры работают абсолютно синхронно. В течение одного «отсчета времени» по глобальным часам каждый процессор обменивается информацией со своими сосе¬ дями и затем выполняет некоторое локальное вычисление. Предполагается, что в этой простой высокоструктурированной модели вычисле¬ ний с распределенной памятью каждый процессор выполняет локальную программу следующего вида: for/ = I : / final Послать данные соседям (если необходимо). Получить данные от соседей (если необходимо). (6.1.2) Выполнить вычисления над локальными данными (если необходимо). end quit Здесь t играет роль глобального счетчика, задающего темп вычислений в этой сети. Сначала все процессоры выполняют свои предписания для t — I. Затем все процес¬ соры выполняют свои предписания для t = 2, и т. д. Все организовано таким образом, что сначала посылаются все сообщения, затем все они принимаются, и после этого выполняются все локальные вычисления. Такого рода систематизация упрощает строгое доказательство корректности распределенных вычислений, но в действительности она может затруднить разработку алгоритма. Это будет показано в § 6.5. Чтобы проиллюстрировать наше обозначение, рассмотрим операцию gaxpy (6.1.1) на ^-процессорном систолическом кольце. Для ясности будем считать, что п = гр, и разобьем задачу на блоки: zi У1 = 4- ZP У р Л, л 1р Api - АрР Л'_ (6.1.3)
244 /л. 6, Параллельные матричные вычисления Здесь Ai}t Rr *' и xi% z, е R'. Предположим, что в начале вычислений Ргос (р.) берет на хранение ji-ю блочную строку из А, х^ и а возложенная на него задача состоит в получении zp на месте гц. Заметим, что в вычислении р "Ч- = Уц "Ь 5^ *т т - 1 участвуют локальные данные (Лмт, у^ *м) и нелокальные данные (другие лт). Чтобы сделать х доступным для всего кольца процессоров, нужно заставить xz пере¬ мещаться по кругу наподобие карусели. Для иллюстрации возьмем р — 3 и покажем, «где» находится xz на каждом шаге этой процедуры: Шо-г Ргос(1) Ргос (2) Ргос (3) 1 *3 *1 2 *2 *3 3 *1 *2 *3 Для кольца этот метод, в котором xz ходит по кругу, особенно привлекателен, так как обмен сообщениями всегда происходит между соседями. Ниже-точная форму¬ лировка процедуры. Алшритм 6.1.1* Предположим, что заданы А е R”х ", хе R" и ys R", и пусть г — у + Ах. Если каждый процессор в р-процеесорном систолическом кольце исполняет следую¬ щую локальную программу и и = гр, то после окончания работы Proc(ji) содержит z(l +(*i- 1)г:рг) в у1ос. loc.init[p,p = my.id, left, right, и, г = и/р, row = l у- (p — l}r:pr, Aioc = A (row,:), = a (row), ytoc = у (row)} for / = I: p send (.\-|wc, right); recv(xlotf, left) T = ц — / ift^O т = т + p end {Xtoc = -v(l + (T- [)r:zr)} Уюс = >гас + AtuA'> 1 + (т - 1 )r:xr)xlo£ end quit Целочисленная арифметика в этой процедуре типична для матричных вычислений на распределенной памяти. Индекс т помечает текущую доступную часть вектора х. Если т известно, то можно вычислить поправку к локально хранимой порции вектора у. Заметим, что A ioc(i4j) не содержит A{i4 f), 6.1.8. Атрибуты параллельного алгоритма Каким образом мы можем добиваться нужной нам производительности для параллельной процедуры типа алгоритма 6.1.1? Сейчас мы находимся в положении, сравнимом с тем, когда мы обсуждали векторные вычисления в § 1 А. В тот раз мы ограничились довольно неформальным обсуждением «о чем нужно думать» при разработке процедуры для векторного компьютера. Здесь наша философия будет сходной. Мы не собираемся строить детализиро¬ ванную модель параллельных вычислений, которая позволяла бы предсказывать время выполнения алгоритма. Вместо этого мы отметим несколько ключевых
6.1. Операция gaxpy ни распределенной памяти 245 положений, которые должны учитываться при конструировании параллельных матричных вычислений. Наша задача не гак уж непохожа на то, чем занимается администратор, руководящий работой приемной канцелярии университета. Рас¬ пределена ли работа равномерно среди сотрудников? Есть ли узкие места, ведущие к бездеятельности? Не тратится ли больше времени на перекладывание бумаг со стола на стол, вместо того чтобы прочесть их? Насколько эффективно работает канцелярия? Что дало бы увеличение штата? 6.1.9. Равномерная загруженность Мы начнем со свойства равномерной загруженности. Будем говорить, что параллельное вычисление даст равномерную загруженность, если каждому процес¬ сору приходится выполнять примерно одинаковое количество полезной вычисли¬ тельной и коммуникационной работы на каждом временном шаге. Алгоритм 6.1.1 обеспечивает идеальную равномерную загруженность в том смысле, что па каждом временном шаге каждый процессор имеет в точности один и тот же объем вычислений и обменов. На примере алгоритма 6.1.1 можно проиллюстрировать и неравномерную загруженность; для этого предположим, что матрица А - блочная нижняя треуголь¬ ная с р х /т-блоками и г — р. Тогда разумно перевычислять ylfJf, лишь когда блок AJoc(:, 1 + (т — \)р:хр) не равеп нулю: If т < ц Уш = Уь* + 1 + (г - 1)р:тя)-Ч* end При таком использовании структуры матрицы в итоге получается процедура, не дающая равномерной загруженности, потому что (например) при t = р — I только Ргос(/>) имеет что перевычислять. К выводу о неравномерной загруженности можно прийти и с другой стироны, заметив, что для получения zVi требуется 2 рр2 флопов, и, таким образом, Ргос(/>) должен выполнить в р раз больше флопов, чем Ргос(1). Одиако чтобы получить процедуру с равномерной загруженностью, мы просто прибегнем к круговому отображению данных. Алгоритм 6X2. Предположим, что заданы А е R" * n, хе R* и ye R" и что z = у А- Ах. Пусть п = гр и А -блочная нижняя треугольная матрица с г х r-блоками. Если каждый процессор в д-лроцессорном систолическом кольце выполняет следующую локальную программу, то в конце процесса в vfw для Ргос(р) будет содержаться г(м:р:«). loc. init [р, ц = ту. id, left, riyht, n,r = nip, A,„ = A{p.:p:n,:), xlm = A'(p :p: n),ylBC = >(p:p: я)] for t — 1: p lefi) T = Ц — t iftsSO X = T + p end {x^ = x{x:p:n)} for / = 1: r >!<*(/:'■) = УисИ-r) + Л1ос(/: г, X + (/ - Пp)xlac<J) end end quit
246 Гл. 6. Параллельные матричные вычисления Каждый процессор должен выполнить на каждом шаге некоторое множество операций gaxpy одинаковых размеров, и, таким образом, эта процедура дает равномерную загруженность. В алгоритме 6.1.2 труднее всего понять индексирование. Мы работаем мысленно с x(j) и y(i), но они не соответствуют Aloc(ij\ xloc(j) и yJOC{i). Таким образом, с этим алгоритмом связан большой труд по «обдумыванию индексов», и это, к несчастью, типично для матричных вычислений на распределенной памяти-до тех пор, пока у нас нет хорошего компилятора. 6.1.10. Стоимость обмена информацией Накладные расходы на обмен информацией можно оценить количественно, если мы сформируем модель оценки стоимости передачи сообщения. Для того чтобы это сделать, будем полагать, что передача т чисел с плавающей точкой от одного процессора к другому требует comm (m) = ad + fidm (6.1.4) секунд. Здесь а,,-время, необходимое для инициализации сообщения, и {^-скорость передачи сообщения. В алгоритме 6.1.1 на каждом временном шаге посылается и принимается г-вектор и выполняется 2 г2 флопов. Если вычисления производятся со скоростью R флопов в секунду и нет никаких задержек, связанных с recv, то каждый временной шаг требует (2 r2/R) + 2 (ad + г) секунд. Более информативной величиной является отношение вычислительных затрат к коммуникационным. Для алгоритма 6.1.1 оно имеет вид Время, занимаемое вычислениями 2 r2/R Время, занимаемое обменами 2 (ad + pd г) Эта дробь дает количественное выражение коммуникационным издержкам по отношению к объему вычислений. Очевидно, если г = njp возрастает, то увеличива¬ ется и часть времени, занимаемого вычислениями. 6.1.11. Эффективность и ускорение Эффективность /^-процессорного параллельного алгоритма определяется рТ{р)’ где Т(к)- время, требуемое для выполнения программ на к процессорах. Если вычисления происходят со скоростью R флопов в секунду, а коммуникации моделируются формулой (6.1.4), то в алгоритме 6.1.1 разумная оценка для Т(к) дается формулой Т(к) = X 2(n/k)2/R + 2(a, + р„(«/*)) = ™ + 2adk + 2р„и. i = 1 Предполагается, что процессоры не простаивают. Тогда мы находим
6.1. Операция gaxpy на распределенной памяти 247 Заметим, что эффективность улучшается с ростом п при фиксированном р и ухудша¬ ется с ростом р при фиксированном п. Полезное наблюдение такого рода-вот практически и все, что удается извлечь из нашей грубой модели вычислений и обменов. На практике единственным заслуживающим доверия способом приобре¬ тения интуиции насчет матричных вычислений на какой-либо конкретной системе с распределенной памятью являются тестовые замеры производительности. С эффективностью связано понятие ускорения. Мы говорим, что параллельный алгоритм для конкретной задачи достигает ускорения S, если S — r^scq/Tpar > где 7^г -время выполнения параллельного алгоритма и Т - время реализации на одном процессоре - при условии, что используется наилучшая однопроцессорная процедура. Для многих задач самый быстрый последовательный алгоритм не распараллеливается и, следовательно, для оценки ускорения привлекаются два различных алгоритма. 6.1.12. Дробление вычислений Еще одной важной характеристикой параллельного алгоритма является приня¬ тое в нем дробление вычислений. Это - качественная характеристика, относящаяся к объему вычислительной работы, выполняемой между точками синхронизации. В систолическом алгоритме процессоры синхронизируются на каждом временном шаге, и, значит, в этой модели показателем дробления вычислений служит просто их количество на каждом шаге. Например, каждый временной шаг в алгоритме 6.1.1 содержит г х r-операцию gaxpy. Более мелкое дробление получается, когда объем сообщений ограничен одним числом с плавающей точкой. Вот процедура, возни¬ кающая при этом k>c. init [р, р = my. id' left, right, n,r — njp, row = I + (p — 1) r: p r, Aioc = Л (*w,= x(row), yloc = у (row)] for/ = I :n send{xloc{ceil{tjp\right))\ recv(xl(H.(ceil(tjp\ left)) p = ceil(tjp)\ti = / - (p - l)p x = p-r, (6.1.5) if т ^ 0 T = T + p end Уюс = Уьк + Л1о,(:,(т - l)r + Р)^ог(Р) end quit Вместо одного оборота карусели, как в алгоритме 6.1.1, здесь делается г оборотов. При р-м обороте л(р :р:п) обходит круг. В момент перевычисления у1ос в v/of(p) помещается х(р + (т — 1)г). Заметим, что (6.1.5) имеет временных шагов в г = п/р раз больше, чем алгоритм 6.1.1. Однако на каждом шаге выполняется меньшая работа, так как вместо gaxpy выполняется saxpy. Итак, дробление вычислений в (6.1.5) более мелкое, чем в алгоритме 6.1.1. Важно понимать, что вместе с дроблением вычислений изменяются и коммуни¬ кационные издержки. В алгоритме 6.1.1 процессор тратит на обмены 2{pad + pdn) секунд, а в (6.1.5)-2(/mrf + $dn) секунд. Таким образом, для системы, поддерживаю¬ щей мелко-дробный параллелизм, важнейшее значение имеет малость стартового времени ad сообщения.
248 Гл. 6. Параллельные матричные вычисления Параллелизм мелкого дробления часто облегчает получение равномерной за¬ груженности. Однако если в системе с высокопроизводительными процессорами вычисления дробятся слишком мелко, то локальные программы не могут работать со скоростью 2-го или 3-го уровня просто из-за того, что именно им и недостаточно локальных линейно-алгебраических операций. На дробление вычислений может влиять также выбор структуры распределенных данных. Ниже - реорганизация алгоритма 6.1.1 в предположении, что Ргос(ц) со¬ держит |>й блочный столбец (вместо ц-й блочной строки) матрицы А из (6.1.1). Алгоритм 6.1.3. Предположим, что заданы ЛеН"*'1, xeR" и что z = у + Ах. Если в /^-процессорном кольце каждый процессор исполняет следующую локальную программу и п = г р. то после окончания процесса Ргос(р) содержит z(l + (р — - 1)г:цг в уш. loc. init [р. р = ту. id. left, right, п. г = п/р. col = 1 А (р — I) г: р г, Aloc = A (:.col).xloi = x(cof).ylvc = у {col)] for t - О: p if / = О W = AlocX\oc else send (w, right); recv(u, left) т = p — t ifx < 0 x = x + p end {w = Axxx} У1ос = У1ос + w(l +(t- 1)г:тг) end end quit Заметим, что в этой процедуре циркулируют векторы w, а не векторы х1ос. как в алгоритме 6.1.1. Поскольку векторы и> имеют длину п. а х1ос-длину г = п/р. мы видим, что алгоритму 6.1.3 сопутствуют большие коммуникационные издержки. По отношению к дроблению вычислений вместо 2г3 флопов между точками коммуникации, как в алгоритме 6.1.1, теперь мы имеем только г флопов. Изменение в степени дробления вызвано массивным вычислением, имеющим место на шаге / = 0. 6.1.13. Модель передачи сообщений Теперь обсудим вычисления на распределенной памяти в отсутствие глобальных часов. Координация процессоров здесь достигается с помощью посылки и приема сообщения. В отличие от систолической модели процессор может отправить сообщение в любое время и не обязан ожидать следующего отсчета глобальных часов. Наш язык передачи сообщений «не заботится» о том, как связаны процессоры. Любой процессор может отправить сообщение любому процессору. Однако на практике распределенные вычисления стоит организовывать таким образом, чтобы сообщения посылались «соседним» процессорам в сети. Так и будет в большинстве наших примеров. Мы начнем с основанной на передаче сообщений версии алгоритма 6.1.3.
6.1. Операция gaxpy на распределенной памяти 249 Алгоритм 6.1.4. Предположим, что заданы A eRn х ", jcgR" и >7gR" и что z = у + Ах. Если в /^процессорном кольце каждый процессор исполняет следующую локальную программу и п = гр, то по окончании процесса Ргос(ц) содержит z( 1 + (ц — 1) г: |д г) в У юс ■ loc.init [р,р = ту. id., left, right, п, г = п/р, col — 1 + (р — 1)г:рг Aloc = А(:, cot), xloc = x(col), у1ос - у (cot)] W = А,осХ1ос к= 1 while к ^ р send(w, right): recv (w, left) t = t — к ifx^O т = т + p end {w = Л-Кт} Л* = Л* + и’0 + (x - *)г:тг) k = k + 1 end quit Хотя выглядит это очень похожим на свой систолический аналог - алгоритм 6.1.3, лежащая в основе логика здесь совершенно другая. Именно, Ргос(р) узнает, что делать по индексу к, который отслеживает число принятых сообщений. 6.1.14. Дальнейшие примеры передачи сообщений Поучительно рассмотреть некоторые вариации алгоритма 6.1.4, для того чтобы продолжить иллюстрацию парадигмы передачи сообщений. В качестве первого примера предположим, что х и у целиком размещены в Ргос(1) и что Ргос(1) должен на месте у получить z = у 4- Ах. (Мы продолжаем считать, что А распределена по блочным столбцам.) Один из подходов к этой задаче - заставить Ргос(1) передать копию хх для Ргос (г). После этого Ргос(т) вычисляет Ах хх и возвращает результат в Ргос(1), где он используется для перевычисления у. Вот один из способов сделать это: {Распределить jc по процессорной сети.} ifp = 1 for т = 1: р send(x(l + (т — 1)г:тг),т) end end (Принять Хр, вычислить w = А^Хр, послать w в Ргос(1).} recv (xloc, 1); и» = Alocxloc; send(w, 1) (Proc(l) собирает векторы w и перевычисляет у.) if р = 1 for т = 1: р recv(w, т) у = у + И’ end quit Заметим, что Ргос(1) посылает сообщение сам себе-вещь совершенно легальная в нашей модели. Скажем также о том, что предсказать коммуникационные издерж¬
250 Г л. 6. Параллельные матричные вычисления ки здесь труднее, чем для алгоритма 6.1.I, из-за того, что обмениваются не соседи. При оценке производительности весьма важную роль играло бы системное обес¬ печение маршрутизации сообщений. Теперь предположим, что Ргос(р) содержит x(col) и А(:, со1)ч где col = 1 + 4 i\i — L)r:pr, и чю мы хотим на месте у получить z — у 4- Ах. Будем считать, что у помещается в Ргос(1) в начале и в конце вычисления. Кажется разумным действовать следующим образом: ifp = 1 У У A jnc send (г, ri$ht)\ reev(j, left) (6.1.6) else recv\\\ left); y = У-f .v^L; send(v, right) end quit Логика зтого подхода состоит в том, что у движется по кругу, вбирая в себя А^х^ на каждой остановке. Проблема заключается в том, что здесь нет одновременно выполняемых вычислений. В любой момент только один процессор занят арифмети¬ ческой работой. Чтобы это исправить, мы просто сделаем так, чтобы Ргос (р) выполнял вычисле¬ ния, прежде чем он будет ждать прибытия циркулирующего у: if ц = I у =у 4 AIorxhJC send (у\ right); recv (у, left) else ^ ~ or -*f©£ recv O’, left); у = у Ь щ send (у, right) end quit Теперь уровень простаивания намного сокращаегся в сравнении с (6.1.6). Задачи 6.1.1. Моли филировать алюритм 6.14 так, чтобы п не обязательно было целым кратным р. 6.1.2. Модифицировать алгоритм 64.1 так, чтобы он эффективно работал в случае трех¬ диагональной А. 6.1.3. Модифицировать алгоритм 6.1.2 так, чтобы он мог работать в случае, когда матрица А является: а) нижней треугольной; б) блочной верхней треугольной. 6,1 А Модифицировать алгоритмы 6.1.3 и 6.1.4 так, чтобы они на месте у получали z — у 4 Атх для заданно» о положительного целого т. доступного каждому процессору. 6.1-5- Модифицировать алгоритмы 6.1.3 и 6.J.4 так, чтобы у замещалось вектором г— у 4 4 А7 А л. 6.1.6. Модифицировать алгоритм 64.3 так, чтобы по окончании локальный массив AIqc в Ргос(и) содержал ц-й блочный столбец для А 4 ху*. Замсчагага и литература к § 64 К числу общих ссылок на параллельные матричные вычисления относятся Dongarra J.J. and Sorensen D.C. (1986). “Linear Algebra on High Performance Computers”, Appl. Math, and Comp., 20. 57 -88.
6.1. Операция gaxpy па распределенной памяти 251 Heller D. (1973). “A Survey of Parallel Algorithms in Numerical Linear Algebra”, SIAM Review 20, 740 777. Фацдеева В. H., Фаддеев Д, К. Параллельные вычисления в линейной алгебре.- Кибернетика, 1977, № 6, 23 40. Хокни Р., Джесхоуп К. Параллельные ЭВМ-М.: Радио и связь, 1986. Hockney R. W. and Jcsshope С R. (1988). Parallel Computers 2, Adam Hilger, Bristol and Phila¬ delphia. Modi J.J. (1988). Parallel Algorithms and Matrix Computations, Oxford University Press, Oxford. Ortega J. M_ and Voigt R. G. ( J985)l “Solution of Partial Differential Equations on Vector and parallel Computers” SIAM Review 27, 149-240. Важной и трудной проблемой является оценка производительности на системах с распределен¬ ной памятью. См. Adams L. <Tnd Crockett Т. (1984). “Modeling Algorithm Execution Time on Processor Arrays” Computer 17, 38 -43. Gannon D. and Van Rosendale J. (1984). “On the Impact of Communication Complexity an the Design of Parallel Numerical Algorithms” IEEE Trans. Comp. С-33, 1180-1194. Johnsson S. U (1987). ‘"Communication Efficient Basic Linear Algebra Computations on Hypercube Multiprocessors”, J. Parallel and Distributed Computing, No. 4, 133-172. Saad Y. and Schultz М. H. (1985). “Data Communication in Hypercubes”, Report YALEU/DCS/RR 428, Dept, of Computer Science, Yale University, New Haven, CT. Saad Y. and Schultz M.H. (1985). ‘Topological Properties of Hypercubes”, Report YALEU/DCS/ RR 389, Dept, of Computer Science, Yale University, New Haven, CT. Вопросы реализации на параллельных системах обсуждаются в Connolly К., Dongarra J.J., Sorensen D., and Paterson J. (1988). “Programming Methodology and Performance Issues for Advanced Computer Architectures”, Parallel Computing 5, 41-58. Dongarra J.J. and Sorensen D.C (1987). “A Portable Environment for Developing Parallel Pro¬ grams", Parallel Computing 5, 175 186. O'Leary D. P. and Stewart G. W. (1986). Assignment and Scheduling in Parallel Matrix Factoriza¬ tion”, Lin. Alg. and Its Applic. 77, 275-300. Матричные вычисления на 2-мерных массивах обсуждаются в Rung Н.Т. (1982). “Why Systolic Architecture?, Computer 15, 37-46. O’Leary D. P. and Stewart G.W. (1985). “Data Flow Algorithms for Parallel Matrix Computations”, Comm ACM 28, 841- 853. По поводу обсуждения базовых линейно-алгебраических вычислений на распределенной памяти см. Johnsson S.L. and Но СТ. (1987). “Matrix Transposition on Boolean n-cube Configured Ensemble Architectures”, Report YALEU/DCS/RR 574, Dept of Computer Science, Yale University, New Haven, CT, to appear in SIAM J. Alg. and Discrete Methods. McBryan O. and van de Velde E. F. (1987). “Hypercube Algorithms and Implementations” SIAM J. Sci. and Slat. Comp. 8, 227-287. Molcr С. B. (1986). “Matrix Computations on Distributed Memory Multiprocessors”, in Proceedings of First SIAM Conference on Hypercube Multiprocessors, ed. M.T. Heath, SIAM Press, Philadelphia, Pa., 1986. Хороший материал no матричным вычислениям на распределенной памяти содержится в трудах конференции, посвященной j клеркубу. См. Heath М.Т. (ed.) (1986). Proceedings of First SIAM Conference on Hypercube Multiprocessors, SIAM Publications, Philadelphia, Pa. Heath M.T. (cd.) (1987). Hypercube Multiprocessors, SIAM Publications* Philadelphia, Pa. Fox G. (ed.) (1988). The Third Conference on Hypercube Concurrent Computers and Applications, Vol. II-Applications, ACM Press, New York.
252 Гл. 6. Параллельные матричные вычисления Добавления при переводе Свежим обзором по параллельным вычислениям с плотными матрицами является Gallivan К. Д., Plcmmons R.T., Sameh А. Н. (1990). “Parallel algorithms Гог dense linear algebra computations’, SIAM Review, 32, No. 1, 54-135. Обгний взгляд на параллельные вычислительные системы и процессы с точки зрения матема¬ тика представлен в Воеводин В. В. Математические модели и методы в параллельных процессах. М.: Наука, 1977. 6.2. Операция gaxpy на общей памяти Теперь мы обсудим операцию gaxpy на многопроцессорных системах с общей памятью. В такой системе каждый процессор имеет доступ к общей, разделенной с другими памяти, как показано на следующем рисунке: \Proc и) I I Ргос (2) I IРгос (3) I \Ргос (4)\ Разделенная память Рис. 62.1. 4-процессор на я система с общей памятью. Связь между процессорами достигается с помощью считывания и записи общих переменных, размещаемых в общей памяти. Каждый процессор выполняет свою локальную программу и имеет свою локальную память. В ходе вычислений данные текут ту да и обратно из общей памяти. Например, для операции gaxpy (z = у -h + Ах)\\ у и А могут располагаться в общей памяти. Процессор, участвующий в обработке, может: а) скопировать х, i-ю блочную строку А£ и j-й подвектор yi из общей памяти в свою память; Ь) вычислить zt = у* + Акхн с) скопировать zk из локальной памяти в общую память. В модифицированной форме здесь присутствует все то, чем мы интересовались в случае вычислений на распределенной памяти. Как обсуждалось в предыдущем параграфе, вся процедура должна обеспечивать равномерную загруженность. Вычисления следует организовывать таким образом, чтобы отдельным процессорам приходилось как можно меньше простаивать в ожидании какой-нибудь полезной работы. Потоки данных между общей памятью и локальными должны управляться с особой аккуратностью, так как они, по нашему мнению, являются значительным накладным расходом. (Это соответствует межпроцессорным коммуникациям в случае распределенной памяти.) Природа физического соединения между процессо¬ рами и общей памятью очень важна и может влиять на разработку алгоритмов. Например, если к любой заданный момент времени доступ к общей памяти может получить только один процессор, то следует позаботиться о том, чтобы свести к минимуму возможность конфликтов, связанных с одновременным обращением к общей памяти. Большей частью мы стараемся не опускаться до столь подробной детализации, предпочитая рассматривать этот аспект системы как черный ящик, изображенный на рис. 6.2.1. Все локальные вычисления подчинены традиционным требованиям эффектив¬ ности. Если отдельные процессоры являются векторными/конвейерными процессо¬ рами, то, как обсуждалось в § 1.4, могут быть важными такие вещи, как шаг и длина вектора, число обращений к локальной памяти повторного использования данных.
6.2. Операция gaxpy на общей памяти 253 Чтобы познакомиться с матричными вычислениями на общей памяти, полезно еще раз рассмотреть параллельную реализацию для gaxpy. Сначала мы изложим такой алгоритм для gaxpy, в котором задача каждому процессору ставится заранее. Для менее регулярных вычислений необходимо назначать задачи процессорам по ходу вычислений. Динамическое назначение задач требует специальных средств синхронизации, и для этого мы вводим понятие монитора. Используя мониторы, мы можем найти элегантные решения для широкого класса проблем планирования вычислений. 6.2.1. Статическое планирование операции gaxpy Всюду далее будем считать, что наш модельный компьютер с общей памятью имеет р процессоров и р-й процессор обозначается Ргос(р). Как и в предыдущем параграфе, рассмотрим следующее блочное разбиение п * «-задачи (gaxpy) z = = у + Ах: Z1 У\ А‘ ~ — + *? s*_ Jp_ л_ Здесь мы полагаем, что п = гр и Л^еНгх* yMeR', ^eRr. Наши обозначения, связанные с общей памятью, мы внедем, формируя следующий алгоритм, в котором в Ргос(р) на месте >’и получается + Аух. Алгоритм 6.2.1. Предположим, что Л eR* х rt, xeR" и ye R* располагаются в общей памяти, к которой имеют доступ р процессоров. Если п = гр и каждый процессор исполняет следу ющий алгоритм, то по окончании процесса на месте у получается z = у + Ах. shared variables [Л (1: л, 1:«), х(1:и), у(1;и)] globwinit [Л, х, у] loc.init [д, р = ту. id, л] г = л//г, row = I h (р — \)r:\xr get (д., x,J; get(>'(r<w), y,J for j = 1 :n get M H; А я,„): ylx = ytoc + alBf x(/') end PUtC'W У [row)) end quit Мы предполагаем, что в каждом процессоре находится копия этой программы. Все переменные являются локальными, за исключением тех, которые описаны опера¬ тором shared variables. Чтобы подчеркнуть локальность переменной, мы часто используем нижний индекс 1ос. Оператор glob.iiiit указывает, какие общие перемен¬ ные должны инициализироваться. В операторе loc.init указываются локальные переменные, которые должны инициализироваться, в их числе и обозначение процессора р. Мы не будем думать ни о том, каким образом осуществляются эта инициализации, ни о том, как загружаются локальные программы или как организу¬ ется их параллельное выполнение. Это-важные детали, связанные с реализацией, но они выходят за рамки нашего уровня изложения. Оператор quit напоминает нам, что
254 Гл. 6. Параллельные матричные вычисления окончание программы на одном процессоре не означает, что все вычисления закончены. Исполняемая часть локальной программы следует за определением общих переменных и локальными и глобальными инициализациями. В общую память и обратно данные пересылаются с помощью операторов get и put. Например, get (А (row, Д а1ос) копирует часть столбца A (row, j) из общей памяти в локальное рабочее пространство а1ос. Аналогично, после того как Ргос(р) завершает вычисление вектора уц + А^х, он возвращает его в общую память с помощью предложения PUt(V,«r> Д™»')). Заметим, что в алгоритме 6.2.1 только один процессор делает записи в заданном месте общей памяти, отведенной для у. Таким образом, в синхронизации здесь нет необходимости. Каждый процессор имеет совершенно независимую часть всех вычислений, связанных с gaxpy, и ему не нужно следить за тем, что делают другие процессоры. Мы говорим, что алгоритм допускает статическое планирование работы, потому что ее распределение осуществляется перед выполнением. 6.2.2. Обмен данными с общей памятью Важно учитывать накладные расходы, связанные с операторами get и put. Они соответствуют издержкам, связанным с send и recv для вычислений на распределен¬ ной памяти. Будем считать, что в общем случае put и get имеют вид get ({матрица в общей памяти}, {матрица в локальной памяти}) put ({матрица в локальной памяти}, {матрица в общей памяти}) Полагаем, что размеры общих и локальных матриц одинаковы, а их элементы в соответствующей памяти располагаются без пропусков. В алгоритме 6.2.1 пред¬ полагается, что А хранится в общей памяти по столбцам. Таким образом, Ац не занимает в памяти участка без пропусков и, значит, должна копироваться в локаль¬ ную память столбец за столбцом. Если get или put относятся к т числам с плавающей точкой, то мы определяем время передачи как trans(m) = as 4- Рsm. (6.2.2) Здесь as представляет собой стартовое время, а РЛ. - соответствующую скорость передачи. Отметим сходство этих затрат с нашей моделью в § 1.4.3 для времени выполнения векторной операции и с нашей моделью (6.1.4) для обменов в системе с распределенной памятью. Учитывая все операторы get и put в алгоритме 6.2.1, мы видим, что время, которое каждый процессор тратит на обмен с общей памятью, оценивается как Ть, 2.1 = (и + 3) а, + (я + 2 г + nr) ps. (6.2.3) Однако могут быть и скрытые задержки, связанные с каждым get и put, потому что процессоры могут вступить в конфликт при одновременном обращении к общей памяти. Таким образом, важно помнить, что для алгоритма 6.2.1 (6.2.3) является оценкой накладных расходов на обмен с общей памятью. 6.2.3. Равномерная загруженность Алгоритм 6.2.1 дает прекрасную равномерную загруженность. Однако если А нижняя треугольная матрица, то необходимо перераспределить загрузку про¬ цессоров таким образом, чтобы обеспечить каждому из них примерно одинаковое
6.2. Операция gaxpy на общей памяти 255 количество полезной работы. Один из способов добиться этого-сделать так, чтобы Ргос (|д) вычислял z (|д: р :п) = у (р :р: п) + А (р: р: п) я. Детали мы оставляем читателю, поскольку искомая процедура очень близка к алгоритму 6.1.2. 6.2.4. Синхронизация с помощью барьеров Предположим, что мы хотим на месте у получить единичный вектор, на¬ правленный так же, как вектор z = у + Ах, который мы считаем ненулевым. Наш подход к этой задаче состоит в том, чтобы вычислить z, используя параллелизм алгоритма 6.2.1, а затем заставить какой-либо один процессор, скажем Ргос(1), выполнить нормировку z/||z||2. На первый взгляд, для этой задачи gaxpy с нормировкой вполне разумным кажется следующий подход: shared variables^ (1:п, 1 :п), х(\ :п), у{ 1 :п), s] glob, init [А, х, у] loc. init [р, р = ту. id, п\ г = п/р\ row = 1 + (р — 1)г:рг get (я, *,J; get (у (row), yloc) for j = 1 :n get (A (row, j), aloc); yloc = yl0( + alocx(J) end put(v/oc, у (row)) if p — 1 get(y, m,J; Ste = || uloc \\2; put(sloc, s) end get (^, st J; yloc = ytJs; pu t(ylw, у (row)) quit Однако в этом подходе есть два серьезных изъяна. У нас нет никакой гарантии, что у содержит z, когда Ргос(1) начинает вычисление 2-нормы, и нет гарантии, что 5= ||z||2, когда Ргос(2), ..., Ргос(/>) начинают нормирование. Чтобы исправить эти недостатки, нам нужно какое-то средство для синхрониза¬ ции, которое может задержать вычисление 2-нормы до тех пор, пока все процессоры не вычислят и не запомнят свою порцию вектора z, и которое может задержать нормирование до тех пор, пока не будет получено s. Для этой цели мы вводим конструкцию барьера: Алгоритм 6.2.2. Предположим, что х ”, jcgR" и yeRn размещаются в общей памяти, доступной для р процессоров. Если п = гр и каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у получается z/Ц г ||2, где вектор z = у + Ах предполагается ненулевым. shared variables [А (1:п, 1 :п), я(1 :п), y(l:n), s'] glob, init \_А, х, у] loc. init [р, р = ту. id, п] г = п/р\ row = 1 + (р — 1 )г:рг get(x, xIoc); get (_у (гои), y,J for j — 1 :п get (A (row, j), ajJ; ylQC = yloc + al<Kx(j) end PUtOv, У (row)) barrier if|i = 1 get O’, И/J; sloc = || utoc || 2; put(5lpc, s)
256 Гл. 6. Пара иельные матричные вычисления end Ьцгпсг К«»(л, ,v,J; yla, = y,J.r, put(v/et, > quit Чтобы понять, что делает barrier, удобно считать, чго процессор либо блокиро¬ ван, либо свободен. Процессор блокирован и откладывает выполнение программ, если он выполняет barrier. После блокировки р-го процессора все остальные процессоры находятся в «свободном состоянии» и продолжают работу. Проще говоря, barrier это препятствие. Все р процессоров собираются возле препятствия, и после этого они вес вместе перепрыгивают через него. В алгоритме 6.2.2 Ргос(р) вычисляет и немедленно блокируется. Нельзя предсказать порядок, в котором блокируются процессоры. Мы знаем лишь, что работа возобновляется в каждом процессоре, как только последний процессор достигнет барьера. Тогда Ргос(1) продолжает работу, вычисляя s — ||z||2, но остальные процессоры немедленно блокируются снова. Наконец, когда получено sy каждый процессор освобождается и может продолжить работу, выполняя свою порцию нормирования. 6.2.5* Парадигма динамического резерва задач Оператор barrier является полезной конструкцией для крупноблочных вычислений с равномерной загруженностью. Однако злоупотреблять им не следует, так как это увеличивает всеобщее простаивание. В тех случаях, когда равномерное распределе¬ ние работы трудно организовать заранее, нужен какой-то более гибкий подход к синхронизация. Чтобы мотивировать ключевые идеи, мы изложим параллельный алгоритм для п х л-операции gaxpy (z = у + Ах), основанный на общем блочном построчном разбиении, т.е. на разбиении вида (6.2.4) *1 VI А'' = -N Ук где yi9 и * ", Полагаем, что элементы матрицы рас¬ полагаются в общей памяти без пропусков. Определим целочисленные векторы first 11: Лг) и /дк/(1: N) как first (i) — I + + ... + j, lasl(i) = -f ... + Вот последовательный алгоритм, основанный иа блочном разбиении (6.2.4) и получающий z — у 4- Ах на месте у: for / = 1 :н row = first (0: last(i) у(г<лг) = г(гои’) + A (row. :)а* (6.2.5) end Заметим, что цикл определяет N независимых вычислений, и поэтому при раз¬ работке параллельного алгоритма нет каких-либо проблем. Вычисление zi? / = = р:р:ЛГ, можно было бы назначить процессору Ггос(р). Однако итоговая процедура может не давать равномерной загруженности, если строчные размеры блоков Ах разные.
6.2. Операция gaxpy па общей памяти 257 !>го подталкивает нас к разработке какого-либо динамического метода рас¬ пределения работы. До> сих пор мы рассматривали лишь «хорошие» блочные разбиения для вычисления gaxpy, которые позволяли нам заранее предложить удовлетворительное распределение работы. Такое распределение называется ста¬ тическим планированием. Наш подход к динамическому планированию основывает¬ ся на идее общего резерва1} задач. Чтобы проиллюстрировать этот подход, будем рассматривать вычисления, относящиеся к i-му проходу цикла в (6.2.5), как йо задачу. В подходе, связанном с резервом задач, поддерживается список остающихся задач. Когда процессор завершает задачу, он сверяется со списком. Если список пуст, то нет никакой работы, которую можно было бы назначить этому процессору. Если список не пуст, то процессор выбирает задачу из «общего котла» остающихся задач. После этого выбранная задача убирается из резерва. Чтобы применить эту идею к (6.2.5), разумно завести глобальную переменную count, сохраняющую номер последней выбранной задачи. Это может быть сделано (или кажется, что это так), если инициализировать count нулем н затем увеличивать ее значение каждый раз, когда процессор берется за новую задачу: shared variables [Л (11 :w), jc(1 : п\ у( 1 :п\ count] glob, init [А, дг, у, count = 1] loc.Init [ру р = ту. id, л, N, : N), last(1:N)] e*(*, xlot) get (county fy i = i + 1; put(r, count) wbilei С N row = firs t(i): las t(i) gpt(A{row, :), AJb getiy(row), y^) У loc У loc AIoc*lcc putOw yfrowjh get (count, i); i » i + 1; put(i, count) end Неприятность, связанная с этим подходом к динамическому планированию, заключается в том, что увеличение переменной count не контролируется. Два различных процессора могут «захватить» одно и то же значение переменной count„ если соответствующие им операции get {count, г); i = i + i; put(i, count) (6.2.6) перекрываются во времени. Таким образом, нам нужен какой-либо способ, гарантирующий, что увеличением счетчика согласно (6.2.6) в любой момент занима¬ ется не более чем один процессор. Будем говорить, что (6.2.6) является критическим разделом алгоритма. 6.2.6. Мониторы В решении проблемы критических разделов могут использоваться мониторы. Проиллюстрируем эту концепцию на примере идеи резерва задач. Ключом к реше¬ нию является разработка специальной процедуры nexti.index(pf N, more, i), которая имеет на входе р (число процессоров, назначенных на параллельное выполнение цикла) и N (число задач). На выходе процедуры - логическое значение В отечественной литературе по программированию такой динамический резерв задач иногда называют пулом; в оригинале-pool.-Прим. перее.
258 Гл. 6. Параллельные матричные вычисления в тоге и индекс в I, обладающие следующим свойством: more = true => назначается i-я задача; more — JWse => нет оставшихся задач. Если мы можем гарантировать, что в любой момент только один процессор исполняет nexti Index, то программа call nextL index (р, N, more, i) while more = true (6.2.7) На месте у{ получить z* = yi + Atx call nextL index (p, N, mar*, /) end выполняет вычисления корректно. Чтобы определить вычисление этого типа, мы расположим nextL index внутри монитора: monitor: next! protected variables .flag, count, idle.proc condition variables iwaiti initializations: flag = 0 procedure oexti. index (/?, N, more, i) if flag — 0 count = 0; /kuj = 1; idle.proc * 0 end count = count + 1 if count ^ N mwe = true; / = count else more = /afre; idle.proc = idle.proc + I if idle.proc < — 1 delay (watt) else Лл» = 0 end continue (watt) end end nextL index end next! Из этого примера видно, что монитор имеет имя и в его состав входят операторы protected variables (защищенные переменные), condition variables (переменные усло¬ вия), initializations (инициализации) и одна или несколько процедур для мониторин¬ га; в нашем случае монитор имеет одну процедуру: nexti. index. Главная задача, возложенная на монитор, состоит в том, чтобы аккуратно поддерживать значение счетчика count, изменяющееся от 1 до N, т.е. число задач, которые должны обрабатываться на р процессорах. Когда уже не остается задач, монитор инициали¬ зирует процесс «перематывания назад». Переменная idle.proc отслеживает число процессоров, которым не удалось заполучить новую задачу. Когда этот счетчик достигает />, работа монитора Заканчивается и он возвращается к своему началь¬ ному состоянию. Механику этого процесса лучше всего описать После того, так мы увидим монитор в действии. Алгоритм 6.2.3* Предположим,.что AeRn * ”, лгеИ" и yeR1* располагаются вобщей памяти, доступной для р процессоров. Предположим, что А хранится по блочным
6.2. Операция gaxpy на общей памяти 259 строкам и i-я блочная строка записывается как A (first (j) : last (/),:). Если каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у получается г * у + Ах. shared variables [Л (I: л, 1 :л), х(1 :и), >’(1: л)] gkb.init[>4, х, у] loc.ink[p, ji = ту. id, N, first(1 :N\ /<ш(1: N)] get(x, XjJ call nextL Index {p, N, more, i) while more = true row ~ first(i):last(H get(A(row, :), Alocl get (y (row), ytJ У\ос Укос + putOw У (row)) call nexti. index (p, N, more, i) end quit Этот пример мы используем для того, чтобы объяснить основные особенности использования мониторов. • Процессор пытается «войти» в монитор с помощью вызова своих процедур. Таким образом, оператор «call nextL index {р, N, more, Q» представляет собой попытку исполняющего процессора войти в nextL • Внутри монитора процессор является либо активным, либо ожидающим. В любой момент времени в мониторе может быть не более одного активного процессора. Значит, если Ргос(1) находится в nexti и Ргос (2) вызывает nextL index, то в момент вызова в своей локальной программе Ргос(2) становится ожидающим. • Процессор становится ожидающим внутри монитора, когда он встречает оператор вида delay ({переменная условия}). Смысл переменной условия в том, что она указывает очередь, и когда процессор становятся ожидающим, его Ш помещается в очередь. Если процессор является ожидающим, то монитор становится свободным, и если какие-либо процессоры стремятся войти в монитор, то в точности один получит разрешение на вход. Пусть Ргос(р) входит в монитор nexti и count имеет значение Ny т. е. нет задач для выбора. Тогда Ргос(р) становится ожидающим. Заметим, что прежде чем стать ожидающим, Ргос (ц) полагает more = false и увеличивает значение idle ргос. Таким образом, когда управление передается назад в локальную программу, которая вызывала nextL Index, будет «известно», что задач больше нет. Именно это дает возможность работать циклу while в алгоритме 6.2.3. • Когда текущий активный процессор выполняет оператор вида continue ({пере¬ менная условия}), он немедленно покидает монитор с несколькими варианта¬ ми продолжения. Если очередь, указанная в continue, непуста, то в точности один из ожидающих процессоров становится следующим активным процессо¬ ром. Если бы указанная очередь была пустой, то монитор был бы открыт для входа. Если при этом процессоры ждут допуска в монитор, то ровно одному из них будет разрешено войти. Если в nextL index защищенная переменная idle, ргос имеет значение />, то все вычислительные задачи завершены. Тот цроцессор, который первым обнаружит, что задач больше нет, устанавливает flag на нуль и дает старт процессу активизации /> — 1 ожидающих процессоров посредством выполнения оператора continue(Hwr/). После «пробуждения» процессор возобновляет работу. В nextL index «разбуженный» процессор не¬
260 Гл. 6* Параллельные матричные вычисления медленно выполняет continue н тем самым активизирует еще один ожхдакяциЯ процессор. Этот процесс активизации продолжается до тех пор, пока все р процессоров не уйдут из монитора. ш Значение защищенной переменной в мониторе может быть изменено только процедурой в мониторе. Заметим, что вызывающие программы не могут испортить flag, count или idle. ргос. • Защищенные переменные инициализируются только один раз-до каких-либо обращений к монитору. В next! переменная flag инициализируется нулем. В то время когда next! следит за распределением задач, flag имеет значение 1. Он устанавливается на нуль первым процессором, который обнаружит, что задач больше нет. Имеет смысл затратить немного времени и разобраться шаг за шагом с этой довольно сложной логикой, для того чтобы понять соображения, лежащие в основе динамически планируемых матричных вычислений. 6.2.7. Столбцовая реализация операции gaxpy В качестве второй иллюстрации использования монитора и идеи резерва задач мы изложим параллельную реализацию для gaxpy, основанную на следующем блочном столбцовом разбиении для z = у + Ах: z=y + [A Лм] = y + Axt + ... + Л„ж*. (6.2.8) Мы не делаем никаких предположений относительно ширины блочных столбцов. В параллельном алгоритме, основанном на этом блочном разбиении, разумно поручить Procfti) вычисление и>к — Акх^ где к = \i:p:N. Чтобы завершить gaxpy, нужно просуммировать частичные векторные суммы. На первый взгляд корректное решение вроде бы дается следующей процедурой: shared variables[>4(1 :л, 1 :п\ л(1 :п), у( 1 :лД g}ob.init[/4, х, yj loc.init[/7, |Х = ту. id, N] for Л — p:p:N xtJ- Wtac — Ai„rXlltc ge*(K. Л«)5 Уьс = Уьс + "W У) end quit Однако возникают проблемы, если выполнение модификации grtO'.J'iJs У1« = Уис + »ш1 У) (6.2.9) не управляется должным образом. Например, может быть потеряно то, что вычислит Ргос(1), если Ргос(2) читает у в то время, когда Ргос(1) находится на полпути при выполнении (6.2.9). Все будет работать, если процессоры не смешивают свое обращение к у. Ситуация требует монитора, управляющего вычислением суммы векторов, получаемых несколькими процессорами:
6.2. Операция gaxpy на общей памяти 261 * monitor sga* '; г*' procedure gax.add{u; ф < get(i), vjk vl0<: = iv + u; P«t(i’lur, t>) eod gax. add end gax Этот простое монитор не имеет защищенных переменных или переменных условия. В процедуре gax. add два аргумента. Первой-это локальный вектор, и вызывающий процессор хочет включить его в общую накапливаемую сумму, обозначенную вюрым аргументом. Используя этот монитор, мы можем вести безопасное накапливание суммы в течение вычисления gaxpy. Алгоритм 6.2.4. Предположим, что Ае R" * л, xeR* и yeR" размещаются в общей памяти, доступной для р процессоров, и пусть мы имеем блочное разбиение (6.2.8)- Если каждый процессор исполняет следующий алгоритм, то по окончания процесса на месте у будет z - у + Ах. shared variables [А (1: л, 1:я), х(1 :п\ >*(1 :и)3 glob, bit [Л, jc, у] 1ос.шК[>, р = my.idy А] call nexti.iodex(i, N, more, ft) while more = true call gax. add у) call nextL index (p, «, more, ft) end quit Итак, когда Procfti) вызывает gax. add, к у прибавляется еще один вектор. Свойства монитора гарантируют, что в любой Заданный момент только один процессор модифицирует у, Заметим, что динамический резерв задач в алгоритме 6,2:4; управляется процедурой мониторинга nexti index, разработанной в § 6.2,6- Алгоритм 6.2.4 выявляет некоторые взаимосвязи между степенью дробления вычислений, равномерной загруженностью и уровнем производительности. При возрастании N объем вычислений, связанных с одной задачей, уменьшается. Это влечет за собой более равномерную загруженность, поскольку уменьшается про¬ стаивание процессоров в конце вычислений, когда они ожидают, пока обнаружится, что задач больше нет. С другой стороны, с ростом N локальное вычисление wl>c — ^ioc xi<* все меньше и меньше напоминает операцию 2-го уровня, так как уменьшается ширина блочных столбцов в А1ос, Таким образом, в этой задаче есть некоторое несоответствие между равномерной загруженностью и крупноблочной линейной алгеброй. Разрешение этого противоречия, возможно, потребует хитрого блочного разбиения (6.2.8) с переменной шириной, например, чтобы блочные столбцы сужались по направлению к правому краю матрицы. 3 адячи 6.2.1. Модифицировать алгоритм 6.2,2 и 6.2.3 так, чтобы на месте А получалась се малоранго¬ вая модификация А + хуТ. 6.34. Модифицировать алгоритм 6.2-2 так, чтобы на месте у получалось А2 дг. 6.&3. ^Модифицировать алгоритм 622.2 так, чтобы на месте у получался вектор с единичной 2-норлдейс направленный как у + Акх. , 6.2.4*: Модифицировать алгоритм 6.2.1 так, чтобы он >^ттивво работал в случае нижней треугольной А. См. § 6.2.3.
262 Гл. б. Параллельные матричные вычисления 6.2*5. В этой задаче изучается что будет, если изменить определение «следующей задачи» для алгоритма 6.2.4. Рассмотрим л х л-зздачу gaxpy (у у + Лх)* и пусть задано Дред- положим, что какому-то процессору уже назначено вычисление А(:> 1: last) х(\ : last\ где 1 ^ last < п. В качестве «следующей задачи» возьмем присоединение Л (; to/ + 1: last + + Л)дс(Дмг + + Jc) к накапливаемой векторной сумме у, где к — imn(mt max(l, ceil ((л — — last)!р))). Модифицируйте монитор nexti и алгоритм 6.2.4 так, чтобы реализовывалось это новое определение следующей задачи. Подсказка: Вам нужна защищенная переменная last и процедура мониторинга вида nexti, indices (р, л, тоге, /, Д возвращающая индексы i и у, определяющие у«-у + Л(:, г y)x(i: у) как новую назначаемую задачу. Зомечшш н литература к § 6.2 Хорошее обсуждение мониторов к смежных понятий можно найти в любой из следующих работ: Andrews G. and Schneider F. В. (1983), “Concepts and Notations for Concurrent Programming**, Computing Surveys 15, 1-43. Boyle J., Butler R., Disz Т., Gtickfield Lusk E., Overbcck R„ Patterson J., and Stevens R. (1987). Portable Programs for Parallel Processors, Holt, Rinehart and Winston. 6.3. Параллельное умножение матриц В этом параграфе рассматривается задача умножения матрицы на матрицу D — С + ЛВ для многопроцессорных систем с распределенной и общей памятью. Рассматриваются процедуры для блочной операции gaxpy и для блочного скаляр¬ ного произведения. 6.3.1» Процедуры для блочной операция Предположим, что А, В и С-это п х л-матрицы, и мы хотим вычислить /> - С + АВ, Для ясности будем считать, что л - гр9 где р-число процессоров, и пусть имеет место блочное разбиение [Яи DJ = [С4, С,] + 1А19 AJ1В19 (6,3.1) где каждый блочный столбец имеет ширину г. Если в} = *ч TXT то один из способов распределения работы-поручить Ргос(р) вычисление р 0^ = Сц 4- АВр = Ср + £ Вщ ♦ t -1 Сначала мы опишем реализацию на распределенной памяти в предположении, что Ргос(р) размещает Арл Вр и Ср и по окончании процесса на месте Ср получается Dp. Заметим, что вычисление Dp включает локальные данные (Ар, Вр и Ср) и нелокальные данные (остальные Ах). Таким образом, по ходу вычислений каждый процессор должен иметь доступ к каждому столбцу матрицы А, Простой способ сделать это состоит в том, чтобы заставить Ах двигаддоя по кругу наподобие «карусели» так же, как мы вращали подветоры для х в,цашей процедуре gaxpy на распределенной памяти. Вот что получается:
6.3. Параллельное умножение матриц 263 Алгоритм 6.3.1. Предположим, что А, В и С суть п х «-матрицы и D = С + И Л Если в />-процессорном кольце каждый процессор исполняет следующую программу и « = /■/>, то по окончании процесса Ргос(р) содержит £>ц в локальном массиве С1ос. loc.inll[р, ц = ту.id, left, right, п, г = nip; col = 1 + (р — l)r:pr, Аье — A (i, col), Лц, = fit со/), CCBl = C(:, со/)] fork = 1 :p eead(Abc right): recv(Al0C> left) x = |i — к т = г + p end = 1 +(т— 1)г:тг)} ioc = Ci»c + ^ik +(t_ 1) c: t r, :) cod quit Эта процедура дает равномерную загруженность. Если считать, что нет простаива¬ ния и нет перекрытия во времени вычислений и обменов, то каждый процессор тратит на обмены время Тв зл — 2 р(о^ 4 Pj н2/р) ™ 2po,j 4 2р4л2, (6.3.2) поскольку здесь р операторов tend, р операторов recv, а каждый из них имеет дело с сообщением длины лг = п2/р. Теперь построим процедуру для общей памяти на базе того же самого блочного разбиения 6.3.1. Следуя алгоритму 6.3.1, мы устроим все таким образом, что Ргос(ц) будет вычислять D,, с помощью суммирования /Зц ш Сц 4 Л||а j ^||—д 4 ... 4 A i Вщ 4- Ар 4 ... 4 Ац Дщ. . (6.3.3) «Неровный» доступ к А имеет целью сокращение возможности одновременного обращения двух процессоров к одному и тому же блоку Aj. Вот детали: Алгоритм 6.3.2. Предположим, что А, В и С суть л х «-матрицы, располагающиеся в общей памяти, доступной для р процессоров. Пусть л — рг. Если каждый процессор исполняет следующий алгоритм, то по окончании работы на месте С получается D = С 4 АВ. shared variables [Л (1:«, 1:и), £(1:л, 1:«),С(1:л, 1:«)] glob, init [/4, в, С] kK.inJt[>, р. = ту. id я, г - п/р] get(£(:, 1 4(р- 1)г:цг), B,j get(C(:, 1 4&i- OrtprJ.Cto) fork — 1 :p i = \i — k ifi<0 x = т +p end get(Л(:, l+(x- 1)г:тг), Au£ {Al0f = AT = A (:, 1 4 (т - l)r: тг)} = ci« + + (г - l)r:xr, :) end CO, 1 4 (p- l)r:pr)) quit
264 Гл. б. Параллельные матричные вычисления Заметим, что в этой лающей равномерную загруженность процедуре каждое Cj, связано с р + 2 предложениями gel и одним предложением put. Следовательно, время, которое каждый процессор тратит на обмены с общей памятью, приблизи¬ тельно равно Ге.э.2 - <Р + ЗКа. + Мр). (6.3.4) Ширина г блочных столбцов в (6.3.1) полностью определяется размером задачи и числом процессоров: г = п/р. Важно понимать, что это строгое соотношение не является ни необходимым, ни желательным. Например, пг может превышать допустимую длину сообщения в системе с распределенной памятью. В системе с общей памятью может так случиться, что три п х г-массива, требуемых в алгоритме 6.3,2, не помещаются в локальной памяти. Чтобы обойти эти возможные ограничения, мы покажем в общих чертах, как приспособить наши два алгоритма к произвольному блочному разбиению [!>,,..., ад = [Clt.... ад + [А ад IBlfад, (в.з.5) где каждый блок имеет ширину г = nfN. Параметр N можно взять достаточно большим для того, чтобы сообщения или локальные буферы были достаточно малыми. Модифицируя алгоритм 6.3.1 при упрощающем допущении N — qp, мы пред¬ положим, что Ргос(р) хранит у себя блочные столбцы А* В} и Ср j = : N. Снова ходят по кругу по принципу карусели, только требуется q оборотов. На fc-м обороте по кругу перемещаются блочные столбцы Ai + (t _ 1)r i = 1 :р. Коммуника¬ ционные издержки, связанные с этой процедурой, имеют вид %. 3.1 = 2«P(aJ + Pjw). (6.3.6) Для модификации алгоритма 6.3.2, чтобы требовались только три локальных буфера размера п х г, мы поручим Ргос(д) задачу вычисления D, для j = Каждое вычисление D} процессор начинает с загрузки Bj и Сг При этом все А} должны поступить по ходу модификации Сг После полного перевычисления блока Cj он возвращается в общую память. Издержки на обмен с общей, памятью даются формулой %. у г = 9(3 + NHa. + Р.иг). (6.3.7) Ш* Проблема равномерной загружешостн Предположим, что матрица В в (6.3.1) нижняя треугольная. Поскольку Dj требует немного большей работы, чем Dr очевидна необходимость перераспределения работы для того, чтобы алгоритмы 6,3.1 и 6.3.2 давали равномерную загружен¬ ность. Эта проблема решается круговым отображением данных. Именно, Ptoc (р) назначается на вычисление р Dfc р.р:«) «■ С(:, \х:р:п) + АВ& р:р:л) = £ А(% х:р:п)В(х:р:п, р:р:л). 1=1 (6.3.8) 633. Некоторые вопросы, сввэаюцде с ;фоблсяжм вычислений Алгоритмы 6.3.1 и 6.3.2, очевидно, показывают, что дробление вычислений может задаваться подходящим блочным разбиением. Чтобы проиллюстрировать некото¬ рые дополнительные аспекты^ связанные с Дроблением вычислений, рассмотрим новую версию алгоритма 6.3.1, в которой эффективно реализуется вычисление
63, Параллельное умножение матриц 265 с .+лв вдда *1. 0 0 *14 *21 *21 0 0 0 *32 *33 0 0 0 *43 *44 [Cj С2 С3 с4] + Л2 Л3 А^] Заметим, что Ргос (pi) нуждается в единственном нелокальном Az, которое хранится у его правого соседа. Таким образом, 4то специальное вычисление С + ЛЯ может выполняться следующим образом: send (Л ^ left) гесv(FK right) (6.3.9) Си* — ц. Здесь принято соглашение о том, что Вр + 1р ~ В1р. Как видим, для W требуется 2-мерное рабочее пространство. Размер рабочего пространства можно уменьшить, если вычислять = = как сумму внешних произведений. В этом способе Ргос(ц) доволь¬ ствуется тем, что запрашивает Лм+1 от своего правого соседа по одному столбцу в каждый момент времени: = С* + A^B^l + (м - 1)г:цг) for Г = 1: г мйЦ^С, гХ &/<) гест(и>, right) if}L<p 1 = 1 +цг «Ье i = t end {w = А (и 0} * Qw "i" ’) Эта процедура отличается более мелким дроблением вычислений по сравнению с (6.3.9); тем самым это показывает, что дробление вычислений может быть связано с ограничениями на буфер. 63А Систолическое умножение 3 х З-матрнц Теперь мы покажем, как реализуется умножение N х N-матриц D = С + АВ на систолическом N х N-торе. (См. рис. 6.1.3.) Могут использоваться и другие топо¬ логии процессорной сети, но мы выбрали тор из педагогических соображений. Начнем с N = 3. Предположим, что у нас имеется систолический 3 х 3-тор, который изображается по ячейкам следующим образом: Ptoc(l.l) .1; Ргос(1,2) Ргос(1,3) Ргос(2,1) Ргос(2,2) Ргос (2,3) Рюс(3,1) Ргос(3;2) Ргос(3,3)
266 Гл. б. Параллельные матричные вычисления Мы покажем, как на этой систолической сети организовать умножение 3 и Э-матрнц D * С + А В. На Ргос(/,» возлагается задача получения dtJ на месте си. На каждом временном шаге Ргос(/, j) добавляет одно из произведений а^Ьц х локальной накапливаемой сумме е, которая после временных шагов будет содержать dt}. Сначала мы заострим внимание на Proc(l, 1) и вычислении величины ^11 ш С11 + Л11^11 + а12^21 + в11^31 • Предположим, что шесть входов, определяющих это скалярное произведение, размещаются внутри тора следующим образом: «и *п at з «13 &21 • • *31 • - (Не обращайте внимание на точки. Позже они будут замещены различными % н b,j.) В вашей систолической модели сейчас каждый процессор исполняет программу вида (6.1.1). Значит, мы можем «прокрутить» через Proc(l, 1) первую строку для А и первый столбец для В таким образом, что на каждом шаге по времени к текущей сумме с, аккумулирующей сп, будет прибавляться новая пара {elt> й»,}. Для этой отдельной порции всех вычислений поток данных представляется следующим образом: t = 1 с — с + а 13621 t-2 с = е + t = 3 С=С+ ОцЬц «12 *21 «13 «11 *31 • • *11 «13 *31 «11 «12 * *11 * *21 • «11 *11 «12 «13 *21 *31 Итак, после трех шагов локальная переменная с в Ргос(1, 1) содержит Jn. Мы организовали поток паотолт так, что по тору а1} перемещаются в западном, a Ьп - в северном направлении. Таким образом, ясно, что Ргос(1, 1) должен
6.3. Параллельное умножение матриц 267 выполнять локальную программу следующего вида: fort -1:3 ■end (а, wert); send (6, north) imv(o, easty, ncv(b, south) с — с + ab cod Далее, посмотрим, что делается в Proc(l, 2\ Ргос(1,3), Ргос(2,1) и в Ргос (3,1). На данном этапе изложения эти процессоры просто помогают двигать по кругу элементы А( 1, 1:3) и Р(1:3, 1). Они способны ва большее. Возьмем Ргос(1, 2), в моменты t - 1:3 он хранит у себя соответственно вп, яп и ах1. Если бы в эти моменты времени через Ргос(1, 2) проходили ЬЛ2, Ь12 и Ь22, то можно было бы сформировать dxi - Сц + ol3bi2 + aubi2 + al2b2i. Аналогично Ргос(1, 3) мог бы вычислить </j, — е12 + + йц *13 + °и*ээ> шк бы в моменты 1—1:3 были доступны ft|3, Ь2Ъ и ft33. Для этого мы инициализируем тор следующим образом: ®П *11 й12 *22 а\з Ьзз *21 *82 *13 Ьз1 *12 >23 Учитывая поток btJ в северном направлении, получаем: а12 621 (2ia *32 йп 4i3 *ai *12 *23 *п *22 *33 й!з *31 Оц *12 012 *23 *11 *22 *33 *21 *32 *13 «11 *11 «13 *22 «13 *33 *21 *32 *13 *31 *12 *23 Итак, если В отображается на тор с «косой линией старта», мы можем сделать так, чтобы первая строка процессоров вычисляла первую строку для С.
268 Гл. 6. Параллельные матричные вычисления Если мы скосили вторую и третью строки для А в такой же манере, то сможем заставить все девять процессоров выполнять умножение-сложение на каждом Щаге. Именно, при расположении ап Ьп «12 *22 «13 *33 «22 *2 1 <>23 $32 «21 *13 «33 6з1 «31 *12 а32 *23 поток aif на запад и поток Ь~ на север дают нам следующее: t = 1 t = 2 1 = 3 После этого примера мы готовы к тому, чтобы сформулировать алгоритм для произвольного /V. 6.3*5. Общий случай Чтобы описать распределение N х fV-матриц А и В в общем случае, удобно определить целочисленную функцию (.)* по следующему правилу: «-«*+р) ГЦ (МО, О ^ Р < N J Wft uv, Р = О. Алгоритм 6,33. Предположим, что заданы АеRWx\ BeRN*N, CeRWxW и D — С + АВ. Если в систолическом N х /V-торе каждый процессор исполняв^ сле¬ дующий алгоритм, то по окончании процесса Proc(/,j) в локальной переменной с содержит di}. «12 *21 013 *32 «11 *13 «23 *31 «21 *12 а22 *23 031 *11 «32 *22 «ээ *33 «13 *31 «11 *12 «12 *23 <*21 *11 «22 *22 «23 *33 <*32 *21 «33 *32 «31 *13 «11 *11 «12 *22 «13 *33 «22 *21 «23 *32 «21 *13 «33 *Э1 «31 *12 «32 *23
6,3. Параллельное умножение матриц 269 to“l?N ‘Л ’ '>-• Ь " seed (a, wesfy send(6, лаг*й) ют (a, east}; recv(b, soufA) c^c + ai end quit Нетрудно доказать, что этот алгоритм будет работать. Сначала заметим, что в момент t Ргос(£ J) хранит у себя а.,. . . . . л в b,... . v .По окончании *» v + ./ — 1 + i/к \* -rj — 1 -г 1/nj N N С “ C,i + "«.<«+>- 1 + »>„ b<i+J~ 1 + О,., = С* + = Одно из приятных свойств систолической модели заключается в том, что строгая регламентация делает проверку локальной программы относительно простым делом. 6.3*6. Елочный аналог Предположим, что Л> В и С суть блочные N х //-матрицы с г х г-блоками. Алгоритм 6.3.3 легко модифицируется так, чтобы вычислять "Cu ... C| w ... ... Bx H D = _Qi — QiV _ + _^N1 ^N1 Все, что нам нужно сделать,-это заменить обращения к aip bls и ci} на обращения к Aif Ви и Су. 6.3.7. Аснхрпш тороплыьная процедура Мы построим ниже асинхронный аналог алгоритма 6.3.3 для вычисления D * С + АВ: Пусть A eRN * N ш BeRN * N> и будем считать, что Ргос(4 » имеет своей задачей вычислить Предположим ради любопытства, что Ргос (i9j) вначале хранит у себя щр Ьц и си. Чтобы получить скошенность данных, которая оказалась существенной для алгоритма 6.3.3, строки матрицы А будут циркулировать вдоль строк тора в западном направлении, в то время как столбцы матрицы В циркули¬ руют вверх по столбцам тора в северном направлении. Алгоритм 63.4 Предположим, что заданы ЛеИ* * BeRN * N и СеR* * N и что D = С + АВ, Если каждый процессор в N х N-торе исполняет следующий алгоритм, то по окончания процесса Proc(4 J) хранит у себя di} в локальной переменной г. 1ос.1ай[ЛГ, (ц, X) = my.id, а = Оиъ * = V*» * - сма] far А — 1: ц — 1 seodfo нде*); teevfc east) end farft « 1:X — I send (A, north); recv(£, south)
270 Гл. 6. Параллельные матричные вычисления for к = 1: п с = с + cib send (а, идо/); recv(o, east) send (6, north); recv(A, sow/A) end for к = 1: |i — 1 send (a, east); recv (а, идо/) end for fc = 1 :X. — 1 send (A, south); recy (A, лог/Л) end quit 6.3.8» Использование блочного скалярного произведения в режиме резерва задач Теперь разберемся с вычислением п х л-матрицы D = С + АВ на общей памяти, когда за основу берутся блочные скалярные произведения. Будем считать, что л - Nr и А = (Лу), D * фу), С = (Су) и D = фу) суть блочные N х N-матрицы с г х г-блоками. Итак, N в Су + £ л4Л Вц. Вычисление Dy мы рассматриваем как задачу с меткой (i, j). Будем строить параллельный алгоритм, в основе которого режим резерва задач. Чтобы задача не казалась слишком легкой, будем считать, что D нужно получить на месте В. Мы организуем вычисления таким образом, чтобы D вычислялась блок за блоком в порядке возрастания столбцов. После вычисления у-го блочного столбца матрицы D можно без опасений изменить содержимое у-го блочного столбца в В Таким образом, мы хотим иметь процедуру следующего вида: Повторять до тех пор, пока не останется задач: Получить следующую задачу, назвать ее задачей (i, у). Вычислить Dy. Если это безопасно, на месте BtJ записать Dy. end Как и в наших gaxpy-процедурах с резервом задач, нам нужен монитор, на который возлагается назначение задач. Теперь ситуация двумерная-в том смысле, что задачи с наибольшим удобством помечаются парой индексов, указывающих на подлежащее вычислению D0-: (1, 1),..., (N, 1), (1, 2Х ..., (N, 2),..., (1, N),(N, N). Поэтому по аналогии с nexti мы получаем monitor :next|j protected variables:flag, row, col idie.proc condition variables :waiti initializations: flag = 0 procedure nextij. index (N, /?, more, U J) if flag = 0 row = 0; col = 1; idie.proc = 0; flag — 1 end if row < N — 1 row = row + 1
6.3. Параллельное умножение матриц 271 else row = 1; col — col + 1 end ifcoKAf j = row, j = col, more = true else more = false, idle.proc — idle.proc + 1 If idle.proc < p — 1 delay (waiti) else flag-0 end continue (wain) end end nexttj Безопасное замещение данных может управляться другим монитором с процедурой prod, сап write. Именно, если prod, canwrite (W, В, lj, г, N) безопасно замещает блоки Btj г ж r-матрицей W, то мы получаем Алгоритм 6.3.5. Предположим, что п = Nr и А = (А{]), В — (В1}) и С = (Су) суть блочные N х N-матрицы с г х r-блоками. Если эти матрицы хранятся в общей памяти по блокам и каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте BtJ получается Су + i AaBkJ, i — 1 :N, j = 1 :N. Предполагается, что р^ N. call nexty. index (N, p, more, lj) while more ** true 8*t(Cip Сш) for k = \:N get^tt, AtJ; get(BkJ, £,J; Clac = C,„ + AteBte end call prod, canwrite (CI<K, i, j, N) call nextij. index (N, p, more, i, j) end Монитор prod, обеспечивающий безопасное замещение, устроен следующим об¬ разом: monitor: prod protected variables:flag. col. done ( ) condition variables: waitq (') initializations:flag = 0 procedure prod, canwrite (W, i, j, N) if flag — 0 flag = 1; col. done (I :N) = 0 end col. done {j) = col. done lj) + 1 if col. donelj) < N delay (waitq lj)) end pntW *«) continue (waitq (/)) end conwrite end prod
272 Гл. б. Параллельные матричные вычисления Защищенный вектор col. done используется для подсчета числа блоков, уже извлечен¬ ных; из каждого блочного столбца матрицы Л.Когда процессор вызывает prod, сап write с помещенным в С loc блоком Dip переменная col. done {j) увеличивается на единицу. Если после этого ее значение меньше N, то Замещать Вц небезопасно, так как этот блок может еще потребоваться другой задаче. В этом случае вызывающий процессор ставится в очередь, управляемую переменной условия waitq (j). После того как в /• м блочном столбце получен N-й блок, оп хранится в соответствующем Bip а процессоры, в соответствии с waitqfj), освобождаются для того, чтобы возобновить запись своих Di}. Предположение о том, что А, В и С хранятся по столбцам (см. § 1.3), для А1} и Btj влечет за собой возможность считывания их с помощью одного оператора get и записи с помощью одного оператора pat Если в алгоритме 6.3.5 опустить предположение р ^ N, то процессоры могут все оказаться ожидающими из-за waitq{ 1), поскольку возможно, что JV-й блок в первом блочном столбце никогда не будет вычислен. В предположении, что нет простаивания и каждый процессор обрабатывает примерно N2/p задач, на обмены с общей памятью каждый процессор тратит Г«,3.5 = — (2 N + 2) (а, + р, г2) (6.3.9) Р секунд. Этот подход к задаче D = С + АВ связан с меньшим числом обменов с памятью, чем блочный saxpy-алгоритм на базе (6.3.5). Обоснование имеет много общего с нашим обсуждением переиспользования данных в § 1.4.9. Это обсуждение в нашем случае относится к локальной памяти и общей памяти, которые соответствуют кеш-памяти и основной памяти. Конечно, локальные запоминающие устройства в системе с общей памятью могут иметь свою собственную иерархию. Задг* 6.3.1. Расширить алгоритмы 6.3.1 и 63.2 таким образом, чтобы С заменялось на С + АВАТ. 63.2. Разработать детальные версии алгоритмов 6.3.1 и 6.3.2, основанные на (6.3.5). 633. Дать детальный, использующий структурные особенности алгоритм для вычисления (т:р:л,:) в алгоритме 6.3.3, 63.4. В режиме резерва задач разработать алгоритм, в котором на месте А получается D = С + АВ, где В-нижняя треугольная. В качестве j-й задачи взять вычисление D(^ j). 633. Модифицировать алгоритм 6.3.4 так, чтобы на месте С получалось D = С + Ак В. 63.6» Разработать версию алгоритма 6.3.1, дающую равномерную загруженность при обработ¬ ке нижней треугольной В. 633. Приспособить алгоритм 6.3.1 для обработки трехдлагональной В. Пусть е(1:я), d(\:n\ и /(1:л) обозначают поддиагональную, диагональную и наддиагональную части, причем *<л) =/0) = 0. Считайте, что Ргос(р) хранит у себя e(col\ d(eol) и f(cof)y где col = 1 + 1)г:рг. 6.3.8. На месте верхней треугольной матрицы можно получить ее квадрат без какого-либо дополнительного рабочего пространства. Напишите для этого процедуру, использующую динамическое планирование. Замечают ■ литература к § б3 Различные аспекты параллельных матричных вычислений обсуждаются в Cheng К. Н. and Sahni S. (1987). “VLSI Systems for Band Matrix Multi plication’V Parallel Computing 4, 239 258»
6.4. Кольцевые процедуры разложения 273 Etetcr A, and Reeves А. Р. (1988)1 “Block Matrix Operations Using Orthogonal Trees”, in G. Fox (ed.), The Third Conference on Hypercube Concurrent Computers and Applications, Vol. 11-Applica¬ tions, ACM Press, New York, pp. 1554-156). Fox G^r Johnson Lyzenga G., Otto S., Salmon J., and Walker D. (1988). On Concurrent Processors Vol 1: General Techniques and Regular Problems. Prentice-Hatl, Englewood Cliffs, NJ. Fox G.f Otto S. W. and Hey A.J. (1987). “Matrix Algorithms on a Hypevcube 1: Matrix Multiplica¬ tion”, Parallel Computing 4, 17-31. Johnsson S. L. and Но С. T. (1987). “Algorithms for Multiplying Matrices of Arbitrary Shapes Using Shared Memory Primatives on a Boolean Cube”, Report YALEU/DCS/RR-569, Dept of Computer Science, Yale University, New Haven, CT. 6.4. Кольцевые процедуры разложения В этом параграфе мы обсудим, как можно организовать различные матричные разложения на кольце. Представив параллельную реализацию основанного на gaxpy Холецкого, мы покажем затем, как работает та же самая логика планирования для разложений РА = LU и А = QR В конце обсуждается параллельное решение треугольных систем. 6.4.1. Кольцевой алгоритм Холецкого: случая п = р Посмотрим, как процедура разложения Холецкого может распределяться по кольцу из р процессоров Proc(l), , Ргос(р). Отправной точкой является уравнение G{j,j)G(j:n,j) = Aij'ttj)- X G(j,k)G{j:n,k)st(f:n). к= 1 Это уравнение получается приравниванием у-х столбцов в п х л-уравненни А — G GT. После того как найден вектор получается с помощью простого нормирования: G{j:nj) = Для ясности предположим сначала, что я = р и Ргос(ц) в начальный момент хранит у себя По окончания про¬ цесса каждый процессор замещает свой /4-столбец на соответствующий G-столбец. Для Proc(ji) этот процесс включает р — 1 saxpy-модификаций вида А(р.:п, |х)«- >4(р:л,р) - <r(p,y)G(p:л,у), вслед за которыми выполняются извлечение квадрат¬ ного корня и нормирование. Поэтому общая структура локальной программы для Ргос(р) имеет следующий вид: for/= 1 :|д — 1 Получить G-столбец от соседа слева. Послать копию полученного G-столбца соседу справа. Модифицировать /4(р:л,ц). end Сформулировать G(p:n,p) и послать соседу справа. Таким образом, Ргос(1) сразу же вычисляет <7(1: я, 1) = А (1: л, 1)Д/Л(1,1) и отсылает его Ргос {2\ Как только Ргос (2) получит этот столбец, он может сформировать G(2:n,2) и передать его для Ргос(2) и т.д. Устроив такой конвейер, мы можем утверждать, что процессор может быть свободным, как только он вычислит свой G-столбец. Отсюда также вытекает, что каждый процессор получает G-столбцы в порядке возрастания, т.е. Gfc, 1), G(:,2) и т.д. Основываясь на этих наблюдениях, мы получаем Алгоритм 6.4.1. Предположим, что матрица A eR" х п симметричная и положитель¬ но определенная и A — GG1-ее разложение Холецкого. Если в л-процессорном
274 Г л. б. Параллельные матричные вычисления кольце каждый процессор исполняет следующую программу, то по окончании процесса Ргос(р) содержит G(p:rt, р) в локальном массиве А1ос(р:пу loc.init [л, р - ту. id* leftf AJef (р:«) = Л (ц: л, р)] у=1 while ;<|i мг1г(0(/:«), teff) ifp < п send to (/:«), гадЛг) end 7=J+1 end ^1ог(И*^) ^Ic( ^ if p < n жоЦА^т)* right) Заметим, что число полученных G-столбцов должно быть j - 1. Если j * р, то наступает время, когда Ргос(р) формирует и отсылает £(р:л, р). 6.4,2. Кольцевой метод Холецкого: общий случай Теперь обобщим алгоритм 6.4.1 на случай произвольного п. Для распределения вычислений есть два очевидных способа. Можно потребовать, чтобы каждый процессор вычислял множество идущих подряд G-сголбцов. Например, если л = 11, р - 3 и А = [а19ап], то мы могли бы распределить А следующим образом: Тогда каждый процессор мог бы заниматься отысканием соответствующих столб¬ цов матрицы G. Неприятность, связанная с этим подходом, состоит, например, в том, что Ргос(1) простаивает после того, как будет найден четвертый столбец для G, хотя еще остается много работы. Более равномерная загруженность получается, если вычислительные задачи распределить с использованием кругового отображения, т.е» В этой схеме Ргос(р) получает G(:, р.:р:п). Когда любой заданный процессор заканчивает вычисление своих G-сголбцов, у каждого из остальных процессоров будет по крайней мере один столбец из G, который нужно вычислить. Итак, если п/р» 1, то все процессоры загружены большую часть, времени. Давайте разберемся с деталями Процедуры Холецкого с круговым распределе¬ нием. Каждый процессор поддерживает пару счетчиков. Счетчик у-это индекс следующего G-столбца, который поступит в Ргос(р). Процессору также нужно знать индекс следующего G-столбцу, который он должен найти. Заметим, что,.если col = р;р:«, то Ргос(р) отвечает за Gfacol)* a L— length (col)-это число G-сголбцов, end quit Proc (1) Ргос (2) Proc (3) Ргое (1) Ргос (2) Ягог(Э)
6.4. Кольцевые процедуры разложения 275 которые он должен вычислить. Будем использовать q для того, чтобы обозначить состояние процесса получения G-столбцов. В любой момент cd(q)~это индекс следующего подлежащего вычислению G-столбца. Алгоритм 6А2. Предположим, что матрица Лев" *" симметричная я положительно определенная и А = GGT-ee разложение Холецкого. Если в р-процессорном кольце каждый процессор исполняет следующую программу, то по окончании процесса Ргос(ц) хранит у себя G(k:n, к) для к ~ ц:р:л в локальном массиве А*к(1:и, I), где L - length (cot) н со/<-р:р:л. В частости, G(coi(q)):n, col(q) содержится в при q - I :L. 1ос.1лН[р, р *pid(), left, right, л, Аы * А{\ц:/>:л)] j * 1; q - I; со/» р:р:л; L- tei0/A(coQ while 4 < L (Сформировать G(/:«,».} 4«(/:Ч 9) - А|к(/:п, *)/.у/лЖ> иу<« tnA{Altt{j:n, q), right) end j—j+ 1 (Модифицировать локальные столбцы.} for k — q + \:L г ж сЫ(к) Аы(г:п, к) - Аш{г:п, к) - q) nd 9*9+1 ebe тест(9(/:«), left) Вычислить а, для которого Ргос (о) - поставщик полученного G-столбца- Вычислить 0-индекс последнего столбца для Proc(r/pAf). it right Фа /\J< р eend(9(/:n), right) end (Модифицировать локальные столбцы.} for к = 9:L г - со/(к); А.1ос(г :п, к) = ^(ггя, k) - g(r)g(r:n) end >=y+i tad end quit Чтобы проиллюстрировать логику системы указателей, мы рассмотрим вы¬ борочную 3-процессорную снтуапню с л = 10. Допустим, что три локальных значения q равны 3, 2 и 2 и три соответствующих значения col{q) суть 7, 5 и б: ( flj <Ц 07 а 10 I Од Од Оя Оц I Д8 <^8 Дв ] Pro С (1) Ргвс (2) Ргос (3) Сейчас Ргос (2) вырабатывает пятый G-столбец и увеличивает свое q до 3* Нуждается в объяснении логика, связанная с решением передать полученный
276 Гл. 6. Параллельные матричные вычисления G-столбец соседу справа. Должны выполняться два условия: • Сосед справа не должен быть процессором, породившим G-сголбец. В этом случае циркуляция полученного G-столбца должным образом заканчивается. • У соседа справа должно быть еще больше G-столбцов для вычисления. Иначе G-столбец будет отправлен какому-нибудь неактивному процессору. Соображения такого рода весьма типичны для матричных вычислений на распределенной памяти. Проследим за поведением алгоритма 6.4.2 в предположении, что пу>р. Нетрудно показать, что Proc(ji) выполняет /(И) = £ 2(и - (р + (к - 1)/>))(ц + (к - 1 )р) ж г? 1р к = 1 флопов. Заметим, что f(\)/f{p) = 1 + 0(р*!п\ и, значит, с точки зрения флопов мы имеем процедуру с приблизительно равномерной загруженностью. Каждый процессор получает и отсылает почти что каждый G-столбец. Используя нашу модель (6.1.4) для расходов на коммуникацию, мы видим, что каждый процессор тратит на обмены время я X 2(а,+ &(«-/)) *2а,л+ Р,»2. j- i Если предположить, что вычисления вдут со скоростью R флопов в секунду, то отношение вычисления/обмены для алгоритма 6.4.2 приблизительно равно (п/р) (2/3 А РД Таким образом, значения коммуникационных издержек снижаются с ростом п/р. 6АЗ. Кольцевые процедуры для других разложений Алгоритм 6.4.2 легко модифицируется для вычисления других разложений, таких, как РА = LU и А = Это вызвано тем, что в случае п х п-матриц алгоритмы для этих разложений можно разбить на следующие этапы: for у * 1: я — 1 Вычислить преобразование 7} по текущему А (:, j). Модифицировать A{j:nfj:n). end Типичные Tj включают преобразования Гаусса и Хаусхолдера, а типичные моди¬ фикации включают операцию saxpy. Чтобы подчеркнуть то общее, что есть у различных процедур разложения, мы представим «шаблон» процедуры, основанный на алгоритме 6.4.2: 1осЛпЙ[/>, \х = туМ leftt right, л, Aloc = А( 1 \х:р:п)] j = 1; q s= 1; col= р:р:л; L— length (со f) while if;-со/м Вычислить преобразование Tr (6.4.1) if / < n Послать Tj ближайшему соседу, end Применить Tj к локальным столбцам. Сохранить Tj.
6.4. Кольцевые процедуры разложения 277 j = j+ 1 q = ? + 1 eke Получить Tj от соседа слева. Послать Tj соседу справа (если необходимо). Применить Tj к локальным столбцам. У=У + 1 end end quit Важно подчеркнуть, что на практике все время работа идет с подходящим представлением для 7}. Например, в разложении Холецкого 7} закодировано в векторе (?(/:«, Д В LU оно задается>м вектором Гаусса. В QR оно задается>м вектором Холецкого и т.д. По кольцу передаются именно эти векторные представ¬ ления преобразований, а не сами они в явном виде. 6.4А Параллельное решение треугольных систем Обычно после получения разложения матрицы оно используется для того, чтобы решать линейные системы. При решении треугольных систем возникают некоторые интересные моменты, о которых было рассказано в § 3.1. Но они никогда не были «злобой дня», потому что стоимость разложений-0 (л3), а стоимость обратной подстановки или прямого исключения-О (л2). Однако для многопроцессорной системы с распределенной памятью не очевидно, что в стоимости параллельного решения системы Ах — Ь будет доминировать параллельная факторизация. По сравнению, скажем, с разложением Холецкого при распараллеливании прямой или обратной подстановки «простора» намного меньше. В этом разделе мы должны разобраться с особенностями одного специального подхода к решению треугольных систЫ на кольце, отличающегося высокой эффективностью. Используя его вместе с рассмотренными выше параллельными схемами факторизации, мы можем сохра¬ нить старую точку зрения на решение треугольных систем, как на дешевый «постскриптум» к вычислению разложения. Для простоты мы сосредоточимся на решении нижней треугольной п х «-задачи Lx = Ь. Будем считать, что у нас есть /^процессорное кольцо и «-целое кратное р, п = рг. Предположим также, что для Lvt b используется круговое отображение, т.е. Ргос(р) хранит у себя L(:, р :р: п) и А(р :р: л). Как действовать без этих предположе¬ ний-эта тема развивается в упражнениях и в работе Li, Coleman (1988), яа которой основано наше обсуждение. Исходным пунктом будет запись основанной на saxpy прямой подстановки в следующем виде: У = 0; z(l:/i)-0 while j <п j-j + 1;*М = *«-*(/) (6.4.2) г(/+ 1:пч=2(/Ч- 1:«) + Ц/'+ Ш В искомой кольцевой процедуре на Ргос(р) возлагается получение г(р:р:п) на месте А(|д:р:л). Чтобы это сделать, мы прокрутим вектор z из (6.4.2) по кругу г раз, начиная с Ргос(1). Этим вращениям вектора z присвоим номера от 0 до г — 1. Когда вектор z «посещает» Ргос(р) во время fc-го оборота, он используется, чтобы
273 Гл. 6. Параллельные матричные вычисления вычислитьдф + кр). Формально получаем следующее: locJnlt [р9 р = ту.id,, left, right, - L(\;nt \i:p:n\ »*(ц:р:и)] r ** я/р; col - ц:/>:л; * ■ 0; z{\ :«) = 0 while k<r~ 1 {Ргос(1) не получает ничего в начале оборота 0.} iffc#0Vn>l (6.4.3) recv(r, 1ф) end к = * + lljmcoHto (Вычислить х, и, если необходимо, модифицировать г и отослать направо.} *>(«*№) * «(*) ~ *№ If А # г — 1 V (1 < р г(/ + 1 :л) = г(/ + 1:«) + !**(/ + 1 :и, А)6|т,(А) send (г, rfoAl) end end quit Несмотря на распределенность вычислений в этом алгоритме, он обладает тем свойством, что в любой заданный момент работает только один процессор. Чтобы подступиться к распараллеливанию, заметим, что вычисление следующей перемен¬ ной процессором справа может начинаться до того, как будет полностью закончено перевычисление вектора z. Например, Ргос (2) может приступить к работе над х(2) сразу же по получении х(1) от Ргос(1). Таким образом, Ргос(1) должен был бы передать х(1) и после этого модифицировать z(2:я). Однако для Ргос(З), который будет вычислять jc(3) = 6(3) — ЦЗ, 1)х(1) —1,(3, 2)х(2), нужно, чтобы Ргос(1) выпол¬ нил также модификацию компоненты z(3). В общем случае, после того как Ргос (ц) вычислит *(/)» для процессоров ц + 1, , р, 1, ..., ц — 1 должны быть доступны величины Ц/ + 1 :j + р— 1)х(/). Это .подводит нас к мысли, что по кольцу должно бы прокручиваться нечто меньшее, чем весь вектор г. Давайте обозначим это «нечто» через «w» и попытаемся выяснить, что же это должно быть. Предположим, что когда w попадает в Ргос(р) на к-м обороте, вычисляется х(р +- кр). Предположим также, что после fc-ro оборота Ргос(Х) хранит у себя вектор zjj0 = Ц:. Х:р:Х + кр)х(Х:р:Х + кр). Теперь посмотрим более внимательно, в чем нуждается Ргос(р) для того, чтобы вычислить х(р + кр) по z£\ Для j — р + кр получаем j “ 1 min(p,j — I) *(/) = *(/) - £ Lij, |)л(/) = *(/) - £ т, i-P'-j- 1 )x(i:p:j- I). i — 1 i= 1 В тот момент, когда в Ргос(р) должно выполняться это вычисление, ... . ... Ык)Ь\ «= 1:ц- I, Hj,i:p:j - l)x(r.p:j-1) = < к_1и и поэтому *(/) = *(/)- X 4*>0) - *** * и(Л - X / = 1 и * = м + 1 Это подсказывает нам, что э, качестве циркулирующего вектора w нужно цэять /ьвекгор, обладающий тем свойством, что по прибытии в Procfti) на к-м обороте
6.4, Кольцешые процедуры разложения 279 »W-'lljf,W+ t ■“(/). t-t <-ц+1 Заметим, что значения, формирующие эту сумму, могут быть «подобраны» на тех остановках (их р — I), которые циркулирующий вектор w делает перед прибытием а Ргос(р). Вот как можно реализовать эти вден: Алгоритм МЛ. Предположим, что матрица Le В" * " нижняя уннтреугольная и xeR" есть решение системы Lx~b, где 6eR”. Если п шрг и в ^процессорном кольце каждый процессор исполняет следующую программу, то по окончания процесса Ртос(ц) хранит у себя х(р:/>:я) в 6^,(1 :г). loclidt[p, р — ту,М, 1ф, right, I*.« Ц1 :л, р:р:л), Ъы - б(ц:р:«)] г - nfp\ со/ - р:р:я; fc-O; х(1:я) -0; tv(l:/t) - О нЫ1е 1с < г — 1 If /с # О V р > 1 гест(и>, left) cod k-k+lJ^coUk) btK(k) -*,„(*) -zW-H-(p) If fc ?* r— 1 V p</> {Модифицировать ту часть z, которая нужна прямо сейчас.} q — min(rt,^ + p — 1) x{J + 1 :q) - + 1:«) + i-t-U +1=9. *)**<*) {Модифицировать циркулирующий вектор и».} If Л < г — I w(l:p— 1)- w(l:p — l) + z(/ + p — p + l:j + p— 1) w(p) = 0 enl w(p+ l:p) = w(p+l:p) + 2(/+l:y + p-p) send (tv, right) {Модифицировать остальную часть z.} Uq<n z{q + 1 :n) — z(q + 1 :n) + 1^(9 + 1 к)Ьы(к) end end end quit За доказательством того, что в данном алгоритме достигается ускорение, близкое к линейному, мы отсылаем читателя к Li, Coleman (1988). Зада* 6.4.1. Заполнить шаблон (6.4.1) таким образом, чтобы он вычислял QR-разложение. По окончании процесса Ргос(р) должен хранить у себя как векторы Хаусхолдера, так и полученные им Д-столбцы. 6.41 Заполнить шаблон (6.4.1) таким образом, чтобы он вычислял разложение РА — LV. По окончании процесса Ргос(р) должен хранить у себя в удобной форме информацию о Р н полученные им части матриц Lh V. 64J. В алгоритме 6.4.2 сообщения (G-векторы) можно сделать более короткими. Объясните, почему?
280 Гл. 6. Параллельные матричные вычисления 6.4.4. Модифицировать алгоритм 6.4.3 так, чтобы он мог обрабатывать линейные треугольные системы произвольного порядка. 6.4*5. Модифицировать алгоритм 6.4.3 так, чтобы он решал верхнюю унитреуголъиую систему Vx — b порядка л = рг. 6.4Л Модифицировать алгоритм 6.4.3 так, чтобы он решал систему С х = Ы Замечания и литература к § 6*4 Общие соображения относительно процедур факторизации на распределенной памяти можно найти в Gei&t G. A. and Heath М. Т. (1986). “Matrix Factorization on a Hypercube*’, in М. T. Heath (ed.) (1986). Proceedings of First SIAM Conference on Hypercube Multiprocessors, SLAM Publications, Philadelphia, Pa. Ipscn LC.F-, Saad Y. and Schultz M. (1986). “Dense Linear Systems on a Ring of Processors". Lin. Alg. and Its Applic. 77, 265-239. O’Leary D. P. and Stewart G. W. (1986). "Assignment and Scheduling in Parallel Matrix Factoriza¬ tion", Lin. Alg. and Its Applic. 77, 275-300. Работы, посвященные специально LU, Холецкому и QR, включают BischofCH. (1988). “QR Factorization Algorithms for Coarse Grain Distributed Systems", PhD Thesis, Dept, of Computer Science, Cornell University, Ithaca, NY. Davis G. J. (1986). "Column LU Pivoting on a Hypercube Multiprocessor”, SIAM J. Alg. and Disc Methods 7, 538-550. Ddosme J. M. and Ipsen I. C. F. (1986). "Parallel Solution of Symmetric Positive Definite Systems with Hyperbolic Rotations”, Lin. Alg. and Its Applic 77, 75-112. GeistG.A. and Heath M.T. (1985). "Parallel Cholesky Factorization on a Hypercube Multi¬ processor” Report ORNL 6190, Oak Ridge Laboratory, Oak Ridge, TN. GeistG.A. and RommeC.H. (1988) “LU Factorization Algorithms on Distributed Memory Multiprocessor Architectures”, SIAM J. Sci. and StaL Comp. 9, 639-649. Kapur R. N. and Browne J. G (1984). "Techniques for Solving Block Tridiagonal Systems on Reconfigurable Array Computers” SIAM J. Sci. and Stat. Comp. 5, 701 —719- Ortega J. M. and Routine С H. (1988) “The ijk Forms of factorization Methods 1L Parallel Systems” Parallel Computing 7, 149-162. Pothen A., Jha S. and Vemapulati U. (1987). "Orthogonal Factorization on a Distributed Memory Multiprocessor”, In Hypercube Multiprocessors, ed M.T. Heath, SIAM Press, 1987. Walker D. W., Aldcroft Т., Cisneros A, Fox G- and Furmanski W. (1988) "LU Decomposition of Banded Matrices and the Solution of Linear Systems on Hypercubes”, in G. Fox (ed.) (1988). The Third Conference on Hypercube Concurrent Computers and Applications, VoL II-Applications, ACM Press, New York, pp. 1635-1655. Параллельные решатели треугольных систем обсуждаются в RomineCH. and Ortega J.М. (1988) “Parallel Solution on Triangular Systems of Equations”, Parallel Computing 6, 109-114., Heath M.T. and RomineCH. (1988) "Parallel Solution of Tridiagonal Systems on Distributed Memory Multiprocessors", SIAM J. Sci. and Stat. Comp. 9, 558-588. U G. and Coleman T. (1988) "A Parallel Triangular Solver for a Distributed-Memory Multi¬ processor^, SIAM I. Sci. and Stat. Comp. 9, 485-502. Eisenstat S.C., Heath M.T., Henkel C.S^ and Romine GH. (1988) "Modified Cydic Algorithms for Solving Triangular Systems on Distributed Memory Multiprocessors” SIAM J. Sci. and StaL Comp. 9, 589-600. * Evans D. J. and Dunbar R. (1983) "The Parallel Solution of Triangular Systems of Equations”, IEEE Trans. Comp. C-32, 201-204. Montoye R. and Laurie D. (1982) "A Practical Algorithm for the Solution of Triangular Systems on a Parallel Processing System”, IEEE Trans. Comp. C^3l, 1076-1082. Johnsson S.L. (1984) "Odd-Even Cyclic Reduction on Ensemble Architectures and the Solution of Tridiagonal Systems of Equations” Report YALEU/CSD/RR-339, Dept of Comp. Sck, -VaJe University, New Haven, CT.
6,5, Сеточные процедуры разложения 281 6.5.Сет6чные процедуры разложения В -этом параграфе обсуждаются различные алгоритмы для разложений Хо- лецхого и QR. Для разложения Холецкого приводятся синхронные и асинхронные процедуры, позволяющие нам сравнить особенности рассуждений, связанных с этими двумя способами вычислений на распределенных системах. Параграф заканчивается кратким обсуждением систолической сеточной процедуры для QR-раэложения. Ш. Сеточная систолическая процедура Холецкого Напомним, что версия разложения Холецкого с использованием внешних произведений связана с повторяющимся применением следующей редукции: ч: .и: як Здесь р = у/а, и- = и/p я С = В — wwT. Для записи fcj, = алгоритма11 Холецкого с внешними произведениями воспользуемся верхними индексами, чтобы проследить этапы преобразований, которым подвергается матрица А: Л<01 = А for к «■ 1;и oj}1 = 11 for all (i.J) with i < к or j > к . for i = Jc + 1:« a8»-e8-u/eff; оЙ, = аВ-,'/ай1 end for к + 1 :я for i — к + I :r end end end Для трго чтобы вывести систолическую версию этой процедуры, предположим для ясности, что у нас есть систолическая я х л-сетка и Ае R" х ". Proc(t, j) будет отвечать за формирование элементов а!}1 при к — 1: п. Чтобы упростить изложение, сим¬ метрия игнорируется. Предположим, что для хранения а}11 в Ргос (rj) используется переменная л}}1. Заметим, что с переходом от А<к~11 к Аш связаны четыре типа вычислений: вычислений нет квадратный корень делеЁие модификация Вспоминая нашу модель систолических вычислений (см. § 6.1.5), мы попытаемся а*- а а*- у/а а *- a 'fd а*-а- Ьс 11 Имеется в виду запись с помощью циклов с параметрами к, j, L-Прим. пере».
282 Гл. 6. Параллельные матричные вычисления разработать локальную программу айда for г = 1: tfteu Послать локальные данные соседям. Получить данные от соседей. (6.5.1) Выполнить извлечение квадратного корня, деление, модификацию или бездействовать. cod Происходящее в момент / в Proc(i, j) есть функция от /, < и/ Заметим, что при t = 1 только Ргос (1,1) может сделать что-нибудь полезное, и это есть вычисление ^/А(1,1). Потом эта величина потребуется первой строке и первому столбцу процессоров, вычисляющих соответственно А (2:«. 1) А (2: я, 1) / А (1,1) и А (1,2:и)«- А(1,2:и)/ А(1,1). Теперь полагаем, что в нашей снстолической модели на каждом шаге данные могут передвигаться только к соседнему процессору. Значит, эти шаги с делением могут иметь место в следующие моменты времени: ' 1 2 3 4 5* 2 х х х х 3 х х х х • 4 х х х х . 5 х х х х _ Приступив к формированию множителей в строке и столбце, мы можем начать выполнение модификация Л(2:и,2:л)+-/4(2:п,2:п)-А(2:п,1)Л(1,2:п). Заметим, что Proc(i'j) нуждается в множителях, размещенных в Ргос(/,1) и Ргос(1,.Д Можно так устроить, что эти две величины доберутся до Ргос (/,/) в одно и то же время, если сразу же по мере готовности Ргос(», 1) отправит свой множитель ццоль строки £, а Ргос (lj) пошлет свой множитель вниз по столбцу J. Если мы определим массив j41) , 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 то T(1>(ij)-это временной шаг, на котором находится а\}\ Заметим, что на временном шаге t — 4 мы можем вычислить ай, и по аналогии с предыдущим рассуждением положим . 4 5 6 7 . 5 6 7 8 . 6 7 8 9 . 7 8 9 ю . Здесь Tw{i,J) при i ^ 2 и j > 2 обозначает временной шаг, на котором вычисляется d[jK Позиции с «.» не связаны с какой-либо работой или обменами, и поэтому они не играют роли, когда обсуждается планирование вычислений. Время вычисления «интересных» элементов для /4<э>, Л(4) и /4(11 в сходной манере
6.5. Сеточные процедуры разложения 283 задается с помощью 7<3) . . . . 7 8 9 j'W — . • . 8 9 10 ... 10 н . 9 10 11 ... 11 12 Г<5>, 13 Из этого примера для п ~ 5 мы извлечем три вывода: • Proc(iJ) не имеет для себя вычислений до момента t = i + у — 1. • Если я В? определено при / = т, то л}}1 может быть вычислено при г = т + (i — к) + (/ — к) для всех г > к и j > Л. • Если аШ определено при / = т, то <?lk+iVit+i может быть определено при / = т + 3. Эти наблюдения позволяют нам вывести несколько важных фактов относи¬ тельно планирования. Например, диагональному процессору Proc(i, г) нечего делать при t = 1:2i - 2. При t~ 2i - 2:3/ — 3 ему приходится выполнять модификации, а вслед за ними, в момент / = 3/ — 2, извлечение квадратного корня. При г > 3/ - 1 ему снова нечего делать. К подобным заключениям можно прийти и в отношении внедиагональных процессоров, и в целом для Ргос (ij) мы получаем следующее расписание: for / = 1:3/t - 2 lfi=7 if I > 2i - 1 А г < 3i - 2 модификация elseif t ~ 3i — 2 квадратный корень end elseif / > j if f ^ + У — 1 A / < j + 2/ — 2 модификация elseif f« i + 2j — 2 деление end elseif / < j if elseif i + У — 1 A / < У + 2j — 2 модификация r =5= у + 2/ - 2 деление end end end Всего требуется Зи — 2 шагов, потому что Ргос (л, л) вычисляет4 свой квадратный корень, т.е. дяп, при / = Зл — 2.
284 Гл. 6. Параллельные матричные вычисления Нам остается решать задачу организации обменов, отвечающих этим вы¬ числительным действиям. Нужно сделать два наблюдения: • На временном шаге после того, как Ргос (1,7) вычислит gtJ, т.е. после / = / + 7 + min {ij} — 1, все, что он должен сделать,-это послать ди на восток, если I > j и j < п, на юг, если j > / и / < л, и на восток и юг, если i = j < п. • На временных шагах г = i + 7 — i: i + 7 + min {ij} — 3 Ргос (ij) выполняет модификацию, т.е. вычисление вида а*-а — я***» где ^ поступает с севера, a aW9at-с запах». Чтобы эти данные продолжили свое собственное передвижение, Ргос [ij) должен отправить текущее a9Crtk на юг и текущее awest на восток. В целом мы получаем следующую процедуру. Алгоритм 6.5.1. Предположим, что матрица Ае R" * " симметричная и положительно определенная и А = GGT-et разложение Холецкот. Бели в систолическом яхи- массиве с соединениями в виде сетки каждый процессор исполняет следующую программу, то по окончании процесса в Ргос (i, j) локальная переменная а содержит gi} при i и д# при j 7* i- loc. Init [(/,» ** my, id, north. east, southt west{ n, a = A(i,7)] for / = 1:3« — 2 if i-j {Вычисления диагональных процессоров.) if / = 2/ — 1 Л i = 1 recv north) recv}^*, nwsr) О = Q QitvrthQ*** elseif 2i — 1 < t < 3i — 2 if i ^ n send south) seed (я „я,, east) end «ст(аявг,ь north) recr (a west) Q — Я ^norfA wejt eiseif г = 3 i - 2 a = sfa elseif /— 3i — 1 Л i Ф n send (я, south) send (a, east) end elseif i > j {Вычисления поддиигональных процессоров.} if t = i +7- 1 Лу ф 1 KCV(a««rM> north); recv(aw,m we.rt) (t = a QmMhQwn t elseif / + j — 1 < t < i + 2j — 2 if i ф n scnd(a^b south) end “ ' send (a.**, east) recv ,mnh); геет (a„„,, west) a = a - ОтпкОщ^,
6.5. Сеточные процедуры разложения 285 ebeff t — I + 2j — 2 recvfo^rtfc northy a =•> e/fl»** еЬяГ/ = 1 + 2у- I if /#» send (a ».«*, wh/A) end send (a, east) end elseif i<j {Вычисления наддиагоналъных процессоров.) if / = i +; — 1 Л 1Ф 1 rccvfa,**,. north), recv (а^„, west) a=*a — aMrvjh вам ebeif i+j— 1 </<2i+y—2 n send (fl^-я. «и/) end andfo,.,,* south) recv (o.^*, nartA); recv^^ иго/) elseif t = 2i+j-2 MCT werf); a = afaweM elseif/ = 2i+y- 1 if sendfa***, mrf) end send (a, east) end end end quit Можно было бы сжать этот алгоритм (его представил С. Paige), но его настоящая форма точнее отражает его вывод. Отметим, что алгоритм 6.5.1 является процедурой с линейным временем. Конечно, в каждый момент времени занят работой не каждый процессор, и, следовательно, здесь есть некоторая неэффективность. А именно, среднее число активных процессоров на любом заданном временном шаге определяется как (лэ/Э)/«Зл-2)л2)*1/9. Для алгоритма 6.5.1 легко формулируется блочная версия. Она представляет интерес, когда порядок матрицы больше, чем размер сетки. Если размеры сетки JV х N, то мы рассматриваем А как блочную N ж N-матрицу. Если связи то¬ роидальные, то для них подходящими могут быть другие отображения кругового типа. Можно сформулировать также версию алгоритма, в которой учитывается симметричность, а для реализации берется нижняя треугольная систолическая сеть процессоров. (.5.1 Асшхрошшя сеточник процедура ХолещсоГо При выводе асинхронной, основанной на передаче сообщений процедуры Холецкого для сетки процессоров, в отличие от систолического случая мы не спрашиваем, «когда» вычисляется ajf. Вместо этого у нас Proc(i\,J) «дает старт»
286 Гл. б. Параллельные матричные вычисления вычислениям в зависимости от локального счетчика, отмечающего число завер¬ шенных шагов модификации а+-а- awta а^^ В следующем массиве указывается число модификаций, в которых участвует Proc (i,у) до того, как он будет выполнять деление (если i ф J) или извлечение квадратного корня (если г = /): 0 0 0 0 0 0 1111 0 12 2 2 0 12 3 3 _ 0 1 2 3 4 _ Экстраполируя этот пример, заключаем, что вход {t,J) определяется как min (/,/} — 1, и мы получаем: Алгоритм 6.5.2. Предположим, что матрица ЛеИвх" симметричная и положительно определенная н А = GGT-ee разложение Холецкого. Если в л х л-массиве соединен¬ ных в сетку процессоров каждый нз них исполняет следующую программу, то по окончании процесса локальная переменная а в Ргос (i,J) содержит д1} для i > j н 9ц для j'Zi. loc. knit XffJ) = ту. id, north, east, south, west, n, a «■ A (/,/)] (Модифицировать фазу.} к = 1 while, к < min(/,y) пея(атты north); recvta***, west) ® о ~ if i < n «0*(*■«*> south) end If у < n seod(a„„,, east) end k = fc + 1 end {Свернуть по кругу фазу.} if i _ a = ,/a If i <n send (<z, east); send (a. south) end eMf j>y north) if / < и ■endlo^rt*, south) end a * e/t»*** send (a, east) etedf recvla^ mew) ISj < n send (e^ ear/) end ® = "end (a, o^) end quit
6.5. Сеточные процедуры разложения 287 Заметим, что вывод алгоритма 6.5,2 не содержит детальнбго анализа син¬ хронизации, как в его систолическом аналоге -алгоритме 6.5.1. Для того чтббы установить корректность процедуры, еще требуется доказать несколько фактов, относящихся к планированию вычислений. Например, если к < j < и то можйо показать, что k-м сообщением, прибывающим в Proc(i,/) с запада, будет gik,. Аналогично gkJ является к-м сообщением, прибывающим с севера. Результаты, подобные этим, можно затем использовать для строгого доказательства того, что по окончании процесса Ргос (<,/) хранит у себя 6.5.3. Сеточная систолическая процедура QR-разложения Частичный выбор ведущего элемента не очень хорошо отображается на дву¬ мерные массивы процессоров, потому что перестановка строк может быть связана с обменом данными между отдаленными процессорами. По этой причине QR-раз¬ ложение оказалось довольно привлекательным методом решения линейных урав¬ нений, особенно на систолических массивах. Напомним, что согласно § 5.2.3 Для вычисления QR-разложения матрицы ЛбК'яхп можно использовать вращения Гивенса, причем это можно сделать многими способами. Мы остановимся на алгоритме 5.2.2, в котором используются вращения Гивенса для соседних строк: for j = 1 :п for i = т : — 1:j + 1 [с, s] = givens (Л (f — 1: /,/)) А <1 — I: ij: л) = row. rot (Л (/ — 1: i, j: л), с, s) end end Формирование Q не будем рассматривать, так как это только затруднит обсуждение распараллеливания. Чтобы построить параллельную версию для (6.5.1), посмотрим на Некоторые промежуточные этапы редукции. Предположим, что (т, л) = (6,3) и уже аннули¬ рованы л61 и а51: X X X XXX XXX XXX О х х в О х х в Следующий шаг алгоритма - аннулировать я41. Но заметим, что мы готовы также к тому, чтобы аннулировать л62. Поэтому давайте то и другое сделаем одновре¬ менно: 1 X X X X X X »- X X X XXX X X X (3.4),(Д,6) ххх XXX 0 х х 0 х х 0 х х О X X _ 0 0 X _ На следующем «временном шаге» можно ввести еще одну пару нулей:
288 Гл б. Параллельные матричные вычисления X X X 1 X X X XXX XXX XXX (3,3), (4,6) 0 х х 0 х х 0 х х 0 х х 0 0 х 0 0 х 0 0 х На этом этапе можно одновременно провести аннулирование a2li аАг и аЬ1: X X X X X X XXX 0 х х 0 х х (1.2),(3^,(5,6) 0 х х 0 х х 0 0 х 0 0 х 0 0 х 0 0 х ООО Как видим, на языке шагов по времени в случае 6x3 нули могут вводиться в следующие моменты: ’ х х х 5 х х 4 6 х 3 5 7’ 2 4 6 1 3 5 в Вообще, подциагоиальный матричный элемент может быть обнулен в момент Uj = (?/' — 1) + т — г — т + 2j - / — 1. (6.5.2) Значит, компонента i = m + 2j — t столбца j может быть аннулирована в момент г, при условии что m^i^j + 1. Таким образом, мы получаем следующий пере¬ смотренный вариант для (6.5.1): tm t = \ :т + п — 2 for j = 1 :л i = т — t + 2j — 1 If i < m A i > j + 1 (6.5.3) {Сформировать и применить [с, У] = givens (Л (г - 1: ij)) A(i— !:j\ j:n) = row. rot — 1:/.;;«), с *) end end end Общее число требуемых временных шагов равно т 4- п — 2, потому что последним обнуляется элемент оя+1„ и это происходит при t = m + n — 2. С точки зрения параллельных вычислений ключевое наблюдение относительно (6.5.3) состоит в том, что все вращения, связанные с каким-либо заданным «временным шагом» являются «свободными от конфликтов» и могут выполнять¬ ся одновременно. В течение стабильного периода (2я —1) обнуляется по одному элементу на столбец. Если у нас есть систолическая сетка такого же размера, как и А, то возможна реализация с линейным временем:
6.5. Сеточные процедуры разложения 289 • Ргос (О) хранит у себя текущее ai}. + Proc(/j) генерируеп' гивснсово вращение <7^. • После генерации вращения Gfj оно передвигается на восток вдоль про¬ цессорных строк i — 1 и I. В такой схеме появляется в Ргос (/, /). Если проследить за деятельностью Ргос (i, Д то обнаружится, что на начальном периоде он простаивает. Затем он занимается получением вращений, связанных с аннулированием в строках / + 1 и i. В течение этого периода он модифицирует хранимые у него а~ и передает полученные вращения на запад. Наконец, он вырабатывает G^ и после этого простаивает. Мы видели такой образец занятости в алгоритме 6,5.1. Как и в той постановке, в любой момент времени активной является значительная часть процессоров, а поскольку всего их л2, получается процедура с линейным временем. Детали см. в Heller, Ipsen (1983) и Gentleman, Rung (1982). Задами 6l5.1. Модифицировать алгоритм 6.5.1 и 6.5.2 так, чтобы они вычисляли: a) LD {^-разложение; в) LU-разложение. Позаботьтесь о том. чтобы указать распределение множителей на входе. Замечания я литература к § 6.5 Работы по параллельному вычислению разложений LU и Холецкого включают Brent R. P. and Luk F.T, (1982). “Computing the Cholesky Factorization Using a Systolic Architec¬ ture”, Proc. 6th Australian Computer Science Conf. 295-302. Costnard М., Marrakchi M. and Robert Y. (I988)l “Parallel Gaussian Elimination on an MIMD Computer", Parallel Computing 6, 275 - 296. Delosme J. M. and Ipsen L C. F. ( I986)l "Parallel Solution of Symmetric Positive Definite Systems with Hyperbolic Rotations", Lin. Alg. and Its Applic. 77, 75 112. Funderlic R. R and Geist A. (1986). "Torus Data Flow for Parallel Computation of Misaized Matrix Problems", Lin. Alg. and Its Applic. 77, .149 164. O’Leary D. P. and Stewart G. W. (1985), "Data Flow Algorithms for Parallel Matrix Computations", Comm, of the ACM 28, 841-853. Параллельные методы для ленточных систем включают Johnsson S.L. (1984). “Odd-Even Cyclic Reduction on Ensemble Architectures and the Solution of Tridiagonal Systems of Equations", Report YALEU/CSD/RR-339, Dept, of Comp. Sci., Yale University, New Haven, CT. Johnsson S. L. (1985), “Solving Narrow Banded Systems on Ensemble Architectures", ACM Trans. Math. Soft. 11, 271-288. Johnsson S.L. (1986). “Band Matrix System Solvers on Ensemble Architectures", in Supercomputers: Algorithms, Architectures, and Scientific Computations, eds. F.A. Matsen and T. Tajima, Univer¬ sity of Texas Press, Austin TX., 196-216. Johnsson S. L. (1987). “Solving Tridiagonal Systems on Ensemble Architectures", SIAM J. Sci. and Stat. Comp. 8, 354-392. Johnsson S. L. and Но C.T. (1987). “Multiple Tridiagonal Systems, the Alternative Direction Methods, and Boolean Cube Configured Multiprocessors”, Report YALEU/DCS/RR-532, Dept, of Computer Science, Yale University, New Haven, CT. Параллельные процедуры для QR-разложения представляют интерес для обработки сигналов в реальном времени. Подробности можно найти в Costnard М., Muller J. М., and Robert Y. (1986). “Parallel QR Decomposition of a Rectangular Matrix", Numer. Math. 48, 239-250- El den L. (1988). “A Parallel QR Decomposition Algorithm", Report LiTh Mat R 1988-02, Dept of Math., Linkoping University Sweden Elden L. and Schreiber R. (1986). “An Application by Systolic Arrays to Linear Discrete III-Posed Problems”, SIAM J. Sci. and Stat. Comp, 7, 892 903. Ml fy\
290 Гл. 6. Параллельные матричные вычисления Gentlman W. М. and Kung Н.Т. (1982). "Matrix Тriangularization by Systolic Arrays”, SPIE Proceedings, Vol. 298, 19-26. Heller D.E. and Ipsen I. C.F. (1983). "Systolic Networks for Orthogonal Decompositions”, SIAM J. Sci. and Stat. Comp. 4, 261-269. Luk F.T. (1986). "A Rotation Method for Computing the QR Factorization”, SIAM J. Sci. and Stat. Comp. 7, 452-459. Modi J.J. and Clarke M. R.B. (1986). "An Alternative Givens Ordering”, Numer. Math. 43, 83-90. 6.6. Методы разложения на общей памяти В этом параграфе мы посмотрим на различные реализации разложения Холецкого на общей памяти. Каждая реализация обладает своим собственным образцом синхронизации, а вместе они дают представление о том, как разложение типа Холецкого может организовываться на системе с общей памятью. Мы выбрали разложение Холецкого ради удобства изложения, но большей частью то, о чем мы говорим для него, переносится и на другие разложения из нашего репертуара. 6.6.1. Статическое планирование для Холецкого с внешними произведениями Начнем с распараллеливания алгоритма Холецкого с внешними произведе¬ ниями: for к = 1: п А (к: п) = А (к: п) / А (к, к) for j = к + 1 \п Л (/':п. j) = A(j:n,j) — A (j:п, к) А (/, к) end end Цикл по j отвечает за модификацию с использованием внешнего произведения. Его тело образуют п — к операций saxpy, которые независимы и легко распределяются. Алгоритм 6.6.1. Предположим, что симметричная положительно определенная матрица А е R” * п хранится в общей памяти, к которой имеют доступ р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А заменяется ее множителем Холецкого. shared variables [А(\ :п, 1:я)] glob, init [/4] loc.init [p, p = my. id, ri] for к = 1: n if ц = 1 get(A(k:n), v(k:n)\ v(k:n) = v(k:n)/yjv(k) put(v(k:n), A(k:n, k)) end barrier get(A(k + 1 \n, к), v(k + 1 :rt)) for j = (k + \i):p:n &t(A(j:n,j), w(j:n)); w(j:n) = w(j:n) - v(j)v{j:n) put(w(y:n), A(j\nJ)) end barrier end quit
6.6. Методы разложения на общей памяти 291 Нормирование перед у-циклом представляет собой очень малый объем работы по сравнению с модификацией, использующей внешние произведения. Поэтому эту порцию вычислений разумно поручить какому-то одному процессору. Отметим, что требуются два предложения barrier. Первое гарантирует, что процессор не начнет работу по прибавлению к-то внешнего произведения до тех пор, пока у Ргос(1) не будет доступа к /с-му столбцу из G. Второе предложение barrier не дает начать выполнение к + 1-го шага до полного завершения к-то шага. Можно сформулировать и блочную версию алгоритма 6.6.1. Пусть п = rN. При к= 1 :N мы (а) поручаем Ргос(1) сформировать G(:y 1 + (к — \)г:кг)и (Ь) заставляем все процессоры участвовать в модификации ранга г для остающейся подматрицы А(кг+1:п, кг+\:п). См. §4.2.6. Если по отдельности процессоры хорошо воспринимают операции 3-го уровня, то производительность можно улучшить за счет укрупнения вычислительных блоков. 6.6.2. Статическое планирование для других разложений Логика, связанная с алгоритмом 6.6.1, распространяется и на другие схемы разложений, такие, как LU и QR. Точно так же, как было сделано в § 6.4.3 для кольцевых разложений, мы можем предъявить «шаблон», в котором отражается образец синхронизации для реализуемых на общей памяти разложений с внешними произведениями: shared variables [/!,...] glob.init[A •••] loc.init[p, p = my.id,...] for к = 1 :n if |Д = 1 (6.6.1) get(A(k:n)y v(k:n)) {Сформировать k-e преобразование 7^.} {Записать Tk в общую память.} end barrier {Скопировать 7^ в локальную память.} for j = к + \i:p:n {Применить Тк к A(k:nJ).} end barrier end Конечно, ссылки на Тк являются ссылками на некоторое подходящее представление для него, например на /с-й вектор Хаусхолдера. Ш. Две параллельные реализации для Холецкого с gaxpy Теперь мы сконструируем пару параллельных процедур для разложения Холецкого на базе gaxpy-версии, т.е. на базе алгоритма 4.2.1: for j = 1 :п for к = 1 :j — 1 А (У: п. У) = A(J.n,j) — A (j, к) А (у: и. к) end = A (j'.n,j)l yjA (j,j) end 10+
292 Гл. 6. Параллельные матричные вычисления Обсудим два подхода к распараллеливанию. В первом из них каждый процессор участвует в каждой операции gaxpy. Вклад каждого процессора можно накапливать с помощью мониторинговой процедуры gax. sum из § 6,2.7. Тогда мы получим Алгоритм 6.6.2. Предположим, что симметричная положительно определенная п х /г-матрица А хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А замещается ее множителем Холецкого. shared variables [/4(1: л, 1:я)] glob, ini t [А\ loc. init [p, p = my. id, ri] for j = 1: n uU'-n) = о for к = p. :p:j — 1 £№tИ (/: it. k\ &loc u(J:n) = u(j:n) - end call gax. sum (и (J: n), A (J: n,j)) barrier if ц= 1 &A(A(j:n,j), aloc(J:n)) a^U-n) = atec (j'.n)/ (J) putKcC/:«J. A(j:n,j)) end barrier end Первое предложение barrier гарантирует, что нормирование, приводящее к G[j: n,j)9 не будет начато до окончания gaxpy. Второе предложение barrier дает уверенность в том, что ни один из процессоров не перейдет к j + 1-му шагу прежде, чем завершится j-й шаг. Второй подход к распараллеливанию основанной на gaxpy процедуры Холецкого состоит в применении идеи резерва задач, где /-й задачей является вычисление Поскольку этот подстолбец множителя Холецкого получается нормиро¬ ванием из v(/: п) = А (/:n,j) - £ (7(А *)GV: Ъ к). (6.6.2) к= 1 мы видим, что у-я задача не может завершиться прежде, чем будут окончены задачи от 1-й до j — 1-й. Итак, мы добиваемся процедуры следующего вида: Повторять до тех пор, пока есть задачи. Получить следующую задачу, присвоить ей номер j. Построить вектор v{J:n) вида (6.6.2) наискорейшим образом. Вычислить G(J:n,j) и сохранить в общей памяти. Проинформировать все процессоры, ожидающие G(J:nJ)t что он доступен. Конец Для назначения задач мы можем использовать разработанный в § 6.2.6 монитор nextL Чтобы осуществить построение (7-столбцов и замещение элементов в Ау нужен еще один монитор chol с двумя процедурами canread и mite.
6.6. Методы разложения на общей памяти 293 monitor: chol protected variables: cols, done condition variables: waitq ( ) initializations: cols, done = 0 procedure cbol. conread (z, k, j, n) if cols. done < к delay (waitq (k)) end get{A{j\nyk\ z(j:n)) continue (waitq (k)) end choLcanread procedure choL write (r, j, n) put (i?(y:n), A(j\nJ)) cols, done = cols. done + 1 if cols, done — n cols, done = 0 else continue (waitq (j)) end end dioL write end chol Этот монитор обладает некоторым числом новых свойств по сравнению с nexti и gax. Для начала он содержит две процедуры. Обращение либо к chol. canread, либо к choL write представляет собой попытку вызывающей программы войти в монитор. Однако в любой момент в мониторе по-прежнему может быть не более одного активного процесса. На эти две процедуры возлагаются следующие задачи: • choLcanread (z, к, j, п) возвращает G(j:n, к) в z(J:n\ если оно готово. Если G(j:n> к) не готово, то вызывающий процессор становится ожидающим. • choL write (г, j\ п) копирует v(j:n) = G(j:n,j) в A(j:nJ) и информирует все процессоры, ожидающие именно этот G-столбец, что теперь он доступен и находится в общей памяти. Отметим, что используется вектор переменных условия. Если G (:, к) не доступен, то процессор, запрашивающий часть из G (:, к), становится ожидающим - в за¬ висимости от waitq (к). Защищенная переменная col. done отслеживает число готовых столбцов. Таким образом, проверка готовности для какого-либо конкретного G-столбца является простым делом. Заметим, что после вычисления последнего G-столбца col. done устанавливается на нуль. Вот как используется монитор chol в параллельной gaxpy-процедуре Холецкого: Алгоритм 6.63. Предположим, что симметричная положительно определенная п х л-матрица А хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А замещается нижней треугольной частью ее множителя Холецкого. shared variables [Л (1 glob, init [/I] loc. init [/>,|i = my. id,«) call nexti. index (p, n, more, j)
294 Гл. 6. Параллельные матричные вычисления while more-true get (A(:j:nJ), v(j:n}) for к = 1 :j — 1 call choLcanread (z, kj) v{j:n) = v(j:n) - z(j)z{j\n) end ___ v{j:n) = v{j:n)/Jv(j) call choL write (vjy n) call nexti. index (/?, и, morej) end quit Напомним, что процедура nexti. index сконструирована так, что ни один процессор не может выйти из цикла while до полного завершения всех задач. Алгоритм 6.6.3 схож с нашими кольцевыми процедурами Холецкого из § 6.4. Именно, каждый процессор испытывает период простаивания как в начале, так и в конце всего комплекса вычислений. Можно сформулировать и блочную столбцовую версию алгоритма 6.6.3, основанную на разбиении G = [Glf...,GN]. (6.6.3) Теперь i-й задачей является вычисление блочного столбца G{. Вследствие более крупного дробления вычисления процессоры, возможно, в состоянии извлечь пользу из линейной алгебры более высокого уровня, навеянной блочным разбиением. 6.6.4. Замечания об обменах с общей памятью В алгоритмах 6.6.1-6.6.3 интересно оценить время, которое каждый процессор тратит на обмены. При больших п/р эти методы дают равномерную загруженность, и в этой ситуации разумно предположить, что на обмены с общей памятью каждый процессор тратит Т/р секунд, где Т есть сумма всех издержек, связанных с get и put. Используя нашу модель обменов (6.2.2), находим, что в алгоритме 6.6.1 каждый процессор тратит /I2 2 л3 Т6.6Л & — а, + -— ps Р секунд, общаясь с общей памятью. Будучи основанными на gaxpy, алгоритмы 6.6.2 и 6.6.3 содержат меньше обменов: пг я3 ^6.6.2 Л Гб.б.э « — as + — ps. 2 р 6 р Конечно, это лишь грубые оценки. Тем не менее они еще раз указывают на то, что лучше опираться на операции gaxpy, чем на внешние произведения. 6.6.5. Блочный Холецкий на базе резерва задач Предположим, что А - симметричная положительно определенная их я-матрица и и = Nr. Вспоминая наше обсуждение блочного Холецкого со скалярными произведениями (см. § 4.2.6), мы получаем центральное уравнение С.;Я1 = А0-£ Сл01, (6.6.4) fc=l
6.6. Методы разложения на общей памяти 295 приравнивая (*,у)-блоки в А = GGT. Здесь все GtJ и Аи суть г х r-блоки. Заметим» что если i > у, то вычисление G^ не может закончиться, пока не будут готовы G,i,, Gj А и Gif j,..., Gjj. Если у = U то вычисление GGj} не может закончиться, пока не будут готовы сп «м-.- В свете этих замечаний разумно вычислять Gi} в порядке столбец за столбцом. В случае 4x4 это означает, что G-блоки отыскиваются в таком порядке: 1 2 5 3 б 8 4 7 9 10 Пусть задача («,/)-это вычисление Giy Следуя рассуждениям, которые стоят за нашей процедурой Холецкого с использованием резерва задач, нам нужна мо¬ ниторинговая процедура для назначения следующей задачи. Для этого подходит простая модификация мониторинговой процедуры nexty, index (см. § 6.3.8): monitor: choly protected variables row, col, idle.proc condition variables waiti initializations: flag = 0 procedure chofij. index (N,/\ more, ij) if flag = 0 row = 0; col = 1 idle, proc = 0; flag = 1 end if row < N row = row + 1 else col = col 4- 1; row = col end if col < N i — row; j = col more = true else more = false idle, proc = idle, proc + 1 if idle, proc < p — 1 delay (waiti) else flag = 0 end continue (waiti) end end cholij. index end choiij Используя choiij, index, мы можем организовать нашу параллельную процедуру для блочного Холецкого следующим образом:
296 Гл. 6. Параллельные матричные вычисления call cholij. index (N, p, more, i,j) while more = true get (Aip S) for к = 1: j — 1 {B случае готовности получить Gik и Gjk и вычислить модификацию S = S — Gik Gjk.} end if i=j {Решить GjjGjj = S, применив алгоритм 4.2.1.} else {Решить GijGjj = S относительно G^.} end {Записать Gi} в общую память и проинформировать все процессоры, которые могут ожидать Gip о его готовности.} call cholij. index (N, p, more, i,j) end Анализируя (6.6.4), мы обнаруживаем необходимость в еще одном мониторе для надзора за обращением к Ау когда на ее месте получается G. В частности, нам нужны блочные версии мониторинговых процедур cboLcanread (z, kjy п) и choL write (vj, n). Другими словами, нам нужен монитор с процедурами bloc.choLcanread и bloc. choL write, где: • block. choL canread (w, /, к) возвращает Gik в Ж если оно готово. Если Gik не готово, то вызывающий процессор становится ожидающим. • block, chol. write (vv, ij) копирует W= Gi} в Ai} и информирует все процессоры о том, что оно готово и находится в общей памяти. Вот детали: monitor: block, chol protected variables: row.progress (•) condition variables: waitq (•/) initializations: row.progress(•) = 0 procedure block. choL canread (иг, /, к) if row. progress (f) < к delay (waitq (i9k)) end get(/lIfc,W0 continue (waitq (/, k)) end block, chol. canread procedure block. choL write (5, / J, N) put(S,Aij) row. progress (/) = row. progress (i) -f 1 if row.progress (N) < N continue (waitq (ij)) else row.progress (*) = 0 end end bloc, chol write end bloc, chol Этот монитор равнозначен двумерной версии для chol Мы заводим вектор-счетчик row. progress (1: ЛГ), отслеживающий число вычисленных Gu в каждой блочной строке.
6.6. Методы разложения на общей памяти 297 В конце вычислений этот вектор обнуляется. Если процессор запрашивает блок Gik и находит, что он еще не готов, то он становится ожидающим-в зависимости от waitq (/, к). Всякий раз, когда процессор вычисляет блок он начинает процесс с активизации всех процессоров, дожидающихся соответствующего разрешения от waitq (i,j). Собирая все это вместе, получаем Алгоритм 6.6*4. Пусть Л-блочная NxN-матрица с г х r-блоками. Предположим, что она симметричная положительно определенная и хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то нижняя треугольная часть матрицы А заменяется на нижнюю треугольную часть матрицы G-треугольник Холецкого. (Ссылки на Atj в дейст¬ вительности являются ссылками на А( 1 + (z — 1)г: />, 1 -f (j — 1) г: jr).) call cholij. index (N9p9 more, ij) while more = true get (i4y,S) for к = 1 :j — 1 call block, choI. canread (w, z, k) call block.choLcanread(YJ,k) S = S-WYT end if i=j Решить GjjGjj = 5, применив алгоритм 4.2.1 к S. else Решить GjjGJj — S относительно Gip end call block. choL write (5, t,y,N) call cholij. index (N,py more, ij) end quit Этот алгоритм можно распространить и на случай произвольного блочного разбиения. Нетрудно показать, что каждый процессор, занятый исполнением алгоритма 6.6.4. тратит примерно N3(as + &r2) Т6.6А » sp секунд на обмен с общей памятью. Задачи 6.6.1. Используя шаблон (6.6.1), разработать параллельную процедуру для QR-разложения, в предположении что m х /г-матрица А хранится в общей памяти. 6.6.2. Разработать LU-версию алгоритма 6.6.2. 6.63. Для алгоритма 6.6.3 разработать LU-версию с частичным выбором. 6.6.4. Сравнить обмены с общей памятью, связанными с алгоритмами 6.6.3 и 6.6.4. 6.6.5. Приспособить алгоритм 6.6.4 и соответствующие мониторы для того, чтобы они были эффективными в случае блочно-трехдиагональной А.
298 Гл. 6. Параллельные матричные вычисления Замечания и литература к § 6,6 Параллельные методы для разложений на компьютерах с общей памятью обсуждаются в Chen S., Dongarra J. and Hsuing C. (1984). “Multiprocessing Linear Algebra Algorithms on the Cray X-MP-2: Experinces with Small Granularity”, J. Parallel and Distributed Computing 1, 22-31. Chen S., Kuck D. and Sameh A. (1978). “Practical Parallel Band Triangular Systems Solvers”, ACM Trans. Math. Soft. 4, 270-277. Dongarra J.J. and Hewitt T. (1986). “Implementing Dense Linear Algebra Algorithms Using Multitasking on the Cray X-MP-4 (or Approaching the Gigaflop)”, SIAM J. Sci. and Stat. Comp. 7, 347-350. Dongarra J.J. and Hiromoto R. E. (1984). “A Collection of Parallel Linear Equation Routines for the Denelcor HEP”, Parallel Compution 1, 133-142. Dongarra J.J. and Sameh A. H. (1984). “On Some Parallel Banded System Solvers”, Parallel Computing 1, 223-235. Dongarra J. J., Sameh A. and Sorensen D. (1986). “Implementation of Some Concurrent Algorithms for Matrix Factorization’*, Parallel Computing 3, 25-34. Dongarra J.J. and Sorensen D.C. (1987). “Linear Algebra on High Performance Computers”, AppL Math, and Comp. 20, 57-88. George A., Heath M.T. and Liu J. (1986). “Parallel Cholesky Factorization on a Shared Memory Multiprocessor”, Lin. Alg. and Its Applic. 77, 165-187. Sameh A. and Kuck D. (1978). “On Stable Parallel Linear System Solvers”, J. Assoc. Comp. Mach. 25, 81-91. Swarztrauber P. (1979). “A Parallel Algorithms for Solving General Tridiagonal Equations”, Math. Comp. 33, 185-199.
Глава 7 Несимметричная проблема собственных значений Рассмотрев линейные уравнения и метод наименьших квадратов, обратим внимание на третью важную область матричных вычислений-алгебраическую проблему собственных значений. В этой главе рассматривается несимметричная проблема, а более приятный симметричный случай-в следующей. Наша первоочередная задача-познакомиться с разложениями Шура и Жордана и основными свойствами собственных значений и инвариантных подпространств. Противоположное поведение этих двух разложений положено в основу той части § 7.2, в которой мы исследуем, как на собственные значения и инвариантные подпространства влияет возмущение. Введены числа обусловленности, что поз¬ воляет получать оценку погрешности, которую можно ожидать из-за округления. Основной алгоритм данной главы-заслуженно известный QR-алгоритм. Эта процедура является наиболее сложным алгоритмом, рассмотренным в этой книге, и ее изложение занимает три раздела. Мы получаем базовые QR-итерации в § 7.3 как естественное обобщение простейшего степенного метода. Последующие два раздела посвящены тому, чтобы сделать базовые итерации вычислительно осу¬ ществимыми. Это включает введение хессенбергова разложения в § 7.4 и идею начальных сдвигов в § 7.5. QR-алгоритм вычисляет вещественную форму Шура матрицы-каноническую форму, которая выявляет собственные значения, но не собственные векторы. Поэтому обычно необходимо выполнить дополнительные вычисления, если тре¬ буется информация, касающаяся инвариантных подпространств. В § 7.6, который мог бы иметь подзаголовок: «Что делать после того, как найдена вещественная форма Шура», мы обсуждаем различные методы вычисления инвариантных подпространств, которые позволяют довести до конца QR-алгоритм. Наконец, в последнем разделе мы рассматриваем обобщенную проблему собственных значений Ах = ХВх и вариант QR-алгоритма, придуманный для ее решения. Этот алгоритм, называемый QZ-алгоритмом, подчеркивает важность ортогональных матриц в проблеме собственных значений-главную тему этой главы. Сейчас самое время сделать замечание о комплексной арифметике. В этой книге мы сосредоточиваем внимание на развитии вещественных алгоритмов для вещественных задач. Данная глава не представляет исключения, хотя даже вещественная несимметричная матрица может иметь комплексные собственные значения. Однако при получении практического вещественного QR-алгоритма и при математическом анализе самой проблемы собственных значений удобнее работать в поле комплексных чисел. Поэтому читатель обнаружит, что мы перешли к комплексным обозначениям в § 7.1, 7.2 и 7.3. В этих разделах мы используем комплексное QR-разложение (А = QR, Q-унитарная, R - комплексная верхняя треугольные матрицы) и комплексное SVD(^4 = UI.VHy U и V-унитарные, Ё-ве-
300 Гл. 7. Несимметричная проблема собственных значений щественная диагональная матрицы). Получение этих комплексных разложений отличается от вещественного случая не так сильно, чтобы оправдать отдельное описание. 7.1. Свойства и разложения В этом разделе мы даем обзор математических основ, необходимых для построения и анализа обсуждаемых далее алгоритмов вычисления собственных значений. 7.1.1. Собственные значения и инвариантные подпространства Собственные значения матрицы А еСпхп-это п корней ее характеристического многочлена р (z) = det (z I — А). Совокупность корней называют спектром и обо¬ значают Х(Л). Если Х(А) = ... Дя}, то det (Л) = ХхХ2 ••• V Более того, если мы определим след (trace) матрицы А как я trace (/4) = £ аи. i= 1 то trace (А) = Хх + ... + Хп. Это можно показать, рассматривая коэффициент при z*~l в характеристическом многочлене. Если ХеХ(Л), то ненулевой вектор jcgC", удовлетворяющий уравнению А х — Хх, называют собственным вектором. Точнее, х является правым собственным вектором, соответствующим А., если Ах — Хх, и левым собственным вектором, если хТА = Ххт. В дальнейшем, если не оговорено противное, «собственный вектор» означает «правый собственный вектор». Собственный вектор определяет одномерное подпространство, инвариантное по отношению к умножению слева на матрицу А. В общем случае подпространство S с Си, обладающее свойством xeS =>AxeS, называют инвариантным подпространством (матрицы А). Заметим, что если АХ = ХВ, BeС*х\ ХеСп*ку то подпространство range (X) является инвариантным и By = \у=>А(Ху) = Х(Ху). Таким образом, если X имеет полный столбцовый ранг, то из АХ = ХВ следует, что А,(В) ^ X(А). Если X-квадратная невырожденная матрица, то Х(А) = Х(В)н говорят, что матрицы А и В = Х~1АХ подобны. В этом случае X называют преобразованием подобия. Многие алгоритмы вычисления собственных значений используют разбиение исходной задачи на ряд задач меньшего размера. Следующий результат является основой таких преобразований. Лемма 7.1.1. Если матрица Те Слхп представлена в блочном виде Тц Т12] 1р 0 Ти J 1 ч р ч
7.1. Свойства и разложения 301 то Х(Т) = Х(Тц) U Х(Т22)» Доказательство. Пусть где jcx е Ср и х2 е С*. Если дс2 Ф 0, то Т22х — Хх2 и ХеХ(Т22). Если х2 = 0, то Тц*! = A^jti и ХеХ(Тп). Следовательно, Х(Т) X(TU) U МТ22). Но поскольку множества Х(Т) и X(Tn) U МТ22) имеют одинаковое число элементов, эти два множества равны. □. 7.1.2. Основные унитарные разложения Используя преобразования подобия, можно привести заданную матрицу к любой из нескольких канонических форм. Эти канонические формы отличаются способом представления собственных значений и видом информации об инва¬ риантных подпространствах, которую они позволяют получить. Учитывая чис¬ ленную устойчивость унитарных преобразований, мы начнем с обсуждения ре¬ дукций, которые реализуются унитарным подобием. Лемма 7.1.2. Если матрицы АеСпжя, ВеСрур и ХеСпХр удовлетворяют условиям есть QR-разложение матрицы X. Подставляя его в (7.1.1) и преобразуя полученное выражение, имеем АХ = ХВ, rank (АТ) = р, то существует унитарная матрица Qe Спхя, такая, что (7.1.1) (7.1.2) Р п-р где Х(Тг1) = Х(А) П Х(В). Доказательство. Пусть где Р п-р Из невырожденности матрицы R и уравнений Т21Л = 0иТиЛ = R В следует, что г21 = о и MTii) = Х(В). Окончательный результат получаем, воспользовавшись леммой 7.1.1, согласно которой Х(А) = Х(Т) = MTn) U Х(Т22).□
302 Гл. 7. Несимметричная проблема собственных значений Пример 7.1.1. Если 67.00 177.60 — 63.20 - 20.40 95.88 - 87.16 22.80 67.84 12.12 X = <20, —9, — 12)г и В — (25), то АХ — XВ. Более того, если ортогональную матрицу Q определить хах - 8.00 0.360 0.480 0.360 0.928 - 0.096 0.480 - 0.096 0.872 то QTX = (- 25, 0, 0)ти QTAQ = T= 25 -95 5 0 147 - 104 0 146 3 Заметим, что >.(Л) = {25, 75 + 100/, 75 — 100 i}. Лемма 7.1.2 утверждает, что произвольная квадратная матрица может быть приведена к блочно-треугольной форме унитарными преобразованиями подобия, если известно одно из ее инвариантных подпространств. Применяя индукцию, мы можем легко получить разложение Шура [Schur (1909)]. Теорема 7Л.З (Разложение Шура). Если А еСпх\ то существует унитарная матрица ОеС"*", такая, что QHAQ = T=D + N, (7.1.3) где D = diag(X1,..., а N е Сп* п есть строго верхняя треугольная матрица. Более того, матрица Q может быть выбрана такой, чтобы собственные значения \ были расположены вдоль диагонали в любом заданном порядке. Доказательство. Теорема очевидно верна при п = 1. Предположим, что она верна для всех матриц порядка п — 1 или меньше. Если Ах = Хх, где х Ф 0, то согласно лемме 7.1.2 (при В = (X)) существует унитарная матрица U, такая, что: ГХ wHl 1 UHAU = \ Lo с J п-\ 1 п — 1 По предположению индукции найдется унитарная матрица 0, такая, что матрица 0я С и -верхняя треугольная. Следовательно, если Q = U diag(l, £/), то матрица QHAQ-верхняя треугольная. □ Пример 7.1.2. Если 2001 О- Г °*8944' 0.44721 75 J L - 0.4472 - 0.8944/ J ’ 78 50 то Q- унитарная матрица и -L: 75 + 100/ 150
7.1. Свойства и разложения 303 Если Q = {jqx,... , qJ есть разбиение на столбцы унитарной матрицы Q из (7.1.3), то столбцы qi называют векторами Шура. Сравнивая столбцы в уравнении AQ = QT, мы видим, что векторы Шура удовлетворяют уравнениям fc-i Мк = КЧк + Е ЩкЧи fc = 1 :и. (7.1.4) 1= 1 Отсюда следует, что подпространства Sk = spanqk}, k = 1 являются инвариантными. Более того, нетрудно показать, что если Q = [qv ..., то MG* AQk) — {М> ■ • » Поскольку собственные значения в (7.1.3) могут иметь произвольный порядок, это означает, что существует по крайней мере одно /с-мерное инвариантное подпространство для каждой подпоследовательности /с собственных значений. Другой вывод из (7.1.4) заключается в том, что вектор Шура qk является собственным вектором тогда и только тогда, когда /с-й столбец матрицы N- ну¬ левой. Оказывается, что если k-й столбец матрицы N нулевой для всех /с, то Ан А = А Ан. Матрицы, удовлетворяющие этому условию, называют нормальными. Следствие 7.L4. Матрица А е Сп *пявляется нормальной тогда и только тогда, когда существует унитарная матрица QeCnxn, такая, что QHAQ = diag(М, , М)- Доказательство. Нетрудно показать, что если А унитарно подобна диагональной матрице, то А нормальная. С другой стороны, если А является нормальной и QttA Q—T есть ее разложение Шура, то Т является также нормальной. Осталось показать, что нормальная верхняя треугольная матрица является диагональной. □ Заметим, что если QHAQ = diag^) + N есть разложение Шура произвольной их «-матрицы А, то || N ||f не зависит от выбора Q: ЦАЩ?«М IIf- £|А,!2 = Д2И). i = 1 Эту величину называют отклонением от нормальности. Таким образом, для того чтобы сделать Т «более диагональной», необходимо использовать неунитарные преобразования подобия. 7.1.3. Неунитарные преобразования Для того чтобы увидеть, что представляет собой неунитарное преобразование подобия, мы рассмотрим блочную диагонализацию 2 х 2-блочно-треугольной матрицы. Лемма 7.1.5. Пусть матрица ТеСяхп представлена в блочном виде TjTu ^12 ”1 Р “Lo Т2 J q Р Я Определим преобразование ф :Срхд -> Ср*я равенством ф(Х) = ТпХ-ХТ22, где XеСр*я. Преобразование ф невырожденно тогда и только тогда, когда
304 Гл. 7. Несимметричная проблема собственных значений ЦТП) п к(Т22) = 0. Если ф невырожденно и Y определено как У=[о?]’ mo Y~lTY= diag(T,„ Т22). Доказательство. Предположим, что ф (X) = 0 для X Ф 0 и что 1/нЛТ=Г^г Ч L0 0J р-г г q-r есть сингулярное разложение матрицы X с Ir = diagfcr^r — гапк(Х). Подстановка этого разложения в уравнение Т1ХХ = ХТ22 дает рп ^12irzr<n = ГГ,01Гви Bi21 1а21 а22J Lo oJ Lo oJ LB2i в22J ’ где UHTXXU = (Аи) и VHT22V= (В^). Сравнивая соответствующие блоки, мы видим, что A2t = 0, В12 = 0 и ХИи) — Х(ВА1). Следовательно, 0 Ф X(Atl) = Х(*и) я ЦТи) Л Х(Т22). С другой стороны, если А,еЯ.(Ти) Л ^(Т22\ то найдутся такие ненулевые векторы х и у, что Тх1 х = Хх и у** Т22 = А. У*. Можно показать, что ф {ху**) = 0. Наконец, если ф невырожденно, то указанная матрица Z существует и у-ту-У -Z]\T" Т'!1Г,21 Lo / J Lo t22JLo/J = ГГП TnZ-ZT22+T12l Гтп о ] Lo t22 J Lo r22j u Пример 7.1.3. Если 1 2 3 1.0 0.5 -0.5 т= 0 -3 8 и У= 0.0 1.0 0.0 0 -2 3 0.0 0.0 1.0 то Y~l TY— 1 0 0 0 3 8 0-2 3 Применяя повторно лемму 7.1.5, можно установить более общий результат. Теорема 7.1.6 (Блочно-диагональное разложение). Пусть QHAQ = Т= 0 Tt 2 ... т22 ... 4 4 1 _0 0 ... т ад J (7.1.5)
7.1. Свойства и разложения 305 есть разложение Шура матрицы АеСпхп, и предположим, что блоки Ти квадратные. Если Х(Тц) П Х(7},) = 0 при I Ф j, mo существует невырожденная матрица УеСЛУЛ, такая, что (QY) 'A(QY) = diag(7\leTqq). (7.1.6) Доказательство. Доказательство можно выполнить, используя лемму 7.1.5 и индукцию. □ Если каждому диагональному блоку Та соответствует определенное собственное значение, то мы получаем Следствие 7.1.7, Если АеСпУп, то существует невырожденная матрица X, такая, что Х~'АХ = diag (М + , у + N,)4 NjeC**\ (7.1.7) где Х1? ..., \ различные, целые nt,... , nq удовлетворяют равенству и, + ... + пц — — пи каждая матрица N-t является строго верхней треугольной. С разложением (7.1.7) связан ряд важных понятий. Целое число л, называют алгебраической кратностью собственного значения X,-. Если 1, то говорят, что собственное значение \-npocmoe. Геометрическая кратность равна размерности пиЩОД т.е. числу независимых собственных векторов, соответствующих X*. Если алгебраическая кратность X* превышает его геометрическую кратность, то говорят, что Х£- дефектное собственное значение. Матрицу, имеющую дефектное собственное значение, называют дефектной. Недефектные матрицы называют также диаго- нализуемыми в соответствии со следующим результатом: Следствие 7.1Л (Диагональная форма). Матрица АеСпхп является недефектной тогда и только тогда, когда существует невырожденная матрица ХбСлхл, такая, что X lAX = diag(Xj,... , Хл). (7.1.8) Доказательство. Матрица А недефектная тогда и только тогда, когда существуют линейно независимые векторы х19... , ^„еС" и скаляры Xt, ...,Х„, такие, что Ах j = X; jc, при i = 1 :п. Это эквивалентно существованию невырожденной матрицы X = [д^, ..., хп]еСпхл, такой, что АХ = XD, где D = diag(XA,..., Хл). □ Заметим, что если у? есть i-я строка матрицы X"1, то у?А = X^f. Таким образом, столбцы матрицы ХТ являются левыми собственными векторами, а столбцы матрицы X- правыми. Пример 7.1А Если Ч-! .;]• то X~l АХ — diag (4,7). Если матрицу X в (7.1.7) разбить на блоки Х = [Х19 ...,XJ, то С” = range(XJ© ... ©range(Хв) есть прямая сумма инвариантных подпрост¬ ранств. Если базисы в этих подпространствах выбрать специальным образом, то можно получить еще больше нулей в верхней треугольной части матрицы Х~*ЛХ. Теорема 7.1.9 (Жорданово разложение). Если А еС"х", то существует невырожденная матрица ХеСпхл, такая, что X~lAX — diag(Jl5... ,Jt\ где
306 Гл. 7. Несимметричная проблема собственных значений А, 1 0 А, О 1 Ji = О есть т{ х т-матрица и тг + ... + mt = п. Доказательство. Смотри Halmos (1958), с. 112. □ Блоки Ji называют жордановыми. Число и размеры жордановых блоков, связанных с каждым собственным значением, определяются однозначно, хотя их расположение вдоль диагонали неоднозначно. 7.1.4. Некоторые замечания о неунитарном подобии Жорданову блочную структуру дефектной матрицы трудно определять числен¬ но. Множество диагонализуемых и хи-матриц является плотным в С"хл, и, таким образом, малые изменения в дефектной матрице могут значительно изменить ее жорданову форму. Более подробно мы поговорим об этом в разд. 7.6. Трудности, возникающие в задаче нахождения собственных значений, состоят в том, что у почти дефектных матриц плохо обусловлены матрицы собственных векторов. Например, любая матрица X, диагонализующая матрицу имеет число обусловленности во 2-й норме порядка 1/е. Эти наблюдения показывают трудности, связанные с плохой обусловленностью преобразования подобия. Поскольку ясно, что большая ошибка может появиться при вычислении собственного значения, когда мы выходим за рамки унитарных преобразований подобия. 7.1.1. Показать, что если матрица ТеСп*п является верхней треугольной и нормальной, то Т- диагонал ьная. 7.1.2. Проверить, что если X диагонализует 2 х 2-матрицу (7.1.9) и е < 1/2, то kt(X) ^ 1/е. 7.1.3. Пусть собственные значения матрицы A eCrt * п различны. Показать, что если QH A Q = — Т есть ее разложение Шура и А В = В А, то матрица QH В Q верхняя треугольная. 7.1.4. Показать, что если матрицы А и В11 принадлежат Стхп с т > я, то: 7.1.5. Задана матрица А еСя х п. Используя разложение Шура, показать, что для каждого е > 0 существует диагонализуемая матрица В, такая, что ||А — В[\2 < е. Это показывает, что множество диагонализуемых матриц плотно в См * п и что каноническая форма Жордана не является непрерывным матричным разложением. 0 < е « 1 , (7.1.9) Л(Х~1АХ) = X~lAX + Е, (7.1.10) где IE ll2*uM*) IIА ||2, (7.1.11) Задачи Х(/4Я) = Ц&4) U {0, ..., 0}.
7.2. Теория возмущения 307 7.1.6. Предположим, что Ак А и Qk AkQk = Тк есть разложение Шура матрицы Ак. Показать, что последовательность {Qk} имеет сходящуюся подпоследовательность обладающую следующим свойством: lim Qtj = Q, i -* oo где QH A Q = T- верхняя треугольная. Это показывает, что собственные векторы матрицы являются непрерывными функциями ее элементов. 7.1.7. Обосновать (7.1.10), (7.1.11). Замечания и литература к § 7.1 Математические свойства алгебраической проблемы собственных значений изящно рассмотре¬ ны в Wilkinson (АЕР), гл. 1, и Stewart (IMC), гл. 6. Для тех, кому требуются дополнительные сведения, мы также рекомендуем Bellman R. (1970). Introduction to Matrix Analysis, 2nd ed., McGraw-Hill, New York. Gohberg I.C., Lancaster P. and Rodman L. (1986). Invariant Subspaces of Matrices With Applica¬ tions, John Wiley and Sons, New York, Marcus M. and Mine H. (1964). A Survey of Matrix Theory and Matrix Inequalities, Allyn and Bacon, Boston. Mirsky L. (1963). An Introduction to Linear Algebra, Oxford University Press, Oxford Разложение Шура впервые опубликовано в Schur I. (1909). “On the Characteristic Roots of a Linear Substitution with an Application to the Theory of Integral Equations”, Math. Ann. 66, 488-510 (German). Доказательство, очень похожее на наше, дано на стр. 105 работы Tumbill Н. W. and Aitken А. С. (1961). An Introduction to the Theory of Canonical Forms, Dover, New York. Иногда можно установить особую структуру разложения Шура для матриц специальной структуры. Смотри Paige С. С. and Van Loan С. (1981). “A Schur Decomposition for Hamiltonian Matrices”, Lin. Alg. and Its Applic. 41, 11-32. 7.2. Теория возмущения Никакие из разложений, описанных в предыдущем разделе, не могут быть вычислены точно из-за ошибок округления и из-за того, что алгоритмы вычисления собственных значений являются итерационными и должны быть остановлены после некоторого конечного числа шагов. Поэтому важно разработать удобную теорию возмущений, чтобы руководствоваться ею в последующих разделах. 7.2.1. Чувствительность собственного значения Ряд стандартных программ вычисления собственных значений выполняют последовательность преобразования подобия Хк, обладающих тем свойством, что матрицы Хк 1 АХк становятся «более диагональными». Возникает, естественно, вопрос: «Насколько хорошо диагональные элементы матрицы аппроксимируют ее собственные значения?» Теорема 7.2.1 (О кругах Гершгорнна). Если Х~хАХ = D + F, где D — diag(rft, ..., d„) и F имеет нулевые диагональные элементы, то п А.(Л) S U Dt, 1=1
308 Гл. 7. Несимметричная проблема собственных значений где A = {zeC:|z-4l^ i\fu\}. ]= i Доказательство. Пусть ^еА,(Л) и предположим, не нарушая общности, что к ф d{ для /=!:«. Так как матрица (D — XI) + F — вырожденная, то из леммы 2.3.3 следует, что 1< ||(D — ||* = £ гг^ТТ j= i Wk ~ ^1 для некоторого к, 1 ^ к ^ п. Но это не означает, что keDk. □ Пример 7.2.1. Если А = 10 2 3 - 1 0 2 1 — 2 I то >.(/!)» {10.226, 0.3870 + 2.2216 /, 0.3870 — 2.2216 /}, а круги Гершгорина-Dj = {|z|:|z — - 10|О}, D2 = {|z|:|z|^3} и D3 HM:|z - 11 < 3}. Можно также показать, что если круг Гершгорина Dt изолирован от остальных кругов, то он содержит в точности одно собственное значение матрицы А. Смотри Wilkinson (АЕР), с. 71. Для некоторых очень важных процедур вычисления собствен¬ ных значений можно показать, что вычисленные собственные значения являются точными собственными значениями некоторой матрицы А + Е, где матрица Е мала по норме. Следовательно, мы должны понять, как малые возмущения влияют на собственные значения матрицы. Простым результатом, проливающим свет на этот вопрос, является следующая теорема. Теорема 7.2.2 (Бауэр-Файк). Если р является собственным значением матрицы А + £еС"жи и Х 'АХ'= D = diag(^,... Дл), wo min \X-\i\^kp(X)\\E\\p, ХеМЛ) где || • ||р означает любую из р-норм. Доказательство. Достаточно рассмотреть лишь тот случай, когда р не принад¬ лежит “к (А). Если матрица Х~1 (А + Е— р/)Х вырожденная, то матрица I + (D — р/)_ 1 (X-1 ЕХ) также вырожденная. Поэтому из леммы 2.3.3 получаем, что \<\\(D-iiI)-'(X-'EX)\\p^ ^IKO-p/j-Mlpll^llpll^lUI^-Mlp. Так как матрица (D — р/)“1 диагональная, а /7-норма диагональной матрицы есть максимальное из абсолютных значений ее диагональных элементов, то ||(D-p/)-1||p= min —— что и доказывает теорему. □ Аналогичный результат может быть получен через разложение Шура:
7.2. Теория возмущения 309 Теорема 7.2.3. Пусть QHAQ = D + N-разложение Шура (7.1.3) матрицы АеСпхп. Если \ieX(A + Е) и р-наименьшее положительное целое, такое, что | N|р = 0, то где min \k — |i| ^ max(0,0 1/р), \€Х(Л) в = 1№"i IINil*. к = О 1 Доказательство. Обозначим 8 = min \k — р | = — _, ke\(A) Теорема очевидно верна, если 8 = 0. Если 8 > 0, то матрица / — (р/ — А)~1 - вы¬ рожденная, и, применяя лемму 2.3.3, имеем: 1 < ||(\il-А)1 Е\\2 ^ ||си/ - Л)' а||2 || Е\\2 = = ||((p/-D)~N)-l||2 ||£||2. (7.2.1) Учитывая, что матрица (\xl — D) 1 диагональная и \N\P = 0, несложно показать, что ((р J — D)~1 NY = 0. Поэтому ((р/ - D) - N)'1 = £ ((р/ — D)~xN)k(\iI — D)~l fc-0 и, следовательно, Если 8 > I, то KW-Ч-N.-II» 1 р- 8 II((р/ - О) - 7V)-1 ll2 < I \\N\\k2 О дг = г к = О и из (7.2.1) следует, что 8^0. Если 8 ^ 1, то ||((H/-Z))-N2)-1||2<^V II MIS ® к = о и из (7.2.1) следует, что 8Р ^ 0. Таким образом, 8 ^ тах(0,01/р). □ Пример 7.2.2. Если 1 2 3 0 0 0 А = 0 4 5 и Е = 0 0 0 0 0 4.001 0.001 0 0 то Х{А + Е) ъ {1.0001,4.0582, 3.9427} и матрица собственных векторов матрицы А удовлетворя¬ ет условию k2(X) « 107. Оценка Бауэра-Файка из теоремы 7.2.2 имеет порядок 104, в то время как оценка Шура имеет порядок 10°. Каждая из теорем 7.2.2 и 7.2.3 указывает возможную чувствительность собственного значения, если матрица А не является нормальной. В частности, если величина к2 (Я")
310 Гл. 7. Несимметричная проблема собственных значений или Н^НГ1 велика, то малое возмущение элементов матрицы А может вызвать большие возмущения ее собственных значений. Пример 7.2.3. Если то лля всех ХеХ(Л) и цеА.(Л 4- Е) величина |Х — ц|= 10 !. В этом примере возмущение порядка 10‘10 матрицы А приводит к возмущению порядка 10"1 ее собственных значений. 7,2*2. Обусловленность простого собственного значения Высокая чувствительность собственного значения матрицы А не может иметь место, если матрица Л-нормальная. С другой стороны, «ненормальность» не обязательно подразумевает высокую чувствительность собственного значения. Действительно, матрица, не являющаяся нормальной, может иметь как хорошо обусловленные, так и плохо обусловленные собственные значения. Следовательно, полезно уточнить нашу теорию возмущения таким образом, чтобы ее можно было применять к отдельным собственным значениям, а не к спектру в целом. Для этого предположим, что X-простое собственное значение матрицы АеСпхп и что векторы х и у удовлетворяют равенствам Ах = Хх и у**А = Ху", причем ||х||2 = ||>’||2 = 1. Используя классические результаты теории функций можно показать, что в некоторой окрестности точки е = 0 существуют дифференцируемые функции х(е) и Х(е), такие, что (А + eF)x(e) = Х(е)*(е) И F\\2 = 1, ||x(g)||2 = 1, где Х(0) = X и х(0) = х. Дифференцируя это уравнение по е и полагая затем е = 0, получим следующее уравнение: Ax(0) + Fx = U0)x + Xx(0). Умножив на Vй обе части этого уравнения, разделив их на унх и взяв по абсолютной величине, получим, что yHF х унх 1 \Унх\' Верхняя граница достигается, если F — ухн. Поэтому мы будем называть величину, обратную *(Х) = |>>"*|, обусловленностью собственного значения X. Грубо говоря, выполненный выше анализ показывает, что если матрицу А изменить на величину порядка £, то собственное значение X может измениться на величину порядка e/s(X). Следовательно, если s (X)- мало, то собственное значение X следует рассматривать как плохо обусловленное. Заметим, что s(X) является косинусом угла между левым и правым собственными векторами, соответствую¬ щими X, и равно единице только в том случае, когда X-простое. Малое s(X) означает, что матрица А близка к матрице, имеющей кратное собственное значение. Точнее, если X-изолированное собственное значение и 5 (X/ < 1, то найдется такая матрица £*, что X будет кратным собственным значением
7.2. Теория возмущения 311 матрицы А + Е и ^ 5(Х) IMIli ^ s/i -$(Я.)2 Этот результат доказан в Wilkinson (1972). Пример 7.2.4. Если 1 2 3 0 0 0 А = 0 4 5 и Еш 0 0 0 0 0 4.001 0.001 0 0 то А(Л + £)« {1.0001, 4.0582, 3.9427}, а *(1) * 0.79 х 10°, j(4) * 0.16 х 10~а и j(4.001)* %0.16х 10~3. Заметим, что || Е ||2Л(А) является хорошей оценкой возмущения, которому подверглось каждое из собственных значений. 7.2.3. Чувствительность кратных собственных значений Если А- кратное собственное значение, то вопрос о чувствительности этого собственного значения более сложен. Например, если то А (Л + eF) = {1 ± у/ва}. Заметим, что если л 9*0, то собственные значения матрицы А + eF не дифференцируемы в нуле; скорость их изменения в окрестности точки е - 0 бесконечна. Вообще говоря, если А.-дефектное собственное значение матрицы А, то возмущения порядка О(е) матрицы А могут привести к возмущениям порядка 0(е1;р) в А, если А соответствует жорданову блоку порядка р. Более подробно это обсуждается в Wilkinson (АЕР), с. 77. 7.2.4. Чувствительность собственного вектора Сейчас мы посмотрим, как малые изменения матрицы влияют на ее инва¬ риантные подпространства. Рассмотрим сначала случай собственных векторов. Предположим, что матрица АеСпуп имеет попарно различные собственные значе¬ ния At, ... , А„ и матрица FeCnxn удовлетворяет условию ||Е||2 = 1. Из соображений непрерывности следует, что для всех е в некоторой окрестности точки е = 0 имеем: (А + ef)**(e) = Ме)**(е), ||xJe)||2 = 1, Уk (е) я (А +е F) = Ме)Л(£)н, 1Ь*(е)Н2 = 1. *= 1 :п, где каждая из функций А*(е), хк (е) и ук (с) дифференцируема. Если мы про¬ дифференцируем первое уравнение по е и положим е = 0, то получим следующее равенство: Ахк{ 0) + Fxk = Хк(0)хк + Akxk(0), где Ак =5 Ак(0) и хк = хк (0). Так как собственные векторы матрицы А образуют базис, мы можем записать я **(0) = Z ОЛ 1=1
312 Гл. 7. Несимметричная проблема собственных значений и, следовательно, я X а,(*-{ - h)*i + Fxk = МОК- i — 1 i*k Для того чтобы получить выражения для заметим, что у;(0)Ихк = у/*хк — 0 при всех i Ф к и, следовательно, Поэтому ряд Тейлора для хк(е) имеет следующий вид: Таким образом, чувствительность собственного вектора хк зависит от чувстви¬ тельности собственного значения X* и отделенное™ Хк от остальных собственных значений. То, что отделенность собственных значений влияет на чувствительность соб¬ ственного вектора, не должно вызывать удивления. Действительно, если Х-не дефектное кратное собственное значение, то существует бесконечное число воз¬ можных базисов в соответствующем ему инвариантном подпространстве. Пре¬ дыдущий анализ просто показал, что эта неопределенность начинает чувствоваться, когда собственные значения сливаются. Другими словами, собственные векторы, соответствующие близким собственным значениям являются «шаткими». Пример 7.2.5. Бели _ Г i.oi o.ooi ] Л ~ Y 0.00 0.99 J ’ то собственное значение X = 0.99 имеет обусловленность l/s(0.99) % 1.118 и собственный вектор х = (0.4472, — 0.8944). С другой стороны, собственное значение X = 1.00 «близкой» матрицы имеет собственный вектор к = (0.7071, — 7.071)т. 7.2.5. Чувствительность инвариантного подпространства Набор чувствительных собственных векторов может составить нечувствительное инвариантное подпространство при условии, что соответствующий кластер собст¬ венных значений изолирован. Для определенности предположим, что **(£) = **+ £ i = 1 i*k п (7.2.2) Р n-Р -разложение Шура матрицы А с матрицей e = [Qi с2]- (7.2.3) Р п-р
7.2. Теория возмущения 313 Из нашего анализа чувствительности собственного вектора ясно, что чувстви¬ тельность инвариантного подпространства range (С J зависит от расстояния между 2i(Tn) и МГ22). Правильной мерой этого расстояния, оказывается, является наименьшее сингулярное число линейного преобразования XТ1ХХ — ХТ22. (Напомним, что это преобразование фигурирует в лемме 7.1.5.) Более точно: если мы определим отделенностъ матриц Т1Х и Т12 как то получим следующий общий результат. Теорема 7.2.4. Предположим, что имеют место равенства (7.2.2) и (7.2.3) и что для любой матрицы ЕеСп*п мы разбиваем матрицу QHEQ на блоки следующим образом а столбцы матрицы Q = (Q^ + Q2P) (I + РИР) 1,2 образуют ортонормированный базис в некотором инвариантном подпространстве матрицы А + Е. Доказательство. Смотри Stewart (19735) теорема 4.1.1. □ Так как — (/ + РНРУХ/2, то сингулярные значения матрицы Р являются тангенсами главных углов между range(Qt) и range{Qt). (См. § 12.4.3.) Теорема 7.2.4 показывает, что эти тангенсы по существу ограничены величиной ||£1|2/5еР№1 - Тгг)- Таким образом, величину, обратную sep(7i 1» ^22 )> можно трактовать как число обусловленности, определяющее чувствительность range(Qx) как инвариантного подпространства. Пример 7.2.6. Пусть р п р Если 6 = sep(TM, Т22)-||£Г11||2-||£'22||2>0 и \\E2i\\{\\Ti2\\2 + \\E2l\\2)^82/4, mo существует матрица />еС(п~р)*р, такая, что \\Р\\2^2\\Е21\\2/Ь, Заметим, что AQl = QiTll, где Qt = [eif e2]eR4 * 2. Вычисления показывают, что sep(rlb Т22)* 0.0003. Если мы положим и исследуем разложение Шура матрицы Г T.t Т
314 Гл. 7. Несимметричная проблема собственных значений то обнаружим, что матрица Qx стала равна йг = -0.9999 - 0.0003 0.0003 -0.9999 -0.0005 -0.0026 0.0000 0.0003 Таким образом, имеем dist^, 0.0027 « 10 6/sep(7u Тг1). Задачи 1ЛЛ. Предположим, что QHAQ = diag (Xf) + N- разложение Шура матрицы А еС”хл, и обозначим у(Л) = ||АНА — ААИ\\Г. Верхняя и нижняя границы 6IMIIJ были установлены Хенричи (Henrici (1962)) и Эберлейном (Eberlein (1965)) соответственно. Проверить эти результаты для случая и = 2. 7.2Л. Предположим, что матрица ЛеС"*" имеет различные собственные значения и X “1>!A,*diag(Xll...f XJl Показать, что если столбцы матрицы X имеют единичную вторую норму, то kF(X) 7.2.3. Пусть QHAQ = diag(Xj) + N-разложение Шура матрицы А и X хАХ — diag(X<). Пока¬ зать, что /7+Э V ми? 2 * *,(*)> %/1 + Смотри Loizou (1969). 7.2.4. Если X "1 АХ = diag(Xj) и \Xt | ^ ... ^ |, то х2 (Л) Доказать этот результат для случая л = 2 (Ruhe (1975)). 7.2.5. Показать, что если А = ^ С , то s(«) =* 5(6) = (1 + \с/(а — 6)|2)“1. 7.2.6. Показать, что обусловленность собственного значения сохраняется при унитарном преобразовании подобия. Замечания и литература к §72 Многие результаты, представленные в этом разделе, можно найти в Wilkinson (АЕР), гл. 2, так же, как и в Householder A.S. (1964). The Theory of Matrices in Numerical Analysis. Blaisdell, New York. Bauer F. L., Fike CT. (I960). "Norms and Exclusion Theorems”, Numer. Math. 2, 123-144. Следующие статьи посвящены действию возмущений на собственные значения матрицы общего вида Kahan W., Parlett B.N. and Jiang E. (1982). "Residual Bounds on Approximate Eigensystems of Nonnormal Matrices", SIAM J, Numer. Anal. 19, 470-484.
7.2. Теория возмущения 315 Ruhe А. (1970). ’’Perturbation Bounds for Means of Eigenvalues and Invariant Subspaces", BIT 10, 343-354. Ruhe A. (1970). "Properties of a Matrix with a Very II1 -Conditioned Eigpnproblem", Numer. Math. 15, 57-60. Wilkinson J.H. (1972). "Note on Matrices with a Very Ill-Conditioned Eigenprobtem", Numer. Math. 19, 176-178. Wilkinson J. H. (1984). "On Neighboring Matrices with Quadratic Elementary Divisors", Numer. Math. 44, 1-21. Работа Уилкинсона о ближайших дефектных матрицах является типичным примером разрастающейся литературы, посвященной проблеме «близости» матриц. Смотри Byers R. (1988). "A Bisection Method for Measuring the Distance of a Stable Matrix to the Unstable Matrices", SIAM J. Sci. and StatComp. 9, 875-881. Demmel J. W. (1987). "On the Distance to the Nearest Ill-Posed Problem", Numer. Math. 51, 251-289. Demmel J.W. (1987). "A Counterexample for two Conjectures About Stability", IEEE Trans. Auto. Cont. AC-32, 340-342. Demmel J. W. (1988). "The Probability that a Numerical Analysis Problem is Difficult", Math. Comp. 50, 449 -480. High am N.J. (1985). "Nearness Problems in Numerical Linear Algebra", PhD Thesis, University of Manchester, England. Higham N.J. (1988). "Matrix Nearness Problems and Applications", Numerical Analysis Report 161, University of Manchester, England. (To appear in the Proceedings of the IMA Conference on Applications of Matrix Theory, S. Barnett and M.J.C. Gover (eds), Oxford University Press.) Ruhe A. (1987). "Closest Normal Matrix Found", BII 27, 585- 598. Van Loan C. (1985). "How Near is a Stable Matrix to an Unstable Matrix?", Contemporary Mathematics, Vol. 47, 465-477. Взаимосвязь между числом обусловленности собственного значения, отклонением от нормаль¬ ности и обусловленностью матрицы собственных векторов обсуждается в Eberlein Р. (1965). "On Measures of Non-Normality for Matrices”, Amer. Math. Soc. Monthly 72, 995-996. Henrici P. (1962). "Bounds for Iterates, Inverses, Spectral Variation and Fields of Values of Non-normal Matrices", Numer. Math. 4, 24 40. Loizou G. (1969). "Nonnormality and Jordan Condition Numbers of Matrices", J. ACM 16, 580-540. Smith R. A. (1967). "The Condition Numbers of the Matrix Eigenvalue Problem”, Numer. Math. 10, 232-240. van der Sluis A. (1975). "Perturbations of Eigenvalues of Non-normal Matrices", Comm. ACM 18, 30-36. Статья Хенричи также содержат результат, похожий на теорему 7.2.3. Глубокие исследования возмущений инвариантных подпространств включают Davis С. and Kahan W. М. (1970). "The Rotation of Eigenvectors by a Perturbation, III", SIAM J. Num. Anal. 7, 1-46. Stewart G. W. (1971). "Error Bounds for Approximate Invariant Subspace of Closed Linear Operators", SIAM J. Num. Anal. 8, 796-808. Stewart G. W. (1973b). "Error and Perturbation Bounds for Subspaces Associated with Certain Eigenvalue Problems", SIAM Review 15, 727-764. Детальный анализ функции sep(.,.) и преобразования X -* АХ + ХАТ дан в Byers R. and Nash S.G. (1987). "On the Singular Vectors of the Lyapunov Operator”, SIAM J. Alg. and Disc. Methods 8, 59-66. Varah J. (1979). "On the Separation of Two Matrices", SIAM J. Num. Anal. 16, 216-222. Теорему Гершгорина можно использовать для получения исчерпывающей теории возмущений. Смотри Wilkinson (АЕР), гл. 2. Эта теорема может быть обобщена и расширена различными способами; см. Johnston R.J. (1971). "Gershgorin Theorems for Partitioned Matrices", Lin. Alg. and Its Applic. 4, 205-220.
316 Гл. 7. Несимметричная проблема собственных значений Varga R.S. (1970). ’’Minimal Gershgorin Sets for Partitioned Matrices’*, SIAM J. Num. Anal. 7, 493-507. Наконец, мы упомянем классическую монографию Kato Т. (1966). Perturbation Theory for Linear Operators, Springer-Verlag, New York. Глава 2 этой работы содержит исчерпывающее рассмотрение конечномерного случая. 7.3. Степенные итерации Пусть заданы матрица АеСпхп и унитарная матрица U0eCnx”. Предположим, что ортогонализация Хаусхолдера (алгоритм 5.2.1) может быть распространена на комплексные матрицы (это возможно), и рассмотрим следующий итерационный процесс Т0 = UgAU0 for к = 1,2,... Tk_l = UiRk (QR-разложение) (7.3,1) Tk = RkVk end Так как Тк = RkUk- Ul(UkRk) Uk = U\Tk_ x Uk, то по индукции Tk = (U0 U,... Uk)HA (U0UX (7.3.2) Следовательно, каждая матрица Tk унитарно подобна матрице А. Не так заметно, но именно это центральная тема данного раздела, что матрицы Тк почти всегда сходятся к верхней треугольной форме. То есть (7.3.2) почти всегда «сходится» к разложению Шура матрицы А. Процесс (7.3.1) называют QR-итерациями, и он составляет основу наиболее эффективного алгоритма вычисления разложения Шура. Для того чтобы обосновать этот метод и установить характер его сходимости, рассмотрим сначала два других итерационных процесса, представляющих самостоятельный интерес. 7*3.1* Степенной метод Пусть матрица АеС"хл диагонализуема, Х~гАХ = diag(X1?...ДД где X — = и |XJ > jX2| > ... > |ХЯ|. Для заданного вектора ^{0)еСи, имеющего единичную 2-норму, степенной метод генерирует последовательность векторов q{k) следующим образом: for к= 1,2, . .. zik) = A^k~l) ^) = z«c)/||zW||2 (7.3.3) 3L« = end Нет никакой другой причины нормализовать по второй норме, кроме той, что это придает большее единообразие всему обсуждаемому в данном разделе. Рассмотрим свойства сходимости степенных итераций. Если 9С0) = Д1*1 + а2*2 + --- + ««*, и а, ?£ 0, то
7.3, Степенные итерации 317 ^-.ч(*. + Ё*(£У4 Так как ^espan {Akq{0)}, можно заключить, что dist(span {q[w), span {*t}) = О^ | ^ ^ и, кроме того, -»©f) Если |Я.11 > |X2| > ... >|Я,я[, то говорят, что Я.! является доминирующим собственным значением. Итак, степенной метод сходится, если Я.4 доминирует и если qm имеет компоненту в направлении, соответствующем доминирующему собственному век¬ тору xL. Поведение степенного метода без этих предположений рассматривается в Wilkinson (АРЕ), с. 570, и Parlett, Poole (1973). Пример 7.3Л» Если А = -261 209 -49 -530 422 -98 -800 631 -144 то МЛ) ~ {10, 4, 3}. Применяя (7.3.3) с <f0) = (I, О, 0)т, находим: k Л<*> I 994.4900 2 13.0606 3 10.7191 4 10.2073 5 10.0633 6 10.0198 7 10.0063 8 10.0020 9 10.0007 10 10.0002 На практике эффективность степенного метода зависит от отношения | Я,21 /1 Я-! [, так как оно определяет скорость сходимости. Опасность, что qm не содержит хи не повод для беспокойства, поскольку ошибки округления, появляющиеся при выполнении итераций, обычно приводят к тому, что последующие qik) имеют компоненту в этом направлении. Более того, типичен случай, когда в приложениях, где требуется доминирующее собственное значение и собственный вектор, известно априорное приближение вектора хх. Обычно, полагая qm равным этому при¬ ближению, уменьшают опасность малого av Заметим, что для реализации степенного метода требуется только программа, способная вычислять матрично-векторное произведение вида Aq. Нет необходимос¬ ти хранить матрицу А в массиве размера пхп. По этой причине степенной метод может представлять интерес, когда матрица Л-большая и разреженная и когда существует достаточный зазор между \Х%\ и |Я.2|. Оценки погрешности |Я.№) — Хг \ можно получить, используя теорию возмущения, развитую в предыдущем параграфе. Определим вектор rik) = Aq{k) — k{k) q(k} и заметим, что (А + E{k))qik) = kik)qik\ где E{k) = — r(k) [<7(k)]H. Следовательно,
318 Гл. 7. Несимметричная проблема собственных значений X{к) - собственное значение А + Е{к) и Если мы используем степенной метод для получения правого и левого доми¬ нирующих собственных векторов, то можно получить оценку В частности, если w<k)-вектор с единичной 2-нормой, направленный вдоль (AH)kw{0\ то мы можем использовать следующее приближенное равенство ^(Хх)» \w{k)Hq{k}\. 7.3.2. Ортогональные итерации Прямое обобщение степенного метода может быть использовано для опре¬ деления инвариантных подпространств большой размерности. Пусть р - выбранное некоторым образом целое число, удовлетворяющее неравенствам 1 < р < п. Для заданной п х л-матрицы Q0 с ортонормированными столбцами метод ортого¬ нальных итераций генерирует последовательность матриц {£)*} я Сп*р следующим образом: for к = 1,2,... — AQk-i QkRk = Zk (QR-разложение) (7.3.4) end Заметим, что если /7-1, то (7.3.4)-просто степенной метод. Более того, после¬ довательность {0к?1}-это в точности последовательность векторов, полученных степенными итерациями с начальным вектором q{0) = Q0ev Для анализа ортогональных итераций предположим, что q»AQ = Т= diag^) + N, \Хх\> |Х2| ^ ... ^ |ХЯ|, (7.3.5) есть разложение Шура матрицы АеСпхп. Предположим, что 1 </? < п и разобьем матрицы б, Ти N на блоки следующим образом: в-М. г=[0т" £] Р п-р 22. п-р N = TNl1 N,21 Р (7.3.6) Lo N„J п-р Р п-Р Если |Хр| > \Хр+11, то подпространство Dp(A) = range(Qa) называют доминирующим инвариантным подпространством. Это единое инвариантное подпространство, соответствующее собственным значениям Х1#...,Хр. Следующая теорема показыва¬ ет, что при разумных предположениях подпространства range (QJ, генерируемые методом (7.3.4), сходятся к Dp(A) со скоростью, пропорциональной |Хр+1/Хр|*. Теорема 7.3.1. Пусть разложение Шура матрицы АеСпхп задано в виде (7.3.5) и (7.3.6) с п ^ 2. Предположим, что |ХР| > |Хр+1| и что 0 > 0 удовлетворяет неравенству d + e)|xpi>i|N||F. Если матрица Q0eCnxp имеет ортогонормированные столбцы и
7.3. Степенные итерации 319 d = dist (Df (AH), range (Со)) < 1, то матрицы Qk, генерируемые методом (7.3.4), удовлетворяют неравенству dist (О, (Л), range (Си)) < .0 + б)"2 Л | 1|Т1а||, \/| — ср \ seP(7ii»T22)'' \ Vil + ||AT||F/(1 +0) )' V ■ sep(Tn,T22)M \X,\-\\N\\F/(\+V) Доказательство. Доказательство длинное и представлено в конце раздела. □ Условие d < 1 в теореме 7.3.1 гарантирует, что начальная матрица Q содержит все собственные направления: d < \^Dp(AH)L n range (Со) = {0}. Теорема 7.3.1 в действительности говорит, что если это условие выполнено и если 0 выбрано достаточно большим, то dist (D M), range (Qk)) < с I? где константа с зависит от sep(Tu, Т22) и отклонения от нормальности матрицы А. Очевидно, что сходимость может быть очень медленной, если зазор между 1^1 и l^p+il недостаточно широкий. Пример 7.3.2. Если (7.3:4) применить к матрице А из примера 7.3.1 с Q0 — [et. с2], то к diet(I>2( Л)> range(<5*)) 1 .0052 2 .0047 3 .0039 4 .0030 5 .0023 6 .0017 7 .0013 Погрешность стремится к нулю со скоростью (Х3Д2)к = (3/4)*. Можно ускорить сходимость ортогональных итераций, используя прием, опи¬ санный Стюартом [Stewart (1976)]. В ускоренной схеме приближенное собственное значение Х|к) удовлетворяет неравенству - *,1 * К (Без ускорения правая часть равна В алгоритме Стюарта время от времени вычисляется разложение Шура матриц QlAQk. Этот метод может быть очень полезным в. тех ситуациях, когда матрица А большая и разреженная и требуются несколько ее старших собственных значений. 7.3.3. QR-итерации Мы сейчас «выведем» QR-итерации (7.3.1) и исследуем их сходимость. Пусть р — п в (7.3.4) и собственные значения матрицы А удовлетворяют условию \ь1\>\х2\>->\К\-
320 Гл. 7. Несимметричная проблема собственных значений Разобьем на блоки матрицу Q из (7.3.5) и матрицу Qk из (7.3.4) следующим образом: е = [?.> >?»], ft-trfu.rf»]. Если dist(D,(/(H), span{g<1o,,...,0j.o>})< 1, i = l:n, (7.3.7) то из теоремы 7.3.1 следует, что dist(span{«Л*»,...,q^}, span{qu для i = 1: п. Это означает, что матрицы Тк, определяемые равенством Тк - Q"AQk, сходятся к верхней треугольной форме. Следовательно, можно сказать, что метод ортогональных итераций вычисляет разложение Шура при условии, что начальное приближение Q0eCnxn полное в смысле (7.3.7). QR-итерации возникают естественно при размышлении о том, как получить матрицу Тк непосредственно из ее предшественника 7^_х. С одной стороны, мы имеем из (7.3.4) и определения матрицы Тк_1У что тк=(еГ-,е*)д*. С другой стороны, Тк = QUQk = (OS AQk -1 не?-1 Qk) = ЯЖ- \Qk)' Следовательно, матрицу Тк можно определить, вычисляя QR-разложение матрицы Тк_1 и затем перемножая те же сомножители в обратном порядке. Это в точности то, что делается в (7.3.1). Пример 7.3.3, Если итерационный процесс for к = К 2,... A = QR А = RQ end применить к матрице из примера 7.3.1, то строго нижние треугольные элементы будут уменьшаться следующим образом: * 0(|а21|) 0( |аз11) 0( |а32|) 1 ю-1 10”1 10“2 2 ю-2 10“2 10~3 3 иг2 10“3 10“3 4 10”3 10“3 10~3 5 10-3 10“4 10“3 6 ю^4 10“6 10“3 7 10-4 10“5 10“3 8 10“5 10“6 10“4 9 10“5 10“7 10“4 10 10-® 10“8 10“4 Заметим, что одна QR-итерация требует 0(л3) вычислений. Более того, так как сходимость только линейная (если она имеет место), то понятно, что этот метод является недоступно дорогим способом вычисления разложения Шура. К счастью, как мы покажем в § 7.4 и § 7.5, эти практические трудности можно обойти.
7.5. Степенные итерации 321 7.3.4. LR-итерацин В заключение сделаем несколько замечаний о степенных итерациях, которые основаны на LU-разложении, а не на QR-разложении. Пусть матрица С0еСп*р имеет ранг р. В соответствии с (7.3.4) мы имеем следующий итерационный процесс: Можно показать, что если L0 = G0, то эти матрицы Тк могут быть получены следующим образом: end Итерационные процессы (7.3.8) и (7.3.10) называют ступенчатыми и LR-итерациями соответственно. Для успешного применения обоих методов необходим выбор ведущего элемента. Смотри [Wilkinson, АЕР], с. 602. Приложение Для того чтобы установить теорему 7.3.1, нам потребуется следующая лемма, которая оценивает норму степеней матрицы и обратных им матриц. Лемма 7.3.2. Пусть QHAQ = Г= D + N -разложение Шура матрицы АеСп*п, где D-диагональная, a N-строго верхняя треугольная матрицы. Пусть X и ц означают максимальное и минимальное по абсолютной величине собственные числа матрицы А. Если 0^0, то для всех к ^ 0 имеем Если матрица А невырожденная и число 0^0 удовлетворяет неравенству (1 + 0)| р| > ||N||F, то для всех к ^ 0 мы также имеем Доказательство. Для 0^0 определим диагональную матрицу А следующим равенством и заметим, что k2(A) = (1 + 0)" \ Так как матрица N-строго верхняя треугольная, то несложно проверить, что ||ANA_1||F ^ ||N||F/(1 +0). Следовательно, for к = 1,2,... Zk = QGk- — V^k-l Zk — GkRk (LU-разложение) end (7.3.8) Предположим, что p = n и что мы определяем матрицы Тк равенством Tk = GklAGk. (7.3.9) for 1,2,... Tk_l= LkRk (LU-разложение) Tk = RkLk (7.3.10) (7.3.11) (7.3.12) Д = diag(l,(l + 0X (1 + 0)2,-.-,(1 + er!) Uk\\2 = «Па = IIA 'CO + ANA" YAH* < II 63
322 Гл. 7. Несимметричная проблема собственных значений С другой стороны, если матрица А невырожденная и (1 + 0)|ц| > ||N||f, то ||ДД“ХМ4“1||2 < 1 и> используя лемму 2.3.3, мы получим I\Л-% = ||Т-‘||2 - IIА-1 [(/ + AD'‘1ATA~1)"1D~1]‘A||2 < ,J 11Д~ЧЬ V ^ *2 4l-||AD-1JVA_1|l2/ " (1 -ь ev*-1 ( 1- ). □ Ми1-J|N||f/(i +0)/ Доказательство теоремы 7.3.1. Легко показать по индукции, что AkQ0 = Qk(Rk... Rt). Подставляя (7.3.5) и (7.3.6) в это уравнение, получаем где Vk = QZQk и Wk = QHQk* Из леммы 7.1.4 известно, что существует матрица ХеСрх{п~р\ такая, что ^ Г/, X П-1 ГТ221Г1Р х 1 ггп о 1 Lo /^J Lo т22] Lo Lo r22J* Более того, так как sep(rn, Т22) является наименьшим сингулярным значением линейного преобразования ф(Х) = TtlX — ХТ22, то из уравнения ф(Х) = -т12 непосредственно следует, что II'TizIIf ||Х|1^ J -r т Г (7313) Sep(Tn, Т22) Поэтому Если предположить, что матрица V0 — XW0 невырожденная, то это уравнение можно решить относительно Wk: wk = т\г W0(V0 - xwQyl 7ГЛК - xwj. Беря это выражение по норме и учитывая, что dist(Dp(A\ range(Ck)) = ||G"<2JI2 = II*HII2. получим dist^U), range(Ck)) < II Tf2\\2\\(W0 - XW0)-l\\2\\T^\\2(\ + ||X||f). (7.3.14) Для того чтобы обосновать это неравенство, мы должны показать, что матрица V0 — XW0 невырожденная. Из уравнения AHQ = QTH следует, что AH(Qa - QpXИ) = (Qa - QpX") Т», т.е. ортогональные столбцы матрицы z = (б0 - QpXa)(I + ХХИ)х<* образуют базис в D (Ан). Можно показать, что
7.3. Степенные итерации 323 V0 - XW0 = (/ + ХХИ)1>2 ZHQ0 и, следовательно, o„(V0 - XW0) > op(Z"Q0y= = ap(V0 - XW0) > ap(Z"Q0) = jl-d*>0. Это показывает, что матрица V0 — XW0 действительно обратима и ||(Г0- (7.3.15) Наконец, используя лемму 7.3.2, можно показать, что II т\г ца < (1 + ег:1 (IV, I + ^ )‘ И II гг,‘ и, < (1 + от1 / (|:\\ - • Окончательный результат получаем, подставляя эти неравенства вместе с (7.3.13) и (7.3.15) в (7.3.14). □ Задачи 7.3.1. (а) Показать, что если матрица ХеСп * п невырожденная, то | \А \ \х = 11 Х~1 А X \ \2 есть матричная норма, обладающая свойством 11 АВ\ \х < | \А | \х \ \ В\ \х. (б) Пусть АеСпхП и р = шах |Х{|. Показать, что для любого е > 0 существует невырожденная матрица ХеСпУ пу такая, что ||Л||* = ||Лг-1ЛЯ'||2г£р + е. Доказать, что существует константа М, та¬ кая, что ||/1*||2 ^ Л/(р + е)* для любого неотрицательного целого. (Подсказка: положить X (jdiag(l, а, ..., а* ~1), где QHAQ — D + N - разложение Шура матрицы А.) 7.3.2. Проверить, что (7.3.10) вычисляет матрицы Тк, определяемые равенством (7.3.9). 7J3. Предположим, что матрица А е Сп * * невырожденная, а матрица Q0eCnx р имеет ортонормированные столбцы. Следующий итерационный процесс называют обратными ортогональными итерациями for 1, 2,... Решить AZk = Qk-1 относительно Zk e С" x p , Zk = Qk /^(QR-разложение) end Объяснить, почему этот процесс может обычно быть использован для вычисления р минимальных по абсолютной величине собственных значений матрицы А. Заметим, что для выполнения этих итераций необходимо, чтобы была возможность решать системы линейных уравнений с матрицей А. Когда р = 1, этот метод называют методом обратных (степенных) итераций. Замечания н литература к § 7.3 Подробное практическое обсуждение степенного метода дано в Wilkinson (АЕР), гл. 10. Рассмотрены методы ускорения базового итерационного процесса, вычисление недоминирую¬ щих собственных значений, работа с комплексно сопряженными парами собственных значений. Связь между различными степенными итерациями обсуждается в Parlett B.N. and Poole W.G. (1973). ”A Geometric Theory for the QR, LU, and Power Iterations”, SIAM J. Num. Anal. 10, 389-412. QR-итерации были независимо предложены в Francis J. G. F. (1961). ”The QR Transformation: A Unitary Analogue to the LR Transformation”, Comp. J. 4, 265-71, 332-334. ii*
324 Гл. 7. Несимметричная проблема собственных значений Kublanovskaya V.N. (1961). "On Some Algorithms for the Solution of the Complete Eigenvalue Problem”, USSR Comp. Math. Phys. 3, 637-657. Из названия первой статьи можно заключить, чтц; LR-итерации включают в себя QR-итерации. Первый, более фундаментальный алгоритм бьиГ предложен в Rutishauser Н. (1958). "Solution of Eigenvalue Problems with the LR Transformation", Nat. Bur. Stand App. Math. Ser 49, 47-81. Было опубликовано много работ о сходимости QR-итераций. В их числе Parlett В. N. (1965). "Convergence of the QR Algorithm", Numer. Math. 7, 187-193. Parlett B.N. (1966). "Singular and Invariant Matrices Under the QR Algorithm”, Math. Comp. 20, 611-615. Parlett B. N. (1968). "Global Convergence of the Basic QR Algorithm on Hessenberg Matrices", Math.Comp. 22, 803-817. Wilkinson J. H. (1965). "Convergence of the LR, QR, and Related Algorithms", Comp. J. 8, 77-84. Уилкинсон [Wilkinson (AEP), гл. 9] также рассматривает теорию сходимости этого важного алгоритма. Более глубокого понимания сходимости QR-алгоритма можно достичь, читая Nanda Т. (1985). "Differential Equations and the QR Algorithm", SIAM J. Numer. Anal. 22, 310-321. Watkins D. S. (1982). "Understanding the QR Algorithm", SIAM Review 24, 427-440. Следующие статьи посвящены различным практическим и теоретическим аспектам одно¬ временных итераций: Clint М. and Jennings А. (1971). "A Simultaneous Iteration Method for the Unsymmetric Eigenvalue Problem”, J. Inst. Math. Applic. 8, 11-21. Jennings A. and Orr D. R. L/(1971). "Application of the Simultaneous Iteration Method to Undamped Vibration Problems", Inst. A Numer. Math. Eng. 3, 13-24. Jennings A. and Stewart W.J. (1975). "Simultaneous Iteration for the Partial Eigensolution of Real Matrices", J. Inst. Math. Applic. 15, 351-362. Rutishauser H. (1970). "Simultaneous Iteration Method for Symmetric Matrices", Numer. Math. 16, 205-23. See also Hacla, pp. 284-302. Stewart G. W. (1975c). "Methods of Simultaneous Iteration for Calculating Eigenvectors of Matrices" in Topics in Numerical Analysis II, ed. John. J. H. Miller, Academic Press, New York, pp. 185- 196. Stewart G. W. (1976d). "Simultaneous Iteration for Computing Invariant Subspaces of Non-Hermitian Matrices”, Numer. Math. 25, 123-136. Смотри также гл. 10 работы Jennings A. (1977b). Matrix Computation for Engineers and Scientists, John Wiley, and Sons, New York. Одновременные итерации и алгоритмы Ланцоша (гл. 9) являются основными методами вычисления нескольких собственных значений произвольной разреженной матрицы. 7.4. Хессенбергова форма и вещественная форма Шура В этом и следующем разделах мы покажем, как сделать QR-итерации (7.3.1) быстрым и эффективным методом вычисления разложения Шура. Поскольку большинство проблем собственных значений и собственных подпространств ве¬ щественные, мы остановимся на развитии вещественного аналога (7.3.1), который запишем следующим образом: Я0 = UlAU0 for к = 1,2,... //*_ , — UkRk (QR-разложение) (7.4.1) Нк = RkUk end
7.4. Хессенбергова форма и вещественная форма Шура 325 Здесь AeRnxn, каждая матрица UkeRnxn-ортогональная и каждая матрица RkeRnxn-верхняя треугольная. Трудность, связанная с этими вещественными итерациями, состоит в том, что матрицы Нк могут никогда не сойтись к строго «открывающей собственные значения» треугольной форме в случае, если матрица А имеет комплексные собственные значения. По этой причине мы должны оставить бесплодные надежды и быть довольны вычислением альтернативного разложения, известного как вещественное разложение Шура. Заметим, что в численной линейной алгебре обычно, не нарушая общности, фокусируют внимание на вещественных матричных задачах, поскольку большинство вещественных алгоритмов имеют очевидные комплексные аналоги. QR-итерации не являются исключением. Для того чтобы эффективно вычислять вещественное разложение Шура, мы должны тщательно выбрать начальное ортогональное преобразование подобия U0 в (7.4.1). В частности, если мы выберем U0 так, что матрица Н0 будет верхней хессенберговой, то количество работы на итерации уменьшится с О (л3) до 0(п2). Начальное преобразование к хессенберговой форме (С/0-вычисление) само по себе является очень важным алгоритмом и может быть реализовано последователь¬ ностью матричных операций Хаусхолдера. 7.4.1* Вещественное разложение Шура Вещественное разложение Шура представляет собой блочную верхнюю триан- гуляризацию с диагональными блоками размера 1x1 и 2 х 2. Теорема 7.4*1 (Вещественное разложение Шура)* Если матрица AeRnxn, то су¬ ществует ортогональная матрица QeRnxn, такая, что где каждый блок Ru - либо 1 х 1-матрица, либо 2 к 2-матрица, имеющая комплексно сопряженные собственные значения. Доказательство. Комплексные собственные значения матрицы А должны входить в Х(А) комплексно сопряженными парами, так как характеристический многочлен det (г/ — А) имеет вещественные коэффициенты. Пусть /с-число комплексно со¬ пряженных пар в ^ (А). Докажем теорему индукцией по к. Заметим прежде всего, что лемма 7.1.2 и теорема 7.1.3 имеют очевидные вещественные аналоги. Следовательно, теорема верна, если к = 0. Предположим теперь, что к^\. Если = у + /р е X(А) и р^О, то в R" существуют векторы у и z(z Ф 0), такие, что ^11 ^11 ••• Rim QTAQ = °. R.22 R: .0 0 ... R, (7.4.2) А{у + iz) = (у + *‘р)(у + iz) Предположение, что р ^ 0, подразумевает, что у и z образуют двумерное вещест¬ венное инвариантное подпространство матрицы А. Из леммы 7.1.1 следует, что существует ортогональная матрица UeRnxn, такая, что
326 Гл. 7. Несимметричная проблема собственных значений UTAU в \Тхх Т121 2 LO Т22J л-2’ 1гг- 2 л-2 где А (7^) = {А,£}. Согласно предположению индукции, существует ортогональная матрица С, такая, что матрица СтТ22С имеет требуемую структуру. Полагая Q = l/diag(/2, С), получаем искомое разложение. □ Теорема 7.4.1 показывает, что любая вещественная матрица ортогонально подобна некоторой верхней почти треугольной матрице. Понятно, что веществен¬ ные и мнимые части комплексных собственных значений могут быть легко получены из диагональных блоков размера 2x2. 7.4.2. Хессенбергов QR-uiar Вернемся к быстрому вычислению одного QR-шага в (7.4.1). В этом отношении самый страшный недостаток (7.4.1) состоит в том, что каждый шаг требует полного QR-разложения, стоящего О (л3) флопов. К счастью, количество работы на одной итерации может быть уменьшено на порядок, если разумно выбрать ортогональную матрицу U0. В частности, если матрица UqAU0 = Я0 = (Лу)-верхняя хессенбергова (Лу = 0, I >j + 1), то для вычисления каждой матрицы Нк требуется только О (л2) флопов. Для того чтобы это увидеть, рассмотрим процесс вычисления матриц Я = QR и Я+ = RQ, когда Я-верхняя хессенбергова. Используя процедуры вращения givens, row. rot и coLrot, которые мы описали в §5.1.8, мы можем триангуляризовать Я последовательностью л — 1 вращений Гивенса. В частности, мы можем найти вращения Gi9...9GM^l с G, = G{i,i + 1,0), такие, что матрица Gl-!...G\H = R будет верхняя треугольная: X X X X X X X X X X X X X X X X 0 X X X G3> 0 X X X 0 X X X 0 X X X 0 0 X X в 0 0 X X 0 0 X X 0 0 X X х 0 О о х х о о х х х 0 х X X X Смотри алгоритм 5.2.3. Вычисление матрицы RGn_l.^Gl будет столь же простым, если использовать столбцовую процедуду вращения cot rot:
7.4. Хессенбергова форма и вещественная форма Шура 327 В целом получаем Алгоритм 7.4.1. Если Н-пхп верхняя хессенбергова матрица, то этот алгоритм записывает в И матрицу Н+ = RQ, где В — QR-QR-разложение матрицы Я. Кроме того, Q = G1,...,Gn_1, произведение вращений Гивенса, где вращение в плос¬ костях к и к + 1. for к = 1 \п — 1 {Сгенерировать Gk и применить его: И — G(k,k 4- 1,0*)ТЯ.} [c(k)5(fc)] - givens (Я(к, к), Я(к 4- 1,к)) Я(к:к + 1,к:л) = гсш.го1(Я(к:к + 1 ,к:и), с(к), $(к)) end for к = л — 1: — 1:1 {Обновить: Я = ЯС(к,к+ 1,0*).} Я(1:к + 1,к:к + 1) = coLrot(tf(l:к + 1 ,fc:k + 1), c(fc), j(k)) end Учитывая, что G* = G(k,k + 1,0*), легко проверить, что матрица Q — Gi~ верхняя хессенбергова. Поэтому матрица RQ = Я+-также верхняя хессенбергова. Этот алгоритм требует примерно 6 п2 флопов, и, следовательно, он на порядок более быстрый, чем QR-шаг для полной матрицы. Пример 7.4.1. Если алгоритм 7.4.1 применить к матрице // = 3 1 4 2 О 0.01 G»- 0.6 -0.8 0 1 0 0 0.8 0.6 0 б2 = 0 0.9996 -0.0249 0 0 1 0 0.0249 0.9996 4.7600 - 2.5442 5.4653 0.3200 0.1856 -2.1796 0.0000 0.0263 1.0540 7.4.3. Разложение Хессенберга Нам осталось показать, как может быть вычислено разложение Хессенберга UlAV0 = H UlU0 = I. (7.4.3) Это вычисление не сложное . Преобразование U 0 является произведением матриц Хаусхолдера РхРя_2. Роль матрицы Рк заключается в обнулении k-го столбца ниже поддиагонали. В случае п = 6 мы имеем А = X X X X X X X X X X X X X X X X X X X X * X X X X X X X X X Pl} 0 X X X X X X X X X X X 0 X X X X X X X X X X X 0 X X X X X X X X X X X 0 X X X X X Рз
328 Гл. 7. Несимметричная проблема собственных значений X X X X X X X X X X X X X X X X X X X X X X X X 0 X X X X X Яз 0 X X X X X 0 0 X X X X 0 0 X X X X 0 0 X X X X 0 0 0 X X X 0 0 X X X X 0 0 0 X X X X X X X X X X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X В общем случае, после к — 1 шагов мы вычислим к — 1 матриц Хаусхолдера PY,..., Pk-iy таких, что матрица *11 *12 *13 (Р1...Р1к_1)гЛ(Р1...Р*.1) = *21 *22 *23 Л 0 Л *32 *»*33** - верхняя хессенбергова в первых к столбцах. Используя процедуры Хаусхолдера house, row. house и col. bouse из § 5.1.8, получаем Алгоритм 7.4.2 (Преобразование Хаусхолдера к хессенберговой форме). Для заданной матрицы Л е R Л х м, следующий алгоритм записывает в А матрицу Н ~ UIAU0, где Я-верхняя хессенбергова матрица и U0 =* {Рх ...Рп_2)~произведение матриц Хау¬ схолдера. Значимая часть к-то вектора Хаусхолдера хранится в А (к + 2 :п,к). for к = 1: п — 2 и(к + 1 :л) = house (Л (fc + 1 :п,к))_ {А = Рк АРк,тва Рк = Alag(Ik,Pky} А (к + 1 :ntk:n) — row. house (А (к + 1 :п,к:п\ v(k + 1 :л)) A(l:n,k + 1 :л) = col house (Л (1 :п,к + 1:«), v(k + 1 :л)) Л(* + 2:л,/с) = |;(/с+ 2:«) end Этот алгоритм требует 10 л3/3 флопов. Если матрица С/0 формируется явно, то дополнительно требуется 4 л3/3 флопов. Подробное описание см. в Martin, Wilkinson (1968 d). Свойства погрешности округления описанного метода приведения матрицы А к хессенберговой форме весьма привлекательны. Уилкинсон [Wilkinson (АЕР), с. 351] установил, что вычисленная хессенбергова матрица Я удовлетворяет равен¬ ству Я = QT(A + E)Q, где QTQ = / и ||^||F<cW2W|M||f с малой константой с.
7.4. Хессенбергова форма и вещественная форма Шура 329 Пример 7.4.2. Если 1 5 7 1 0 0 А = 3 0 6 и 1/0 = 0 0.6 0.8 4 3 1 0 0.8 -0.6 то 1.00 8.60 -0.020 UlAU0 = H = 5.00 4.96 -0.072 0.00 2.28 -3.96 7.4.4. Трехуровневые варианты Преобразование Хессенберга (алгоритм 7.4.2) богато двухуровневыми опера¬ циями: половина-gaxpy и половина-внешние произведения. Мы кратко обсудим два способа введения в этот процесс трехуровневых вычислений. Первый подход состоит в блочном преобразовании к блочно-хессенберговой форме и прямо приводит к цели. Предположим (для простоты), что n = rN и запишем г и-г Пусть мы вычислили QR-разложение матрицы A2l = Qt Rt и матрица Qx представ¬ лена в WY-форме. То есть мы имеем матрицы W'1Y1€R("’'r)r, такие, что Qi = / — Wx Y\. (Подробнее см. в § 5.2.2.) Если Qt = diag(/2, QJ, то erlJ Заметим, что перевычисления блоков_(1,2) и (2,2) богаты трехуровневыми опера¬ циями благодаря тому, что матрица Qt представлена в WY-форме. Это полностью поясняет весь процесс, поскольку матрица Q\AQ-блочная верхняя хессенбергова в первом блочном столбце. _Мы далее повторяем те же вычисления для первых г столбцов матрицы Q]A22Ql. После N-2 таких шагов получаем матрицу Ян *12 - *1N *21 *22 ■ *2ЛГ H=UlAU0 = 0 . ... j _ 0 0 *N,N-1 *N/V_ где каждый блок //l7-матрица размера г х г и U0 = Qi‘-QN~2 с матрицами Qt в WY-форме. Весь алгоритм имеет трехуровневую часть вида 1 — 0(1/N). Заметим, что подциагональные блоки матрицы * являются верхними треу¬ гольными и, следовательно, эта матрица имеет нижнюю ширину ленты р. Можно преобразовать Н к настоящей хессенберговой форме, используя вращения Гивенса, для того чтобы обнулить все подциагонали, кроме первой. Остается открытым вопрос-насколько эта <шодчистка» ухудшит трехуровневое представление. Донгарра, Хаммерлинг и Соренсон [Dongarra, Hammarling, Sorenson (1987)] показали, как переходить непосредственно к хессенберговой форме, используя смесь операций gaxpy и трехуровневых замещений. Их идея требует минимальных
330 Гл. 7. Несимметричная проблема собственных значений замещений после генерации каждого преобразования Хаусхолдера. Предположим, например, что первая матрица Хаусхолцера Рх вычислена. Чтобы сгенерировать матрицу Р2, нам нужен только второй столбец матрицы Р\АР1, а не результат полного внешнего произведения. Чтобы сгенерировать Р3, нам нужен только третий столбец матрицы Р2Р\АРх Р2 и т. д. Таким образом, матрицы Хаусхолдера можно определить, используя только операции gaxpy. Не требуется вычисление внешних произведений. Когда нужное число матриц Хаусхолдера станет известно, их можно собрать вместе и применить в трехуровневом виде. 7.4.5. Важные свойства матрицы Хессенберга Рассмотренное разложение Хессенберга не единственно. Если Z-любая ор¬ тогональная матрица размера я х п и мы применим алгоритм 7.4.2 к матрице ZTAZ, то матрица QTA Q — Н будет верхней хессенберговой, где Q = ZU0. Однако равенство Qel = Z(U0ex) = Zex наводит на мысль, что матрица Н может быть единственна, если фиксирован первый столбец матрицы Q. Именно эту ситуацию обеспечивает отсутствие у матрицы Я нулевых поддиагональных элементов. Хессенберговы матрицы, обладающие этим свойством, называют неприводимыми. Имеет место очень важная теорема, проясняющая однозначность разложения Хессенберга. Теорема 7.4.2 (Теорема о неявном Q1’). Пусть Q = и V= [vlt...,vK]~ ортогональные матрицы, обладающие тем свойством, что обе матрицы QTAQ — Я и VTAV=* G, являются верхними хессенберговыми, где А с R'1*'1. Пусть к означает наименьшее положительное целое, для которого Л*+1.* = о, в предположении, что к — пу если матрица Н-неприводимая. Если Uх — qlt то vt = ±qtu | hu-x I = \gu-il для i = 2 : к. Кроме того, если к <п, то дк+ 1к = 0. Доказательство. Определим ортогональную матрицу W= [Wj, wn] равенством W— VTQ. Заметим, что GW— WH. Поэтому для i = 2:k имеем: i~l bu-i™i = Gwi_l - X j = 1 Так как wx =elf это означает, что матрица [wl9 верхняя треугольная и, следовательно, w, = + ел для i = 2:k. Поэтому из равенств w, — VTqt и hu_l = = wf Gwi_i следует, что i?, = ± qt и |hi i_l\ = |для i = 2:k. Если hk+ lk = 0, то, игнорируя знаки, имеем: 9k+1. ь - е * +1*к = е L i G Wek = (е I+, W) (Я ек) = е *г+х X hik Wet = X Ч1e*+1Ъ □ * = 1 i= 1 Суть теоремы о неявном Q в том, что если каждая из матриц QТ A Q = Н и ZTAZ = G-неприводимая верхняя хессенбергова и матрицы Q и Z имеют один и тот же первый столбец, то матрицы Си И «в основном равные» в том смысле, что G — D ~l HDy где D = diag ( + 1,..., ± 1). Наша следующая теорема показывает, что существует связь между QR-разло¬ жением матрицы Крылова К (A ,Q (:, 1), п) и разложением Хессенберга QT A Q = Н. Теорема 7.43. Пусть QeR"xn-ортогональная матрица и АеRnxn. Тогда QTAQ =И есть неприводимая верхняя хессенбергова матрица тогда и только тогда, когда матрица QT К (А,(?(:, 1), л) = R- невырожденная и верхняя треугольная. и Название этой теоремы (Implicit Q Theorem) подчеркивает сходство с теоремой о неявной функции (Implicit Function Theorem). Прим. перев.
7.4. Хессенбергова форма и вещественная форма Шура 331 Доказательство. Предположим, что матрица QeR"*"-ортогональная и положим H~QTAQ. Рассмотрим следующее тождество QTK(A§QblU) - - Л Если Я-неприводимая верхняя хессенбергова матрица, то ясно, что матрица /^-верхняя треугольная с элементами г« - Л21Аэз...Л1.1-1 для i- 2: л. Это означает, что матрица Л невырожденная, так как Гц - 1. Для доказательства обратного утверждения предположим, что матрица R- верхняя треугольная и невырожденная. Следовательно, Я(:, fc)€span {elt e*+i}. так как /{(:, k + 1) = Я/*(:, (с). Это означает, что матрица Я-верхняя хессенбергова. Поскольку г^ » А21Л32 # 0, матрица Я является также неприводимой. □ Таким образом, существует более или менее явное соответствие между невы¬ рожденными матрицами Крылова К (А, х, п— 1) и ортогональными преобразо¬ ваниями подобия, приводящими к неприводимой хессенберговой форме. Наш последний результат касается собственных значений неприводимой верхней хессенберговой матрицы. Теорема 7*4.4. Если X-собственное значение неприводимой верхней хессенберговой матрицы HeRnxn, то его геометрическая кратность равна единице. Доказательство. Для любого ХеС имеем: rank (А — XI) > п — 1, так как первые п — 1 столбцов матрицы Я-XI линейно независимы. □ 7.4.6. Сопровождающая матрица Точно так же, как разложение Шура имеет неунитарный аналог-разложение Жордана, разложение Хессенберга имеет неунитарный аналог-сопровождающее разложение. Пусть AeR", и пусть матрица Крылова К(А,х,п — 1) невырожденная. Если С = С(0: п — 1)-решение линейной системы К(А,х,п — 1) С = — Апх, то A K(Atxtn — 1) = К(А,х,п — 1)С, где матрица С имеет следующий вид: С — 0 0 ... 0 ~со 1 0 ... 0 0 1 — 0 ~С2 .0 0 ... 1 -<v (7.4.4) Матрицу С называют сопровождающей матрицей п. Так как det(z/ — С) = с0 + cxz + + ся_1г"“1+ z". то, если матрица У= К(А,х, п — 1) невырожденная, разложение У-1 AY=* С выяв¬ ляет характеристический многочлен матрицы А. Это вместе с разреженностью С привело в различных прикладных областях к «методам сопровождающей матрицы». Эти методы обычно включают: • Вычисление Хессенбергова разложения UlAU0 = Я. • Надежду на неприводимость матрицы Я и вычисление матрицы [е1,Я^1,...,Яп”1е1]. • Решение системы УС = HY относительно С. 1) Сопровождающую матрицу иногда называют матрицей Фробениуса. Наряду с (7.4.4) используют также определения сопровождающей матрицы.- Прим. перев.
332 Гл. 7. Несимметричная проблема собственных значений К несчастью, эти вычисления могут быть очень неустойчивыми. Матрица А подобна неприводимой хессенберговой только тогда, когда каждое собственное значение имеет единичную геометрическую кратность. Матрицы, обладающие этим свойст¬ вом, называют простыми. Следовательно, матрица Y может быть очень плохо обусловлена, если матрица А близка к некоторой матрице, не являющейся простой. Полное обсуждение опасностей, связанных с вычислением сопровождающей матрицы, можно найти в Wilkinson (АРЕ), с. 405. 7.4.7. Хессенбергово преобразование через преобразования Гаусса Коль скоро мы заговорили о неортогональных преобразованиях к хессенбер¬ говой форме, мы должны упомянуть о том, что преобразования Гаусса можно использовать вместо преобразований Хаусхолдера в алгоритме 7.4.2. Для опре¬ деленности предположим, что перестановки Пк,..., ПЛ_ t и преобразования Гаусса Ml выбирались так, что (Мк_1П*_1...М1П1М(Мк_1П*_1...М1П1Г1 = ft где В = -верхняя хессенбергова матрица в первых к — 1 столбцах. Перестановку Пк порядка п — к выбирают затем так, чтобы первый элемент столбца ПкВ22 был макси¬ мальным по абсолютной^ величине. Это дает возможность найти устойчивое преобразование Гаусса_ Afk = / — zke\ того же порядка п — fc, такое, что все компоненты столбца Мк{Пк ВЪ2), кроме первой,-нули. Полагая Пк = diag(/k, Пк) и Мк— diag(/k. Afk), мы видим, что матрица В, *11 *12 *13 к-\ *2. *22 *23 1 0 *32 *33 J и — к к- 1 1 п-к *2\ о мкпкв В2ЪЩМк1 32 МкЛкВ33ПкМк является верхней хессенберговой в первых к столбцах. Заметим, что Мkl — I + zke\ и, следовательно, это преобразование состоит из некоторых очень простых одно¬ ранговых замещений. Тщательный подсчет количества операций показывает, что преобразование Гаусса к хессенберговой форме требует только половины числа флопов метода Хаусхолдера. Однако, как и в случае исключения Гаусса с частичным выбором ведущего элемента, есть вероятность (весьма незначительная) роста ведущего элемента со скоростью 2я. Смотри Businger (1969). Другая проблема, связанная с гауссовским подходом, состоит в том, что числа обусловленности собственных значений-л(X)"1 -не сохраняются при неортогональных преобразованиях подобия. Это несколько усложняет схему оценки погрешности, приведенную в § 7.6. Задачи 7.4.1. Пусть Ае Rw х ” и zeR". Предложить подробный алгоритм вычисления ортогональной матрицы Q, такой, что матрица QTAQ-верхняя хессенбергова, а вектор QTz коллинеарен ег. (Подсказка: сначала преобразовать z, а затем применить алгоритм 7.4.2.)
7.4. Хессенбергова форма и вещественная форма Шура 333 7.4.2. Описать полное преобразование Гаусса к хессенберговой форме при помощи процедур gauss и gauss, арр и проверить, что оно требует только 5л3/3 флопов. 7.4.3. В некоторых ситуациях, необходимо решать линейную систему (A+zI)x = b для различных значений zeR и beRn. Показать, как эта задача может быть эффективно и устой¬ чиво решена при помощи разложения Хессенберга. 7.4.4. Предложить подробный алгоритм явного вычисления матрицы U0 в алгоритме 7.4.2. Сконструировать алгоритм так, чтобы матрица И замещалась матрицей U0. 7.4.5. Пусть HeRnxn неприводимая верхняя хессенбергова матрица. Показать, что сущест¬ вует диагональная матрица D, такая, что каждый поддиагональный элемент матрицы D ~1 HD равен единице. Чему равно k2(D)? 7.4.6. Пусть W, Уе R" * " и ГW -У “I C=W+ /У, В = \ L у w J Показать, что если ХеХ(С)- вещественно, то X е X {В). Найти соответствующие собственные векторы. [w х1 - вещественная матрица, имеющая собственные значения X ± /р, где У ZJ р не равно нулю. Предложить алгоритм устойчивого определения с = cos(0) и s = sin (0), таких, что [-;:]' С .*] [.; :]-t Я- где ар = —р2. 7.4.8. Пусть известна собственная пара (X, jc) верхней хессенберговой матрицы Не R" *". Предложить алгоритм вычисления ортогональной матрицы Р, такой, что '""’-[о И.]- где Нх eR(” “ ^х (п_ ^-верхняя хессенбергова матрица. Вычислить Р как произведение вращений Гивенса. Замечания и литература к § 7.4 Вещественное разложение Шура впервые опубликовано в Mumaghan F. D. and Wintner А. (1931). "A Canonical Form for Real Matrices Under Orthogonal Transformations”, Proc. Nat. Acad. Sci. 17, 417-20. Полное описание преобразования к хессенберговой форме дано в Wilkinson (АЕР), гл. 6, а остальные процедуры для методов Хаусхолдера приведены в Martin R. S. and Wilkinson J.H. (1968d). "Similarity Reduction of a General Matrix to Hessenberg Form”, Numer. Math. 12, 349-68. See also HACLA, pp. 339-358. Фортранные версии алгольных процедур из упомянутой выше работы входят в Eispack. Вращения Гивенса также можно использовать для вычисления хессенбергова разложения. Смотри Rath W. (1982). "Fast Givens Rotations for Orthogonal Similarity”, Numer. Math. 40, 47-56. Реализация хессенберговой редукции на высокопроизводительных компьютерах обсуждается в Dongarra J. J., Hammarling S. and Sorensen D.C. (1987). "Block Reduction of Matrices to Condensed form for Eigenvalue Computations”, ANL MCS-TM 99, Argonne National Laboratory, Argonne, Illinois.
334 Гл. 7. Несимметричная проблема собственных значений Dongarra J. J., Kaufman L. and Hammarling S. (1986). '"Squeezing the Most Out of Egenvalue Solvers on High Performance Computers", Lin. Alg. and Its Applic. 77, 113-136. На возможность экспоненциального роста ведущего элемента в методе преобразований Гаусса впервые было указано в Businger Р. (1969). "Reducing a matrix to Hessenberg Form", Math. Comp. 23, 819-821. Однако этот алгоритм можно характеризовать, как и метод Гаусса с частичным выбором ведущего элемента-устойчив для всех практических целей. Смотри Eispack, с. 56-58. Варианты хессенбергова разложения для разреженных матриц обсуждаются в DufFLS. and Reid J. К. (1975). "On the Reduction of Sparse Matrices to Condensed Forms by Similarity Transformations", J. Inst. Math. Applic. 15, 217-224. Блочная редукция к хессенберговой форме рассматривается в Dongarra J. J., Hammarling S. and Sorensen D. C. (1987). "Block Reduction of Matrices to Condensed form for Eigenvalue Computations", ANL-MCS-TM 99, Argonne National Laboratory, Argonne, Illinois. Если некоторое собственное значение неприводимой верхней хессенберговой матрицы извест¬ но, то можно обнулить последний поддиагональный элемент, используя преобразование подобия Гивенса. Смотри Businger Р. А. (1971). "Numerically Stable Deflation of Hessenberg and Symmetric Tridiagonal Matrices", BIT 11, 262-270. Некоторые интересные свойства хессенберговой формы можно найти в Ikebe Y. (1979). "On Inverses of Hessenberg Matrices”, Lin. Alg. and Its Applic. 24, 93-97. Parlett B.N. (1967). "Canonical Decomposition of Hessenberg Matrices", Math. Comp. 21, 223-227. Хотя хессенбергово разложение в большей степени ценится как «предварительное» разло¬ жение для QR-итераций, растет его популярность как дешевой альтернативы более дорогому разложению Шура. Примеры приложений, где оно оказалось очень полезным, можно найти в Enright W. (1979). '"On the Efficient and Reliable Numerical Solution of Large Linear Systems of O.D.E. "s", IEEE Trans. Auto. Cont. AC-24, 905-908. Golub G.H., NashS. and Van Loan C. (1979). "A Hessenberg-Schur Method for the Problem AX + XB = С ", IEEE Trans. Auto.Cont. AC-24, 909-913. Laub A. (1981). "Efficient Multivariable Frequency Response Computations", IEEE Trans. Auto. Cont. AC-26, 407-408. Miminis G. and Paige C.C. (1982). "An Algorithm for Pole Assignment of Time Invariant Linear Systems", International J. of Control 35, 341-354, Paige C.C. (1981). "Properties of Numerical Algorithms Related to Computing Controllability", IEEE Trans. Auto. Cont. AC-26, 130-138. Van Loan C. (1982b). "Using the Hessenberg Decomposition in Control Theory", in Algorithms and Theory in Filtering and Control, Sorenson D.C. and Wets R.J. (eds.), Mathematical Programming Study No. 18, North Holland, Amsterdam, pp. 102-111. 7.5. Практический QR-алгоритм Вернемся к хессенберговым QR-итерациям, которые мы запишем следующим образом: Я= UlAU0 (Преобразование Хессенберга) for /с= 1, 2,... (7.5.1) И — U R (QR-разложение) H = RU end
7.5. Практический QK-алгоритм 335 Цель этого раздела-описать сходимость матрицы Н к верхней квазитреугольной форме и показать, как скорость сходимости можно увеличить, вводя сдвиги. 7.5.1. Исчерпывание Не нарушая общности, мы можем предположить, что каждая хессенбергова матрица Я в (7.5.1) является неприводимой. Если это не так, то на некотором этапе мы имеем „jHu Ъг] Р L0 н22\п-р' Р п-Р где 1 < р < п, и исходная задача расщепляется на две задачи меньшего размера с матрицами Яп и Н22. Термин исчерпывание также используют в этом контексте, обычно когда /? = л — 1 ил — 2. На практике расщепление осуществляют всякий раз, когда поддиагональный элемент матрицы Н достаточно мал. Например, в Eispack, если IV 1*1 « «*(| VI + IV1*+11) (7-5.2) при малой константе с, то Л„+ Up «объявляют» равным нулю. Это оправдано, так как погрешность округления порядка и||Я|| уже присутствует во всех элементах матрицы. 7.5.2. QR-итерации со сдвигами Пусть peR. Рассмотрим итерации: Я = UoAU0 (Преобразование Хессенберга) for k = 1, 2,... Определить скаляр р (7.5.3) Я — р/ a* UR (QR-разложение) Я=/К/ + р/ end Скаляр р называют сдвигом. Каждая матрица Я, порождаемая (7.5.3), подобна матрице Ау так как RU + рI = UT(UR + рi)U = UTHU. Если мы упорядочили собственные значения X, матрицы А так, что IXi — р| ^ ... ^ IХя — р| и величина р не меняется от итерации к итерации, то, согласно теории § 7.3, р-й поддиагональный элемент матрицы Я сходится к нулю со скоростью Xp+i р|* *р-и Г Конечно, если Хр = Хр+1, то сходимости нет совсем. Но если, например, р более близко к Хи, чем к остальным собственным значениям, то обнуление элемента (л, п — 1) ускорится. В экстремальном случае имеем: Теорема 7.5.1. Пусть р - собственное значение неприводимой хессенберговой матрицы размера п х п. Если И = RU + р/, где Я — pi = UR-QR-разложение матрицы Я - р/, то ! * 0 и =* р.
336 Гл. 7. Несимметричная проблема собственных значений Доказательство. Так как Я-неприводимая хессенбергова матрица, первые п — 1 столбцов матрицы Я — р/ линейно независимы при любом р. Следовательно, если UR = (Я — р/)- QR-разложение, то ги Ф 0 для i = 1. :п — 1* Но если матрица Я — р/ вырожденная, то /*ц ...г„п = 0. Поэтому гпп = 0 и Н(п) = [0,..., 0, р]. □ Теорема говорит, что если мы сдвигаем на точное собственное значение, то в точной арифметике исчерпывание происходит на первом шаге. Пример 7.5*1. Если Л = 9 -I -2 2 6-2 0 1 5 то GgX(H). Если UR = Н — 6/ есть QR-разложение, то равенство R — RU + 61 обеспечивает матрица Н = 8.5384 -3.7313 -1.0090 0.6343 5.4615 1.3867 0.0000 0.0000 6.0000 7.5.3. Стратегия одинарного сдвига Рассмотрим варьирование р от итерации к итерации, учитывающее новую информацию о Х(Л) по мере того как подциагональные элементы сходятся к нулю. Хороший эвристический подход состоит в том, чтобы считать элемент наилучшим приближением к собственному значению среди всех диагональных элементов. Если мы на каждой итерации осуществляем сдвиг на эту величину, то получаем QR-итерации с одинарным сдвигом: for k = 1, 2,... р = Я(л, п) Я — р/ = UR (QR-разложение) (7.5.4) Я = RU + р/ end Если элемент (п, п — 1) стремится к нулю, то это вероятнее всего будет происходить с квадратичной скоростью. Для того чтобы увидеть это, мы воспользуемся примером из Stewart (IMC), с. 366. Пусть Я-неприводимая верхняя хессенбергова матрица вида X X X X X X X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 0 £ hm и мы выполнили один шаг QR алгоритма с одинарным сдвигом: UR = Я — h„n I, Н = RU + hMI. После л —2 шагов приведения матрицы Н — hmI к верхнему треугольному виду мы получим матрицу следующей структуры:
7.5. Практический QR-алгоритм 337 х х х х х О х х х х ООО а Ь О О О е О Нетрудно показать, что элемент (л, п — 1) матрицы Н = RU + h^I равен —Е2Ь/(г2 4- а2). Если предположить, что е « а, то ясно, что новый элемент (п, п — 1) имеет порядок б2, точно того же мы ждем от алгоритма, сходящегося квадратично. Пример 7.5.2. Если Близкие к оптимальным сдвиги, такие, как рассмотренный выше, почти всегда гарантируют малое йи.я-1. Однако это лишь эвристика. Есть примеры, в которых х - относительно большой элемент матрицы, несмотря на то что amin (И — р/) % и. 7.5.4. Стратегия двойного сдвига К несчастью, при использовании (7.5.4) можно ожидать трудности, если на некотором этапе собственные значения ах и а2 матрицы станут комплексными, вследствие чего hnn будет плохим приближением собствен¬ ного значения. Один из способов преодолеть это затруднение состоит в том, чтобы последова¬ тельно выполнять два QR-шага с одинарными сдвигами, используя в качестве сдвигов ах и а2: Заметим, что М-вещественная матрица, даже если собственные значения матрицы 1 2 3 //=4 5 6 О 0.001 7 и UR = Н — 71- QR-разложение, то равенство Н = RU 4- 7/ обеспечивает -0.5384 1.6908 0.8351 Я» 0.3076 6.5264 -6.6555 0.0000 2.10"5 7.0119 (7.5.5) Н — aj = U1Rl i ~ ^ 1Л1’ JJ | Ч" flji, — а2 I — U2 H2 = R1 U2 + a2I. (7.5.6) Можно показать, что (7.5.7) где М- матрица, определяемая равенством М = (Я - а, 1)(Н-агГ). (7.5.8)
338 Гл. 7. Несимметричная проблема собственных значений G комплексные, так как M = H2~sH+tI, где s = ax + a2 = hmm + hnK = trace (G)eR t = axa2 = hmmhnft - = det(G)eR. Поэтому (7.5.7) - QR-разложение вещественной матрицы и мы можем выбрать Ux и U2 так, что Z ^ UXU2 будет вещественной ортогональной матрицей. Следовательно, матрица Н2 = U%HX U2 = С/?(1/У HUX) U2 = (Ux U2)H{UX U2) = ZTHZ - вещественная. К сожалению, погрешности округления почти всегда мешают точному возвра¬ щению в поле вещественных чисел. Вещественность матрицы Н2 можно гаранти¬ ровать, если мы • явно формируем вещественную матрицу М — Я2 — sH + /7, • вычисляем вещественное QR-разложение М = ZRy и • полагаем Н2 = ZTЯZ. Но поскольку первый из этих шагов требует 0(п3) флопов, это непрактичный образ действия. 7.5.5. Стратегия неявного двойного сдвига К счастью, оказывается, что мы можем выполнить шаг двойного сдвига за О (п2) флопов, обратившись к теореме о неявном Q. В частности, мы можем осуществить переход от Я к Н2 за О (л2) флопов, если • Вычислим Мех- первый столбец матрицы М. • Найдем матрицу Хаусхолдера л>, такую, что вектор Р0(Мех) коллинеарен е1. • Вычислим матрицы Хаусхолдера Pi,..., Л,-2* такие, что если Zx-произведе¬ ние Zx — Р0РХ... Рп-г, то Z\HZX-верхняя хессенбергова матрица и первые столб¬ цы матриц Z и Zx одинаковые. При данных обстоятельствах теорема о неявном Q позволяет нам заключить, что если матрицы ZTЯZ и Z\HZX являются неприводимыми верхними хессенберго- выми, то они в основном равны Ч Заметим, что если эти хессенберговы матрицы не являются неприводимыми, то мы можем выполнить расщепление и перейти к неприводимым подзадачам меньшего размера. Давайте отработаем детали. Заметим прежде всего, что матрицу Р0 можно определить за 0(1) флопов, так как Мех = (х, у, z, О,..., 0)т, где х = h\i + hX2h2\ — shxx + f, У = Й21 (Ац + h22 — 5), A — Л21A32. Поскольку преобразование подобия с матрицей Р0 меняет только строки и столбцы ЧВ основном равные (essentially equal) здесь и в дальнейшем означает, что столбцы матриц, имеющие одинаковые номера, равны с точностью до знака. Смотри теорему 1А2.-Прим. перев.
7.5. Практический QR-алгоритм 339 1, 2 и 3, понятно, что РоНРо = X X X X X X X X 0 0 0 0 Рш-2 X X X X X •:х X X X X X X этой матрице верхний хессенбергов вид х X X X О О X X X X О О X X О О О О х х X X О О X X X О О О X X X X X О X X X X X X X X X X X X X X X X X X X X X X X X X X о о о О X X X X X о X X X X X X X X X X X X X X о о О О X X X X X О X X X О О О X X X X X X X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X X X X X X О X X X X О О X X X X X X X X X X X X X X X X X X Ря X X X X X X X X X X X X Ясно, что матрица Рк имеет, вообще говоря, вид Рк = diag(/*, Рк, Рк - матрица Хаусхолдера размера ЗхЗ. Например, Р2 = 1 0 0 0 0 0 0 1 0 0 0 0 0 0 X X X 0 0 0 X X X 0 0 0 X X X 0 0 0 0 0 0 1 Заметим, что матрица Рп~2 является исключением, так как Рп-г = diag(/„_2. Рп-г)- Применимость теоремы 7.4.2 (теоремы о неявном Q) следует из того, что Pkel = ег при к = 1 :п — 2 и матрицы Р0 и Z имеют один и тот же первый столбец. Следовательно, Ziel = Zeu и мы можем утверждать, что Zt в основном равна Z при условии, что верхние хессенберговы матрицы Zr HZ и Zf HZt неприводимые.
340 Гл. 7. Несимметричная проблема собственных значений Неявное определение Н2 по Я, рассмотренное выше в общих чертах, было впервые описано Фрэнсисом [Francis (1961)], и мы будем называть его QR-шагом Фрэнсиса. Полный шаг Фрэнсиса подытоживает следующий Алгоритм 7.5.1 (QR-uiai Фрэнсиса). Для заданной неприводимой хессенберговой матрицы ЯeRл х ", чья нижняя главная подматрица размера 2x2 имеет собствен¬ ные числа аг и а2, этот алгоритм записывает в Н матрицу ZT HZ, где Z = Pi... Р„_ 2 - произведение матриц Хаусхолдера, а матрица ZT{H — аг1) х х [Н — а2 /)-верхняя треугольная. т = п — \ {Вычислить первый столбец матрицы (Я — ах /)(Я — а2 /).} s = Я(т, т) + Н(п, п) t = Н(т, т)Н(п, п) — Н(т, n)H(nt т) х = Н( 1, 1)Я(1, 1) + Я(1, 2)Я(2, 1)-.уЯ(1, 1) + / у = Н(2, 1)(Я(1, 1) + Я(2, 2)-*) z = Я (2, 1)Я(3, 2) for к = От — 3 {Записать в Я матрицу РкИРк, где Рк = diag(/k, Рк, /я_к_3)} г = house ([xyz~\T) Н(к + 1: к + 3, к + 1 : л) = row. house (Я (/с + 1 :к + ЗД -f 1 :л), и) г = min {к + 4, л} Я(1:г, к + 1: к + 3) = col.house(Я(1: г, к + 1: к + 3), г) .г = Н(к + 2Д + 1) j, = Я(/с + 3, к + 1) if к < п - 3 2 = Я(* + 4, fc + 1) end end {tf = P.-2HPZ-2, где Я„-2 = diag(/„-2, /Vi)} v = house ([*xlr) Я (л — 1 :л, л — 2:л) = rowJiouse(Я(л — 1 :л, л — 2:л), v) Я(1 :л, л — 1, л) = со1.Ьои$е(Я(1: л, л — 1, л), t?) Этот алгоритм требует Юл2 флопов. Если матрицу Z накапливают в заданной ортогональной матрице, то необходимо дополнительно Юл2 флопов. 7.5.6. Полный процесс Приведение матрицы А к хессенбергову виду, используя алгоритм 7.4Л и последующее итерирование по алгоритму 7.5.1, для того чтобы получить вещест¬ венную форму Шура-стандартный способ решения плотной несимметричной проблемы собственных значений. В процессе итераций необходимо контролировать поддиагональные элементы матрицы Я для того, чтобы обнаружить любую возможность расщепления. Как это делают, поясняется в следующем алгоритме. Алгоритм 7.5.2 (QR-алгоритм). Для заданной матрицы A е R”х п и заданной погрешности tol, большей чем машинная точность, этот алгоритм вычисляет вещественную каноническую форму Шура QT AQ = Т. Записывает в матрицу А разложение Хессенберга. Если необходимы матрицы Q и Ту то Тхранят в Я. Если необходимы только собственные значения, то блоки матрицы Т хранят в соот¬ ветствующих позициях матрицы Я.
7.5. Практический QR-алгоритм 341 Использовать алгоритм 7.4.2 для вычисления хессенбергова разложения H=UlAU0, где U0 = PQ...Pn-2. Если необходима матрица Q, то сформировать Q = Р0... Л-а. Смотри § 5.1.6. until д = л Положить равными нулю все поддиагональные элементы, удовлетворяющие неравенству: 1 < tol(\ha\ -I- i-i I). Найти наибольшее неотрицательное q и наименьшее неотрицательное /?, такие, что Я = Яп Я12 Я,з О Н1г Я23 О 0 Язз р n-p-q д Р n-p-q Я где Язз-верхняя квазитреугольная матрица, а матрица Я22- не¬ приводимая. (Замечание: и р, и д может быть нулем1*.) if д < п Выполнить QR-шаг Фрэнсиса для матрицы Я22:Я22 = ZT#22Z if требуется Q Q = Q diag (Ip, Z, Iq) Hi2 = я12 Z я23 = гтя2з end end end Привести к верхнему треугольному виду все диагональные блоки размера 2x2- матрицы Я, имеющие вещественные собственные значения, и, если это необходимо, накопить эти преобразования. Этот алгоритм требует 25 л3 флопов, если вычисляются матрицы Q и Т. Если требуются только собственные значения, то необходимо Юл3 флопов. Эти оценки числа флопов очень приблизительные и основаны на том эмпирическом наблюде¬ нии, что в среднем требуются только две итерации Фрэнсиса для отщепления нижнего блока размера 1 х 1 или 2x2. Более детальный анализ времени, необходи¬ мого для выполнения QR-алгоритма, приведен в Eispack, с. 119. Пример 7.5.3. Если алгоритм 7.5.2 применить к матрице А — И = 2 3 4 5 6 4 4 5 6 7 0 3 6 7 8 0 0 2 8 9 0 0 0 1 10 то поддиагональные элементы будут сходиться следующим образом: м Если матрица Я неприводимая (это возможно при первом подходе), то р = д = 0.- Прим. перев.
342 Гл. 7. Несимметричная проблема собственных значений Итерация о(1Ы) o(M o(IM) O(IM) 1 1^ UP iff 10" 3 iff UP 10® 10® 3 iff 10® ю-1 10® 4 10° 10® 10-» 10“® 6 Iff 10® 10-® 10-* в 10-1 10® 10—1» 10-1* 7 10“' 10® 10-И 10-1* 8 10-* 10® сошелся сошелся 9 10“® 10® 10 10-* 10® И 10-“ 10® 12 ,0-»a 10® 13 сошелся сошелся Свойства погрешностей округления QR-алгоритма такие же, какие можно ожидать от любого метода ортогональных матриц. Вычисленная вещественная форма Шура Тортогонально подобна матрице, близкой к матрице A, i.e. QT(A + E)Q=t где QTQ = I и ll^lU * ulMlli’ Вычисленные матрицы (J-почти ортогональные, в том смысле, что Q*(J = J + F, где |\F\\2 ъ и. Расположение собственных значений в матрице f1 довольно произвольное. Но мы обсудим в § 7.6, как можно получить любое расположение, используя простую процедуру, меняющую местами два соседних диагональных элемента. 7*5.7* Масштабирование В заключение заметим, что если элементы матрицы А сильно отличаются по величине, то матрицу А нужно масштабировать, прежде чем применять QR-алго¬ ритм, Это 0(п2) алгоритм, в котором вычисляется диагональная матрица D, такая, что если 0-1Л0 = [с1,...,с#Л = то 11 rA loo.л I \ci IL ДД* i * 1:Диагональную матрицу D ищут в виде D = diag(pXl, Р^), где Р~основание используемой арифметики с плавающей запя¬ той. Заметим, что матрица D1 AD может бьггь вычислена без округления- Когда матрица А масштабированная, вычисленные собственные значения часто более точные. Смотри Parlett, Reinsch (1969). Задачи 7*5.1. Показать, что если матрица R=QrHQ получена при помощи одного QR-шага Г W XJ с одинарным сдвигом и Й — I I, ТО lff2| I « I у* л| [{и- - г)2 + JI2]. 1SJL Вывести формулы для элементов диагональной матрицы D размера 2x2, MUKH¬ IN W х1 мизирующей |)/) х AD\\f9 где А- ^ J.
7.6. Методы вычисления инвариантных подпространств 343 7ЛЗ. Объяснить, как QR-шаг с одинарным сдвигом: Я - р/ = VR, R =* RU + р/ может быть выполнен неявно. То есть показать, как переход от Я к Я может быть выполнен без вычитания сдвига р из диагональных элементов матрицы Я 7.5.4, Предположим, что матрица Я верхняя хессенбергова и мы нашли разложение PH = LU, посредством гауссовского исключения с частичным выбором ведущего элемента. (См. алгоритм. 4.3.4.) Показать, что матрица Я - U (РТ L) - верхняя хессенбергова и подобна Я. (Это основа модифицированного LR-алгоритма.) 7.5.5. Показать, что если задана матрица Я=Я0 и мы генерируем матрицы Я*: Як-р*/- = [/***, Я*41 = RbVk + р*Л то tf'i VjHRj..» Rx) - (Я - рtI) (Я — pj/). Замечания н литература к § 7.5 Развитие практического QR-алгоритма началось с важной статьи Rutishauscr Н. (1958), "Solution of Eigenvalue Problems with the LR Transformation” Nat Bur. Stand. App. Math. Ser. 49, 47-81. Алгоритм, описанный здесь, был затем «ортогоналиэован» в Francis 1. G. F. (1961). "The QR Transformation: A Unitary Analogue to the LR Transformation, Parte I and II”, Comp. J. 4, 265 72, 332-345. Описания практического QR-алгоритма можно найти в Wilkinson (АЕР), глава 8 и Stewart (IMC), гл. 7. Алгольные процедуры для LR- и QR-методов приведены в Martin R. S., Peters G. and Wilkinson J. H. (1970). "The QR Algorithm for Real Hessenberg Matrices”, Numer. Math. 14, 219-231. See also HACLA, pp. 359-371. Martin R. S. Wilkinson J. H. (1968). “The Modified LR Algorithm for Complex Hessenberg Matrices”, Numer. Math. 12, 369-76. See also HACLA, pp. 396-403. Их фортрановские аналоги входят в Eispack. Аспекты проблемы масштабирования обсуждаются в Osborne EF, (I960). "On Preconditioning of Matrices", JACM 7, 338- 345. Parlett B.N. and Reinsch C. (1969). "Balancing a Matrix for Calculation of Eigenvalues and Eigenvectors”, Numer. Math. 13, 292-304. See also HACLA. pp. 315-326. 7.6. Методы вычисления инвариантных подпространств Различные важные проблемы инвариантных подпространств могут быть решены, если найдено вещественное разложение Шура. В этом разделе мы обсуждаем как • Вычислить собственные векторы, соответствующие некоторому подмножеству • Найти ортогональный базис для заданного инвариантного подпространства. + Блочно диагона л изировать Лу используя хорошо обусловленные преобразова¬ ния подобия. • Найти базис из собственных векторов, невзирая на их обусловленность. • Ыайти приближенную каноническую форму Жордана матрицы А. Вычисление собственного вектора (инвариантного подпространства) разреженной матрицы обсуждается в другом месте. Смотри § 7.3, а также гл. 8 и 9. 7.6.1. Выделение собственных векторов при помощи обратных итераций Пусть ^0)еСп-заданный вектор, нормированный в 2-норме и пусть матрица А — \il € R" х п- невырожденная. Следующий процесс назы на ют обратными
344 Гл. 7. Несимметричная проблема собственных значений итерациями: for к = 1, 2,... Решить систему (А — \il)z{k) = qik~l) <f} = &/\\&\\2 (7.6.1) = q(k)HAq(k) end Обратные итерации-это степенной метод, примененный к матрице (/4 — р/)'1. Для того чтобы анализировать поведение процесса (7.6.1), предположим, что матрица А имеет базис из собственных векторов хп} и что Ах( = \ixi для i = 1: п. Если <г = i i — 1 то q(k)- нормированный вектор, сонаправленный с Ji it-i (^i — p)1 04-p/rvo)= Ясно, что если p более близко к собственному значению Xi4 чем к остальным собственным значениям, то в векторе q{k) преобладает компонента, соответствую¬ щая направлению х{ при условии, что р; ф 0. Простым правилом остановки итераций (7.6.1) может служить следующее правило: остановить итерации, если невязка г**> = (А — \xl)qik) удовлетворяет неравенству llr^ll^culMIL, (7.6.2) где с-некоторая константа порядка единицы. Так как (А + Ek)q™ = ptf« где Ек = — rkk)(fk)TJ то неравенство (7.6.2) обязывает р и <fk) быть собственной парой близкой матрицы. Обратные итерации можно использовать совместно с QR-алгоритмом следую¬ щим образом: • Найти хессенбергово разложение UqAU0 = Н. • Применить к матрице Н итерации с двойным неявным сдвигом Фрэнсиса без накопления преобразований. • Для каждого вычисленного собственного значения X, соответствующий собственный вектор которого нужно найти, применить (7.6.1) с матрицей А = Н и р = X, чтобы получить вектор z, такой, что Hz л pz. • Положить х = U0 z. Обратные итерации с матрицей Н очень экономичны, так как 1) нам совсем не нужно накапливать преобразования в процессе двойных итераций Фрэнсиса; 2) мы можем факторизовывать1> матрицы вида Н — XI за 0{п2) флопов, и 3) обычно только одна итерация требуется для получения достаточно точного собственного вектора. Этот последний пункт является, возможно, наиболее интересным аспектом обратных итераций и требует некоторого обоснования, так как X может быть Имеются в виду QR- или LR-разложения.-Прим. перев.
7.6. Методы вычисления инвариантных подпространств 345 сравнительно неточным, если оно плохо обусловлено. Предположим для простоты, что X вещественно и пусть H-XI = = 1 -SVD матрицы Н — XI. Из того что мы говорили о свойствах ошибок округления QR-алгоритма в § 7.5.6, следует, что существует матрица EeRnxn, такая, что матрица Я + Е — XI - вырожденная и 11 Е\|2 ^ и| | Я| |2. Это означает, что % ualf т.е. г,,-хорошее приближение собственного вектора. Ясно, что если начальный вектор qi0} имеет разложение <г= iiiu, i — 1 то в векторе преобладает направление vn. Заметим, что если величина мала, то в векторе zm скорее всего не хватает направления мя. Это объясняет (эмпирически), почему другой шаг обратных итераций, вероятно, не даст более хорошей аппрокси¬ мации собственного вектора, особенно если X плохо обусловлено. Более подробно смотри в Peters, Wilkinson (1979). Пример 7.6.1. Матрица :] имеет собственные значения Х{— 0.99999 и Х2 ~ 1.00001 и соответствующие собственные векторы =(1, — Ю_5)г и jc2 = (I* Ю~5)7. Обусловленность обоих собственных векторов порядка 105. Приближенное собственное значение р = 1 есть точное собственное значение матрицы А + Еу где £=Г° °1 L — ю-10 0J' Следовательно, качество р соответствует обычному качеству собственных значений, найденных с помощью QR-алгоритма, когда его реализуют в 10-разрадной арифметике с плавающей запятой. Если применить (7.6.1) с начальным вектором q{0) = (0, 1), то д(|> = (|, 0) и \\A<fl) — — P^(1)l I2 — Ю 10- Однако следующий шаг даст <?(2> = (0, 1), для которого 11 A<f2) — р^2)| I2 = 1* Этот пример обсуждается в Peters, Wilkinson (1979). 7.6.2. Упорядочение собственных значений в вещественной форме Шура Напомним, что вещественное разложение Шура дает информацию об инвари¬ антных подпространствах. Если QTAQ = Т=ГГ“ Tl2l Р V V L0 T22J q P 4 и Х(Тц)п X(T22) = 0y то первые р столбцов матрицы Q образуют единственное унитарное инвариантное подпространство, соответствующее Х(Тц) (см. § 7.2.5). К
346 Гл. 7. Несимметричная проблема собственных значений сожалению, итерации Фрэнсиса дают вещественное разложение Шура Q? AQF = TFf в котором собственные значения довольно случайно расположены вдоль главной диагонали матрицы TF. Это создает проблему, если нам нужен ортогональный базис для инвариантного подпространства, которому соответствуют собственные значе¬ ния, не расположенные в верхней части диагонали матрицы TF. Ясно, что нам нужен метод вычисления ортогональной матрицы QDi такой, что матрица Qd TfQd-верх¬ няя квазитреугольная с подходящим расположением собственных значений. Пример 2x2 наводит на мысль, как это может быть выполнено. Предположим, что и мы хотим изменить порядок собственных значений. Заметим, что TFx = \2x> где Пусть Сд-вращение Гивенса, такое, что вторая компонента вектора Q]>x нулевая. Если Q = QfQd, то Систематически выполняя перестановки в соседних парах собственных значений, используя этот метод, мы можем передвинуть любое подмножество спектра А (Л) в верхнюю часть диагональной матрицы, при условии что мы не столкнемся с выступами размера 2x2. Алгоритм 7.6.1. Для заданных ортогональной матрицы QeRn х ", верхней треуголь¬ ной матрицы Г= QTAQ и подмножества Д = {А^..., Ар} спектра Х(А) следующий алгоритм вычисляет ортогональную матрицу QD, такую, что матрица Qj> TQD — S- верхняя треугольная и {slu...y spp} = Д. Матрицы Q и Тзамещаются матрицами QQD и S соответственно. while (Гц tpp} Ф Д for к = 1: w — I If hk ФД и tk+l,k+l 6Д {Найти Qd и обновить: Т= Q$ 7QD, Q = QQD] lc, s] = givens (7\fc, к + 1), T(k + 1, к + 1) - Т(к, к)) Т{к :к + 1, k :п) = row.rot(7(k:/c + 1, к :п), с, s) Т(1 1, 1) = coLrot (Г(1: А + l9k:k + l\c,s) 6(1 :пр к + 1) = coLrot(6(l :п, к:к + 1), с,s) end end end Этот алгоритм требует к(\2п) флопов, где к - общее число требуемых перестановок. Число к никогда не превышает (л — р)р. Перестановки становятся немного более сложными, когда матрица Т имеет на диагонали блоки размера 2x2. Детали см. в Ruhe (1970а) и Stewart (1976а). QfAQf — TF — A J ’ ^ ^2’ (Q?AQ)ex — Cj7Jr(6x)e|) — ^-iGp(6d^i) “ ^ie и, следовательно, матрица QT AQ должна иметь вид
7.6. Методы вычисления инвариантных подпространств 347 Понятно, что эти методы перестановок могут быть использованы для того, чтобы упорядочить собственные значения, скажем, от максимального до минимального по модулю. Вычисление инвариантных подпространств посредством преобразования вещественного разложения Шура чрезвычайно устойчиво. Бели Q = озна¬ чает вычисленную ортогональную матрицу Q, то 11 фТ Q — /1|2 « и и существует матрица Е, удовлетворяющая неравенству ||Б||2 « и||Л||2, такая, что (А + Е)4,еspanfo 4р}, / = 1 :р. 7.6.3. Блочная днагоналнзация Пусть Ttt О Г,2 Ъг О п2 Ти Тг. (7.6.3) -разбиение некоторой вещественной канонической формы Шура QTAQ = TeRn х п, такое, что попарные пересечения подмножеств Х(Тц),..., Ц7^) пусты. Согласно теореме 7.1.6 существует матрица У, такая, что У-1 7У= diag(7ib..., 7^). Теперь мы опишем практическую процедуру определения У вместе с анализом чувствитель¬ ности У как функции вышеуказанного разбиения. Разобьем на блоки единичную матрицу 1п — сообразно разбиению матрицы Т и определим матрицу YueRn х п следующим образом Yij = In + F.ZyFj, / </ ZyeR* х "i. Другими словами, матрица Уу выглядит точно так же, как единичная матрица, за исключением того, что (/, /)-ю блочную позицию занимает матрица Zy. Следова¬ тельно, если Уу1 = Т= (71Д то матрицы Т и Т одинаковые, за исключением блоков Ту = TaZij — Zy 7}; -I- Тф Tik= Тк — Zij TJft = Tki Zij 4- Tkj (*=7+1:Л (k = 1: i — 1). Следовательно, блок Ti} можно обнулить, если есть алгоритм решения уравнения Сильвестра FZ — ZG = С, (7.6.4) где FgRp хр и GeRr х г-заданные верхние квазитреугольные матрицы и CeRp х г. Бартелс и Стюарт [Bartels, Stewart, 1972] придумали метод, позволяющий это сделать. Пусть С = [с1#..., сг] и Z = [zlf..., zj-столбцовые разбиения. Если 0*+!,* = 0, то, сравнивая столбцы в (7.6.4), мы находим, что к F4 - I e»z, = ск. i= 1 Следовательно, если мы знаем zk-ly то можем решить квазитреугольную
348 Гл. 7. Несимметричная проблема собственных значений систему (F-gkkI)zk = ck + £ даг, 1—1 относительно zk. Если дк+1,к Ф 0, то zk и z*+1 можно найти одновременно, решая систему размера 2x2 где т = к + 1. Переставляя уравнения в соответствии с перестановкой (1, р + 1, 2, р + 2,..., р, 2р% получаем ленточную систему, которая может быть решена за О ip2) флопов. Детали можно найти в [Bartels, Stewart, 1972]. Мы подытожим весь процесс для простейшего случая, когда обе матрицы F и G - треугольные. Алгоритм 7.6.2 (Алгоритм Бартелса-Стюарта). Для заданных матрицы CeRpxr и верхних треугольных матриц Fe Ирхри GeRrxr, удовлетворяющих равенству \{F) n A.(G) = 0, следующий алгоритм записывает в матрицу С решение уравнения FZ - ZG = С. for к = 1: г {Вычислить Ь = Ск + C(l :p, k) = C(l :p,k) + C(l :p, 1 :к- i)G(l :k-l,k) Решить (F — /) z — Ь относительно г. С(1:/?, k) = z end Этот алгоритм требует рг{р + г) флопов. Ясно, что, обнуляя наддиагональные блоки матрицы Т в соответствующем порядке, мы можем преобразовать эту матрицу к блочно-диагональной форме. Алгоритм 7.6.3. Для заданных ортогональной матрицы QeVLn х ”, верхней квази- треугольной матрицы T-QTAQ и разбиения (7.6.3) следующий алгоритм записывает в матрицу Q матрицу QY, где У"'1 7У= diag(Tlb..., 7^). for j = z :g for i = 1: j — 1 Решить TaZ — ZTjj— —Tij относительно Z, используя алгоритм 7.6.2. for к = j + I: q Tik = Ть — ZTjk end for к — 1: q Qkj = QkjZ + Qkj Число флопов, которое требует этот алгоритм, является сложной функцией от размеров блоков в (7.6.3). Выбор вещественной формы Шура и ее разбиения в (7.6.3) определяет устойчи¬ вость уравнений Сильвестра, которые должны быть решены в алгоритме 7.6.3. Это в свою очередь влияет на обусловленность матрицы У и эффективность блочной диагонализации. Причина этих зависимостей в том, что относительная ошибка (7.6.5) end end end
7.6. Методы вычисления инвариантных подпространств 349 вычисленного решения Z уравнения 71.7 _ У Т.. — _ Т.. ^ ijj — itj удовлетворяет приближенному равенству (7.6.6) \\2-z\\r_ ||71 |F ||Z||f * UseP(7ii, Tjj) Детали смотри в [Golub, Nash, Van Loan, 1979]. Поскольку sep(7]„ Tjj) = min —— < min|X. X Ф 0 11 ^ I If л л /''г \ sep(7Jf, Tjj) = min < min | X, — \i |, ЬеХ{Тц) »€UTjj) точность может существенно уменьшиться, когда подмножества Х(7];) недостаточно отделены. Более того, если матрица Z удовлетворяет (7.6.6), то Следовательно, большое по норме решение можно ожидать, если величина sep(7]if Tjj) мала. Это делает матрицу У в алгоритме 7.6.3 плохо обусловленной, так как она является произведением матриц Учитывая эти трудности, Бэвели и Стюарт [Bavely, Stewart (1979)] разработали алгоритм блочной диагонализации, который динамически определяет расположение собственных значений и разбиение (7.6.3) так, что все Z матрицы в алгоритме 7.6.3 ограничены по норме некоторой величиной, задаваемой пользователем. Они обна¬ ружили, что обусловленность Y можно контролировать, контролируя обусловлен¬ ность матриц Yij. 7.6.4. Базис собственных векторов Если блоки в разбиении (7.6.3)-все размера 1 х I, то алгоритм 7.6.3 порождает базис собственных векторов. Как и в случае метода обратных итераций, вычислен¬ ные пары собственное значение-собственный вектор являются точными для некото¬ рой близкой матрицы. Широко распространенное правило выбора подходящего метода определения собственных векторов следующее: использовать обратные итерации всякий раз, когда требуется найти меньше чем 25% собственных векторов. Заметим, однако, что вещественную форму Шура можно использовать для определения отдельных собственных векторов. Пусть матрица Замечание: xf (Уу) = 2п + ||Z||jf. ?ii и к — 1 QTAQ= О X vT \ О 0 7зз п - 1 к- 1 1 п-к верхняя квазитреугольная и Х$Х(Тц)иМГ33). Тогда, если мы решим линейные
350 Гл. 7. Несимметричная проблема собственных значений системы (Гц — И) и> = -ми (Гэз — \I)T z = — v, то векторы 0 и y = Q j 0 Z будут для X правым и левым собственными векторами соответственно. Заметим, что обусловленность собственного значения X определяется величиной 1/5 (X) = = у/(\ + н>ги>)(1 + z7z). 7*6.5. Определение блочных жордановых структур Предположим, что мы вычислили вещественное разложение А = QTQ7, опреде¬ лили кластеры «равных» собственных значений и выполнили соответствующую блочную диагонализацию Ydiag(Tlb..., Тяя) Y~l. Как мы видели, это может быть трудной задачей. Однако перед нами встанут еще более значительные численные проблемы, если мы попытаемся установить блочную жорданову струк¬ туру каждой матрицы Тй. Краткое исследование этих трудностей выявит недостатки жорданова разложения. Предположим для ясности, что спектр вещественный. Преобразование матрицы Та к жордановой форме начинается замещением ее матрицей вида С — XI + N, где N- строго верхняя треугольная часть Та и X, скажем, среднее арифметическое ее собственных значений. Напомним, что порядок жорданова блока J(X) есть наименьшее неотрицатель¬ ное целое к, для которого [J(X) — >J]fc = 0. Следовательно, если pt = dim [null (N*)], для i = 0:л, то разность рк — р{-1 равна числу блоков жордановой формы матрицы С, которые имеют порядок / или выше. Конкретный пример позволяет сделать это утверждение понятным и иллюстрирует роль SVD в вычислении жордановой формы. Предположим, что С-матрица размера 7x7. Пусть мы вычислили SVD U\ NVX = £i и «обнаружили», что матрица N имеет ранг 3. Если мы располагаем сингулярные числа в порядке возрастания, то это означает, что матрица N1 - V\NVt имеет вид На этом этапе мы знаем, что геометрическая кратность X равна 4, т. е. жорданова форма матрицы С имеет 4 блока {рх — р0 = 4 — 0 = 4). Теперь предположим, что С71-У2 = E2-SVD матрицы L и мы нашли, что матрица L имеет единичный ранг. Если мы опять располагали сингулярные числа в порядке возрастания, то матрица L2 = V\ L.P2, очевидно, имеет следующую структуру: 4 3 0 0а l2 = 0 0 ъ 0 0с Однако Х(Ь2) = Х{Ц = {0, 0, 0} и, следовательно, с = 0. Таким образом, если K2=diag(i4,P2),
то N2 = VlNt V2 имеет следующий вид 0 0 0 0 X X X 0 0 0 0 X X X 0 0 0 0 X X X 0 0 0 0 X X X 0 0 0 0 0 0 а 0 0 0 0 0 0 Ь 0 0 0 0 0 0 0 Помимо того что SVD матрицы L позволяет ввести больше нулей в верхний треугольник, оно позволяет сделать вывод о размерности ядра матрицы N 2. Так как ш: як я и имеет полный столбцовый ранг, то р2 = dim (null (JV 2)) = dim (null (N ?)) = 4 + dim (null (i)) = pt + 2. Поэтому мы можем заключить на этом этапе, что жорданова форма матрицы С имеет по меньшей мере два блока порядка 2 или выше. Наконец, легко видеть, что N \ = 0, откуда мы делаем вывод, что существует ръ — р2 = 7 — 6 — 1 блока порядка 3 или выше. Если положить V= Vi Vly то разложение VT CV- X 0 0 0 X X X 0 X 0 0 X X X 0 0 X 0 X X X 0 0 0 X X X X 0 0 0 0 X X а 0 0 0 0 0 X 0 0 0 0 0 0 0 X | 4 блока г порядка 1 или J выше 1 2 блока } порядка 2 или ^ выше } 1 блок порядка 3 или выше «выявит» жорданову блочную структуру матрицы С: 2 блока порядка 1, 1 блок порядка 2 и 1 блок порядка 3. Для того чтобы найти жорданово разложение, необходимо прибегнуть к неорто¬ гональным преобразованиям. Мы рекомендуем читателю работы Golub, Wilkinson (1976) и Kagstrom, Ruhe (1980а, 1980b), в которых описано, как выполнить этот этап редукции. Рассмотренные выше вычисления на основе SVD в достаточной мере иллюстри¬ руют, что трудное решение о величине ранга приходится принимать на каждом этапе и что окончательное вычисление блочной структуры существенно зависит от этих решений. К счастью, в практических приложениях можно почти всегда использовать вместо жорданова разложения устойчивое разложение Шура.
352 Гл. 7. Несимметричная проблема собственных значений Задачи 7.6.1. Предложить полный алгоритм решения вещественной, «хя, верхней квазитреуголыюй системы Тх — Ь. 7.6.2. Пусть U "1AU = diag (alt...,aj и F_Ii?F=diag (Р1э..., P.J. Показать, что если ф (X) = АХ + ХВУ то Х(ф) = {а4 + Р,: / = 1 :m>j = 1:/?}. Какими будут соответствующие собст¬ венные векторы? Как использовать эти разложения для решения уравнения АХ + ВХ = С? 7.63. Показать, что если У= ^ , то ае2 (У) = [2 + а2 + у/4а2 + <т4]/2, где а = 11Z112. 7.6.4. Получить систему (7.6.5). 7.6.5. Предположим, что 7eRrt * л-блочная верхняя треугольная матрица, и она разбита на блоки следующим образом: T,, Ti2 Ti3 T= 0 TI2 T2 J > 0 0 Ti3 Предположим, что диагональный блок Т22 - матрица 2 х 2 с комплексными собственными значениями, не принадлежащими МГц) и Х(Т33). Предложить алгоритм вычисления двумер¬ ного вещественного инвариантного подпространства, соответствующего собственным значе¬ ниям матрицы Т22. Замечания и литература к § 7.6 Большую часть материала, обсуждаемого в этом разделе, можно найти в обзорной статье Golub G. Н. and Wilkinson J. Н. (1976). “Ill-Conditioned Eigensystems and the Computation of the Jordan Canonical Form”, SIAM Review 18, 578-619. Статьи, которые рассматривают метод обратных итераций для вычисления собственных векторов, включают Peters G. and Wilkinson J. H. (1979). “Inverse Iteration, Ill-Conditioned Equations, and Newton’s Method”, SIAM Review 21, 339-360. Varah J. (1968a). “The Calculation of the Eigenvectors of a General Complex Matrix by Inverse Iteration”, Math. Comp. 22, 785-791. Varah J. (1968b). “Rigorous Machine Bounds for the.Eigensystem of a General Complex Matrix”, Math. Comp. 22, 793-801. Varah J. (1970). “Computing Invariant Subspace of a General Matrix When the Eigensystem is Poorly Determined”, Math. Comp. 24, 137-149. Алгольная версия Eispack подпрограммы обратной итерации приведена в Peters G. and Wilkinson J. Н. (1971). ‘The Calculation of Specified Eigenvectors by Inverse Iteration” in НАС LA, pp. 418-439. Проблема упорядочения собственных значений в вещественной форме Шуратема работ Ruhe А. (1970а). “An Algorithm for Numerical Determination of the Structure of a General Matrix”, BIT 10, 196-216. Stewart G. W. (1976a). “Algorithm 406: HQR3 and EXCHNG; Fortran Subroutines for Calculating and Ordering the Eigenvalues of a Real Upper Hessenberg Matrix”, ACM Trans. Math. Soft 2, 275-280. Фортранные программы для вычисления блочно диагональных и жордановых форм описаны в Bavely С. and Stewart G. W. (1979). “An Algorithm for Computing Reducing Subspaces by Block Diagonalization”, SIAM J. Num. Anal. 16, 359-367. Demmel J. W. (1983a). “A Numerical Analyst’s Jordan Canonical Form”, Ph. D. thesis, Berkely. Kagstrom B. and Ruhe A. (1980a). “An Algorithm for Numerical Computation of the Jordan Normal Form of- a Complex Matrix”, ACM Trans. Math. Soft 6, 398-419.
7.7. QZ-метод для Ax = XBx 353 Kagstrom В. and Ruhe A, (1980b). “Algorithm 560 JNF: An Algorithm of Numerical Computation of the Jordan Normal Form of a Complex Matrix”, ACM Trans. Math. Soft. 6, 437-443. Статьи, посвященные оцениванию ошибки округления при вычислении собственных значений и/или собственных векторов, включают ChanS. Р. and Parlett В. N. (1977). “Algorithm 517: A Program for Computing the Condition Numbers of matrix Eigenvalues Without Computing Eigenvectors”, ACM Trans. Math. Soft. 3, 186-203. Symm H.J. and Wilkinson J. H. (1980). “Realistic Error Bounds for a Simple Eigenvalue and Its Associated Eigenvector”, Numer. Math. 35, 113 126. Как мы видели, функция scp (.,.) является очень важной для оценки вычисленного инвариантного подпространства. Вопросы, связанные с этой величиной, обсуждаются в Varah J. (1979). “On the Separation of Two Matrices”, SIAM J. Num. Anal. 16, 212 222. Многочисленные алгоритмы предложены для уравнения Сильвестра FX-XG = С, но описан¬ ные в Bartels R. Н. and Stewart G. W. (1972). “Solution of the Equation AX + XB = C”, Comm. ACM 15, 820-826. Golub G. H., Nash S. and Van Loan C. (1979). “A Hessenberg- Schur Method for the Matrix Problem AX + XB = C'\ IEEE Trans. Auto. Cont. AC-24, 909 913. стоят в ряду наиболее надежных, так как они основаны на ортогональных преобразованиях. Уравнение Ляпунова FX + XFT — — С, где С-неотрицательно определенная матрица, играет очень важную роль в теории управления. Смотри Barnett S. and Storey С. (1968). “Some Applications of the Lyapunov Matrix Equation”, J. Inst. Math. Applic. 4, 33-42. Некоторые авторы рассматривали обобщенное уравнение Сильвестра, т.е. £FrXG, = С. В их числе Lancaster Р. (1970). “Explicit Solution of Linear Matrix Equations”, SIAM Review 12, 544 566. Vetter W.J. (1975). “Vector Structures and Solutions of Linear Matrix Equations”, Lin. Alg. and Its Applic. 10, 181-188. Wimmer H. and Ziebur A. D. (1972). “Solving the Matrix Equations fp(A)g = C”, SIAM Review 14, 318-323. Некоторые идеи усовершенствования вычислений собственных значений, собственных векторов и инвариантных подпространств можно найти в Demmel J. W. (1987). “Three Methods for Refining Estimates of Invariant Subspaces”, Computing 38, 43-57. Dongarra J. J., MolerC. B. and Wilkinson J. H. (1983). “Improving the Accuracy of Computed Eigenvalues and Eigenvectors”, SIAM J. Numer. Anal. 20, 23-46. Для проблемы собственных значений были также предложены дешевые методы оценки обусловленности. Смотри Byers R. (1984). “A Linpack-Style Condition Estimator for the Equation AX — XBT = C”, IEEE Trans. Auto. Cont. AC-29, 926-928. Van Loan C. (1987). “On Estimating the Condition of Eigenvalues and Eigenvectors”, Lin. Alg. and Its Applic. 88/89, 715-732. 7.7. QZ-метод для AX = XBx Пусть А и 2?-две матрицы размера п х п. Множество всех матриц вида А — ХВ с ХеС называют пучком. Собственные значения пучка - элементы множества X (Л, В), определеяемого как Х(А, В) = {zeC:det(A - zB) = 0}. 12 63
354 Гл. 7. Несимметричная проблема собственных течений Если ХеХ(А, Щ и Ах = ХВх, х Ф О, (7-7.1) то вектор х называют собственным вектором пучка матриц А — ХВ. В этом разделе мы даем краткий обзор математических свойств обобщенной проблемы (7.7.1) и представляем устойчивый алгоритм ее решения. Важный случай, когда матрицы А и В-симметричные и матрица В-положительно определенная, рассматривается в $ 8.7.2. 7.7Л. Основы теории Первое, что следует сказать об обобщенной проблеме собственных аначений,- это то, что п собственных значении имеются тогда и только тогда, когда rank (В) = и. Если Я-матрица неполного ранга, то множество Х(Л, В) может быть конечным, пустым или бесконечным: -И --U А - 1 О В = в 1 0 0 0 0 0 1 0 1 0 0 0 => А (Л,В) = 0, =* А(ДВ) = С. Заметим, что если 0 ФХе\{АгВ)л то (1 jX)^X(Bt А). Кроме того, если матрица В невырожденная, то Х(А, В) = Х(В^х А, /) = Х(Я~1 А\ Это последнее наблюдение подсказывает один метод решения А — ХВ проблемы для случая, когда матрица В невырожденна: • Решить уравнение ВС = А относительно С, используя, скажем, исключение Гаусса с выбором ведущего элемента. • Используя QR-алгоритм, найти собственные значения матрицы С. Заметим, что матрица С будет подвержена влиянию погрешностей округления порядка и 11А112 11 В~11|2. Если матрица В плохо обусловлена, то это может сделать невозможным точное вычисление любого обобщенного собственного значения, даже тех собственных значений, которые можно считать хорошо обусловленными. Промер 7.7.1, Если _ Г1.746 0.9401 _ Г0.780 0.5631 ~ L1.246 1 .898J " ~ Lo.9 13 0,659J ’ то Х{А, В) = {2, 1.07 к 10е). В арифметике с плавающей запятой с 7 значащими цифрами, мы найдем X 07(АВ~1)) — {1.562539, 1.01 х 106}. Плохое качество младшего собственного значения вызвано тем, что а2{В) ^ 2 х 10е. С другой стороны, мы найдем, что X (/, fl(4 ~1 В)) * {2.000001, 1.06 х 10е). Точность младшего собственного значения улучшилась потому, что к2(Л) as 4. Пример 7.7.1 наводит на мысль искать альтернативный подход к А — ХЯ-проблеме. Одна из идей-найти хорошо обусловленные матрицы Q и Z, такие, что каждая из
7.7, QZ-метод для Ax — XBx 355 матриц At = Q~1 AZ, Bv = QT1 BZ (7,7.2) имеет канонический вид. Заметим* что ЦЛ, В) = X(j41p ВД так как Ах — ХВхоА gy = XBvyt х — Zy. Мы будем говорить, что пучки матриц А — ХВ и Ах — ХВ1 - эквивалентные, если справедливы равенства (7.7.2) с невырожденными матрицами Q и Z. 7.7.2. Обобщенное разложение Шура Как и в обычной проблеме собственных значений А —XI, в обобщенной проблеме есть возможность выбора канонической формы. Аналогом жордановой формы является разложение Кронекера, в котором обе матрицы А и В-блочно- диагональные. Эти блоки похожи на жордановы блоки. Кронекерова каноническая форма приводит к тем же вычислительным проблемам, что и жорданова форма. Однако это разложение позволяет понять математические свойства пучка матриц А - ХВ. Смотри Wilkinson (1978) и Demmel, Kigstrom (1987). Более привлекательной формой с вычислительной точки зрения является следующее разложение, описанное Молером к Стюартом [Moler* Stewart (1973)]. Теорема 7.7.1 (Обобщенное разложение Шура). Если А и В принадлежит С" * ", то существуют унитарные матрицы Q и Zt такие, что матрицы QH AZ = Та QH BZ — S являются верхними треугольным и. Если при некотором к элементы и ^ оба равны нулю, то X (А, В) = С. В противном случае \(А, В) — {ta/sii'.Sti Ф 0}. Доказательство. Пусть [Вк] -последовательность невырожденных матриц, сходя¬ щаяся к матрице В. Для каждого к пусть Qk (А В* “ В* есть разложение Шура матрицы А В*-1. Пусть Zk - унитарная матрица, такая, что матрица Z? (Вь“1 Qk) = = Sfc_1-верхняя треугольная. Тогда обе матрицы Qf*AZk = HkSk и QHBkZk — Sk будут также верхние треугольные. Из теоремы Больцано - Вейеригграсса мы знаем, что ограниченная последователь¬ ность {(Qity Zk)} имеет сходящуюся подпоследовательность limZkf) *= (Qy Z). Легко показать, что матрицы Q и Z-унитарные, а матрицы 0яAZ и QHBZ-верхние треугольные. Доказываемые утверждения следуют из тождества del (Л — ХВ) =* det [QZH) £ (f« - □ i= I Если матрицы А и В-вещественны, то представляет интерес следующее разложение, которое соответствует вещественному разложению Шура (теорема 7.4.1). Теорема 7.7.2 (Обобщенное вещественное разложение Шура). Если Ли В принадлежат R” п, то существуют ортогональные матрицы Q и Z, такие, что матрица QT AZ-верхняя квазитреузольная, а матрица QT BZ-верхняя треугольная. Доказательство. Смотри Stewart (1972), □ Оставшаяся часть данного раздела будет посвящена вычислению этого разложе¬ ния и связанным с этим математическим вопросам.
356 Гл. 7. Несимметричная проблема собственных значений 7.7.3. Выводы о чувствительности Обобщенное разложение Шура проливает свет на вопрос об устойчивости собственных значений А — ^-проблемы. Ясно, что малые изменения в матрицах А и В могут вызвать большие изменения собственного значения X, = /а/s,-,*, если элемент 5ц мал. Однако, как показал Стюарт [Stewart (1978)], было бы неправильно считать такое собственное значение «плохо обусловленным». Дело в том, что обратная величина ц4 = Sijtu может быть собственным значением пучка матриц \lA — В, ведущим себя очень хорошо. В анализе Стюарта матрицы А и В считались симметричными и собственные значения рассматривались скорее как упорядочен¬ ные пары, чем как частные. С этой точки зрения более удобно измерять возмущения собственных значений в метрике chord (а, b), определяемой как ■ .ч \а-Ь\ chord (а, Ь) = -- —-■ _. Стюарт показал, что если X является отделенным собственным значением пучка матриц А — ХВ и ХЕ - соответствующее собственное значение возмущенного пучка матриц А — ХВ с 11А — Я \ |2 « 11В — S \ \2 « е, то chord (X, \) < Ах)г + Вх)г + где х и у имеют единичную вторую норму и удовлетворяют равенствам Ах = ХВх и / = Хун В. Заметим, что в знаменатель этой верхней оценки матрицы А и В входят симметрично. «В самом деле плохо обусловленные» собственные значения это те, для которых этот знаменатель мал. Экстремальный случай (кк = skk — 0 при некотором к был рассмотрен Уилкинсо¬ ном [Wilkinson (1979)]. Он сделал интересное наблюдение, что когда это имеет место, остальные частные tu/sti могут принимать произвольные значения. 7.7.4. Хессенбергово-треуголъная форма Первый шаг вычисления обобщенного разложения Шура пары (А, В) состоит в преобразовании матрицы А к верхнему хессенбергову виду и матрицы В к верх¬ нему треугольному виду посредством ортогональных преобразований. Сначала мы найдем ортогональную матрицу U, такую, что матрица UT верхняя треугольная. Конечно, для того чтобы сохранить собственные значения, мы должны обновить матрицу А точно таким же образом. Давайте проследим, что произойдет в случае п = 5. X X X X X X X X X X X X X X X 0 X X X X X X X X X , в = иТ в = 0 0 X X X X X X X X 0 0 0 X X X X X X X 0 0 0 0 X Затем мы преобразуем А к верхнему хессенбергову виду, сохраняя верхний треугольный вид матрицы В. Сначала определим вращение Гивенса (?45, обнуляю¬ щее элемент я51:
7.7. QZ-метод для Ах = ХВх 357 А — Q45A — X X X X X X X X X X X X X X X X X X X X О х х х х ,в = <Я5в = X X X X X О х х х х О О х х х О О О х X О О О х х Ненулевой элемент, появившийся в позиции (5,4) матрицы В, может быть обнулен последующим умножением на подходящую матрицу вращения Гивенса Z45: А — AZ45 = X X X X X X X X X X X X X X X X X X X X О х х х х , В = BZ45 — X X X X X О х х х х О О X X х О 0 0 х х О 0 0 0 х Точно так же вводятся нули в позиции (4,1) и (3,1) матрицы А: А = Q34A X X X X X X X X X X X X X X X 0 X X X X X X X X X ,b = qJab = 0 0 X X X 0 X X X X 0 0 X X X 0 X X X X 0 0 0 0 X X X X X X X X X X X X X X X X 0 X X X X X X X X X , В = В Z34 — 0 0 X X X 0 X X X X 0 0 0 X X в 0 X X X X 0 0 0 0 X А — Q23A — X X X X X X X X X X X X X X X 0 X X X X 0 X X X X , В = Q23B = 0 X X X X 0 X X X X 0 0 0 X X 0 X X X X 0 0 0 X X X X X X X X X X X X X X X X X 0 X X X X 0 X X X X , В = ВZ23 = 0 0 X X X 0 X X X X 0 0 0 X X 0 X X X X 0 0 0 0 X Матрица А теперь верхняя хессенбергова в своем первом столбце. Преобразование завершает обнуление элементова а52, а42 и а53. Как показано выше, требуется два
358 Гл. 7. Несимметричная проблема собственных значений ортогональных преобразования для каждого обнуляемого элемента д^-одно для обнуления и другое для сохранения треугольное™ матрицы В. Можно использовать как вращения Гивенса, так и модифицированные преобразования Хаусхолдера размера* 2 ж 2. В целом имеем Алгоритм 7.7.1 (Хессенбергово-треугольиое преобразование). Для заданных матриц Аи5, принадлежащих R” * ", следующий алгоритм записывает в матрицу А верх¬ нюю хесеенбергову матрицу Q7 AZ и в матрицу В-верхнюю треугольную матрицу QT BZ, где обе матрицы Q и Z- ортогональные. Используя алгоритм 5.2.1, записать в матрицу В матрицу Q7 В = R, где Q - орто¬ гональная, a R верхняя треугольная матрицы. А = QTA for j = 1: п — 2 for I = n: — 1: j + 2 {Обнулить ai}.) [c, s] = givens (A{i - 1, Д A{ifj)) A (/ — 1: i, j: n) = row, rot (A (/ — 1: /, j: л), e, s) B(i — 1: /, i — 1: n) — row, rot(Z?0 — 1: /, / — 1: n\ c. s) [c, s] = givens (/?(/, i — 1), B(it /)) B(\:i> i — l:i) = col rot (5(7: i, i — I: *), с, s) A (I :n, i — 1 :i) = col. rot (A {I :n, i — 1:0, G •*) end end Этот алгоритм требует примерно 8 л3 флопов. Накопление матриц Q и Z потребует примерно 4 л3 и Зл3 флопов соответственно. Преобразование пучка матриц А—ХВ к хессенбергово-треугольной форме служит предварительным преобразованием для обобщенных QR-итераций, извест¬ ных как QZ-итерации, которые мы опишем ниже. Пример 7.73. Если 10 1 2 1 2 3 А = 1 2 - 1 и 5 = 4 5 6 1 1 2 7 .8 9 и ортогональные матрицы Q и Z выбраны следующим образом: — 0.1231 -0.9917 0.0378 1.0000 0.0000 0.0000 - 0.4924 0.0279 - 0.8699 и Z = 0.0000 - 0.8944 - 0.4472 - 0.8616 0.1257 0.4917 0.0000 0.4472 - 0.8944 то матрицы At = QT A Z и Вх = QT ВZ имеют вид - 2.5849 1.5413 2.4221 - 8.1240 3.6332 14.2024 - 9.763 L 0.0874 1.9239 и Вх = 0.0000 0.0000 1.8739 0.0000 2.7233 -0.7612 0.0000 0.0000 0.7612 7.7.5. Исчерпывание При описании QZ-итераций мы можем предполагать, не нарушая общноста, что А -неприводимая верхняя хессенбергова матрица и что 7?-невырожденная верхняя
7.7. QZ-метод для Ах = ХВх 359 треугольная матрица. Первое из этих утверждений очевидно, так как если ак + 1.к = то — УьВц Лц — ^&i2 А22 “ 2 J п — к п — к -Чо” ■1* iJ n-i и мы можем продолжать решать две проблемы меньшего размера Ац — кВ и и А22 — *кВг2. С другой стороны, если Ькк = 0 при некотором fc, то можно ввести нулевой элемент в позицию (л, п — 1) матрицы А и тем самым осуществить исчерпывание. Проиллюстрируем это следующим примером, где п ~ 5 и к. = 3: А = х х х х х х х х х х О х х х х О 0 х х х О 0 0 х х В = х О О О о х х О о о х х О о о х х х х О X X X X X Используя вращения Гивенса, нуль на диагонали матрицы В можно «столкнуть» на позицию (5,5) следующим образом А — QJ4A — х х х х х х х х х х О х х х х О х х х х О 0 0 х х , В = Q34B = X О О о о х х О О о х х О О О х X X О О X X X X X А = AZ^3 А — ОаьА — А — AZ34 = х х х х х х х х х х О х х х х О 0 х х х О 0 0 х х X X X X X X X X X X О х х х х О 0 х х х О 0 х. х х X X X X X X X X X X О х х х х О 0 х х х О 0 0 х х A = AZ45 — х х х х О х О О ххх ххх ххх XXX > В = BZ23 — ,в = <£ъв = , В — BZ34 — 0 0 0 0 , В = BZ45 — X о о о о х О о о о х О о о о х О о о о х х О о о х х О о о х х О О О х х О О о х х X О О х X X О О х X X О О X X X О О х X X О О х X X О О X X X О О х X X X О X X X X X X X X X о X X X X о X X X X о
360 Гл. 7. Несимметричная проблема собственных значений Этот метод перегонки нуля вполне общий и может быть использован для обнуления элемента апп-х независимо от того, где на диагонали матрицы В появился нулевой элемент. 7.7.6. QZ-uiar Теперь мы подготовлены к описанию QZ-шага. Основная идея заключается в том, чтобы обновить матрицы А и В следующим образом: (A ^XE) = Qt(A -XB)Z, где матрица Л-верхняя хессенбергова, В- верхняя треугольная, Q и Z- ортогональ¬ ные и матрица ЛВ~1 в основном та матрица, которая получилась бы, если QR-шаг Фрэнсиса (алгоритм 7.5.2) применить к матрице АВ~1. Это можно сделать при помощи ловкой перегонки нуля и апелляции к теореме о неявном Q. Пусть матрица М = АВ~* (верхняя хессенбергова) и пусть v-первый столбец матрицы (М — al) (Af — Ы), где а и Ь - собственные значения нижней подматрицы 2x2 матрицы М. Заметим, что вектор v может быть вычислен за 0(1) флопов. Если Р0-матрица Хаусхолдера, такая, что вектор Р0v коллинеарен ех, то А = PqA = В — PqB — X X X X X X X X X X X X X X X X X X 0 X X X X X 0 0 0 X X X 0 0 0 0 X X X X X X X X X X X X X X X X X X X X 0 0 0 X X X 0 0 0 0 X X 0 0 0 0 0 X Теперь идея состоит в том, чтобы привести эти матрицы к хессенбергово-треуголь- ной форме, перегоняя нежелательные ненулевые элементы в нижнюю часть диагонали. С этой целью мы сначала найдем пару матриц Хаусхолдера Zx и Z2, обнуляю¬ щих элементы Ьъх, ЬЪ1 и b2ri А — AZ\ X X X X X X X X X X X X X X X X X X X X X X X X 0 0 0 X X X 0 0 0 0 X X
7.7. QZ-метод для Ах = ХВх 361 В ~ В Z\Z2 = X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X 0 0 0 0 0 X Затем используем матрицу Хусхолдера Рх для обнуления я31 и a4ii X X X X X X X X X X X X 0 X X X X X 0 X X X X X 0 0 0 X X X 0 0 0 0 X X В = Р\В = X X X X X X 0 X X X X X 0 X X X X X 0 X X X X X 0 0 0 0 X X 0 0 0 0 0 X Заметим, что после этого шага нежелательные ненулевые элементы оказались сдвинутыми вниз и вправо от их первоначального положения. Это иллюстрирует типичный шаг QZ-итераций, Заметим, что матрица Q = Q0Qi ■ -бл-2 имеет тот же самый первый столбец, что и матрица g0. Кстати, первая матрица Хаусхолдера определяется однозначно, мы можем применить теорему о неявном Q и утверждать, что матрица АВ~1 = QT(AB~l)Q- действительно, в основном, та матрица, которую можно получить, применяя итерацию Фрэнсиса к матрице М — АВ~1 непосредст¬ венно. В целом мы имеем Алгоритм 7.7.2 (QZ-uiar). Для заданной неприводимой верхней хессенберговой матрицы /4eR"x/? и невырожденной верхней треугольной матрицы BeRnxn сле¬ дующий алгоритм записывает в матрицу А верхнюю хессенбергову матрицу QT AZ и в В- верхнюю треугольную матрицу QT BZ, где матрицы Q и Z-ортогональные, и Q имеет тот же самый первый столбец, что и ортогональное преобразование подобия в алгоритме 7.5.1, если его применить к матрице АВ~1, Положить М = АВ~1 и вычислить (А/ — al) (М — Ы) eL = (х,у, z, 0,..., 0)г, где а и Ь-собственные значения нижней подматрицы 2x2 матрицы М. for к = 1: п — 2 Найти матрицу Хаусхолдера Qk, такую, что Qk [vyz]r = [*00]т. А = diag(/*_!, Qk, I«-k-2)A В = diag(7fc-b Qk, In-k-i)B
362 Гл. 7. Несимметричная проблема собственных значений Найти матрицу Хаусхолдера Zkl, такую, что [Рк + 2.к Ьк + 2, к+1 ^k+2,k+2]Zkj = [00*] А = >4diag(/k_i, Zfci, /я-k—2) В = /?diag(/fc_i, Zk 1. /«-*-2) Найти матрицу Хаусходдера Zk2, такую, что [^k+l.fc bk + i,k+l}Zk2 — [0*]- А = j4diag(/k_lf Zk2, /„-k-i) В = 2?diag(/k_lt Zk2l /„~k-i) x = flk + ilk; у = flk+itk if к < n - 2 Z = Дк + З.к end end Найти матрицу Хаусхолдера Ся-ь такую, что Gn-i A = diag(/„-2, G«-iM 5 = diag(/„-2f G«-i)£ Найти матрицу Хаусхолдера Z„_ ь такую, что [£>я,я-1 ^яя]^я-1 “ [0*] Л = ^diag(/w_2. Zj,_ i) ^ = ,Sdiag(/„-2f Z'-x) Этот алгоритм требует 22 л2 флопов. Матрицы Q и Z могут быть накоплены за еще 8 л2 флопов и 13 л2 флопов соответственно. 7.7.7. QZ-процесс в целом Применяя последовательность QZ-шагов к хессенбергово-треугольному пучку матриц А — АД можно привести матрицу А к квазитреугольному виду. Делая это, необходимо контролировать поддиагональ матрицы А и диагональ матрицы Д для того чтобы осуществлять расщепление всякий раз, когда это возможно. Полный процесс, благодаря Молеру и Стюарту [Moler, Stewart (1973)] имеет следующий вид: Алгоритм 7.7.3. Для заданных А е R” * л и Be R” * " следующий алгоритм вычисляет ортогональные матрицы Q и Z, такие, что матрица QTAZ = Т- верхняя квази* треугольная, а матрица QT BZ = S-верхняя треугольная. Матрицу А замещает матрица Т, а матрицу В- матрица S. Используя алгоритм 7.7.1, записать в А матрицу QT AZ (верхняя хессенбергова) и в матрицу В-матрицу QTBZ (нижняя треугольная). until q — n Положить равными нулю все поддиагональные элементы матрицы А, удовлетворяющие неравенству \ai,i-l I ^ £(|П,— l,i—l | + |fl;j|) Найти наибольшее неотрицательное q и наименьшее неотрицательное />, такие, что если А\\ Ли А13 0 Ан Ац 0 0 А33 р 1 1 Я
7.7. QZ-метод для Ах = ХВх 363 то матрица А33-верхняя квазитреугольная, а матрица Л22-неприводимая верхняя Хесенбергова. В соответствии с этим разбить на блоки матрицу В: *11 *12 *13 Р 0 *22 *23 n-p-q 0 0 *33 _ Я р n-p-q Я If q < л if В вырожденна Обнулить else Применить алгоритм 7.7.2 к матрицам А22 и В22 А = diag(/p, Q, lfAdiag(Ip, Q. I ) В = diag(/pi Q, //Rdiag(/„. Q. /} end end end Этот алгоритм требует 30 л3 флопов. Если желательно иметь матрицу Q, то необходимо дополнительно 16л3 флопов. Если требуется матрица Z, то нужно дополнительно 20 л3 флопов. Эти оценки вычислительных затрат основаны на наблюдении, что необходимо примерно два шага QZ-итераций на одно собственное значение. Таким образом, свойства сходимости QZ-алгоритма те же, что и у QR-алгоритма. На скорость сходимости QR-алгоритма не влияет дефект ранга матрицы В. Можно показать, что вычисленные матрицы S и Т удовлетворяют равенствам Ql(A + E)Z0=T, Qo(B + F)Z0 « S, где Q0 и Z0-точно ортогональные матрицы, а 11 Е\|2 л и11А \ \2 и 11F \ \2 % и 11 В\|2. Пример 7.7.5. Если QZ-алгоритм применить к матрицам ‘ 2 3 4 5 6 1 -1 ^1 -1 “1 4 4 5 6 7 0 1 -1 -1 -1 0 3 6 7 8 и В = 0 0 1 -1 -1 0 0 2 8 9 0 0 0 1 -1 0 0 0 1 10 0 0 0 0 1 то поддиагональные элементы матрицы А будут сходиться следующим образом: Итерация о(1М) о(|А32|) О(|/14з0 0(1*541) 1 10о 101 10и 10-1 2 10° 10° 10° Ю-1 3 10° ю1 ю-1 10“3 4 10° 10° 10”1 10-® 5 10° 101 ю-1 10-16 6 10° 10° 10-2 7 10° 10“1 10“4 8 ю1 10“1 10-8 9 10° 10-1 10“19 10 10° 10-2 11 10”1 10“4 12 10-2 10-11 13 10“3 10-27 14
364 Гл. 7. Несимметричная проблема собственных значений 1.7.8. Вычисление обобщенных инвариантных подпространств Многие алгоритмы вычисления инвариантных подпространств, обсуждавшиеся в § 7.6, переносятся на обобщенную проблему собственных значений. Например, приближенный собственный вектор можно найти посредством обратной итерации: q'°'eCnxn задан, for к = 1,2,... Решить систему (А — \xB)z{k) — Bq{k~l) Нормализовать: q{k) = zik)/\ | z*k)) |2 X<*> = end Когда матрица В невырожденная, это эквивалентно применению алгоритма (7.6.1) с матрицей В-1 А. Как правило, требуется только одна итерация, если ц- прибли¬ женное собственное значение, найденное QZ-алгоритмом. Обратное итерирование с хессенбергово-треугольным пучком позволяет избежать дорогого накопления Z-преобразований в течение QZ-итераций. Подобно понятию инвариантного подпространства матрицы, существует поня¬ тие понижающего подпространства пучка матриц А — ХВ. В частности, говорят, что к-мерное подпространство S £ R" является понижающим для пучка А — zB> если подпространство {Ах + By::с, yeS} имеет размерность к или меньше. Заметим, что столбцы матрицы Z в обобщенном разложении Шура определяют семейство понижающих подпространств, так как если Q = [ди... и Z = [zA,..., z„], то span {/4za,..., Azk} с span {tfi,и span {2?z,,..., Bzk} я. span fa|,Свойства понижающих подпространств и их поведение под воздействием возмущений описаны в Stewart (1972). Задачи 7.7.1. Предположим, что А и В принадлежат R" * л и что иТВУ=[о о] я-г’ 17 Uli' V=LV' Vli г п-r ' r n~r r n~r есть SVD матрицы В, где D - матрица размера г х г, а г = rank (Я). Показать, что если Х(А, В) — С, то матрица U\ A Vz вырожденна. 7.7.2. Определим функционал F:R" -► R как I хтВтАх F(V) = 2 lAx~sWrx** Ь. где А \\ В принадлежат R" х п. Показать, что если V F (х) = 0, то вектор А х коллинеарен вектору Вх. 7.7.3. Пусть А и В принадлежат Кл х л. Предложить алгоритм вычисления ортогональных матриц Q и Z, таких, что матрица QT A Z верхняя хессенбергова, а матрица ZT В Q верхняя треугольная. 7.7.4. Показать, что если р^Х(А, В), то матрицы Аг = (А — рД)“1 А и Bt=(A— рВ)~1 перестановочны. 7.7.5. Пусть АеСпхп, ВеСггхтг и матрица A — \iB невырожденная при некотором ре С. Предположим, что матрица В невырожденная. Показать, что ХеЦЛ, В) тогда и только тогда, когда ХеХ{В, В(А — pfi)-1 В).
7.7. QZ-метод для Ах = ХВх 365 Замечания и литература к § 7.7 Математические аспекты обобщенной проблемы собственных значений рассматриваются в работах Erdelyi I. (1967). “On the Matrix Equation Ax — XBx”y J. Math. Anal, and Applic. 17, 119 132. Гантмахер Ф. P. Теория матриц, т. 2, М.: Наука, 1967. Tumbill H.W. and AitkenA.C. (1961). An Introduction to the Theory of Canonical Matrices, Dover, New York. Хорошей книгой, охватывающей многие аспекты А —X В проблемы, является Kagstrom В. and Ruhe А. (1983). Matrix Pencils, Ргос. Pite Havsbad, 1982, Lecture Notes in Mathematics 973, Springer-Verlag, New York and Berlin. Стюарт рассматривал вопросы чувствительности собственных значений в Stewart G. W. (1972). “On the Sensitivity of the Eigenvalue Problem Ax = \Bx'\ SIAM J. Num. Anal. 9, 669-686. Stewart G. W. (1973b). “Error and Perturbation Bounds for Subspaces Associated with Certain Eigenvalue Problems”, SIAM Review 15, 727-764. Stewart G.W. (1975b). “Gershgorin Theory for the Generalized Eigenvalue Problem Ax = XBx”t Math. Comp. 29, 600-606. Stewart G.W. (1978). “Perturbation Theory for the Generalized Eigenvalue Problem”, in Recent Advance in Numerical Analysis, ed. C. de Boor and G. H. Golub, Academic, Press, New York. В некоторых прикладных задачах появляются обобщенные проблемы собственных значений с прямоугольными матрицами. Смотри Thompson G. L. and Weil R.L. (1970). “Reducing the Rank of A — X&\ Proc. Amer. Math. Sec. 26, 548-554. Thompson G. L. and Weil R. L. (1972). “Roots of Matrix Pencils Ay = XBy: Existence, Calculations, and Relations to Game Theory”, Lin. Alg. and Its Applic. 5, 207-226. Неортогональные вычислительные процедуры для обобщенной проблемы собственных значе¬ ний предложены в Kublanovskaja V. N. and Faddeeva V. N. (1964). “Computational Methods for the Solution of a Generalized Eigenvalue Problem”, Amer. Math. Soc. Transt. 2, 271 -290. Peters G. and Wilkinson J. H. (1970a). “Ax = XBx and the Generalized Eigenproblem”, SIAM J. Numer. Anal. 7, 479-492. QZ алгоритм включен в Eispack и был впервые описан в Moler С.В. and Stewart G.W. (1973), “An Algorithm for Generalized Matrix Eigenvalue Problems”, SIAM J. Num. Anal. 10, 241 256. Улучшения этого первоначального алгоритма обсуждаются Kaufman К. (1977). “Some Thoughts on the QZ Algorithm for Solving the Generalized Eigenvalue Problem”, ACM Trans. Math. Soft. 3, 65 75. Ward R.C. (1975). “The Combination Shift QZ Algorithm”, SIAM J. Num. Anal. 12, 835-53. Ward R.C. (1981). “Balancing the Generalized Eigenvalue Problem”, SIAM J. Sci. and Stat. Comp. 2, 141-152. Так же, как и хессенбергово разложение, хессенбергово-треугольное разложение, которое служит предварительным алгоритмом для QZ алгоритма, важно само по себе. Смотри Enright W. and Serbin S. (1978). “A Note on the Efficient Solution of Matrix Pencil Systems”, BIT 18, 276-281. Метод, похожий на QZ-алгоритм, но основанный на преобразованиях Гаусса, предложен в Kaufman К. (1974). “The LZ Algorithm to Solve the Generalized Eigenvalue Problem”, SIAM J. Num. AnaL 11, 997-1024, в то время как в Van Loan С. F. (1975). “A General Matrix Eigenvalue Algorithm”, SIAM J. Num. AnaL 12, 819-834.
366 Гл. 7. Несимметричная проблема собственных значений рассматривается обобщение QZ-алгоритма, которое работает с проблемой АТ Сх = КВТ Dx без обращения или формирования матриц ЛТС, Вт D. Поведение QZ-алгоритма для пучков матриц А — КВ, которые всегда близки к вырожден¬ ным, обсуждается в Wilkinson J. Н, (1979). “Kronecker’s Canonical Form and the QZ Algorithm”, Lin. Alg. and Its Applic., 28, 285-303. Другие подходы к этой проблеме включают Jennings A. and Osborne М. В. (1977). “Generalized Eigenvalue Problems for Certain Unsymmetric Band Matrices”, Lin. Alg. and Its Applic. 29, 139-150. Kublanovskaya V. N. (1984). “AB Algorithm and Its Modifications for the Spectral Problem of Linear Pencils of Matrices”, Numer. Math. 43, 329-343. Rodrigue G. (1973). “A Gradient Method for the Matrix Eigenvalue Problem Ax = Bx'\ Numer. Math. 22, 1-16. Schwartz H. R. (1974). “The Method of Coordinate Relaxation for (A — KB)x = 0”, Num. Math. 23, 135-152. Обобщенная Ax = К Bx проблема является центральной для многих важных приложений теории управления. Смотри Arnold W.F. and Laub A.J. (1984). “Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations”, Proc. IEE 72, 1746-1754. Demmel J. W. and Klgstrom B. (1988). “Acurate Solutions of 111-Posed Problems in Control Theory”, SIAM J. Matrix Anal. Appl. 126-145. Van Dooren P. (1981). “A Generalized Eigenvalue Approach for Solving Riccati Equations”, SIAM J. Sci. and Stat Comp. 2, 121-135. Van Dooren P. (1981). “The Generalized Eigenstructure Problem in Linear System Theory”, IEEE Trans. Auto. Cont. AC-26, 111-128. В самом деле, различные приложения теории управления заставили глубже взглянуть на Кронекерову структуру пучка матриц, что подтверждают следующие работы: Demmel J. W. (1983b). “The Condition Number of Equivalence Transformations that Block Diagona- iizc Matrix Pencils”, SIAM J. Numer. Anal. 20, 599-610. Demmel J. W. and K&gstrom B. (1987). “Computing Stable Eigendecompositions of Matrix Pencils”, Linear Alg. and Its Applic. 88/89, 139-186. K&gstrom B. (1985). “The Generalized Singular Value Decomposition and the General A-KB Problem”, BIT 24, 568-583. Kigstrom B. (1986). “RGSVD: An Algorithm for Computing the Kronecker Structure and Reducing Subspaces of Singular A-KB Pencils”, SIAM J. Sci. and Stat. Comp. 7, 185-211. Kagstrom B. and Westin L. (1987). “GSYLV-Fortran Routines for the Generalized Schur Method with dif-1 estimators for Solving the Generalized Sylvester Equation”, Report UMINF-132.86, Inst, of Inf. Proc., University of Umea, S-901 87 Umea, Sweden. Van Dooren P. (1979). “The Computation of Kronecker’s Canonical From of a Singular Pencil”, Lin. Alg. and Its Applic. 27, 103-140. Van Dooren P. (1983). “Reducing Subspaces: definitions, properties and Algorithms”, in Matrix Pencils, eds. B. Kagstrom and A. Ruhe, Springer-Verlag, New York, 1983, 58-73. Wilkinson J. H. (1978). “Linear Differential Equations and Kronecker's Canonical Form”, in Recent Advances in Numerical Analysis, ed. C. de Boor and G. H. Golub, Academic Press, New York, pp. 231-265. Работы над параллельными алгоритмами для обобщенной проблемы собственных значений начата недавно. Смотри Kagstrom В., Nystrom L. and Poromaa P. (1987). “Parallel Algorithms for Solving the Triangular Sylvester Equation on a Hypercube Multiprocessor”, Report UMINF-136.87, Inst, of Inf. Proc., University of Umea, S-901 87, Umea, Sweden. Kagstrom B., Nystrom L. and Poromaa P. (1988). “Parallel Shared Memory Algorithms for Solving the Triangular Sylvester Equation”, Report UMINF-155.88, Inst, of Inf. Proc., University of Umea, S-901 87, Umea, Sweden.
7.7. QZ-метод для Ах = ХВх 367 Добавления при переводе Среди работ, опубликованных на русском языке, наиболее полно различные вопросы, связанные с обобщенной проблемой собственных значений, в том числе нелинейной, изложены в следующей серии: Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алго¬ ритмы. I - Препринт ЛОМИ, Р. 2-88. Ленинград, 1988, 57 с. Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алго¬ ритмы. II-Препринт ЛОМИ Р-33-88, Ленинград, 1988, 37 с. Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алго¬ ритмы. III-Препринт ЛОМИ Р-4-88, Ленинград, 1988, 54 с. Построению алгоритмов, обеспечивающих гарантированную точность в условиях приближен¬ ных вычислений, посвящены работы Годунове.К. Задача о дихотомии спектра матрицы//Сиб. мат. журн.~1986, Т. 27, № 5.- С. 24-25. Булгаков А. Я., Годунов С. К. Круговая дихотомия матричного спектра. Новосибирск, 1987.- 34 с. (Препринт/АН СССР. Сиб. отд. Ин-т математики № 5.) Малышев А. Н. Гарантированная точность в спектральных задачах линейной алгебры//Вы- числительные методы линейной алгебры.-Новосибирск: Наука. Сиб. отд., 1990, с. 19-104. Гарантированная точность решения систем линейных уравнений/Годунов С. К., Анто¬ нов А. Г., Кирилюк О. П., Костин В. И.-Новосибирск: Наука, Сиб. отд., 1988.
Глава 8 Симметричная проблема собственных значений Теория возмущения и алгоритмические разработки из предыдущей главы зна¬ чительно упрощаются, когда матрица А симметричная. Симметричная проблема собственных значений с ее богатой математической структурой пошлине является одной из наиболее притягательных проблем вычислительной алгебры. Мы начнем наше знакомство с короткого обсуждения математических результа¬ тов, лежащих в основе симметричной проблемы собственных значений. В § 8.2 мы специализируем алгоритмы из § 7.4 и 7.5 и получаем изящный симметричный QR-алгоритм. Вариант этой процедуры, позволяющий вычислять сингулярное разложение, подробно рассматривается в § 8.3. Поскольку собственные значения симметричной матрицы могут быть определены различными способами, существует множество QR-алгоритмов. Некоторые из этих методов описаны в § 8.4. Одним из самых первых матричных алгоритмов, появившихся в литературе, является метод Якоби для симметричной проблемы собственных значений. Интерес к этой процедуре возобновился благодаря параллельным вычислениям и поэтому мы отвели этому методу значительное место в § 8.5. Другой высокопараллельный метод для проблемы собственных значений, вариант метода «разделяй и властвуй», рассмотрен в § 8.6. Его можно использовать для трехдиагональной проблемы, и он особенно интересен, так как успешно конкурирует с трехдиагональными QR-итера¬ циями даже в условиях однопроцессорных вычислений. В конце раздела мы рассматриваем А — ХВ проблему для важного случая, когда матрица А - симметричная, а матрица В-симметричная положительно определен¬ ная. Хотя не существует подходящих аналогов QZ-алгоритма для этой обобщенной проблемы собственных значений со специальной структурой, существует несколько удачных методов, которые могут быть использованы. Также обсуждается обобщен¬ ная проблема сингулярных значений. Большую часть материала этой главы можно найти в [Parlett, SEP]. 8.1. Математические основы Симметричная проблема собственных значений имеет изящную и богатую теорию. Наиболее важные аспекты этой теории рассматриваются в данном разделе. 8.1.1. Собственные значения симметричных матриц Симметричность упрощает вещественную проблему собственных значений Ах = Хх в двух направлениях. Она подразумевает, что все собственные значения матрицы А вещественные и что существует ортогональный базис собственных векторов. Эти свойства вытекают из следующей теоремы.
8.1. Математические основы 369 Теорема 8.1.1 (Симметричное вещественное разложение Шура). Если А -вещественная симметричная матрица размера п х nf то существует вещественная ортогональная матрица Q, такая, что Доказательство. Пусть QTAQ = Т есть вещественное разложение Шура (теорема 7.4.1) матрицы А. Поскольку матрица Т к тому же симметричная, из сделанного предположения следует, что она должна быть прямой суммой матриц размера 1 х 1 и 2 х 2. Однако легко проверить, что симметричная матрица размера 2 х 2 не может иметь комплексных собственных значений. Следовательно, матрица Т не может иметь на диагонали блоков размера 2 х 2. □ Пример 8.1.1. Если то матрица Q ортогональная и QTAQ = diag (10,5). 8.1.2. Теорема о минимаксе и некоторые следствия Для Ат = A еН"хя пусть Хх(А) означает /-е максимальное собственное значение А. Таким образом, Легко показать, что каждое собственное значение симметричной матрицы является стационарной точкой отображения х -> хтАх/хтх, где х ф 0. Более того, собственные значения допускают следующую минимаксную характеризацию: Теорема 8.1.2 (Теорема Куранта-Фишера о минимаксе). Если матрица AeRnxn симметричная, то для k = 1 :п. Доказательство. [Wilkinson, АЕР], с. 100-101. □ Используя этот результат, можно установить несколько очень полезных следствий. Следствие 8.1.3. Если А и А У- Е-симметричные матрицы размера п х п, то К(А) + \{Е) < Хк(А + Е)*£ Хк(А) + Хг (£), к = I Доказательство [Wilkinson, АЕР], с. 101-102. □ Пример 8.1.2. Если то Х(А) = {5, 10}, Ц£) = {1,2} и Х(А + Е) = {6.5917, 11.4083}. Следствие 8.1.4. (Свойство чередования). Если А, означает верхнюю главную г х г подматрицу симметричной матрицы А размера п х п, то для г = 1: п — 1 справедливо QTAQ — diag(M..., Х„). К И) < Mi (Л) < ... < Х2(А) sg МЛ). у ау Xk(A) = max min dim(S) = кО ^ yeS У У
370 Гл. 8. Симметричная проблема собственных значений следующее свойство чередования: ^-г+1 Mr+i) ^\{ЛТ) ^ Хг(Лг+1) ^ ... ^ Х2{Аг+ i) ^ X.J (Аг) Доказательство. [Wilkinson, АЕР], с. 103-104. □ Пример 8.1.3. Если 1111 А= 1 2 3 4 13 6 10 ’ 1 4 10 20 то Х(Ах) = {!}, XMJ = {0.3820, 2.6180}, Цу43) = {0.1270, 1.0000, 7.873} и ЦЛ4) = {0.0380, 0.4538, 7.2034, 26.3047}. 8.1.3. Дополнительные результаты Если матрицу А подвергнуть одноранговому возмущению, то ее собственные значения сдвинутся некоторым очень регулярным образом. Теорема 8.1.5. Пусть В = А+тссТ, где Л е R* *п-симметричная матрица, ceR"- вектор, имеющий единичную вторую норму и reR. Если т > 09 то И)], *-2:и; а если т < 0, то МЯ)е[Ь|+1(Л)Д,И)], В обоих случаях существуют неотрицательные числа т19 ..., тя, такие, ч/ио Xi(R) = ХДЛ) + /и4х, I = 1: и, с тх 4-... + тЛ — I. Доказательство. [Wilkinson, АЕР], с. 94-97. См. также теорему 8.6.2. □ Воздействие однорангового возмущения на собственные значения симметричной матрицы интересно в различных контекстах, таких, как квазиньютоновские методы для безусловной оптимизации. См. также § 8.6, где теорема 8.1.5 лежит в основе решения трехдиагональной проблемы собственных значений методом «разделяй и властвуй». Наш следующий результат, касающийся возмущений, является скорее другим вариантом предыдущего. Он устанавливает границы для разности Х(А) и \{А + Е) в терминах \\E\\F. Теорема 8.1.6 (Вяландта - Хоффмана). Если А и А + Е-симметричные матрицы размера п х п, то I (МЛ + Щ-МЛ))2 <\\E\\h • = 1 Доказательство. Доказательство можно найти в [Wilkinson, АЕР], с. 104-108. Пример 8.1.4. Если
8.1. Математические основы 371 то 2 4.5168 - £ (Х,</1 + Е)~ МЛ))2 < IIЕ IIf = 5. См. пример 8.1.2. 8.1.4. Чувствительность инвариантных подпространств Инвариантные подпространства симметричной матрицы не обязательно хорошо обусловлены. Отделенность собственных значений является критическим фактором, как и в несимметричном случае. Однако приведенная оценка в общей теореме о возмущении для инвариантных подпространств (теорема 7.2.4) допускает неко¬ торое упрощение в симметричном случае. Теорема 8.1.7, Пусть А и А + Е-симметричные п х п матрицы и -ортогональная матрица, такая, что range (Qj) является инвариантным под¬ пространством матрицы А. Разобьем матрицы QTAQ и QTEQ на блоки следующим образом: такая, что столбцы матрицы Qt — (Q2 + Q2P) (/ + РТР) 1/2 образуют ортогональ¬ ный базис в подпространстве, являющемся инвариантным для матрицы А + Е. Доказательство. См. [Stewart, 1973в]. □ Эта теорема в сущности утверждает, что чувствительность инвариантного подпространства симметричной матрицы зависит исключительно от отделенное™ связанных с ним собственных значений. Пример 8.1.5. Если А = diag (0.999, 1.001, 2.0) и к п — к 8= min I ^ — р| — II£ц ||2 — IIЕц II2 >0 ХвХ{Аи) рек{Л22) и || El2 II2 < 6/2, то существует матрица РеR*” х удовлетворяющая неравен ству 0.00 0.01 0.01 Е= 0.01 0.00 0.01 0.01 0.01 0.00
372 ГА, 8. Симметричная проблема собственных значений то QT(A + E)Q = diag(0.9899, 1.0098, 2.0002), где -0.7418 0.6706 0.0101 Q= 0.6708 0.7417 0.0101 0.0007 - 0.0143 0.9999 является ортогональной. Пусть = Qeir i — I, 2, 3, т. е. вектор есть возмущенный собст¬ венный вектор qk = е, матрицы А. Вычисления показывают, что Таким образом, векторы qY и q2 не могут быть вычислены точно, поскольку они связаны с близкими собственными значениями. С другой стороны, так как и Х2 хорошо отделены от Х3, то они определяют двумерное подпространство не столь чувствительное: dist {span {а,, а2}, span{$i, <У} =0.01. Наконец мы приведем ряд результатов, касающихся аппроксимации инвари¬ антных подпространств. Эти результаты будут полезны в следующих разделах и помогут интерпретации различных алгоритмов. Теорема 8ЛЯ. Пусть матрицы и ScRkx к симметричные и и, используя следствие 8.1.3, мы получаем оценку — МДИ ^ II ЕII г Дл* f = 1: л. Поскольку X(S) с существуют р1? такие, что для /- 1 :к. Доказываемое неравенство следует из того, что для любых xeR* и yeRn~k мы имеем dist {span {q,}, span {£,}} = dist {span {q2}, span {<J2}} = 0.67. AQi QiS — Ex, где матрица Q,eRnxk удовлетворяет равенству Q\Qi = Tk. Тогда существуют собственные значения ..., цкеХ(А), такие, что 1и,-х;(5Ж7211£1112* Доказательство. Пусть 6ieR” х любая матрица, такая, что матрица Q = = CGi* Qi\ ортогональная. Тогда г ЫII *11 ElX 112 +11 ElQ2y 112 *11Е'112" ■х 112 +11 El 11211 у 112 ’ п откуда легко заключить, что || Е || 2 ^ у/2 || Ек || 2. □ Пример 8.1.6. Если то
8.1. Математические основы 373 Теорема предсказывает, что матрица А имеет собственное значение на расстоянии не более \/2 || £| || 2 w 0.1415 от числа 5.1. Это соответствует действительности, так как \(А) = {5, 10}. Оценка собственного значения в теореме 8.1.8 зависит от погрешности аппро¬ ксимации инвариантного подпространства, т.е. || AQ, — GjS ||2. Для заданных мат¬ риц А и следующая теорема показывает, как выбрать матрицу S так, чтобы эта величина была минимальной, если ||* || = IMIf- Теорема 8.1.9. Если матрица A eRw х п - симметричная, а матрица Q,eRnxk удов¬ летворяет уравнению Q,Q, = /*, то min || AQ, - Q,S ||f = || (/ - Q,Q\) AQ, || f. Se R*x* Доказательство. Пусть матрица (^gR” x такова, что матрица Q = [Q,y Q2~] - ортогональная. Для любой матрицы Se Rk х k имеем \\AQ, - QiS||* = || QTAQ, - QTQ,S\\j = || Q\AQ, - S \\j + || Q\AQ, ||2. Ясно, что минимум no S дает S = QfAQ,. □ Этот результат дает нам возможность связывать A-мерное подпространство range (Q,) с некоторым набором к «оптимальных» приближенных пар собственные значения-собственные векторы. Теорема 8.1.10. Пусть матрица АеR” *п-симметричная, а матрица 01 еR" х * удовлетворяет уравнению QTQ, = /*. Если ZT(er^ei)Z = diag(01,...,efc) = D -разложение Шура матрицы Q\AQ, и Q,Z= [у,у..., ук~\г то || Ау{ - 0^,-1| 2 *= || (/ - — Q,Q\) AQ,Zei || 2 — [| (/ — Q\Q\)AQX || 2 для i = 1: к. Величины 0, называют числами Ритца, векторы у% называют векторами Ритца, а пары (0,, уJ -парами Ритца. Доказательство. Ау( - ву, - AQ.Ze, = Q,ZDet = AQ, - Q, (QlAQ^Ze,. Беря норму, получаем доказываемое равенство. □ Полезность теоремы 8.1.8 увеличится, если мы ослабим предположение об ортогональности столбцов матрицы Q,. Как и следует ожидать, оценки становятся хуже с потерей ортогональности. Теорема 8.1.11. Пусть AeR-симметричная матрица и AX,-X,S = F,y где XleRn х k и S = Х\АХЕсли о^Х,) > 0 и l*f*WJ2 = T, то существуют собственные значения ..., \ikeX(A), такие, что для k = 1: п. Доказательство. Пусть X, = U{LVT есть SVD матрицы Хх с матрицами U, е R” х к, FgR* х,сиЕ = diagjc^ ..., ct^eR* х к. Подставляя его в уравнение АХ, — X,S = F,y
374 Гл. 8. Симметричная проблема собственных значений мы получим равенство AUJLV* - U1ZVT(V1ZVT)TA(VlLVT) = F; поэтому AUX - Ui&iUlAUJ = FVL~l. Отсюда следует, что AUX - Ut (UjAUx) = F,, (8.1.1) где Ex = FVZ-l + t/i(Z2 — Ik)U iAUx. Замечая, что II Г2la - I la-т, мы получаем оценку ||£, ||2 *£ IIFFZ- ||2 + || l/t(Z2 - 1к) U\AUX ||2 < 1^2. + х \\А ||2. Применяя теорему 8.1.8 с матрицами Q = Ux и S = U\AUи получаем доказываемое неравенство. □ 8.1.5. Закон инерции Мы завершим этот раздел установлением закона инерции Сильвестра. Инерция симметричной матрицы Л-это тройка неотрицательных целых чисел (т. z, р\ где т, z и р - число отрицательных, нулевых и положительных элементов множества Х(Л). Теорема 8.1.12 (Закон инерции Сильвестра). Если матрица А е Rn * п симметричная, а матрица XeRnxn невырожденная, то матрицы А и ХТАХ имеют одну и ту же инерцию. Доказательство. Предположим, что для некоторого г \(А) > 0, и определим подпространство S0 £ R" следующим образом: S0 = span X~lqr), qt* О, где Aqt = Xi(A)qi и / = 1: г. Из минимаксной характеризации собственного значения ХГ(ХТАХ) имеем: Хг(ХТАХ)= шах min} (ХАХ)у ^ dim (S) = r yeS У У >™пуТ(ХТАХ)У ^ min - yes. у1 У Далее, для любого yeR" имеем уТу в то время как для yeS0 ясно, что ут(ХтАХ)у J ^ ХГМ). ГУ
8.1. Математические основы 375 Следовательно, JyT(XrAX)y уЦХТХ)у\ £ЬГ(ХГХ), уТу J "Л)"() ' ХГ(ХТАХ) > min yeS0 Если матрицы А и ХтАХ поменять ролями, то аналогичные рассуждения покажут, что ХГ(ХТАХ) К(А)Ж(ХТАХ)оя{Х-1)2 = <*ЛХ)2 Таким образом, собственные числа ХГ(А) и ХГ(ХТАХ) имеют один и тот же знак и, следовательно, мы показали, что матрицы А и ХтАХ имеют одно и то же число положительных собственных значений. Если применить этот результат к матрице —А, то можно сделать вывод, что матрицы А и ХтАХ имеют одно и то же число отрицательных собственных значений. Очевидно, что число нулевых собственных значений, которое имеет каждая из матриц, тоже будет одним и тем же. □ Пример 8.1.7, Если А = diag (3, 2, - 1) и X = то ХТАХ = 4 12 15 12 50 64 15 64 82 и Х(ХТ А Х)={ 134.769, 0.3555, -0.1252}. Задачи 8.1.1. Показать, что собственные значения симметричной матрицы размера 2x2 должны быть вещественные. 8.1.2. Найти разложение Шура матрицы А 8.U. Показать, что собственные значения эрмитовой матрицы (АИ = А) вещественные. Для каждой теоремы и следствия из этого раздела сформулировать и доказать соответствующий результат для эрмитовых матриц. Какие результаты имеют аналоги, если матрица А кососим¬ метричная? (Подсказка: Если Ат = —А, то матрица iА эрмитова.) Замечания и литература к § 8.1 Теория возмущения симметричной проблемы собственных значений рассматривается в [Wil¬ kinson, АЕР], гл. 2 и [Parlett, SEP], гл. 10 и 11. Некоторые типичные работы в этой хорошо освещенной области включает следующий перечень: Deift P., Nande Т. and Tome С. (1983). “Ordinary Differential Equations and the Symmetric Eigenvalue Problem”, SIAM J. Numer. Anal. 20, 1-22. Kahan W. (1975). “Spectra of Nearly Hermitian Matrices”, Proc. Amer. Math. Soc. 48, 11-17. Kahan W. (1967). “Inclusion Theorems for Clusters of Eigenvalues of Hermitian Matrices”, Computer Science Report, University of Toronto. Paige C.C. (1974b). “Eigenvalues of Perturbed Hermitian Matrices”, Lin. Alg. and Its Applic. 8, 1-10. Ruhe A. (1975). “On the Closeness of Eigenvalues and Singular Values for Almost Normal Matrices”, Lin. Alg. and Its Applic. 11, 87-94.
376 Гл. 8. Симметричная проблема собственных значений Schonhage А. (1979). “Arbitrary Perturbations of Hermitian Matrices’*, Lin. Alg. and Its Applic. 24, 143-49. Scott D. S. (1985). “On the Accuracy of the Gershgorin Circle Theorem for Bounding the Spread of a Real Symmetric Matrix”, Lin. Alg. and Its Applic. 65, 147-155. Stewart G.W. (1973b). “Error and Perturbation Bounds for Subspaces Associated with Certain Eigenvalue Problems”, SIAM Review, 15, 727-64. 8.2. Симметричный OR-алгоритм Посмотрим теперь, как практический QR-алгоритм, полученный в гл. 7, может быть специализирован, если матрица Ае R” * п симметричная. Три замечания можно сделать сразу: • Если матрица UqAU0 = Н верхняя хессенбергова, то Н = Т должна быть трехдиагональной. • Симметричность и трехдиагональная ленточная структуры сохраняются после выполнения QR-шага с одинарным сдвигом. • Нет необходимости рассматривать комплексные сдвиги, так как "к (А) я R. Эти упрощения вместе с приятными математическими свойствами симметрич¬ ной проблемы собственных значений делают алгоритмы этой главы очень при¬ влекательными. 8.2.1. Преобразование к трехдиагональному виду Начнем с получения преобразования Хаусхолдера к трехдиагональному виду. Предположим, что матрицы Хаусхолдера #4, ..., /*- i определены так, что под¬ матрица #ц матрицы Ak-l=(Pl„.Pk-l)TA(Pl...Pk-l) = трехдиагональная. Если Рк-матрица Хаусхолдера порядка п — к, такая, что вектор />*#32 коллинеарен е^~к) и, если Рк = diag(/k, Рк), то верхняя главная подматрица размера к х к матрицы *11 #12 0 /с- 1 *21 *22 *23 1 0 *32 *33 п — к к — 1 1 п — к *п #12 0 к- - 1 #21 #22 #23#к _ 1 0 Р*#32 #**33#, п - -к к- 1 1 п — к — #k^k-i^k — трехдиагональная1}. Ясно, что если U0 = Р1... #„_2, то матрица UqAU0 = Ттрех¬ диагональная. При вычислении матрицы Ак важно использовать симметричность в процессе формирования матрицы РкВъгРк. Для определенности предположим, что матрица п Перед к-м шагом трех диагональной является верхняя главная подматрица порядка к + 1, а описанная процедура к-го шага делает трехдиагональной верхнюю главную подматрицу порядка к + 2.- Прим. перев.
8.2. Симметричный QR-алгоритм 377 Рк имеет вид 2 Рк = I—4^vvT, O^veR" к. Заметим, что если то РкВгъРк = Д33 - vwT - wvT. Необходимо вычислить только верхнюю треугольную часть этой матрицы; поэтому переход от Ak-i к Ак можно выполнить всего за 4 (и — к)2 флопов. В целом мы имеем следующую процедуру трехдиагонализации: Алгоритм 8.2*1 (Трехднагонализацня Хаусхолдера). Для заданной симметричной матрицы А размера п х п следующий алгоритм записывает в А матрицу Т= = UqAUq, где матрица Г-трехдиагональная, a UQ — Н1...Нп-2- произведение пре¬ образований Хаусхолдера. fork = 1: п — 2 v = house (Л (k + 1 :п>к)) р = 2А(к + 1 :и, к + 1 :n)v/vTv w = р — (pTv) v/vTv А (к + 1: л, к + 1: л) = А (к + 1: л, к + 1: п) — vwT — wvT Этот алгоритм требует 4л3/3 флопов, если использовать симметричность при выполнении двухрангового обновления. Матрицу U0 можно хранить в факторизо¬ ванном виде в поддиагональной части матрицы А. Если матрица Ug требуется в явном виде, то ее можно сформировать, выполнив дополнительно 4л /3 флопов. Пример 8.2.1. Если Пусть Т означает вариант матрицы Т, вычисленный по алгоритму 8.2.1. Можно показать, что Т= QT(A + E)Q, где Q-точно ортогональная матрица, а Е-симмет¬ ричная матрица, удовлетворяющая неравенству || E\\f < си || A ||F, где с-некоторая небольшая константа. См. [Wilkinson, АЕР], с. 297. 1 3 4 А = 3 2 8 4 8 3 1 О О и U€ = 0 0.6 0.8 0 0.8 - 0.6 то UlU0 = l и 1 5 0 UlAU0 = 5 10.32 1.76 0 1,76 -5.32
378 Гл. 8. Симметричная проблема собственных значений 8*2.2. QR-нтерацин с явным одинарным сдвигом Рассмотрим теперь QR-итерации с одинарным сдвигом для симметричных матриц: Т= U%AU0 (трехдиагональная) fork = 0, 1, ... Определить вещественный сдвиг р. (8.2.1) Т— \xl = UR (QR-разложение) Т= RU + ц/ end Эти итерации сохраняют хессенбергову структуру (ср. с алгоритмом 7.4.1) и сим¬ метричность, следовательно, они сохраняют трехдиагональную форму. Более того, QR-разложение трехдиагональной матрицы требует лишь 0(п) флопов, так как матрица R имеет только две надциагонали. Поэтому необходимо выполнять на порядок меньше вычислений, чем в несимметричном случае. Однако если накапли¬ вать ортогональные матрицы, потребуется 0(п2) флопов на итерацию. Симметричность можно также использовать при вычислении сдвига р. Обозна¬ чим через Т следующую матрицу Т= а, 6, bt а2 '•* Vi *«-1 оп Мы можем, очевидно, положить ц = а„. Однако эффективнее сдвигать на соб¬ ственное значение подматрицы Пп 1 1 \ \ап-1 Ьп-1~\ -1:л, л-1:л) = lA-i а„ J охватывающей элемент ая. Такой выбор сдвига известен как сдвиг Уилкинсона и его вычисляют по формуле |i = ая + d - sign(rf) VйР + bi-1, (8.2.2) где d = (а„~! — ап)/2. Уилкинсон [Wilkinson, 1968в] показал, что процесс (8.2.1) сходится кубически при любой стратегии сдвигов, но дал эвристическое объяснение, почему сдвиг (8.2.2) предпочтительнее. 8.23. Вариант с неявным сдвигом Как и в случае несимметричных QR-итераций, в алгоритме (8.2.1) есть воз¬ можность делать неявный сдвиг. То есть мы можем выполнять переход от Т к Т+ = RU + \il = UTTU без явного формирования матрицы Т — \il. Пусть вычислены с = cos (6) и s = sin (6), такие, что Если положить Gt = <7(1, 2, 0), то G1ei — Uex и
8.2. Симметричный QR-алгоритм 379 GjTGi = X X + 0 0 0 X X X 0 0 0 + X X X 0 0 0 0 X X X 0 0 0 0 X X X 0 0 0 0 X X На этом этапе применима теорема о неявном Q при условии, что мы можем вычислять вращения 02, **., G„-ь обладающие тем свойством, что если Z = = GlG2...Gn-i, то Zex = Gle1 = Uel и матрица ZTTZ~трехдиагональная. Заметим, что первый столбец у матриц Z и U один и тот же при условии, что мы берем матрицы Gx вида Gt = G(i, i + 1, ОД i - 2:л — 1. Но матрицу G( такого вида можно использовать для выталкивания ненулевого элемента « + » из матрицы G\TGX. g2 X X 0 0 0 0 ' X X 0 0 0 0 ' X X X + 0 0 X X X 0 0 0 0 X X X 0 0 о», 0 X X X + 0 0 + X X X 0 0 0 X X X 0 0 0 0 X X X 0 0 + X X X 0 0 0 0 X X 0 0 0 0 X X X X 0 0 0 0 ‘ X X 0 0 0 0 ' X X X 0 0 0 X X X 0 0 0 0 X X X 0 0 о» 0 X X X 0 0 0 0 X X X + 0 0 X X X 0 0 0 0 X X X 0 0 0 X X X 0 0 0 + X X 0 0 0 0 X X Из теоремы о неявном Q следует, что трехдиагональная матрица ZTTZy полученная таким выталкиванием нулевых элементов, в основном та же, что и трехдиагональ¬ ная матрица Ту полученная явным способом. (Мы можем предполагать, что все трехдиагональные матрицы по определению невырожденные, так как в противном случае проблема расщепляется.) Заметим, что на любом этапе выталкивания ненулевых элементов с внешней стороны трехдиагональной ленты расположен лишь один ненулевой элемент. Следующее равенство показывает, как этот ненулевой элемент опускается в нижний угол матрицы в процессе обновления Т«- GlTGk\ 1 ООО О с s О О —в с О О 0 0 1 Ьк ир 0 о Ьр о а, Ьч Ьч аг 1 ООО* 0 с s 0 0 —8 С 0 — 0 0 0 1 <*к f>t 0 0 bk ар Ьр 2р 0 Ьр ая Ьч 0 Zp Ьд аг
380 Гл. 8. Симметричная проблема собственных значений Здесь (р, q, г) — (к + 1, к + 2, к + 3). Это обновление может быть выполнено не более чем за 26 флопов, если определены числа с и s из уравнения b^s + zkc = 0. В целом получаем Алгоритм 8.2.2 (Неявный симметричный QR-шаг со сдвотом Уилкинсона). Для заданной неприводимой симметричной трехдиагональной матрицы Те Rnxn, сле¬ дующий алгоритм записывает в матрицу Т матрицу ZTTZ, где Z = Gx... (7П_ v - произведение вращений Гивенса, такое, что матрица ZT(T — ц/)-верхняя треуголь¬ ная, а р- собственное значение нижней главной подматрицы размера 2x2, охва¬ тывающей элемент tm. d = Un-1.и-1 ~ *лл)/2 М = tm ~ i!(d + sign(d) Jd1 + /„.„-t) x = t\i - |i Z= /21 forfc = 1 :n — 1 [c, s] = givens (x, z) T= GlTGk, G* = G{k, к + 1, 0) if к < n — 1 x = /* + l& z — U + 2.k end end Этот алгоритм требует примерно ЗОи флопов и п извлечений квадратного корня. Если в заданную ортогональную матрицу Q записывать QGk... Gn-1, то потребуется дополнительно 6п2 флопов. Конечно, при любой практической реализации трех¬ диагональную матрицу Т желательно хранить в паре векторов длины и, а не в массиве размера п х п. Пример 8.2.2. Если алгоритм 8.2.2 применить к матрице 110 0 Т= 121 0 0 13 0.0! ’ 0 0 0.01 4 то новая трехдиагональная матрица Т будет иметь вид 0.5000 0.5916 0 0 0.5916 1.785 0.1808 0 0 0.1808 3.7140 0.0000044 0 0 0.0000044 4.002497 Алгоритм 8.2.2 образует основу симметричного QR-алгоритма-стандартного средства вычисления разложения Шура плотной симметричной матрицы. Алгоритм 8.2.3 (Симметричный QR-алгоритм). Для заданной симметричной матрицы А размера ихии числа г, немного превосходящего машинную точность, следую¬ щий алгоритм записывает в матрицу А матрицу QTAQ = D -I- где Q-ортого¬ нальная матрица, D- диагональная, а матрица Е удовлетворяет приближенному равенству || Е || 2 » и || А || 2. Используя алгоритм 8.2.1, выполнить трехдиагонализацию
8.2. Симметричный QR-алгоритм 381 Г=(/>, ...Рп-г)ТА(Рг...Рп-2) until <7 = п Для / = 1 :п — 1 положить ai+iti и ai%i+х равными нулю, если I 1, i I = I ai, i+ 1 I ^ £(1 вц I + I + 1, i+ 1 I) Найти наибольшее q и наименьшее ру такие, что если Гц 0 0 р 0 Тц 0 п -Р-Я’ 0 0 Ъ 3 я р 1 1 К Я то Т33 диагональная, а Тг1 неприводимая, if q < п Применить алгоритм^8.2.2 к Т22: Г= diag(/„, Z, Iq)TTdiag(Ip, Z, Iq) end end Этот алгоритм требует примерно 4я3/3 флопов, если не накапливается матрица Q, и примерно 9л3 флопов, если Q накапливается. Пример 8.2.3, Пусть алгоритм 8.2.3 применяется к трехдиагональной матрице 12 0 0 2 3 4 0 0 4 5 6’ 0 0 6 7 Поддиагональные элементы меняются в процессе работы алгоритма 8.2.3 следующим обра¬ зом: Итерация а21 032 1 1.6817 3.2344 0.8649 2 1.6142 2.5755 0.0006 3 1.6245 1.6965 Ю-13 4 1.6245 1.6965 сошелся 5 1.5117 0.0150 6 1.1195 ю-9 7 0.7071 8 По завершении вычислений мы найдем Х(А) = {— 2.4848, 0.7046, 4.9366, 12.831}. Как и в несимметричном QR-алгоритме, вычисленные собственные значения £4, полученные при помощи алгоритма 8.2.3, являются точными собственными значе¬ ниями некоторой матрицы, близкой к А> т.е. Qj>(A + £)6о ~ diag(A,4), где QoQ0 = f и I) £*112 « и || А || 2. Однако в отличие от несимметричного случая мы можем утверждать (благодаря свойству 8.1.3), что абсолютная погрешность каждого £4 мала в том смысле, что |Х4 — Х, | а и \\ А ||2. Если (5 = [#lfвычисленная мат¬ рица ортогональных собственных векторов, то точность q{ зависит от отделенное™ от остального спектра. См. теорему 8.1.7. Если требуются все собственные значения и несколько собственных векторов, то накапливать матрицу Q в алгоритме 8.2.3 нецелесообразно. Вместо этого необхо¬
382 Г4. £. Симметричная проблема собственных значений димые собственные векторы можно искать обратными итерациями с матрицей Т. Если требуется только несколько собственных значений и собственных векторов, то лучше использовать некоторые специальные методы, описанные в § 8.4. Задаче Г и» X П 8.2.1. Пусть матрица А = I вещественная, и пусть мы выполнили следующий _ _ Г iv х | QR-шаг со сдвигом: А — zl = URt А = RU + zl. Показать, что если А = I . _ I, то w = w + х2 (*v — z)!\_(w — z)2 4* х2], Z = 2 — X2 (w — z)/[(* — z)2 + X2], x = - x*/[(w - z)2 + X2]. 8.2.2. Предположим, что матрица 4eR" * "-симметричная и положительно определенная, и рассмотрим следующие итерации: А0 = А for к = 1,2,... Ак_! « GkGk (Холецкий) Ak = GlGk end Г a bl (а) Показать, что эти итерации сходятся. (Ь) Показать, что если матрица Л = I ^ I с а^ с имеет собственные значения Х1'^Х2'^ 0, то матрицы Ак сходятся к diag (Xj, Х2). 8.2.3. Пусть матрица Л е R" * " кососимметричная (АТ = — А). Показать, как конструиро¬ вать матрицы Хаусхолдера Plt ..., Ря-2, так, чтобы матрица (Рг... Ря _ 2)т A (Pt... РЛ _ 2) была трехдиагональной. Сколько флопов требует ваш алгоритм? 8.2.4. Пусть матрица Ае С" * " эрмитова. Показать, как конструировать унитарную матри¬ цу Q, так, чтобы матрица 0й A Q = Г была вещественной, симметричной и трехдиагональной. Г В -Cl 8.2.5. Показать, что если матрица А = В A- iC эрмитова, то матрица М « I ^ ^ I-сим¬ метричная. Сравнить собственные значения и собственные векторы матриц А и А/. 8.2.6. Переписать алгоритм 8.2.2 для случая, когда матрица А хранится в двух векторах длины п. Обосновать приведенное число флопов.. Замечания и литература к § 8.2 Трехдиагонализация симметричной матрицы обсуждается в работах Gibbs N.E. and Poole W.G., Jr. (1974). "Tridiagonalization by Permutations”, Comm. ACM 17, 20-24. Martin R.S. and Wilkinson J.H. (1968a). "Householder’s Tridiagonalization of a Symmetric Matrix”, Numer. Math. 11, 181-95. See also HACLA, pp. 212-26. Schwartz H.R. (1968). "Tridiagonalization of a Symmetric Band Matrix”, Numer. Math. 12, 231-41. See also HACLA, pp. 273-83. Первые две из них содержат алгольные программы. Алгольные процедуры для явного и неявного трехдиагонального QR-алгоритма даны в Bowdler Н., Martin R.S., Reinsch С., and Wilkinson J.H. (1968). "The QR and QL Algorithms for Symmetric Matrices”, Numer. Math. 11, 293-306. See also HACLA, pp. 227-40. Dubrulle A., Martin R.S., and Wilkinson J.H. (1968). "The Implicit QL-Algorithm", Numer .Math. 12, 377-83. See also HACLA, pp. 241-48. QL-алгоритм идентичен QR-алгоритму за исключением того, что на каждом шаге матрица Т—XI раскладывается в произведение ортогональной матрицы и верхней треугольной матрицы. Другие статьи, касающиеся этих методов, включают следующий список:
83. Вычисление SVD 383 Stewart G.W. (1970). ’’Incorporating Original Shifts into the QR Algorithm for Symmetric Tridiagonal Matrices”, Comm. ACM 13, 365-67. . Dubrulle A. (1970). ”A Short Note on the Implicit QL Algorithm for Symmetric Tridiagonal Matrices”, Numer. Math. 15, 450. Распространение этих алгоритмов на эрмитовы и косоэрмитовы матрицы обсуждается в Mueller D. (1966). "Householder’s Method for Complex Matrices and Hermitian Matrices” Numer. Math. 8, 72-92. Ward R.C. and Gray L. J. (1978). "Eigensystem Computation for Skew-Symmetric and A Class of Symmetric Matrices” ACM Trans. Math. Soft. 4, 278-85. Свойства сходимости алгоритма 8.2.3 детально рассматриваются в Lawson, Hanson (SLSX арр. В, так же, как и в работах Dekker Т. J. and Traub J. F. (1971). ’The Shifted QR Algorithm for Hermitian Matrices”, Lin. Alg. and Its Applic. 4, 137-54. Hoffman W. and Paiiett B.N. (1978). ”A New Proof of Global Convergence for the Tridiagonal QL Algorithm”, SIAM J. Num. Anal. 15, 929-37. Wilkinson J. H. (1968b). ’’Global Convergence of Tridiagonal QR Algorithm With Origin Shifts”, Lin. Alg. and Its Applic. 1, 409-2Q. Анализ этого метода в случае, когда его применяют для нормальных матриц, смотри в Huang С. Р. (1981). ”Оп the Convergence of the QR Algorithm with Origin Shifts for Normal Matrices”, OMA J. Num. Anal. 1, 127-33. В число интересных статей, касающихся сдвигов в трехдиагональном QR-алгоритме, входят Bauer F.L. and Reinsch С. (1968). "Rational QR Trabsformations with Newton Shift for Symmetric Tridiagonal Matrices”, Numer. Math. 11, 264-72. See also HACLA, pp. 257-65. Stewart G.W. (1970) "Incorporating Origin Shifts into the QR Algorithm for Symmetric Tridiagonal Matrices”, Comm. Assoc. Mach. 13, 365-67. Симметричность не единственный пример структуры, которая может быть учтена в QR- алгоритме. Другие специализированные варианты QR-алгоритма включают Byers R. (1983) "Hamiltonian and Symplectic Algorithms for the Algebraic Riccati Equation”, PhD Thesis, Center for Applied Mathematics, Cornell University. Byers R. (1986). ”A Hamiltonian QR Algorithm”, SIAM J.Sci. and Stat.Comp. 7, 212-229. Gragg W.B. (1986X”The QR Algorithm for Unitary Hessenberg Matrices”, J. Comp. Appl. Math. 16, 1-8. Van Loan C. (1984). ”A Symplectic Method for Approximating All the Eigenvalues of a Hamiltonian Matrix”, Lin. Alg. and Its Applic. 61, 233-252. Возможность параллельного вычисления по алгоритмам этого раздела обсуждается в Lo S., Philippe В., and Sameh A. (1987). ”A Multiprocessor Algorithm for the Symmetric Tridiagonal Eigenvalue Problem”, SIAM J. Sci. and Stat. Comp. 8, sl55-sl65. Chang H.Y. and Salama M. (1988). ”A Parallel Householder Tridiagonalization Stratgcm Using Scattered Square Decomposition”, Parallel Computing 6, 297-312. 8.3. Вычисление SVD Существуют важные связи между сингулярным разложением матрицы А и раз¬ ложениями Шура симметричных матриц АтА, ААТ и ^ q J- В самом деле, если UTAV= diag(o„...,o„) есть SVD матрицы AeRm * "(m > «), то Ут (АТА) У= diag (о?,о£) е R” х " (8.3.1)
384 Гл. 8. Симметричная проблема собственных значений UT(AAT)U = diag(<r?,...,<r2,0:_0)€irxm. (8.3.2) Кроме того, если m-n U = [ Ut 1/2] п т — п и мы определим ортогональную матрицу Q е R*m + ") * (m + «) как о = — \v v 0 1 -I/, -и, фигУ ТО [О АТ 1 А О I Q - diag(<T1,...,<rn,-<rl,...,-<Tra, 0,...,0 ). т—п Эти связи с симметричной проблемой собственных значений позволяют нам приспособить математические и алгоритмические разработки из двух предыдущих разделов к проблеме сингулярных значений. 8*3.1* Теория возмущения и свойства Сначала мы установим некоторые результаты, касающиеся возмущения SVD на основе теорем из § 8.1. Напомним, что ст-(Л) означает *-е наибольшее сингулярное число матрицы А. Теорема 8.3.1. Если /4eRm х п, то для к = 1 :min {т, п} уТАх || Ах || 2 сть(Л)= шах min-————— = max min——-—. dim(S) = fc xeS || x ||2 \\y II 2 dim(S) = * xeS || X || 2 dim (T) = fc y€T Заметим, что в этом выражении S ^ R" м 7 с Rm - подпространства. Доказательство. Крайняя правая характеризация следует из теоремы 8.1.2, при¬ мененной к матрице АТА. Остальную часть доказательства мы оставляем в качестве упражнения. □ Следствие 8.3.2. Если А и А + Е~матрица из R*1 х ” с т^п. то при к= \ :п справедливы неравенства \сук(А^Е)-ак(А)\^а1(Е)= \\Е\\2. Доказательство. Применить следствие 8.1.3 к матрицам [ОЛП Го (А + Е)Т1 Ь О J И [а+ Е О _Г Пример 8.3.1. Если 1 4 1 4 2 5 и А + Е = 2 5 3 6 3 6.01
8.3. Вычисление SVD 385 то с(Л) = {9.5080, 0/7729} и о (А + £) = {9.5145, 0.7706}. Ясно, что при /=1:2 справедливо неравенство | а,-(Л + Е) — ст,-(Л)| < 11 Е\\2 = 0.01. Следствие 83.3. Пусть А = [а ^ ..., ял]еКт х п есть разбиение матрицы на столбцы и п. Если Аг — [а1л..., дг], то при г = \ :п — 1 имеем <*i (Ar+i) 2* <гА (А,) ^ а2 Иг+,) > ^ <уг(Аг+ t) > стг (Ar) ><уг+1(А,+ 1). Доказательство. Применить следствие 8.1.4 к матрице АТА. □ Этот последний результат говорит о том, что при добавлении столбцов к матрице наибольшее сингулярное число возрастает, а наименьшее сингулярное число убывает. Пример 83.2. а(Л,)= {7,4162} о(А2) = {19,5377; 1,8095} с(Аъ) = {35,1272; 2,4654; 0,0000} , что подтверждает следствие 8.3.3. Следующий результат является теоремой Виландта- Хоффмана для сингулярных чисел: Теорема 83.4. Если А и А + Е принадлежат Rm * п и т ^ п, то ^(ок(Л + Е)-ск(А))2^\\ЕП- 1 ГО АТ1 Доказательство. Применить теорему 8.1.5 к матрицам I ^ q и Г° <^+£Па Ы + £ 0 J Пример 8.3.3. Если I 6 И г 2 7 12 3 8 13 => 4 8 14 5 10 15 1 4 1 4 2 5 и А + Е = 2 5 3 6 3 6.01 2 £ (а*(Л + £) - о*{А))2 = 0.472 у 1(Г* < 1СГ4 = \\E\\2F. k= 1 См. пример 8.3.1. Мы будем говорить, что fc-мерные подпространства S я R" и Тс Rm образуют пару сингулярных подпространств матрицы A eRw х пЛ если из xgS и уеТ следует, что АхеТ к ATyeS. Следующий результат касается возмущения пар сингулярных подпространств. 13 63
386 Гл. 8. Симметричная проблема собственных значений Теорема 8.3.5. Пусть даны матрицы Л, EeRm * пу и пусть матрицы Ve R" *я и UeRm * т ортогональные. Предположим, что V=IK V2] V = [U> l/2] к n — к к т — к и range (Vt) и range (U х) образуют пару сингулярных подпространств матрицы А. Пусть Ац 0 1 0 A 22J к п-к Еп ^12] E2i *22J к п — к и г = || [Е2\Е\г~\ || F. Предположим, что II Е: 22 II 2 ' О < 5 = min |ст-7| - ||Яц ||2 стеа(Ли) уеа(Л22) Если е/8 < 1/2, то существуют матрицы Ре* к и QeR^m_^ * удовлетво¬ ряющие неравенству "С1 такие, что range (К, + V2Q) и range (Ux + U2P) являются парой сингулярных под¬ пространств матрицы А + Е. Доказательство. См. [Stewart, 1973в], теорема 6.4. □ Грубо говоря, эта теорема утверждает, что изменения порядка 0(e) в матрице А могут вызвать изменения сингулярных подпространств порядка е/S, где 8-мера изолированности соответствующих сингулярных чисел. Пример 8.3.4. Матрица А = diag (2.000, 1.001, 0.999) eR4 4 3 имеет пары сингулярных под¬ пространств (span {i?,}, span {«J), /=1.2, 3, где vt - е\д) и ы, = е\А\ Пусть А + Е = Соответствующие столбцы матриц = [М2Й з] = ^=[е^2й,] = 2.000 0.010 0.010 0.010 1.001 0.010 -0.010 0.010 0.999 0.010 0.010 0.010 0.9999 -0.0144 0.0007 0.0101 0.7415 0.6708 0.0101 0.6707 -0.7616 0.0051 0.0138 -0.0007 0.9999 -0.0143 0.0007 0.0101 0.7416 0.6708 0.0101 0.6707 -0.7416
8.3. Вычисление SVD 387 определяют пары сингулярных подпространств матрицы А + Е. Заметим, что пара (span {tfj, span (dj) близка к (span {^}, span (wj) при i = 1, но не при / = 2 и 3. С другой стороны, пара сингулярных подпространств (span {02, 0Э}, span {й2* tf3}) близка к (span {v2. v$}, span {и2, w3}). 8.3,2. SVD-алгоритм Теперь мы покажем, как некоторый вариант QR-алгоритма можно использовать для вычисления SVD матрицы Ае Rm * п с п. На первый взгляд это кажется очевидным. Уравнение (8.3.1) наводит на мысль, что мы можем • Сформировать матрицу С = АТА. • Использовать симметричный QR-алгоритм для вычисления V\CVX — diag (су*2). m Применить QR-разложение с выбором ведущего элемента по столбцу к мат¬ рице AVl9 получая Ur(AVl)Tl = Я. Поскольку матрица Я имеет ортогональные столбцы, матрица UTA(VlYl) диаго¬ нальная. Однако, как мы видели в примере 5.3.1, формирование матрицы АтА может привести к потере точности. В данном случае ситуация не совсем такая же плохая, поскольку для вычисления матрицы U используется исходная матрица А. Более предпочтительный метод вычисления SVD описан в работе Голуба и Кахана [Golub, Kahan, 1965]. Их алгоритм находит матрицы U и Годновременно, неявно применяя симметричный QR-алгоритм к матрице АТА. Первый шаг состоит в приведении матрицы А к верхней двухдиагональной форме посредством алго¬ ритма 5.4.2: UlAVB = в1 о_Г в = dl h О d2 О d. eR" Таким образом, остается вычислить SVD матрицы В. С этой целью рассмотрим применение QR-uiara с неявным сдвигом (алгоритм 8.2.2) к трехдиагональной матрице Т — Вт В: Т(т :п,т:п) т = и — 1, Вычислить собственное значение X подматрицы Г<£ djm ] ldjm Я + di J’ охватывающей элемент (ft + /£. • Вычислить величины сх = cosfGJ и sx — sinfGj), такие, что L —*i ej L djx J Lo_T и положить Gx = (7(1, 2, вх). • Вычислить вращения Гивенса G2, Gn-15 такие, что если Q - G1...Gn_1, то матрица QTTQ трехдиагональная и Qex = Gxex.
388 Гл. 8. Симметричная проблема собственных значений Заметим, что эти вычисления требуют явного формирования матрицы ВТВ, которое, как мы видели, является нежелательным с вычислительной точки зрения. Предположим, что вместо этого мы применяем указанное выше вращение Гивенса Gv непосредственно к матрице В. Применительно к случаю п = 6 это дает В ♦— BG\ = X X 0 0 0 0 + X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X Затем мы можем определить вращения Гивенса Ux, V2, U2, K-i> Un.u перегоняющие нежелательный ненулевой элемент в нижнюю часть двухдиагонали: В uj в = В <- BV-2 = в X X + 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X X 0 0 0 0 0 X X 0 0 0 0 + X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X X 0 0 0 0 0 X X + 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 0 X и^так далее. Это процесс закончится появлением новой двухдиагональной матрицы В, связанной с В следующим образом: В = (VTn.,... UJ) B(Gг У2... К.,)= UTBV. Каждая матрица У{ имеет вид Vt = G(i, i + 1, 0Д где / = 2:п — 1; следовательно, Vel~Qel. В силу теоремы о неявном Q мы можем утверждать, что матрицы Ки Q в основном равные. Таким образом, мы можем неявно выполнять переход от Т к Т= FB, работая непосредственно с двухдиагональной матрицей В. Конечно, для этого требуется, чтобы трехдиагональные матрицы были непри¬ водимыми. Поскольку поддиагональные элементы матрицы ВТВ формируют вели¬ чины di-i и f, понятно, что мы должны убедиться в отсутствии нулей в двух¬ диагональной ленте. Если fk = 0 при некотором к, то
8.3. Вычисление SVD 389 *=Г*‘ °1* Lo в2 J я -, к п — к и исходная SVD-проблема расщепляется на две меньшие задачи с матрицами Вх и Вг. Если dk = 0 при некотором /с, то умножением на последовательность преобразований Гивенса можно обнулить /*. Например, если п = 6 и к = 3, то вращением строк в плоскостях (3, 4), (3, 5) и (3, 6) мы можем обнулить элементы третьей строки: В = X X 0 0 0 0 ' X X 0 0 0 0 ■ 0 X X 0 0 0 0 X X 0 0 0 0 0 0 X 0 0 (3.4) 0 0 0 0 + 0 0 0 0 X X 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 X X 0 0 0 0 0 X 0 0 0 0 0 X X X 0 0 0 0 ' X X 0 0 0 0 ‘ 0 X X 0 0 0 0 X X 0 0 0 0 0 0 0 0 + (3.6) 0 0 0 0 0 0 0 0 0 X X 0 0 0 0 X X 0 0 0 0 0 X X 0 0 0 0 X X 0 0 0 0 0 X 0 0 0 0 0 X (3,5) Таким образом, мы можем осуществлять расщепление всякий раз, когда/х х = О или d{ = 0. Алгоритм 8.3.1 (SVD-шаг Голуба-Кахана). Для заданной двухдиагональной матри¬ цы BeRw х ”, не имеющей нулей на главной диагонали или наддиагоналщ следую¬ щий алгоритм записывает в матрицу В двухдиагональную матрицу В = UTBV, где О и V- ортогональные матрицы и матрица Гв основном та ортогональная матрица, которая могла бы быть получена применением алгоритма 8.2.2 к матрице Т = ВТВ, Пусть р-собственное значение нижней угловой 2x2 подматрицы матрицы Т — ВТВ, охватывающей элемент /ял. У = *и “И z= t12 for к = 1: и — 1 Определить с — cos (0) и s — sin (0), такие, что [* 0] В = BG(k, к + 1, 0) У = z = bk+L£ Определить с = cos (0) и s = sin (0), такие, что L :ГИ=а В = G(k, к -I- 1, ЩТВ iffc < п — 1 У = ii Z = Ьк£ + 2 end end
390 Га. 8. Симметричная проблема собственных значений Эффективная реализация этого алгоритма хранит диагонали и надциагонали мат? рицы В в векторах а(\:п) и /(1:л— 1) и требует 30л флопов и 2п вычислений квадратных корней. Накопление матрицы U требует блт флопов. Накопление матрицы V требует 6л2 флопов. Обычно после нескольких вышеописанных SVD-итераций надциагональный эле¬ мент /и_ j становится пренебрежимо малым. Критерий малости внутренних эле¬ ментов ленты матрицы В обычно имеет вид l/il««<!4l + l4*il>. 141 ««1*11. где с- малая величина порядка машинной точности, а || * ||- некоторая удобная для вычислений норма. Объединение алгоритма 5.4.2 (двухдиагонализация), алгоритма 8.3Л, и упомя¬ нутого способа расщепления дает Алгоритм 8.3.2 (SVD-алгоритм). Для заданных матриц ЛеК"х л{т ^ п) и 8-малой величины порядка машинной точности, следующий алгоритм записывает в матрицу А матрицу UTAV= D + Е, где 1/eR* * п ортогональная, FeRft * * ортогональная, DeR*”** диагональная матрицы, а матрица Е удовлетворяет приближенному равенству \\Ег ||2 « и|| А ||2. Используя алгоритм 5.4.2, выполнить двухдиагоналнзацию B^(ul...uyA{Vl...K-2) until q ~ п Положить au+i равным нулю, если |nu+il <£(1«й1 + l^« + i.«+i I) для всех / = 1 :п — 1. Найти наибольшее q и наименьшее р> такие, что если Ви 0 0 0 Вгг 0 0 0 В: р n-p-q Я то подматрица диагональная, а подматрица В2 2 имеет ненулевую над- диагональ. if q < п if некоторый диагональный элемент в В12 равен нулю, то обнулить над диаго¬ нальные элементы той же строки. else Применить алгоритм 83.1 к В22, * = diag(fJpi U, l9+m-n)rBdiag[Ipy V, lq) end end end Объем вычислений этого алгоритма и его вычислительные свойства обсуждались в § 5.4.5 и § 5.5.8.
83. Вычисление SVD 391 Пример 8,35. Если алгоритм 8.3.2 применить к матрице 110 0 0210 0 0 3 1 ' 0 0 0 4 то нашшагоыальные элементы будут сходиться к нулю следующим образом: Итерацил 0(|аг1[) 0(|а32|) 0(|*4з1) 1 10и 10и 10и 2 10° 10° 10° 3 10° 10° 10° 4 10° 10-1 10-2 5 10° иг1 10“* 6 10° 10"1 Ю-27 7 10° 10-1 сошелся 8 10° 10-4 9 ю~1 10“и 10 10”1 сошелся 11 12 10-1* 13 сошелся Наблюдается кубическая сходимость. в терминах сингулярных Задачи 8.3.1. Показать, что если Bef? х "-верхняя двух диагональная матрица, имеющая кратное сингулярное значение, то В должна иметь нуль на главной диагонали или наддиагокали. ГО 8.3.2. Получить формулу для собственных векторов матрицы I I_А 0 векторов матрицы АеИт *й, где т ^ л. 8.3.3. Дать алгоритм приведения комплексной матрицы А к вещественной двухдиагональной форме, используя комплексные преобразования Хаусхолдера. 8ЛА Связать сингулярные числа и векторы матрицы А = В + iC (Bt Се FtT * ") с сингулярными Г В -С 1 числами и векторами матрицы I I. 83.5. Закончить доказательство теоремы 8.3.1. Замечания и литература к § 8.3.1 SVD и его математические свойства обсуждаются в Amir-Moez A.R. (1965). External Properties of Linear Transformations and Geometry of Unitary Spaces, Texas Tech University Mathematics Series, no. 243, Lubbock, Texas. Stewart G.W. (1973b). "Error and Perturbation Bounds for Subspaces Associated with Certain Eigenvalue Problems*, SIAM Review 15, 727-64. Wedin P. A. (1972)l "Perturbation Bounds in Connection with the Singular Value Decomposition", BII 12, 99-111. Две последние работы посвякцены устойчивости SVD разложения. К другим работам, связанным с устойчивостью сингулярных чисел, относятся
392 Гл. 8. Симметричная проблема собственных значений Ruhe А. (1975). ”On the Closeness of Eigenvalues and Singular Values for Almost Normal Matrices”, Lin.Alg. and Its Applic. 11, 87-94. Stewart G. W. (1979). ”A Note on the Perturbation of Singular Values”, Lin.Alg. and Its Applic. 28, 213 16. Stewart G. W. (1984). "A Second Order Perturbation Expansion for Small Singular Values”, Lin.Alg. and Its Applic. 56, 231-236. Идея приспособить симметричный QR-алгоритм к вычислению SVD впервые появилась в работе Golub G. Н. and Kahan W. (1965). ”Calculating the Singular Values and Pseudo-Inverse of a Matrix”, SIAM J. Num. Anal. Ser. В 2, 205-224. а первая работающая программа в Businger P. A. and Golub G. H. (1969). ’’Algorithm 358: Singular Value Decomposition of a Complex Matrix”, Comm. Assoc. Comp. Mach. 12, 564-65. Алгольная процедура из следующей статьи легла в основу SVD подпрограмм пакетов Eispack 2 и Linpack: Golub G. Н. and Reinsch С. (1970). ”Singular Value Decomposition and Least Squares Solutions”, Numer. Math. 14, 403-20. See also HACLA, pp. 134-51. Другие фортранные SVD программы приведены в [Lawson, Hanson, SLS] гл. 9 и в Forsythe G. Е., Malcolm M. and Moler С. В. (1977). Computer Methods for Mathematical Computations, Prentice-Hall, Englewood Cliffs, NJ. Интересные алгоритмические разработки, связанные с SVD, появились в CuppenJ.J. М. (1983). ”The Singular Value Decomposition in Product Form”, SIAM J. Sci. and Stat.Comp. 4, 216-222. Dongarra J.J. (1983). ’’Improving the Accuracy of Computed Singular Values”, SIAM J.Sci. and Stat.Comp. 4, 712-719. Van Huffel S., Vandewalle J., and Haegemans A. (1987). ”An Efficient and Reliable Algorithm for Computing the Singular Subspace of a Matrix Associated with its Smallest Singular Values”, J.Comp. and Appl. Math. 19, 313-330. SVD имеет много приложений в статистике. Смотри Hammarling S.J. (1985). ’The Singular Value Decomposition in Multivariate Statistics”, ACM SIGNUM Newsletter 20, 2 25. Напомним об установленной в задаче 4.2.9 связи между полярным разложением А = QP и SVD матрицы А = U Т. VT. Конечно, алгоритм 8.3.2 может быть использован для вычисления Q = UVT. Однако часто предпочтительнее воспользоваться алгоритмом, описанным в Higham N.J. (1986а). ’’Computing Polar Decomposition-with Applications”, SIAM J. Sci. and Stat.Comp. 7, 1160-1174. Наконец, заметим, что были найдены некоторые специальные SVD-процедуры для матриц специальной структуры Bunse-Gerstner A. and Gragg W. В. (1988). ”Singular Value Decompositions of Complex Symmetric Matrices”, J. Comp. Applic. Math. 21, 41-54. 8.4. Некоторые специальные методы Используя богатую математическую структуру симметричной проблемы соб¬ ственных значений, можно придумать полезные альтернативы симметричному QR-алгоритму. Многие из этих методов предпочтительнее, когда требуется найти только несколько собственных значений и/или собственных векторов. Три таких метода описаны в этом разделе: бисекция, итерации с отношением Рэлея, ортого¬ нальные итерации с ускорением Ритца.
8.4. Некоторые специальные методы 393 8.4.1. Бисекция Пусть Тг означает ведущую главную подматрицу размера г х г матрицы и определены многочлены рг(х) = det(7^ — х/), г — 1 :п. Можно показать, используя обычную формулу для определителя, что при г = 2: я, если положить /70М = 1. Поскольку значение многочлена рп(х) можно оценить за О (п) флопов, его корни имеет смысл искать, используя метод бисекции. Например, если pn(y)pn(z) < 0 и у < z, то итерационный процесс end обязательно закончится с {у + z)/2 равным приближенному корню многочлена ря(х), т.е. приближенному собственному значению матрицы Г Эти итерации сходятся линейно, причем погрешность уменьшается примерно в два раза на каждом шаге. Иногда нужно вычислить /с-е максимальное собственное значение матрицы Тдля некоторой заданной величины к. Это можно сделать эффективно, используя идею бисекции и следующий классический результат: Теорема 8.4.1 (Свойство последовательности Штурма). Если трехдиагональная мат¬ рица (8.4.1) неприводимая, то собственные значения подматрицы Тг-Х строго разделяют собственные значения подматрицы Тг: Более того, если я (X) означает число перемен знака в последовательности то я(Х) равно числу тех собственных значений матрицы Т, которые меньше чем X. Здесь рг (х) - многочлены, определенные равенством (8.5.2), и считается, что рг(х) имеет отрицательный знак, если рг(Х) = 0. Доказательство. Из следствия 8.1.4 следует, что собственные значения подматрицы Tr-i нестрого разделяют собственные значения подматрицы Тг. Для того чтобы доказать, что разделение должно быть строгим, предположим, что рг (ц) = pr-1 (р) = = 0 при некоторых г и р. Тогда из (8.4.2) и предположения о неприводимости матрицы Тследует, чтор0(ц) = рх (ц) = ... — pr(\i) = 0-противоречие. Следовательно, мы должны иметь строгое разделение. Утверждение о величине я(Х) доказано в [Wilkinson, АЕР], с 300-301. □ a j Ьу by а2 0 Т= (8.4.1) 0 Рг(*) = («г “ х)рг-1 С*) - *r- iPr-i(x) (8.4.2) whiled -г|>£(|Я + |г|) Jt = О + z)/2 Мря(х)Рп O') < о Z = X else У = х end {/>о(Д рЛЧ -,рп (>•)},
394 Гл. 8. Симметричная проблема собственных значений Пример 8.4.1. Если 1-10 0 -12-10 О -1 3 -1 ’ 0 0—1 4 то Х(Г) а {0.254, 1.82, 3.18, 4.74}. Последовательность {Ро(2), Pi(2), рг(2), р3(2)} = {I, -I, -1,0, 1} подтверждает, что имеются два собственных значения, меньших, чем X. = 2. Пусть нам нужно вычислить Х,(Т). Из теоремы о кругах Гершгорина (теорема 7.2.1) следует, что Х,(Т)е[>, г], где у = min -IM-|6,--11, z= max я, + |6,| + |6j-i |, 1 < I < Л 1 < | < п если определить Ь0 = Ьп — 0. Из свойства последовательности Штурма видно, что с этими начальными данными итерации whUe|z-y|>u(|y| + |z|) Ь = (у + г)/2 if а(х) > к z = x (8.4.3) else у = х end end породят последовательность подынтервалов, которые постоянно уменьшаются вдвое, но всегда содержат Хк(Т). Првмер 8.4.2. Если (8.4.3) применить к матрице из примера 8.4.1 с к = 2, то будут вычисляться величины, показанные в табл. 8.4.1. Окончательный результат позволяет заключить, что Х2(Г)€[1.7969, 1.9375]. Заметим, что Х2(Т)* 1.82. У Z X о(х) 0.0000 5.0000 2.5000 2 0.0000 2.5000 1.2500 1 1.2500 2.5000 1.3750 1 1.3750 2.5000 1.9375 2 1.3750 1.9375 1.6563 1 1.6563 1.9375 1.7969 1 В процессе выполнения алгоритма (8.4.3) появляется информация о разложении других собственных значений. Систематически следя за этой информацией можно предложить эффективную схему вычисления «смежных» подмножеств спектра Х(Г), т.е. Хк(Т), Хк+1(Г), Хк+/(Т). См. [Barth, Martin, Wilkinson, 1967]. Если требуются отдельные собственные значения симметричной матрицы А общего вида, то необходимо выполнить трехдиагонализацию Т= UqTU09 прежде чем можно будет применять описанную выше бисекцию. Это можно сделать, используя алгоритм 8.2.1 или метод Ланцоша, рассматриваемый в следующей главе. В любом случае соответствующие собственные векторы могут быть легко найдены
8.4. Некоторые специальные методы 395 посредством обратных итераций (см. § 7.6), так как трехдиагональную систему можно решить за 0(п) флопов. В тех приложениях, где исходная матрица А уже имеет трехдиагональный вид, бисекция вычисляет собственные значения с малой относительной погрешностью, независимо от их величины. Это отличает ее от трехдиагональных QR-итераций, где для вычисленных собственных значений £, можно гарантировать только наличие малой абсолютной погрешности (£,. — X,(7i| « и [| Т||г. Наконец, можно вычислять отдельные собственные значения симметричной матрицы, используя ЬОЬт-разложение (см. § 4.2) и применяя теорему Сильвестра об инерции (теорема 8.1.12). Если А - р/ = LDLT, А * АТе есть ЬО!/-разложение матрицы А — pJ с матрицей D = diag (dv ..., dn), то число отрицательных dt равно числу собственных значений ЯДЛ), которые меньше р. Детали см. в [Parlett, SEP], с. 46. 8.4.2. Итерации с отношением Рэлея Предположим, что матрица >4eR" х п симметричная и х-заданный ненулевой вектор длины п. Простое дифференцирование показывает, что величина 1 / * *ТАх А = Г(Х) = =— Xм X минимизирует ||(Л — XI) х ||2. Скалярную величину г(х) называют отношением Рэлея вектора х. Ясно, что если х- приближенный собственный вектор, то г(лг) является разумным выбором для соответствующего ему собственного значения. С другой стороны, если X- приближенное собственное значение, то теория обратных итераций говорит нам, что решение уравнения (А — Х1)х = Ь будет почти всегда хорошей аппроксимацией собственного вектора. Объединение этих двух идей естественным образом приводит к итерациям с отношением Рэлея: х0 задан, || х0 || 2 = 1 for к - 0, 1, ... \ik = r(xk) (8.4.4) Решить уравнение (А — \ikf)zk+l относительно zk + l Хк+ 1 == Zk+if\\ Zk + 1 II 2 end Заметим, что для любого к мы имеем равенство (А + Ek)zk + i = \ikzk + i9 где матрица возмущения Ек есть Ек = — xkzk +1/|| zk+ г |||. Из теоремы 7.2.2 следует, что \\хк — Х\ < 1/||zk+i ||2 для некоторого ХеХ(Л). Пример 8.4.3. Если (8.4.4) применить к матрице 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252
396 Гл. 8. Симметричная проблема собственных значений с *0 = <1, I, 1, 1, I, 1)т/6, то к 0 153.8333 1 120.0571 2 49.5011 3 13.8687 4 15.4959 5 15.5534 Эти итерации сходятся к собственному значению X = 15.5534732737. Парлетт [Parlett, 1974в] показал, что (8.4.4) сходится глобально и что сходи¬ мость почти всегда кубическая. Мы демонстрируем это для случая п = 2. Без потери общности можем считать, что А — diag(X1, Х2) с Хг. Обозначая компоненты вектора хк следующим образом: ci+?*=1 ’ получим, ЧТО |it = XjC* + И 1 [ck/sj ] z*+‘ ^ - x2L-.vV*-l Вычисление показывает, что „Ъ с3 Ск —sk Ск+1 ~ ^+1 ~ ~Г7Г ~*ш у/Ск + Sk у/ск + sk Из этого уравнения видно, что вектор хк сходится кубически либо к подпространству span{t^}, либо к подпространству span{e2} при условии, что |cj ^ \sk\. Детали, связанные с практическим применением итераций с отношением Рэлея, можно найти в [Parlett, 1974Ь]. Интересно заметить связь между итерациями с отношением Рэлея и симмет¬ ричным QR-алгоритмом. Пусть мы применяем последний к трехдиагональной матрице Те Rn х п со сдвигом а = ejTen = tnn. Если Т— а/ = QR, то мы получим матрицу Т= RQ + а/. Из уравнения (Т— стI)Q = RT следует, что (Т- al)qn = гпяеп, где последний столбец ортогональной матрицы Q. Следовательно, если мы применим (8.4.4) с вектором х0 = епУ то xt = qn. 8.4.3. Ортогональные итерации с ускорением Рнтца Напомним метод ортогональных итераций из § 7.3: Q0eRn * р задана с QlQ0 = 1р for к = 1, 2, ... Zk = AQk-1 Zk = QkRk (QR-разложение) (8.4.5) end Пусть А-симметричная матрица с разложением Шура QTAQ = diag(Xf), где Q = \jql9 ..., qn] и \Xt\ > |>,2| > ... > \X„\. Из теоремы 7.3.2 следует, что если d= dist{Dp(A\
8.4. Некоторые специальные методы 397 range (Go)} < 1, то dist {Dp(A\ range(G*)} ^ 1 ^•р+ 1 к у/\ +# К ' где Dp(A) = span {qx,..., qp). Более того, из анализа, выполненного в § 7.3, мы знаем, что если Rk — (/$}), то Это может быть неприемлемо: низкая скорость сходимости, если собственные значения \ и Х,+ 1 имеют почти равные модули. Эта трудность может быть практически преодолена заменой матрицы Q* ее векторами Ритца на каждом шаге: Q0eRnxp задана с GoCo = !Р for k = 1, 2, ... Zk = AQk~ * QkRk = Zk (QR-разложение) sk = йшк UkSklL = Dk (разложение Шура) Qk = &Uk end Можно показать, что если Dk = diag(9?>,..., 9'/') |0Р>| > ... > I Gp > |, (8.4.6) TO ie<*> Таким образом, числа Ритца 0jfc) сходятся со значительно более предпочтительной скоростью, чем величины г}** в (8.4.5). Детали см. в [Stewart, 1969]. Пример 8.4.4. Если мы применим (8.4.6) к матрицам 100 1 1 1 1 0 1 99 1 1 0 1 — 1 12 1 и Со = 0 0 1 111 0 0 к dist{D2M),Q*} 0 0.2 X 10“* 1 0.5 х Ю“3 2 0.1 х 10“4 3 0.3 х 10“6 4 0.8 X 10“8 Ясно, что имеет место сходимость со скоростью (2/99)*.
398 Гл. 8. Симметричная проблема собственных значений Задачи 8.4.1. Пусть X есть собственное значение симметричной трехдиагональной матрицы Г. Показать, что если X имеет алгебраическую кратность к, то по меньшей мере к — 1 поддиагональных элементов матрицы Т равны нулю. 8.4.2. Пусть матрица А - симметричная и имеет ширину ленты р. Показать, что если мы выполним QR-шаг со сдвигом: А — ц/ = QR, А — RQ + р/, то матрица А будет иметь ширину ленты р. 84.3. Пусть 2?eR”х " верхняя двухдиагональная матрица с диагональными элементами d(\ :п) и наддиагональными элементами f(\ :n — 1). Предложить и доказать вариант теоремы 8.4.1 для сингулярных чисел. Замечания и литература к § 8.4 Подпрограмма бисекций есть в Eispack. Алгольная программа, на которой она основана, описана в Barth W., Martin R.S., and Wilkinson J. H. (1967). "Calculation of the Eigenvalues of a Symmetric Tridiagonal Matrix by the Method of Bisection", Numer. Math. 9, 386-93. See also HACLA, pp. 249-56. Еще один способ вычислять отдельные подмножества собственных значений дает веществен¬ ный QR-алгоритм. В этом методе сдвиг определяют, используя метод Ньютона. Это позволяет «направлять» итерацию к требуемым собственным значениям. Смотри Reinsch С. and Bauer F. L, (1968). "Rational QR Transformation with Newton’s Shift for Symmetric Tridiagonal Matrices", Numer. Math. 11, 264-72. See also HACLA, pp. 257-65. К работам, касающимся симметричного QR-алгоритма для ленточных матриц, относятся Martin R.S. and Wilkinson J. H. (1967). "Solution of Symmetric and Unsymmetric Band Equations and the Calculation of Eigenvectors of Band Matrices", Numer. Math. 9, 279-301. See also HACLA, pp. 70-92. Martin R. S., Reinsch C., and Wilkinson J. H. (1970). "The QR Algorithm for band Symmetric Matrices", Numer. Math. 16, 85-92. See also HACLA, pp. 266-72. Следующие работы посвящены методу одновременных итераций для симметричных матриц Clint М. and Jennings А. (1970). "The Evaluation of Eigenvalues and Eigenvectors of Real Symmetric Matrices by Simultaneous Iteration”, Comp.J. 13, 76-80. Rutishauser H. (1970). "Simultaneous Iteration Method for Symmetric Matrices", Numer. Math. 16, 205-23. See also HACLA, pp. 284-302. Stewart G.W. (1969). "Accelerating The Orthogonal Iteration for the Eigenvalues of a Hermitian Matrix”, Numer. Math. 13, 362-76. Литература по специальным методам для симметричной проблемы обширна. Некоторые типичные статьи даны в следующем списке: Bathe К. J. and Wilson Е. L. (1973). "Solution Methods for Eigenvalue Problems in Structural Mechanics", Int J. Numer. Meth. Eng 6, 213-26. Bender C.F. and Shavitt I. (1970). "An Iterative Procedure for the Calculation of the Lowest Real Eigenvalue and Eigenvector of a Non-Symmetric Matrix", J. Comp. Physics 6, 146-49. Gupta K.K. (1972). "Solution of Eigenvalue Problems by Sturm Sequence Method", IntJ. Numer. Math. Eng. 4, 379-404. Jenson P. S. (1972) "The Solution of Large Symmetric Eigenproblems by Sectioning", SIAM J. Num. Anal. 9, 534-45. McCormick S.F. (1972). "A General Approach to One-Step Iterative Methods with Application to Eigenvalue Problems", J. Comput Sys. Sci. 6, 354-72. Parlett B. N. (1974b). "The Rayleigh Quotient Iteration and Some Generalizations for Nonnormal Matrices", Math. Comp. 28, 679-93. Ruhe A. (1974). "SOR Methods for the Eigenvalue Problem with Large Sparse Matrices", Math. Comp. 28, 695-710.
8.5. Методы Якоби 399 Sameh A., Lermit J. and Noh К. (1975). '’On the Intermediate Eigenvalues of Symmetric Sparse Matrices”, BIT 12, 543-54. Scott D.S. (1984). "Computing a Few Eigenvalues and Eigenvectors of a Symmetric Band Matrix", SIAM J.Sci. and Stat. Comp. 5, 658-666. Stewart G.W. (1974). "The Numerical Treatment of Large Eigenvalue Problems", Proc. IFIP Congress 74, North-Holland, pp. 666-72. Vandergraft J. (1971), "Generalized Rayleigh Methods with Applications to Finding Eigenvalues of Large Matrices", Lin. Alg. and Its Applic. 4, 353-68. Проблемы собственных значений с плотными матрицами специальной структуры также допускают специальные методы. Смотри Cybenko G. and Van Loan С. (1986). "Computing the Minimum Eigenvalue of a Symmetric Positive Definite Teeplitz Matrix", SIAM J.Sci. and Stat. Comp. 7, 123 -131. 8.5. Методы Якоби Методы Якоби для симметричной проблемы собственных значений в настоящее время привлекают к себе внимание, потому что они являются существенно парал¬ лельными. Во время их работы выполняется последовательность ортогонально подобных обновлений А «- QTAQ> обладающих тем свойством, что каждая новая матрица А, даже плотная, является «более диагональной», чем ее предшественник. В конце концов, внедиагональные элементы становятся достаточно малыми для того, чтобы объявить их равными нулю. После обзора основных идей, лежащих в основе метода Якоби, мы разработаем параллельную процедуру Якоби, которая годится для кольцевой многопроцессор¬ ной системы. Все процедуры Якоби для симметричной проблемы собственных значений из этого раздела имеют SVD-аналоги. 8.5.1. Идея метода Якоби Идея, лежащая в основе метода Якоби, состоит в том, чтобы систематически уменьшать величину off(A) In я -JE 14. V i=i у=1 it* т.е. «норму» внедиагональных элементов. Средством для осуществления этого являются вращения вида 1 о о о о о о 1 Р ч которые мы будем называть вращениями Якоби. Вращения Якоби не отличаются от вращений Гивенса, ср. с § 5.1.8. Мы пошли в этом разделе на изменение названия в честь автора метода.
400 Гл. 8. Симметричная проблема собственных значений Основной шаг в процедуре Якоби включает (1) выбор пары индексов (р, q\ удовлетворяющих неравенству 1 < р < q < я, (2) вычисление пары косинус-синус (с, s) такой, что матрица \ь„ ь -]Jc ЛГК„ О Г с л Lbqp bwJ L-s cj Laqp awJL-5 cj диагональная, и (3) запись матрицы B = JTAJ в матрицу Ау где J = J(p, q, в). Заметим, что матрица В совпадает с матрицей А, кроме строк и столбцов с номерами р и q. Более того, так как норма Фробениуса сохраняется при ортогональных преобразованиях, мы находим, что а\р + а\я + 2в2, = Ь2рр + Ь2ЯЯ + 2Ь2ря = Ь2рр + Ь2т, и, следовательно, off (В)2 = II В Ilf — 1« i — 1 = М IIF ~ £ ali + (flpp + а\я - fc2„ - Ь2Я) 1=1 = о!Т(Л)2 — 2ajq. В этом смысле матрица А становится ближе к диагональной форме на каждом шаге метода Якоби. Прежде чем обсуждать, как может быть выбрана пара индексов (р, q)> давайте рассмотрим фактические вычисления, связанные с (р, ^-подзадачей. 8,5.2. Симметричное разложение Шура размера 2x2 Сказать, что мы диагонализовали матрицу (8.5.1), это сказать, что 0 = Ьрч = ам(с2 - j2) + (арр - аяя)cs. (8.5.2) Если ам = 0, то мы сразу берем (с, лг) = (1, 0). Иначе, полагаем т = -п и t = s!c 2 аря и из равенства (8.5.2) делаем вывод, что t — tg(0) является решением квадратного уравнения *2 + 2т t- 1 =0. Оказывается, важно выбрать наименьший из двух его корней sign(r) / = —/1=, (8.5.3) |т| + уггл после чего величины с и s могут быть найдены по формулам с = 1 Д/1 + s = tc. (8.5.4) Выбор t равным наименьшему из двух корней гарантирует, что 101 < я/4 и имеет место эффект минимизации разности матриц В и А, так как || В - А ||} = 4(1 - с) £ (afp + а?,) + 2a2M/c2. t= 1 i±P>4
8.5. Методы Якоби 401 Мы подведем итог 2x2 вычислениям следующим образом: Алгоритм 8.5.1. Для заданной симметричной матрицы А размера «х«и целых р и q, удовлетворяющих неравенствам 1 < р < q < п, этот алгоритм вычисляет пару ко¬ синус-синус (с, s), такую, что если В = J{p, q, Q)TAJ(p, q, 0), то Ь= 0. function: (с, s) = syitLsdiur2 (A, p, q) if A (p, q) Ф 0 т = {A{p, q) - A(p, p))/(2A (p, q)) t = sign(r)/(|т| + у/l + т2); с = 1 /УГ+ /2; else с = I; 5* = 0 end end sym.schur2 8.5.3. Обновления в методе Якоби Как было замечено выше, когда решают (р, ^-подзадачу, меняются только строки и столбцы с номерами р и q. После того, как процедура sym.schur2 определила вращение размера 2x2, обновление A*- J(p, q, tyTAJ{p, q, 0) может быть выполнено за Ьп флопов, если использовать симметрию. 8.5.4. Классический алгоритм Якоби Теперь мы обратим внимание на определение подзадач, т. е. выбор пары {р, q). С точки зрения максимизации изменения величины off (Л) в (8.5.2), имеет смысл выбирать пару (р, q) так, чтобы величина apq была максимальной. Это составляет основу классическою алгоритма Якоби. Алгоритм 8.5.2 (Классический алгоритм Якоби). Для заданной симметричной мат¬ рицы А е Rn х п и погрешности tol > 0 этот алгоритм записывает в матрицу А матрицу VtAV9 где матрица V ортогональная и off(VTAV) ^ tol || A ||,. /я; eps = tol\\A\\F while off (4) > eps Выбрать индексы p и q, такие, что 1 <Р < q < n и \aM\ = max^/lflij) (c, s) = sym.schur2 (A, p9 q) A = J(p, q, 9)T A J ip, q, 0) Из того что | apq | является максимальным внедиагональным элементом, следует, что По индукции, если А{к) означает матрицу А после к обновлений Якоби, то У— VJ{p. я. В) end где N = п(п — 1)/2. Поэтому ю (8.5.1) мы получаем оценку
402 Гл. 8. Симметричная проблема собственных значений Это означает, что классическая процедура Якоби имеет линейную скорость сходи¬ мости. Однако асимптотическая скорость сходимости этого метода значительно выше линейной. Шонхаге [Schonhage, 1964] и Ван Кемпен [van Kempen, 1966] показали, что для достаточно большого к существует константа с, такая, что 01Г(Л<*+*)«с-о1Г(Л№))2, т. е. имеет место квадратичная сходимость. В более ранней работе Хенричи [Henrici, 1958] установлен тот же результат для специального случая, когда матрица А имеет различные собственные значения. В теории сходимости итераций Якоби существен¬ но, что 101 < п/4. Помимо всего прочего, это предотвращает возможность «обмена» между близко сошедшимися диагональными элементами. Это следует из формул bpp = арр — tapq и Ьяя = ат 4- tapq, которые могут быть выведены из уравнений (8.5.1) и (8.5.3). Принято называть N обновлений Якоби чисткой. Таким образом, после доста¬ точного числа итераций квадратичная сходимость наблюдается, если проверять off (Л) после каждой чистки. Не существует строгой теории, дающей возможность предсказать число чисток, требующихся для достижения определенного уменьшения о1Т(4). Однако Брент и Люк [Brent, Luk, 1985] обосновали эвристически, что число чисток пропорцио¬ нально log (л), и это, по-видимому, согласуется с практикой. Пример 8.5.1. Применяя классическую итерацию Якоби к матрице 1111 1 2 3 4 1 3 6 10 I 4 10 20 мы найдем, что Vucrrjfca 0(off(A)) 0 10' 1 ю1 2 10-2 3 10-11 4 10“17 8.5.5. Алгоритм циклический по строкам Недостаток классического метода Якоби в том, что обновления требуют 0{п) флопов, в то время как поиск оптимальной пары {р, q) требует О (л2) флопов. Один из путей устранить этот дисбаланс-заранее фиксировать последовательность под¬ задач, которые будут решаться. Представляется разумным проходить все подзадачи строка за строкой. Например, при п — 4 цикл имеет следующий вид (p. q) = (1,2), (1,3), (1,4), (2,3), (2,4), (3,4), (1,2), ... Этот способ упорядочения называют циклом по строкам и его реализует следующая процедура: Алгоритм 8.5.3 (Циклический метод Якоби). Для заданной симметричной матрицы А е R" х п и погрешности tol > 0, этот алгоритм записывает в матрицу А матрицу VTAVf где Г-ортогональная матрица и oft(VTAV) < tol || A ||f.
8.5. Методы Якоби 403 v=K eps = tol\\ A ||F while off(>4) > eps for p * 1 :n — 1 for q=p+ 1 :n (c, s) = sym.schiir2(i4, p, q) A =J(p, q, 6)TAJ(p, q, 0) F= FJ(p, qy 0) end end end Циклический метод Якоби также сходится квадратично. (См. [Wilkinson, 1962] и [Van Kempen, 1966]). Однако поскольку он не требует внедиагонального поиска, он значительно быстрее, чем исходный алгоритм Якоби. Пример 8.5.2. Если циклический метод Якоби применить к матрице из примера 8.5.1, то мы найдем, что Уиет/еа O(offM)) 0 10^ 1 10* 2 lo-1 3 10-в 4 10-1* 8.5.6. Барьерный метод Якоби Когда выполняется циклический метод Якоби, представляется разумным про¬ пускать уничтожение элемента ам, если его модуль меньше, чем некоторый малый параметр, зависящий от чистки, так как фактическое уменьшение величины о!Г(Л) не будет оправдывать затрат. Это приводит к так называемому барьерному методу Якоби. Детали, связанные с этим вариантом алгоритма Якоби, можно найти в [Wilkinson, АЕР], с. 277. Подходящий выбор барьеров может гарантировать сходимость. 8.5.7. Анализ ошибок округления Используя предложенный Уилкинсоном анализ ошибок, можно показать, что если нужно выполнить г чисток по алгоритму 8.5.3, то вычисленная величина d{ удовлетворяет неравенству при некотором упорядочении собственных значений А,, матрицы А. Параметр kr зависит от г слабо. 8.5.8. Сравнение с симметричным QR-алгоритмом Хотя циклический метод Якоби сходится квадратично, он, вообще говоря, не выдерживает конкуренции с симметричным QR-алгоритмом. Например, если под¬ считывать флопы, то 2 чистки метода Якоби, примерно эквивалентны полной QR-редукции к диагональной форме с накоплением преобразований. Следователь¬
404 Гл. 8. Симметричная проблема собственных значений но, алгоритм Якоби, вообще говоря, хуже. Однако, его программа очень простая по сравнению с QR-алгоритмом и, следовательно, при малых п он может быть предпочтительнее. Кроме того, если известна приближенная матрица собственных векторов V, то матрица VTAV почти диагональная,-пример ситуации, которую может использовать метод Якоби, но не QR. 8.5.9. Параллельное упорядочение Возможно наиболее интересное различие между алгоритмами QR и Якоби для симметричной проблемы собственных значений - богатый внутренний параллелизм последнего алгоритма. Для того чтобы пояснить это, положим п = 4 и сгруппируем шесть подзадач в три множества вращений следующим образом rot. set( 1)={(1,2), (3, 4)}, rot.set(2) = {(1, 3), (2,4)}, rot.set(3) = {(1, 4), (2, 3)}. Заметим, что все вращения внутри каждого из трех множеств вращений являются «неконфликтующими». То есть подзадачи (1, 2) и (3, 4) могут быть выполнены параллельно. Подзадачи (1, 3) и (2, 4) также могут быть выполнены параллельно равно как и подзадачи (1, 4) и (2, 3). В общем случае мы будем говорить, что O'l.y'i), O2J2X (Wn)> N = (л - 1)л/2 есть параллельное упорядочение множества пар индексов {(/,/)| 1 < i <j < л}, если при s = 1 : п — 1 множества вращений rot.set(s) — {(ir,jr) :r = 1 A- n(s — 1)/2 :ns/2} состоят из неконфликтующих вращений. Для этого необходимо, чтобы п было четным, что мы и будем предполагать в этом разделе. (Случай нечетного п можно охватить, окаймляя матрицу А строкой и столбцом нулей и проявляя осторожность при решении подзадач, включающих эти добавочные нули.) Хороший способ генерировать параллельное упорядочение-воспроизвести шах¬ матный турнир с п игроками, в котором каждый должен играть с каждым ровно один раз. В случае п — 8 это повлечет за собой 1 «кругов». В первом круге мы имеем следующие четыре игры 1 3 5 7 2 4 6 8 т. е. 1 играет с 2, 3 играет с 4 и т. д. Это соответствует множеству rot.set( 1) = {(1, 2), (3, 4), (5, 6), (7, 8)}. Пройдя круги 2-7, игрок 1 остановится, а игроки 2-8 начнут новый тур: rot.set(2) = {(1,4), (2,6), (3 8), (5,7)} rot.set( 3) = {(1,6), (4,8), (2,7), (3,5)} ro<.*ef(4) = {(1,8), (6,7), (4,5), (2,3)} 1 2 3 5 4 6 8 7 1 4 2 3 6 8 7 5 1 6 4 2 8 7 5 3
8.5. Методы Якоби 405 1 8 6 4 7 5 3 2 1 7 8 6 5 3 2 4 1 5 7 8 3 2 4 6 rot.set(b) = {(I» 7), (5,8), (3,6), (2,4)} roLset(6) = {(1,5), (3,7), (2,8), (4,6)} rot.set( 7) = {(1,3), (2,5), (4,7), (6,8)} Мы можем закодировать эти действия в паре целочисленных векторов top (У: п/2) и bot( 1 :п/2). В течение заданного круга top (к) играет с hot (к), к = 1 :п/2. Разбиение на пары для следующего круга достигается обновлением векторов top и hot: function: [юр, bot] = music (юр, bot) т = length (top) for к = 1 :m if* = 2 new Лор (k) = bot (I) elseif* > 2 new .top (k) = top(k — 1) end if k = m new.bot (k) = top(k) e new.bot(k) = bot(k + 1) end end top = new Лор; bot — new.bot end music Используя процедуру music, мы получаем следующую параллельную процедуру Якоби. Алгоритм 8.5.4 (Параллельный метод Якоби). Для заданной симметричной матрицы A е Rn * п и погрешности ю/ > 0 этот алгоритм записывает в матрицу А матрицу VTAVf где И-ортогональная матрица и off(VTAV) ^ ю/1| A ||f. Предполагается, что п четное. V=In eps = tol\\A\\F top = 1:2 :n; bot — 2:2: n while off(i4) > eps for set = 1: n — 1 for к = 1: n/2 p = min (Юр(*Х bot (к)) q = max (top (*), bot (*)) (c, s) = sym. schur2 (A, p, q) A = J(pf q, &)TAJ(p, q, 0) V= VJ(pf q. 0) end [top, bot] — music (top, bot) end end
406 Гл. 8. Симметричная проблема собственных значений Заметим, что цикл по к проходит через nj2 независимых, неконфликтующих подзадач. 8.5Л0. Кольцевая процедура Теперь мы покажем, как выполнять алгоритм 8.4.4 на кольцевой /^процессорной вычислительной системе. Предположим на некоторое время, что р = л/2. В любой момент процессор Ргос (р) располагает двумя столбцами матрицы А и соответ¬ ствующими столбцами матрицы V. Например, если п = 8, то столбцы матрицы А распределяют от шага к шагу как показано ниже: Ргос(1) Ргос (2) Ргос(З) Ргос (4) Step 1: [12] [3 4] [5 6] [7 8] Step 2: [1 4] [2 6] [3 8] [5 7] Step 3: [16] [4 8] [2 7] [3 5] и т.д. Упорядоченные пары обозначают индексы расположенных в процессорах столбцов. Первый индекс означает левый столбец, а второй индекс - правый столбец. Таким образом, левый и правый столбцы в Ргос(З) в течение шага 3 это 2 и 7, соответ¬ ственно. Эта терминология используется ниже в параллельной процедуре. Заметим, что между шагами столбцы сдвигают в соответствии с перестановкой, определяемой процедурой music, и что связи с ближайшими соседями сохраняются. На каждом шаге каждый процессор имеет дело с одной подзадачей. Она включает (а) вычисление ортогональной матрицы Vsma(teR2x2, решающей локальную про¬ блему Шура размера 2x2, (Ь) использование матрицы 2x2 Vsmatt для обновления двух столбцов матриц А и V, размещенных в этом процессоре, (с) пересылку 2x2 VsmaU во все другие процессоры, и (d) получение матриц Ултац от других процессоров и локальное обновление матриц А и V соответственно. Поскольку матрица А хранится по столбцам, связь между процессорами необходима для того чтобы выполнять обновления матриц V^th так как они зависят от столбцов матрицы А. Например, на втором шаге при п = 8 Ргос (2) должен получить матрицы вращения 2x2, связанные с подзадачами (1, 4), (3, 8). и (5, 7). Они поступают из Ргос(1), Ргос(З) и Ргос (4) соответственно. В общем случае, распределение матриц вращения можно удобно осуществлять посредством циркуляции матриц 2x2 Vsmail в «кару¬ сельном» режиме по кольцу процессоров. Каждый процессор копирует проходящую через него матрицу 2x2 У^ц в свою локальную память и затем обновляет размещенные в нем части матриц А и V Критерий остановки алгоритма 8.5.4 вызывает определенные проблемы в систе¬ ме с распределенной памятью, состоящие в том, что оценка величин off(-) и || A ||F требует доступа ко всей матрице А. Однако эти глобальные величины могут быть вычислены в течение одного цикла карусели. До того как начнется вращение, каждый процессор может вычислить свой вклад в || A и off(-). Эти величины могут быть затем суммированы каждым процессором, если они расположены на карусели и считываются во время каждой остановки. После одного оборота каждый процес¬ сор будет иметь собственную копию величин || A j|f и off(-). Однако для простоты в нижеследующем алгоритме мы просто останавливаемся после определенного числа чисток М. Алгоритм 8.5.5. Пусть А-симметричная матрица размера их«, Если каждый процессор р-процессорного кольца выполняет следующий набор программ, то по завершении процесса Ргос(р) разместит В(:, 2 р — 1:2р) в А[ос и К(:, 2 р — 1:2 р) в У1ос,
8.5. Методы Якоби 407 где В = V7 А V- матрица, которая получится в результате М чисток по алгоритму 8.5.4. Предполагается, что р > 2. localinit[р, р = ту.id, left, right, л, >4iwr = Л(:, 2р — 1:2р), М] ^ = /„(:,2р-1:2р) top = 1:2:л; /ю/ = 2:2:и {Установить партнеров коммутационной сети для перетасовки столбцов Lsend, Rsend = куда левый (правый) столбец передается Lrecv, Лгест = откуда новый левый (правый) столбец берется.} if р = 1 Lsend = 1; Rsend = 2, Lrecv = 1; /freer = 2 elseif р = р Lsend — p; Arenrf = p — 1; Lrecv = p — 1; Rrecv = p; else = p + 1; /frewrf — |i — 1; Lrecv = p — 1; /freer = p + I end for weep = 1: M for set = 1: л — 1 p = min (fop (p), fco/(p)); ? = max (fop (p), 6of(p)) (c, s) = sym.schnr2(Aloc([p, q\, 1:2), 1, If = [_^ *] ^loc = ^loc Kmall* Цое = ^loc Кяш» {Сдвинуть матрицы 2x2^ по кольцу.} X = р for /с = 1: р se»«l(Kmau. rightf recvCF^,. left) ifX= 1 \ = p else X = X- 1 end {Принять матрицу V3mall от Ргос(Х)} p0 = min (гор (X), bot(X)X q0 = max (rop(X), bot(X)) AbdlPo, 4oii :) = VJmatl 0oj» :)i end {Тасовка столбцов для подготовки следующего множества вращений.} send(^,oc(:, 1), Lsend); send {Лш (:, 2\ Rsend) recv(4Joc(:, 1), Lrecv); recv(,4fotf(:, 2), Rrecv) sendf^O, 1), Lsend); send(V^(:, 2), Rsend) recvt^t, 1), Lrecv); recv(Fw(:, 2), Rrecv) {top, hot] = musk (top, hot) end end Порядок команд send и recv, связанных с тасовкой столбцов существен. Читатель, должно быть, заметил почему: левый и правый столбцы оба должны быть переданы после требуемой перестановки. 8.5.11. Блочная процедура Якоби Обычно когда решают симметричную проблему собственных значений на р-процессорной системе, п»р. В этом случае может быть использована блочная
408 Гл. 8. Симметричная проблема собственных значений версия алгоритма Якоби. Блочная версия описанной выше процедуры строится непосредственно. Предположим, что п = rN и что мы разбили матрицу А размера п х п на блоки следующим образом: A jv 1 Ann Здесь каждый блок Ai}-матрица размера г х г. В блочном методе Якоби (р, д) подзадачи включают в себя вычисление разложения Шура размера 2x2: Г^^ГГ^^ЛГ^^1Г°Р,° 1 lv„VmJ LAW /«„J lv„ Lo D,J и последующее применение к матрице А блочного вращения Якоби, осуществляе¬ мого совместно матрицами Vi}. Обозначим это блочное вращение через V Легко показать, что off(VTAV)2 = о1Г(Л)2 - (2 || Ам \\1 + оП(Арр)2 + оtt(Aqq)2). Блочные процедуры Якоби имеют много интересных вычислительных аспектов. Например, существует много способов решать подзадачи и выбор оказывается существен. См. [Bischof, 1987]. 8.5.12. SVD-процедура Якоби Наконец, мы заметим, что для каждой приведенной выше процедуры Якоби для симметричной проблемы собственных значений существует соответствующий ана¬ логичный алгоритм SVD. Подзадачи в этом случае состоят в 2 х 2 SVD-вычислении, т. е. Детали см. в задачах 8.5.1 и 8.5.2. Задачи 8.5.1. (а) Пусть матрица с-Г" *1 Ly у J вещественная. Предложить устойчивый алгоритм вычисления величин с и $, удовлетворяющих равенству с2 + s2 = 1, таких, что матрица Ч-; симметричная. (Ь) Комбинируя (а) с тригонометрическими вычислениями метода Якоби, описанными выше, получить устойчивый алгоритм вычисления SVD матрицы С. (с) Часть (Ь) можно использовать для разработки Якоби-подобного алгоритма для вычисления SVD матрицы A eRnxn. Для заданной пары (p. q), где р < q9 преобразования Якоби J{p, qt 0j) и J(p, q, 62) определяют так, что если B = J(p, q, 0X)TAJ(p, q, 02), to bpq = bqp = 0. Показать, что off (Я)2 = off (A)2 -b2„- b2p.
8.5. Методы Якоби 409 Как лучше выбирать р и <7? Как можно модифицировать этот алгоритм для того, чтобы охватить случай, когда AeUmx п с т> л? 8.5.2. Предположим, что векторы х и у принадлежат R", и определим матрицу Q следующим образом: Предложить устойчивый алгоритм вычисления величин с и s, таких, что столбцы матрицы [х, у] Q взаимно ортогональны. Основная идея «односторонних» Якоби-подобных SVD- алгоритмов состоит в том, чтобы найти ортогональную матрицу V, такую, что столбцы матрицы В = А V- взаимно ортогональные. Матрица V в SVD-разложении может быть затем найдена путем нормализации столбцов. 8.5.3. Пусть задана скалярная величина у вместе с матрицей [W х! х J- Необходимо вычислить ортогональную матрицу :]■ такую, что элемент (1, I) матрицы FT AF равен у. Показать, что эти требования приводят к уравнению (w — у)гг — 2хх + (2 — у) = 0, где т = c/s. Проверить, что это квадратное уравнение имеет вещественные корни, если величина у удовлетворяет неравенству Х2 < у < X,, где и Хг - собственные значения матрицы А. 8.5.4. Пусть AeRn х п симметричная матрица. Используя задачу 8.5.3, предложить алгоритм, который вычисляет разложение QT AQ = yI + F, где б-произведение вращений Якоби, у = tracе(А)/п и матрица F имеет нулевые диагональ¬ ные элементы. Рассмотреть вопрос о единственности матрицы Q. 8.5.5. Сформулировать процедуру Якоби для (а) кососимметричной матрицы и (Ь) комплекс¬ ной эрмитовой матрицы. 8.5.6. Разобьем вещественную симметричную матрицу А размера гг х п на блоки следующим образом 1 п — 1 Пусть Q означает матрицу Хаусхолдера, такую, что если В = QTAQ, то В(Ъ :п, 1) = 0. Пусть матрица вращения J = J( 1, 2, 0) определена так, что если С = J т BJ, то ci2 = 0 и Сц ^ с22- Показать, что cu ^ а +11 и| \г. JIa Будде [La Budde, 1964] сформулировал алгоритм для симметричной проблемы собственных значений, основанный на повторении этих хаусхолдер- якобиевых вычислений. 8.5.7. Организовать процедуру music так, чтобы она требовала как можно меньше рабочей памяти. 8.5.8. Модифицировать алгоритм 8.5.5 так, чтобы он останавливался, когда off (Л) < tol\ \ А \ \F. 8.5.9. Модифицировать алгоритм 8.5.5 так, чтобы он вычислял SVD.
410 Гл. 8. Симметричная проблема собственных значений Замечав» в литература к § 8*5 Основополагающая работа Якоби является одной из самых ранних работ, обнаруженных в литературе по численному анализу Jacobi С. G.J. (1846). ”Uber ein Leichtes Verfahren Die in der Theorie der Sacularstrougen Vorkommendern Gleichungen Numerisch Aufzulosen” Crelle’s J. 30, 51-94. Предшествующий QR-алгоритму метод Якоби был стандартным методом решения плотной симметричной проблемы собственных значений. Ранние попытки улучшить его включают La Budde С. D. (1964). ’’Two Classes of Algorithms for Finding the Eigenvalues and Eigenvectors of Real Symmetric Matrices”, J.ACM 11, 53-58. Lotkin M. (1956). Characteristic Values of Arbitrary Matrices”, Quart. Appl. Math. 14, 267-75. Pope D. A. and Tompkins C. (1957). ”Maximizing Functions of Rotations: Experiments Concerning Speed of Diagonalization of Symmetric Matrices Using Jacobi’s Method”, J. ACM 4, 459-66. Вычислительные аспекты метода Якоби описаны в [Wilkinson, АЕР], с. 265, а алгольную процедуру можно найти в Rutishauser Н. (1966). ”The Jacobi Method for Real Symmetric Matrices”, Numer. Math. 9,1-10. See also HACLA, pp. 202-11. Методы Якоби также представляют интерес при использовании мнникомпьютеров, где компактность делает их привлекательными. Смотри Nash J.C. (1975). ”А One-Sided Transformation Method for the Singular Value Decomposition and Algebraic Eigenproblem”, Comp.J. 18, 74-76. Они также полезны, когда нужно диагонализовать матрицу, близкую к диагональной. Смотри Wilkinson J. Н. (1968). "Almost Diagonal Matrices with Multiple or Close Eigenvalues”, Lin. Alg. and Its Applic. 1, 1-12. Установление квадратичной сходимости классической и циклической итераций Якоби увлекло нескольких авторов BrodlieK.W. and Powell М. J.D. (1975). "On the Convergence of Cyclic Jacobi Methods” J. Inst. Math. Applic. 15, 279-87. Hansen ER. (1962). ”On Quasicyclic Jacobi Methods”, ACM J. 9, 118-35. Hansen ER. (1963). ”On Cyclic Jacobi Methods”, SIAM J.Appl.Math. 11, 448-59. Henrici P. (1958). ”On the Speed of Convergence of Cyclic and Quasicyclic Jacobi Methods for Computing the Eigenvalues of Hermitian Matrices”, SIAM J.AppLMath. 6, 144-62. Henrici P. and Zimmermann K. (1968). ”An Estimate for the Norms of Certain Cyclic Jacobi Operators”, Lin,Alg. and Its Applic. I, 489-501. Schonhage A. (1964). ”On the Quadratic Convergence of the Jacobi Process”, Numer. Math. 6, 410-12. van Kempen H.P.M. (1966). ”On Quadratic Convergence of the Special Cyclic Jacobi Method”, Numer. Math. 9, 19-22. Wilkinson J. H. (1962). "Note on the Quadratic Convergence of the Cyclic Jacobi Process” Numer. Math. 6, 296-300. Делались попытки распространить итерации Якоби на другие классы матриц и добиться соответствующих результатов в сходимости. Случай нормальных матриц рассматривается в Goldstine Н. Н. and Horowitz L. Р. (1959). "A Procedure for the Diagonalization of Normal Matrices”, J. Assoc. Comp. Mach. 6, 176-95. Loizou G. (1972). "On the Quadratic Convergence of the Jacobi Method for Normal Matrices”, Comp. J. 15, 274-76. Ruhe A. (1972). ”On the Quadratic Convergence of the Jacobi Method for Normal Matrices”, BIT 7, 305-13. Смотри также Paarderkooper M. R С. (1971). ”An Eigenvalue Algorithm for Skew Symmetric Matrices”, Numer. Math. 17, 189-202.
8.5. Методы Якоби 411 Существенно, что анализ и алгоритмические разработки, приведенные в этой работе, охватывают случай нормальных матриц без значительной модификации. Это замечание, вообще говоря, относится и к Якоби-подобным методам для SVD. Смотри Bai Z. (1988). "Note on the Quadratic Convergence of Kogbetliantz’s Algorithm for Computing the Singular Value Decomposition”, Lin. Alg. and Its Applic. 104, 131-140. Charlier J. P., Vanbegin М., Van Doorcn P. (1988). ”On Efficient Implementation of Kogbetliatz's Algorithm for Computing the Singular Value Decomposition”, Numer. Math. 52, 279-300. Charlier J. P. and Van Dooren P. (1987). "On Kogbetliatz’s SVD Algorithm in the Presence of Clusters”, Lin. Alg. and Its Applic. 95, 135-160. Forsythe G. E. and Henrici P. (1960). "The Cyclic Jacobi Method for Computing the Principal Values of a Complex Matrix”, Trans. Amer. Math. Soc. 94, 1-23. Hansen P.C. (1988). ’’Reducing the Number of Sweeps in Hestenes Method”, in Singular Value Decomposition and Signal Processing, ed. E. F. Deprettere, North Holland. Kogbetliatz E.G. (1955). "Solution of linear Equations by Diagonalization of Coefficient Matrix” Quart. Appl. Math. 13, 123-132. Paige C.C. (1986). ”On the Quadratic Convergence of Kogbetliantz’s Algorithm for Computing the Singular Value Decomposition”, Lin. Alg. and Its Applic. 77, 301 314. Van Dooren P. and Paige C.C. (1986). ”On the Quadratic Convergence of Kogbetliantz’s Algorithm for Computing the Singular Value Decomposition”, Lin. Alg. and Its Applic. 77, 301-313. Алгоритм Когбетлиантца - это в основном метод Якоби для SVD, набросок которого дан в § 8.5.12. Для матриц, не являющихся нормальными, ситуация значительно более сложная. См. Boothroyd J. and Eberlein P.J. (1969). "Solution to the Eigenproblem by a Norm-Reducing Jacobi-Type Method (Handbook)", Numer. Math. 11, 1-12. See also HACLA, pp. 327-38. Eberlein P.J. (1970). ’’Solution to the Complex Eigenproblem by a Norm-Reducing Jacobi-Type Method”, Numer. Math. 14, 232 45. See also HACLA, pp. 404-17. FrobergC.E. (1965). ”On Triangula rization of Complex Matrices by Two Dimensions! Unitary Transformations”, BII 5, 230-34. Greenstadt J. (1955). ”A Method for Finding Roots of Arbitrary Matrices”, Math. Tables and Other Aids to Comp. 9, 47-52. Hari V. (1982). ”On the Global Convergence of the Eberlein Method for Real Matrices”, Numer. Math. 39, 361 370. Huang C. P. (1975). ”A Jacobi-Type Method for Triangularizing an Arbitrary Matrix”, SIAM J. Num. Anal. 12, 566-70. Ruhe A. (1968). On the Quadratic Convergence of a Generalization of the Jacobi Method to Arbitrary Matrices”, BIT 8, 210-31. Ruhe A. (1969). "The Norm of a Matrix After a Similarity Transformation”, BIT 9, 53-58. Stewart G.W. (1985). ”A Jacobi-like Algorithm for Computing the Schur Decomposition of a Nonhermitian Matrix", SIAM J. Sci. and Stat. Comp. 6, 853-862. Метод Якоби для комплексных симметричных матриц также может быть разработан. См. Anderson P. and LoizouG. (1973). ”On the Quadratic Convergence of an Algorithm Which Diagonalizes a Complex Symmetric Matrix” J. Inst. Applic. 12, 261-71. Anderson P. and Loizou G. (1976). "A Jacobi-Type Method for Complex Symmetric Matrices (Handbook)”, Numer Math. 25, 347-63. Eberlein P.J. (1971). "On the Diagonalization of Complex Symmetric Matrices”, J. Inst. Math. Applis. 7, 377-83. Seaton J.J. (1969). "Diagonalization of Complex Symmetric Matrices Using a Modified Jacobi Method” Comp. J. 12, 156-57. Хотя симметричный OR-алгоритм, вообще говоря, значительно быстрее, чем метод Якоби, существуют особые ситуации, в которых последний метод представляет интерес. Как мы показали, на параллельных компьютерах можно выполнять несколько вращений совместно, посредством этого ускоряя уменьшение внедиагональных элементов.‘Смотри Berry М. and Sameg А. (1986). "Multiprocessor Jacobi Algorithms for Dense Symmetric Eigenvalue
412 Гл. 8. Симметричная проблема собственных значений and Singular Value Decompositions”, in Ргос. International Conference on Parallel Processing, 433-440. BischofC. H. (1987). '‘The Two-Sided Block Jacobi Method on Hypercube Architectures”, in Hypercube Multiprocessors, ed. M.T. HeaTH; SIAM Press, Philadelphia. BischofC. H. (1988). “Computing the Singular Value Decomposition on a Distributed System of Vector Processors, Cornell Computer Science Report 87-869, Ithaca, N.Y. Bischof С. H. and Van Loan C. (1986). “Computing the SVD on a Ring of Array Processors”, in Large Scale Problems, eds. J. Cullum and R. Willoughby, North Holland, 51-66. Brent R. P. and Luk F.T. (1985). “The Solution of Singular Value and Symmetric Eigenvalue Problems on Multiprocessor Arrays”, SIAM J. Sci. and Stat. Comp. 6, 69-84. Brent R. P., Luk F.T., and Van Loan C. (1985). “Computation of the Singular Value Decomposition Using Mesh Connected Processors”, J. VLSI Computer Systems 1, 242-270. Eberlein P. J. (1987). “On Using the Jacobi Method on a Hypercube”, in Hypercube Multiprocessors, ed. М. T. Heath, SIAM Publications* Philadelphia. Luk F.T. (1980). “Computing the Singular Value Decomposition in the ILLIAC IV’, ACM Trans. Math. Soft. 6, 524 39. Luk F.T. (1986). “A triangular Processor Array for Computing Singular Values”, Lin. Alg. and Its Applic. 77, 259-274. Modi J. J. and Pryce J. D. (1985). “Efficient Implementation of Jacobi’s Diagonalization Method on the DAP”, Numer. Math. 45, 443-454. Sameh A. (1971). “On Jacobi and Jacobi-like Algorithms for a Parallel Computer”, Math. Comp. 25, 579-90. Schreiber R. (1986). “Solving Eigenvalue and Singular Value Problems on an Undersized Systolic Array”, SIAM J. Sci. and Stat. Comp. 7, 441 451. Scott D. S., Heath M.T., and Ward R. C. (1986). “Parallel Block Jacobi Eigenvalue Algorithms Using Systolic Arrays”, Lin. Alg. and Its Aplic. 77, 345-356. Shroff G. and Scheiber R. (1987). “Convergence of Block Jacobi Methods”, Report 87-25, Comp. Sd. Dept., RPI, Troy, NY. 8.6. Метод «разделяй и властвуй» В этом разделе мы опишем алгоритм «разделяй и властвуй» для вычисления собственных значений и собственных векторов симметричной трехдиагональной матрицы Т = «1 6i <22 0 *п-1 fcn-l Ля Он вычисляет разложение Шура Ст 7Q = Л = diagf^,... Д„), QTQ = /, (8.6.1) склеивая вместе разложения Шура двух специальных трехдиагональных проблем вдвое меньшего размера. Каждая из этих проблем может быть определена в свою очередь парой разложений Шура вчетверо меньшего размера и т.д. Полная процедура, благодаря Донгарре и Соренсену [Dongarra, Sorensen, 1987], удобна для параллельных вычислений.
8.6. Метод «разделяй и властвуй» 413 8.6.1. Расщепление Сначала мы покажем, как матрица Тможет быть «расщеплена» на две части при помощи одноранговой модификации. Для простоты пусть п = 2т. Определим вектор |;е!Г следующим образом: ’-[&•]• (8л-2) Заметим, что для всех peR матрица Т= Т— pvvT идентична матрице Г, кроме «четырех средних» элементов: Г(т:т + 1,т:т + 1) = am Р Ьт Р@ Ът-рв ат+1-р62ш Если мы положим р0 = Ьт, то Т где -и г! + pvvj Ti = aj 6i 6i a2 0 T2 = <*т+1 ^m+1 ^m + 1 ®m+2 6„-1 bfi—l an a am = am - p и am + t , - p02. 8.6.2. Объединение разложений Шура Пусть у нас есть ортогональные матрицы Qi и Q2 размера m х т, такие, что каждая из матриц Q[ TlQl = Dt и Qj T2Q2 = f)2-диагональная. Если положить "=Гб1Ч Lo q2j TO UTTU = UT(jjl °] + pvvT^U = D + pzzT , (8.6.3)
414 Гл. 8. Симметричная проблема собственных значений где матрица диагональная и (8.6.4) Сравнивая (8.6.1) и (8.6.3), мы видим, что для эффективного синтеза этих двух разложений Шура вдвое меньшего размера требуется быстрое и устойчивое вы¬ числение ортогональной матрицы V, такой, что После того как матрица У вычислена, мы полагаем Q = 1/F, чтобы получить (8.6.1). 8.6.3. Собственная система матрицы D + pzzT К счастью, матрицу вида диагональная 4- матрица ранга один можно диаго- нализовать очень быстро. Метод опирается на некоторые базовые теоретические результаты, которые мы сейчас установим. Лемма 8.6.1. Пусть матрица D — diag^,..., dn)eRn х п обладает свойством dt > > ... > dn. Предположим, что р Ф 0 и что вектор zeR" не имеет нулевых компонент. Если то zTv Ф 0 и матрица D — XI невырожденная. Доказательство. Если ХеХф), то X = dt при некотором i и, следовательно, Поскольку р и Z| не равны нулю, мы должны иметь равенство 0 = zTv и, таким образом, Dv = Xv. Однако матрица D имеет различные собственные значения и, следовательно, uespanfe}. Но из этого следует, что 0 = zTv = zf-противоречие. Таким образом, матрицы D и D + pzzT не могут иметь общих собственных значений и zTv Ф 0. □ Теорема 8.6.2. Пусть матрица D — diag(</t,..., cQeR* х п и ее диагональные элементы удовлетворяют условию dx >... > dn. Предположим. что р Ф 0 и что вектор zeR* не имеет нулевых компонент. Если KeR" х п - ортогональная матрица, такая# что ... >Хпи [vlf..., uj, то (a) Величины Xi являются п нулями функции f(X) = 1 + р zT(D — XI)1 z. (b) Если р > 0, то Хг > dr > Х2... > Хя > dn. Если р < 0, то dt >Xt > d2> ... > dn > ХЛ. (c) Собственный вектор v{ сонаправлен с (D — XiI)~1z. Доказательство. Если ф + pzz^v = Xv9 то Мы знаем из леммы 8.6.1, что матрица D — XI невырожденная. Следовательно, УТф + pzzT)V~ А = diag^,..., Хп). (8.6.5) (D + pzzr)t? = Xv, v Ф 0, 0 = ej [ф — XI)v + p(zTv)z] = p(zru)zf. Утф + pzzT) diag^i,..., Хя) ф — XI) v + p(zrt>)z = 0. (8.6.6) v e span {ф — XI) 1 z},
8.6. Метод «разделяй и властвуй» 415 что устанавливает (с). Кроме того, если мы умножим матрицу zT(D — XI) 1 на обе части уравнения (8.6.6), то получим равенство zTv(\ + pzT(D — XT)~l z) = 0. Согласно лемме 8.6.1, zTv ф 0, и, следовательно, это равенство показывает, что если XgX(D + рzzT), то f(X) = 0. Мы должны показать, что все нули функции/являются собственными значениями матрицы D + przT и что имеет место чередование (Ь). Для того чтобы сделать это, посмотрим более внимательно на уравнения /w = i+p(_£l_ + ... + _^_)> Г(Х) = _Р((^-Х)2+" + (^-Х)2)' Заметим, что функция /монотонна между полюсами. Это позволяет нам заключить, что если р > 0, то / имеет точно п корней, по одному в каждом из интервалов Ми» ^и- l)’ Если р < 0, то функция / также имеет точно п корней, по одному на каждом из интервалов (- »Ч)> MX-i) (d2.di). В обоих случаях из этого следует, что нули функции /-это в точности собственные значения матрицы D + pvvT. □ Эта теорема наводит на мысль для вычисления матрицы V (а) найти корни ..., Хя функции / и затем (Ь) вычислить столбцы матрицы К нормализуя векторы (D — Xfiy1 z при i=l:n. До того как мы начнем рассматривать практические аспекты этих вычислений, мы покажем, что точно такому же плану можно следовать, даже если встречаются кратные dt и нулевые zt. Теорема 8.6.3. Если матрица D = diag(d1#...,^) и вектор zeRn, то существует ортогональная матрица Vl9 такая, что если v\D Vt = diag^,,..,ря) и w = V\z, то Pi > р2 > ... > \ir > pr+1 ^ ... ^ wt Ф 0 при i = 1: г и = 0 при i = r -f 1: n. Доказательство. Мы дадим конструктивное доказательство, основанное на двух элементарных операциях, (а) Пусть = dj при некотором / < j. Пусть J (/, j\ 0) есть вращение Якоби в плоскости (/, j), обладающее тем свойством, что j-я компонента матрицы J(i, у, 0)т нулевая. Нетрудно показать, что J(i, / 0)т D J (/, / 0) — D. Следовательно, мы можем обнулить компоненту вектора z, если существует кратное d{. (b) Если = 0, Zj ф 0, и / < у, то пусть Р есть единичная матрица с переставлен¬ ными столбцами i и у. Тогда матрица РТ DP-диагональная, (Рт z)f Ф 0, и (Рт z)j — 0. Следовательно, мы можем переставить все нулевые компоненты z{ «вниз». Понятно, что повторением операций (а) и (Ь) можно получить требуемую каноническую структуру. Матрица Vx является произведением матриц вращения. □ 8.6.4. Практический синтез Практическое определение разложения (8.6.5) состоит в разумном применении теорем 8.6.2 и 8.6.3. Матрица V находится после этого как произведение V— Vt V2. Ортогональную матрицу V можно получить, выполняя редукцию, указанную в
416 Гл. 8. Симметричная проблема собственных значений теореме 8.6.3. Конечно, на практике нам нужен критерий для принятия решения, когда два диагональных элемента различные и когда элемент z можно рассматри¬ вать как нулевой. Пусть tol-небольшая величина порядка машинной точности, например, tol = u(|| D ||2 + | р| || z ||2)). Определим ортогональную матрицу V1 и целое число г(1 < г ^ п), такие, что V\DVl = diag(\il9.и w = V\z с (a) — pi+1 > tol при i = 1: r — 1, (b) \Wi \ ^ tol при i = 1: г и (c) | w. | < tol при i — f + 1: п. Выполняя замещение D^-V\DVl и z+-V\zy мы придем к задаче нахождения матрицы V2 е х г, такой, что Kl(D(l:^l:r) + pz(l:r)z(l:ry)F2=diag(?L1,...,M. Замечая, что теорема 8.6.2 применима к этой подзадаче, поставим в качестве первой задачи нахождение г нулей функции Пусть р > 0. (Если это не так, заменим р на — р и D на — D.) Пусть X,-единствен¬ ный нуль функции / в открытом интервале (di9 где мы полагаем d0 = оо. Нелинейное уравнение/(>,) = 0 в интервале (diy 4-1) может быть решено с помощью очень быстрых ньютоно-подобных итераций, основанных на рациональном при¬ ближении функции / на каждой текущей итерации. Секулярное уравнение пре¬ красно устроено, и есть возможность начать ньютоновский процесс с хорошего начального приближения. Если £г- вычисленный корень секулярного уравнения, то i-й столбец матрицы V2 находится посредством нормализации вектора (D(\: f, 1: f) — — I?) ~1 z (1: t). Заметим, что V = Vx F2, где V2 = diag (P2, In _ j). Детали можно найти в работе [Dongarra, Sorensen, 1987] вместе с анализом ошибок округления, показы¬ вающего ортонормальность вычисленной матрицы К 8.6.5* Полный процесс с параллелизмом Рассмотрев операции расщепления и синтеза, мы готовы к тому, чтобы пояснить весь процесс и то, как он может быть реализован на многопроцессорной системе. Для ясности предположим, что л = 8N при некотором положительном целом N и, что выполняются три уровня расщепления. Мы можем изобразить это при помощи двоичного дерева следующим образом: Т(00) Т(01) Т(10) Т(11) /\ л /\ л Т(000) Т(001) Т(010) Т(011) Т(100) Т(101) Т(110) Т(111) Рис. 8.6.1. Вычислительное дерево. Здесь для индексов использованы двоичные коды и схемы.
8.6. Метод «разделяй и властвуй» 417 Т(Ь) Т(ЬО) Т(Ы) Рис. 8.6.2. Вершина. Рис. 8.6.2 означает, что собственная система трех диагональной матрицы Т(Ь) получается из собственных систем трехдиагональных матриц 7'(/>0) и T(b 1). На¬ пример, собственные системы N х N матриц Т(110) и Т(111) в комбинации дают собственную систему трехдиагональной матрицы Т(11) размера 2N х 2N. Для алгоритмов, имеющих древовидную структуру, всегда существует опас¬ ность, что параллелизм теряется при подъеме к корню, но в нашей задаче это не так. Для того чтобы увидеть это, предположим, что у нас есть 8 процессоров и что первая задача процессора Ргос (6) состоит в вычислении разложения Шура матрицы Т(Ь), где h = ООО, 001, 010, 011, 100, 101, 110, 111. Эта часть вычислений вполне сбалансирована и не требует межпроцессорных связей. (Мы игнорируем исчерпыва¬ ния теоремы 8.3, которые вызывают значительный дисбаланс загруженности.) На следующем уровне нужно выполнить четыре операции склейки: Т(00), Т(01), Г(10), Т(11). Однако каждое из этих вычислений изящно разделяется на части и мы можем использовать два процессора для решения каждой задачи. Например, поскольку секулярное уравнение, которое лежит в основе синтеза Т(00), известно обоим процессорам Т(000) и Т(001), то каждый из них может взять на себя получение половины всех собственных значений и соответствующих собственных векторов. Точно так же четверки процессоров могут быть использованы для решения задач Т(0) и Т(1). Все 8 процессоров могут разделиться при вычислении собственной системы матрицы Т. Таким образом на любом уровне можно достичь полного параллелизма, поскольку вычисления собственных значений/собственных векторов не зависят друг от друга. Задачи 8.6.1. Предложить алгоритм определения величин р и 0 в (8.6.3), обладающих свойством 0 е { — 1,1 } и min {| аг — р | „ | аг+ х — р |} ~ максимален. 8.6.2. Показать, что если D = diag(J, zf + z) Ф 0, /' < /, и (J (/',/, 6)' z)7 = 0, то вне- диагональная часть матрицы J(i, /,0F DJ(/, /,0) имеет норму Фробениуса, равную Idt-djUZ'Zjinzf+zj). 8.6.3. Какие связи необходимы между процессорами для части Ть? Можно ли распределить между процессорами работу, связанную с кратными */. и нулевыми г, ? 8.6.4. Если матрица Т положительно определена, следует ли из этого, что матрицы Т, и Т2 из § 8.6.1 положительно определены? Замечания и литература к § 8.6 Алгоритм, обсуждавшийся в этом разделе, детально рассмотрен в работе Dongarra J. J. and Sorensen D.C. (1987). “A Fully Parallel Algorithm for the Symmetric Eigenvalue Problem”, SIAM J. Sci. and Stat. Comp. 8, SI39-SI54. Критические аспекты этого алгоритма берут начало из следующих работ Bunch J.R., Nielsen С.P., and Sorensen D.C. (1978). “Rank-One Modification of the Symmetric Eigenproblem”, Numer. Math. 31, 31-48. Cuppen J.J. M. (1981). “A Divide and Conquer Method for the Symmetric Eigenproblem”, Numer. Math. 36, 177-95. 14 63
418 Гл. 8. Симметричная проблема собственных значений Golub G. Н. (1 973)l “Some Modified Matrix Eigenvalue Problems”, SIAM Review 15, 318-44» SVD-версии и способ перехода к общему ленточному случаю обсуждаются в Arbenz P., Gander W., and Golub G*H. (1988)* “Restricted Rank Modification of the Symmetric Eigenvalue Problem: Theoretical Considerations”, Lin. Alg. and Its Applic. 104, 75-95» Arbenz P. and Golub G. Н» (1988). “On the Spectral Decomposition of Hermitian Matrices Subject to Indefinite Low Rank Perturbations with Applications”, SIAM J* Matrix Anal* Appl. 9, 40-58. Jessup E.R. and Sorensen D.C (1988). “A Parallel Algorithm for Computing the Singular Value Decomposition”, Report 102, Mathematics and Computer Science Divison, Argomie National Laboratory, Argonne, IL. 8.7. Более общие проблемы собственных значений Часто в обобщенной проблеме собственных значений Ах = X Вх матрица А - симметричная, а матрица В-симметричная и положительно определенная* Пучки такого рода называют симметрично определенными пучками. Это свойство сохраняется при преобразовании конгруэнтности: А-ХВ (ХТАХ)-Х(ХТВХ) симметрично-определен- симметрично-определен¬ ный ный В этом разделе мы приводим различные сохраняющие структуру процедуры, решающие такую проблему собственных значений* Обсуждается также связанная с ней обобщенная проблема сингулярных значений. 8.7Д. Математические основы Хотя QZ-алгоритм из § 7*7 можно использовать для решения симметрично¬ определенной проблемы, он разрушает как симметричность, так и положительную определенность. То, что мы ищем, эхо устойчивый, эффективный алгоритм, вы¬ числяющий матрицу X, такую, что обе матрицы Хт АХ и Хт ВХ имеют «кано¬ ническую форму»* Очевидной формой, отвечающей этой цели, является диагональ¬ ная форма Теорема 8.7.1. Предположим. что А и В-симметричные матрицы размера п х п, и определим С(р) как С(р) = М + 0 “И)Д (8.7.1) Если существует некоторое це[0, 1], такое, что матрица С(ц) неотрицательно определенная и null(C(p)) = null {А) Г null (Я), то существует невырожденная матрица Ху такая, что обе матрицы ХТ АХ и Хт ВХ диагональные* Доказательство. Пусть величина 1] выбрана так, что матрица С(р) не¬ отрицательно определенная и обладает свойством null (С (р.)) = null (Л) П null (Я). Пусть QTcmQi = . d — diagк,...,4), 4 > о, -разложение Шура матрицы С(ц) и Я\ = Qt diag(£>”1/2, Если Ах =* Х[АХ1у
8.7. Более общие проблемы собственных значений 419 В *» Х\ВХг и С, = XI С(ц)Х1г то Cl = [o о] = Ml+ (1-11)*,. Так как span {^ += null^) — null (4 L) П null (Я j, то из этого следует, что матрицы At и Bt имеют следующую блочную структуру: С другой стороны, если р = 0, то nycrbZ^nZ = diagfa^... %)-разложение Шура матрицы AlL и X « Xt diag(Z, la „ *). Несложно проверить, что в этом случае также обе матрицы ХТАХ и ХТВХ диагональные. П Часто условия теоремы 8.7.1 выполняются из-за того, что или матрица А, или матрица В положительно определенная. Следствие 8.7.2, Если А — ХВеR" * я симметрично-определенный пучок матриц, то существует невырожденная матрица X — [*i,такая, что Кроме того, Ах{ — при j — 1: л, где \ Доказательство. Полагая р = 0 в теореме 8.7.1, мы видим, что симметрично-опре¬ деленный пучок может быть одновременно диагоналиэован. Остальная часть следствия легко проверяется. □ Пример 8.7,1. Если к п — к к п — к Более того, Ik = рЛп + (1 — р)Ям. Пусть р^О. Тогда, если ZTi?nZ = diag(6t, разложение Шура матрицы и мы положим X — A\diag(Z, /„_*), то XТВХ = diag(*, blci0>...,0)sDB и ХТАХ = - *Т(С(Ц) - (t - ц)В)А: = ХТАХ =diagВХ - diag 6,). И то пучок А-ХВ снмметрично-определен и Х(А> В) - {5, —1/2). Если то ХТЛХ = diag(5, -1) и ХтВХ = \4*
420 Гл. Н. Симметричная проблема собственных значений Стюарт [Stewart, 1979b] разработал теорию возмущения для симметричного пучка А — \ удовлетворяющего условию с (А, В) ~ min (хТ Ах)2 + (х7 Вх)2 > 0 . (8,7,2) II *112 * 1 Эту скалярную величину' называют числом Крауфорда пучка А — X В. Теорема 8,73. Пусть A — ХВ симметрично-определенный пучок размера пупс собственными значениями xt>x2>... ^ х„. Пусть ЕЛ и Ев - симметричные пуп матрицы, удовлетворяющие неравенству S2= \\Еа\\1^\\Ев\\1<с(А,В). Тогда {А + ЯА) — Х(В +- Ев) является симметрично-определенным пучком с собствен¬ ными значениями щ ^ ... > \хп> удовлетворяющими неравенству |arctg(^) - arctg(pc) | ^ arctg(€/r(/l,.ff)) при i = 1 :п. Доказательство. См. [Stewart, 1979Ь]. □ 8.7.2. Методы для симметрично-определенной проблемы Возвращаясь к алгоритмическим вопросам, мы прежде всего рассмотрим метод решения симметрично-определенной проблемы, который использует разложение Холецкого и симметричный QR-алгоритм. Алгоритм 8.7 Л* Для заданных матриц А = AT eR" х п и В ~ Вт eR" х ", где В-поло¬ жительно определенная ма!рица, следующий алгоритм вычисляет невырожденную матрицу X, такую, что X7 ВХ — /я и Хт AX = diag(a|,...,aM). Вычислить разложение Холецкого В = GG*, используя алгоритм 4.2.2. Вычислить матрицу С = 1 AG~ г. Использовать симметричный OR-алгоритм для вычисления разложения Шура QT CQ = diag (at,..., а„). Положить X — G~TQ. Этот алгоритм требует примерно 14 пг флопов. В практической реализации, матрицу А можно замещать матрицей С. Детали смотри в [Marlin, Wilkinson, 1968с]. Заметим, что Х(А,В) = X(Ау GGT) = X{G~1 AG~ г,/) = X(Q = {aLy...,an). Если 4| вычисленное собственное значение, полученное по алгоритму 8.7.1, то можно показать, что й£е A.(G~ 1 AG~ т 4- Е^9 где || E£ ||2 ^ и || А ||2 || В~1 ||2. Следова¬ тельно, если матрица В плохо обусловлена, то d, может быть несколько испорчено погрешностью округления, даже если а--хорошо обусловленное обобщенное соб¬ ственное значение. Проблема, конечно, в этом случае в том, что матрица С = G~1 AG~1 может иметь очень большие элементы, если матрица В и, следова¬ тельно, G, плохо обусловлена. Эту трудность можно иногда обойти, заменяя матрицу G в алгоритме 8.7.1 на матрицу где V1 BV — D разложение Шура матрицы В. Если диагональные элементы матрицы D упорядочены в порядке возрастания, то большие .элементы в матрице С будут сконцентрированы в верхнем
Я. 7. Более общие проблемы собственных шачепий 421 левом углу. Малые собственные значения матрицы С могут быть вычислены без чрезмерной погрешности округления (или таковы эвристические выводы). Дальней- шее смотри в [Wilkinson, АЕР], с. 337-38. Пример 8.7.2. Если р Д = <7<7Т, то два наименьших собственных значения пучка А — ХВ есть = - 0.6I9402940600584, а2 = 1.627440079051887. Если использовать 17-разрядную арифметику с плавающей запитой, то эти собственные значения будут вычислены с полной машинной точностью, если симметричный QR-алгоритм применять к матрице jl(D 1,2 VTAVD 1у2), где B—VDV1 разложение Шура матрицы А С другой стороны, если применяется алгоритм 8,7,1, то б, = - 0.619373517376444, дг = 1.627516601905228. Причина получения только четырех правильных значащих цифр в том, что Ю1В. Обусловленность матрицы X в алгоритме 8.7.1 иногда можно улучшить* заменяя матрицу В подходящей выпуклой комбинацией матриц А и В. Связь между собственными значениями этого модифицированного пучка и собственными значе¬ ниями исходного пучка подробно рассматривается в доказательстве теоремы 8.7.1. Другая проблема, касающаяся алгоритма 8.7.1, связана с тем, что матрица G~* AG~T* вообще говоря, плотная, даже если матрицы А и В разреженные. с>го серьезная проблема, так как многие симметрично определенные задачи, возникаю¬ щие на практике, большие и разреженные. Крауфорд [Crawford, 1973] показал, как эффективно применять алгоритм 8.7.1, когда матрицы А и В-ленточные. Однако за исключением этого случая подход, связанный с одновременной диагонализацией не практичен для больших разрежен¬ ных симметрично-определенных проблем. Альтернативная идея состоит в том, чтобы обобщить итерации с отношением Рэлея (8.4.4) следующим образом Задан вектор х0 с ||л:0||2 = 1. fork — 0, 1, ... Ик = Axjx'l Вхк Решить уравнение {А — jift B)zk + х = Вхк (8.7.3) относительно zk +1. 1 2 3 А = 2 4 5 3 5 6 С = 0 о 0.001 о 1 0.001 + 1 ” 2к + l/lt 2к + 1 112 end Математической основой этих итераций является то, что хТ Ах (8.7.4) Ъ = — хт Вх минимизирует т=\\Ах ХВх |„ (8.7.5) где )[. \\в определена как || z ||\ = zT B~l z. Математические свойства итерации (8.7.3) подобны свойствам итераций (8.4.4). Их применимость зависит от того, может или нет быть легко решена система вида (А — ц В) z = jc. Подобное замечание относится
422 Гл. 8. Симметричная проблема собственных значений и к следующим обобщенным ортогональным итерациям Задана матрица Q0eRn*p с QoQo = /„♦ for к = 1, 2, ... Решить уравнение BZk = AQk_ t относительно Z4. (8.7.6) Zh = Qk Rh (QR-разложение) end Этот алгоритм математически эквивалентен алгоритму (7.3.4) с матрицей А, замененной на ВТ1 А. Его практичность зависит от того, насколько легко решать линейные системы вида Bz — у. Иногда матрицы АвВ такие большие, что ни (8.7.3), ни (8.7.6) не могут помочь. В этой ситуации можно прибегнуть к любому из градиентных или релаксационных алгоритмов. См. [Stewart, 1976b], где приведен обширный список литературы. 8.7.3. Обобщенная проблема сингулярных значений Мы закончим некоторыми замечаниями о симметричных пучках, которые имеют вид АТА -ХВТВ9 где AeRm*n и BeЭтот пучок допускает обобщенное сингулярное разложение (GSVD-разложение), которое полезно для особым образом устроенных методов наименьших квадратов (§ 12.1). Заметим, что по теореме 8.7.1 существует невыроаденная матрица XeR” * я, такая, что обе матрицы ХТ{АТ А) X и ХТ(ВТВ)X-диагональные. Значение GSVD в том, что эти диагонализации можно получить без формирования матриц АТА и ВТВ. Теорема 8.7.4 (Обобщенное сингулярное разложение). Если Ае Rm *я с т'&п и BeRp х ", то существуют ортогональные матрицы UeRmxm и VeRpxp и обрати¬ мая матрица XeR***, такие, что UTAX — С = diag(ci,...,cj, ck > О, и VTBX = S = diagfc!,...,*'), si ^ 0, где q = min (/?, л). Доказательство. Доказательство этого разложения появилось в работе Van Loan [1976]. Мы приведем более конструктивное доказательство в духе Paige, Saunders [1981]. Для ясности предположим, что null (Л) П null (5) = {0} и р ^ п. Мы оставим читателю обобщить доказательство так, чтобы оно охватывало все случаи. Пусть [2Не;]я (87Л) является QR-факторизацией с матрицами QteRm ж *, Q2eRp * * и ReRn * л. Пейдж и Саундерс показали, что SVD матриц Ql и Q2 связаны в том смысле, что Qk = UCWT, Q2 = VSWT. (8.7.7) Здесь Ut Vи W-ортогональные матрицы, С — diag^) с 0 < сг <... < сл, S — diag(sf) с sk > ... ^ sH и СТ С + STS — /я. Разложение (8.7.7)-вариант CS разложения го § 2.6, поэтому А = QkR= UC{WTR) и В — Q2R = VS(WTR). Теорему доказывает под¬ становка X = (WTR)~ \ Da = С и DB = S. Обратимость матрицы R следует из нашего предположения, что null (A) n null(R) = {0}. Мы оставляем читателю деталь¬ но рассмотреть случай, когда матрицы А к В имеют общие нуль-векторы. □
8.7. Более общие проблемы собственных значений 423 Элементы множества о (А, В) = {cjs^^.cjs,,} называют обобщенными сингуляр¬ ными числами матриц А и В. Заметим, что С€С(Л, В) означает, что огеХ(АТА, В1 В). Эта теорема является обобщением SVD, так как если В = то а(Л, Щ = а(А). Наше доказательство GSVD имеет практическую ценность, так как Стюарт (Stewart, 1982) и Ван Лоан (Van Loan, 198S) показали, как вычислять CS-разложение устойчиво. Единственной хитрой частью является обращение матрицы WT R для получения матрицы X. Заметим, что столбцы матрицы X = [хи... f jcJ удовлетворя¬ ют равенству и, следовательно, если st Ф 0, то Ат Axt = а? Вт Bxl9 где <*t ==* cjst. Поэтому вектор xi естественно назвать обобщенным сингулярным вектором пары (А, В). В некоторых приложениях требуется ортогональный базис для построения подпространства обобщенных сингулярных векторов spanf*^,...,*^}. Мы покажем, как это можно сделать без каких бы то ни было матричных обращений или перекрестных умножений: • Вычислить QR-разложение • Вычислить ортогональную матрицу Z и верхнюю треугольную матрицу Т9 такие, что TZ — WT R. (См. задачу 8.7.5.) Заметим, что если А""1 ^ WTR = — TZ, то X = ZTT~l и, следовательно, первые к столбцов матрицы Z являются ортогональным базисом в подпространстве span 8.7.1* Пусть матрица AeR* * ■ симметричная, a GeR" * “ нижняя треугольная н невырожден¬ ная. Предложить эффективный алгоритм вычисления С — G-1 AG~T. 8.7.2. Пусть матрица АёИп*п симметричная, а матрица BeR"** симметричная положитель¬ но определенная. Предложить алгоритм вычисления собственных значений матрицы АВ, использующий разложение Холецкого и симметричный QR-алгоритм. 8.7.3. Показать, что если матрица С вещественная и диагонализуемая, то существуют симмет¬ ричные матрицы А и В (В невырожденна), такие, что С = АВ V Это показывает, что симметричный пучок А — кВ-достаточно общий случай. 8.7.4. Показать, как преобразовать проблему Ах = ХВх в обобщенную проблему сингулярных значений, если матрицы А и В-обе симметричные и неотрицательно определенные. 8.7А Для заданной матрицы YeR* * * показать, как вычислить матрицы Хаусхолдера Н2, ... , Ня, такие, что матрица УИЩ ...Нг верхняя треугольная. Подсказка: матрица Нк обнуляет к-ю строку. 8.7.6. Пусть s}ATAXj “ cfBTBxi9 i — 1 :п9 • Вычислить CS-разложение Ql = UCWT, Q2 = VSWt и упорядочить диагональные элементы матриц С и S так, чтобы KAi.-. fА} = fa,/®»! ciJ\} • Зшчр
424 Гл. 8. Симметричная проблема собственных значений где АеRm*л, Вх еRw*т и Предположим, что матрицы Вх и В2 положительно определенные с треугольными матрицами разложения Холецкого Gx и С2 соответственно. Связать обобщенные собственные значения этой проблемы с сингулярными числами матрицы G i 1 AG2Т - Замечания и литература к § 8.7 Превосходный обзор вычислительных методов для симметрично-определенных пучков дан в Stewart G.W. (1976b). “A Bibliographical Tour of the Large Sparse Generalized Eigenvalue Problem”, in Sparse Matrix Computations, ed., J. R. Bunch and D.J. Rose, Academic Press, New York. Следующие статьи представляют особый интерес: Crawford С. R. (1973). “Reduction of a Band Symmetric Generalized Eigenvalue Problem”, Comm. ACM 16, 41 44. Crawford C. R. (1976). “A Stable Generalized Eigenvalue Problem”, SIAM J. Num. Anal. 13, 854-60. Fix G. and Heiberger R. (1972). “An Algorithm for the ILL-Conditioned Generalized Eigenvalue Problem”, SIAM J. Num. Anal. 9, 78-88. Martin R.S. and Wilkinson J. H. (1968c). “Reduction of a Symmetric Eigenproblem Ax = XBx and Related Problems to Standard Form”, Numer. Math. II, 99 110. Peters G. and Wilkinson J. H. (1969). “Eigenvalue of Ax = XBx with Band Symmetric A and B”, Comp. J. 12, 398 404. Ruhe A. (1974). “SOR Methods for the Eigenvalue Problem with Large Sparse Matrices”, Math. Comp. 28, 695 -710. См. также Bunse-Gerstner (1984). “An Algorithm for the Symmetric Gneralized Eigenvalue Problem”, Lin. Alg. and Its Applic. 58, 43-68. Crawford C. R. (1986). “Algorithm 646 PDFIND: A Routine to Find a Positive Definite Linear Combination of Two Real Symmetric Matrices”, ACM Trans. Math. Soft. 12, 278-282. Crawford C. R. and Moon Y.S. (1983). “Finding a Positive Linear Combination of Two Matrices”, SIAM J. Sci. and Stat. Comp. 7, 1147-1159. Heath M.T., Laub A.J., Paige C.C., and Ward R.C. (1986). “Computing the SVD of a Product of Two Matrices”, SIAM J. Sci. and Stat. Comp. 7, 1147— 1159. Одновременное преобразование двух симметричных матриц к диагональному виду обсуж¬ дается в Berman A. and Ben-Israel А. (1971). “A Note on Pencils of Hermitian or Symmetric Matrices”, SIAM J. Applic. Math. 2, 51- 54. Mahindar K. N. (1979). “Linear Combinations of Hermitian and Real Symmetric Matrices”, Lin. Alg. and Its Aplic. 25, 95-105. Uhlig F. (1973). “Simultaneous Block Diagonalization of Two Real Symmetric Matrices” Lin. Alg. and Its Applic. 7, 281-89. Uhlig F. (1976). “A Canonical Form for a Pair of Real Symmetric Matrices That Generate a Nonsingular Pencil”, Lin. Alg. and Its Applic. 14, 189-210. Теория возмущения, которую мы привели для симметрично-определенной проблемы, взята из работы Stewart G.W. (1979b). “Perturbation Bounds for the Definite Generalized Eigenvalue Problem”, Lin. Alg. and Its Applic. 23, 69-86. См. также Eisner L. and Guang Sun J. (1982). “Perturbation Theorems for the Generalized Eigenvalue Problem”, Lin. Alg. and Its Aplic. 48, 341-357. Paige C.C. (1984). “A Note on a Result of Sun J.-Guang: Sensitivity of the CS and GSV Decompositions”, SIAM J. Numer. Anal. 21, 186-191. Guang Sun J. (1982). “A Note on Stewart’s Theorem for Definite Matrix Pirs”, Lin. Alg. and Its Applic. 48, 331-339. Guang Sun J. (1983). “Perturbation Analysis for the Generalized Singular Value Problem”, SIAM J. Numer. Anal. 20, 611-625.
8.7. Более общие проблемы собственных значений 425 Обобщенное SVD и некоторые его приложения обсуждаются в Kagstrom (1985). “The Generalized Singular Value Decomposition and the General A—XB Problem”, BIT 24, 568-583. Van Loan C. F. (1976). “Generalizing the Singular Value Decomposition”, SIAM J. Num. Anal. 13, 76-83. Paige C.C. and Saunders M. (1981). “Towards A Generalized Singular Value Decomposition”, SIAM J. Num. Anal. 18, 398-405. Устойчивые методы вычисления CS и обобщенного сингулярного разложений описаны в Paige С. С. (1986). “Computing the Generalized Singular Value Decomposition”, SIAM J. Si. and Stat. Comp. 7, 1126-1146. Stewart G. W. (1983). “A Method for Computing the Generalized Singular Value Decomposition”, in Matrix Pencils, ed. B. Kagstrom and A. Ruhe, Springer-Verlag, New York, pp. 207 20. Van Loan C. (1985). “Computing the CS and Generalized Singular Value Decomposition”, Numer. Math. 46, 479-492.
Глава 9 Методы Ланцоша В этой главе мы изучаем метод Ланцоша-метод решения некоторого класса больших разреженных симметричных спектральных задач А х — X х. В методе используются частичные трехдиагонализации заданной матрицы А. Однако в отличие от подхода Хаусхолдера здесь не строятся какие-либо промежуточные полные матрицы. В равной степени важно то, что информация об экстремальных собственных значениях для А обычно появляется задолго до построения полной трехдиагонализации. Это делает метод Ланцоша особенно полезным в тех случаях, когда для А требуется найти небольшое число наибольших или наименьших собственных значений. В § 9.1 представлены вывод и свойства метода в точной арифметике. Детально рассмотрены ключевые аспекты теории Каниэля-Пейджа. Эта теория объясняет необычные свойства сходимости процесса Ланцоша. К несчастью, практическое использование метода Ланцоша несколько затрудня¬ ется ошибками округления. Центральная проблема-это потеря ортогональности получаемых итерационно векторов Ланцоша. С этим можно справиться нескольки¬ ми способами - они обсуждаются в § 9.2. В заключительном разделе мы показываем, как «идея Ланцоша» может быть применена к различным задачам, связанным с сингулярными числами, наимень¬ шими квадратами и линейными уравнениями. Обсуждается также и несимметрич¬ ный процесс Ланцоша. В § 9.3 особый интерес представляет разработка метода сопряженных градиен¬ тов для симметричных положительно определенных линейных систем. Изучение связи метода Ланцоша и метода сопряженных градиентов будет продолжено в следующей главе. 9.1. Вывод и свойства сходимости Пусть имеется большая разреженная симметричная матрица А е R” * " и нас интересует небольшое число ее наибольших и (или) наименьших собственных значений. Эта задача может быть решена с помощью метода, приписываемого Ланцошу (1950). Метод строит последовательность трехдиагональных матриц 7} с тем свойством, что экстремальные собственные значения для 7}еК7 XJ с ростом j дают все более точные оценки экстремальных собственных значений для А. В этом разделе мы выводим метод и исследуем его свойства в точной арифметике. 9.1.1. Подпространства Крылова К выводу алгоритма Ланцоша можно подойти с различных сторон. Для того чтобы замечательные свойства сходимости метода не оказались полным сюрпри¬
9.1. Вывод и свойства сходимости 427 зом, мы предпочитаем начать с рассмотрения оптимизации отношения Рэлея , v хТ Ах г(х) = —у—, х*0. Хл X Напомним, что согласно теореме 8.1 .2 максимальное и минимальное значения г(х) суть Х1(А)и ХЛ(А) соответственно. Предположим, что {qt} Я R" есть последователь¬ ность ортонормированных векторов. Определим скаляры М} и ту следующим образом: М. = к, (Qj AQ.) = max yT{-Q\AQ^y = таХ r(Gy>) < Х,М), уф0 ^ J' ll^llj = 1 mj = = min У ^jA^y = min r(Q^) > X.(/1), уф0 ^ где Qj = ,..9qj}. Алгоритм Ланцоша можно получить, рассматривая вопрос о таком выборе векторов qJy чтобы М} и mj были все более и более точными оценками для А.ДЛ) и Х„ (А). Пусть вектор i^espan^,...,^} таков, что Mi = r(uj). Поскольку r(x) возрастает наиболее быстро в направлении градиента 2 Vг(х) = -j-{Ax - г(х)х), х* х мы можем гарантировать, что MJ+l> Mjy если ^+1 определяется так, что Vr(uJ)espan{q1,...,qJ+1}. (9.1.1) (Предполагается, что Vг(uj) ф 0.) Аналогично, если вектор tyespan {qlt...,qj} удов- летворяет условию r(vj) = mj, то есть смысл потребовать, чтобы V r(Vj) e span {q,,..., qJ+1}, (9.1.2) так как r{x) убывает наиболее быстро в направлении — V г (х). На первый взгляд, задача отыскания одного вектора qj+1, удовлетворяющего этим двум требованиям, кажется неразрешимой. Однако, поскольку Vr(x)e е span {х, Ах}, ясно, что (9.1.1) и (9.1.2) можно удовлетворить одновременно при условии, что span {q,,... ,q,} = span {ql, Aq,,..., A*~1 q,} s jf (A, q„j), и вектор j выбирается так, что Jt(A,qvJ + 1) = spanТаким образом, мы пришли к задаче вычисления ортонормированных базисов в подпространствах Крылова Ж (A, qlyj). 9.1.2, Трехдиагонализации Для эффективного вычисления базиса мы используем связь между трехдиагона- лизацией матрицы А и QR-разложением матрицы Крылова K(A,q„n) = [q1,Aq1,A2ql,...,A*~1q1']. (См. § 7.4.4.) Именно, если матрица QTAQ = Т трехдиагональная и Qe, = q,, то соотношение К (A, q„ n) = Q [elt Те„ Т1 е,,..., Т"“1 ej является ^/{-разложением для К (A, q„ и). Таким образом, векторы q} можно
428 Гл. 9. Методы Лащоша строить эффективно, выполняя трехдиагонализацию матрицы А с помощью не¬ которой ортонормированной матрицы, в которой первый столбец есть qv. Для этой цели можно адаптировать трехдиагонализацию Хаусхолдера, обсуж¬ давшуюся в § 8.2.1. Однако такой подход непрактичен в случае большой и разрежен¬ ной матрицы А, потому что подобные преобразования Хаусхолдера имеют тенден¬ цию к разрушению разреженности. В результате этого в ходе процесса будут возникать неприемлемо большие плотные матрицы. Иногда потерей разреженности можно управлять, заменяя преобразования Хаусхолдера на преобразования Гивенса (см. DufT and Reid (1976)). Однако любой метод, вычисляющий матрицу Т последовательно с помощью модификации матри¬ цы А, бесполезен для большинства разреженных матриц А. Это наводит на мысль о том, чтобы попытаться вычислять элементы матрицы Т= QT AQ непосредственно. Полагая Q = [^1?...,^п], Г а, /?, Р\ «2 Рп — 1 О Рп-1 и приравнивая столбцы в равенстве AQ = QT для / — 1 :п — 1 находим АЧ] = Pj-1 Ял 1 + o-j 4j + Pj Ял1; Ро <7о = 0 • Ортонормированность векторов qt влечет за собой а( = qj Aqj. Более того, если вектор rj = (А- а}Г)Я} ~ Pj-1 4j-1 ненулевой, то qJ+, = гД,, где р; = + || ||2. Если г} = 0, то итерации прерываются, но (как мы увидим) остается ценная информация об инвариантном подпространстве. Упорядочивая подходящим образом приведен¬ ные выше формулы, мы получаем итерации Лащоша: Го = ; Ро = I; Яо = 0; 7 = о while (р; Ф 0) Ял I = Фг- j =j + 1 * ai = я J Аяу- (9-1.3) tj = (A -ау/)<7у-р;-,<7у-,; р; = ||^||2 end Без потери общности можно выбирать р7 положительными. Векторы q} называются векторами Ланцоша. 9.1.3. Окончание и оценки погрешностей Итерации обрываются, прежде чем будет получена полная трехдиагонализация в том случае, когда q{ принадлежит подходящему собственному подпространству. Это одно из нескольких математических свойств метода, охватываемых следующей теоремой. Теорема 9.1.1. Пусть матрица y4eR” х п симметрична, и предположим, что вектор q{€R" имеет единичную 2-норму. Тогда итерации Ланцоша (9.1.3) обрываются при j = т, где т ~ rank (К (A, qit п)). Более того, при j = 1: т мы имеем AQj^QjTj + rjeJ, (9.1.4)
9.1. Вывод и свойства сходимости 429 где Ti = Г<и А А «2 о А-i и Qj = [0!,...,^] имеет ортонормированные столбцы, являющиеся базисом в #{A,qx>j). Доказательство, Проведем индукцию по у. Предположим, что итерации дали матрицу [flu-..,<7;], такую, что range(g,) = JT(Л, у) и QfQJ = Ij. Легко видеть, что (9.1.3) влечет за собой (9.1.4). Итак, Qf AQj = 7} 4- Qj гjef. Вследствие того что а,- = qj Aq( при i= 1:у и gj+1 Aqt ^ q]+! (Aqt - af ft - ft-i = ^h-i (Pt^i+1) = Р/ при i = 1 :y — 1, мы имеем Qj AQj — Ту Следовательно, Qj Tj — 0. Если Tj ф 0, то вектор qj+l — ry|| r} \\2 ортогонален к ql9 ..., и Я]+1 € span {Agp qjy q}- J ^ Jf (A, qvJ+ 1). Таким образом, Qj+ iQJ+l= Ij+l и range((>i+1) = Jf(A, gxJ + l). С другой стороны, если rj = 0, то AQj = QjTy Это говорит об инвариантности range (Qj) = Ж (A, qx,j). Отсюда получаем, что у = т = rank (К (Л, ql9 п)). □ Получение нулевого Рj в процессе Ланцоша -событие, желательное в том смысле, что оно свидетельствует о том, что найдено некоторое подпространство, являю¬ щееся в точности инвариантным. Однако на практике точный нуль или даже малое р7 встречаются редко. Тем не менее крайние собственные значения для 7} оказываются удивительно хорошими аппроксимациями к крайним собственным значениям для А. Поэтому для сходимости собственных значений нужно искать иное объяснение. Следующий результат представляет собой некоторый шаг в этом направлении. Теорема 9.1.2. Предположим, что выполнены у шагов алгоритма Ланцоша и SjTjSj — = diag(01,...,0J) есть разложение Шура трехдиагональной матрицы Ту Если У} = = [Уи-уУ)] = QjSjBRJXJ, то для /= 1 :j имеем || Ayt - 0^, ||2 = | где S, = = (*„)• Доказательство. Умножая (9.1.4) справа на Sjy получаем AYj= Yj diag (0А,..., 0^) + г j ej Sj, так что Аух = 0^- + г,{е]&?,). Чтобы завершить доказательство, остается перейти к нормам и вспомнить, что || ||2 = | Р7*|. □ Теорема позволяет вычислить оценки погрешностей для собственных значений матрицы Т} \ min |6г-ц| < Ipj-ll^l, i=l:j. Заметим, что в терминологии теоремы 8.1.10 (0t, >,) суть пары Ритца для под¬ пространства range (Qj).
430 Гл. 9. Методы Ланцоша Другой подход к использованию 7} для получения оценок собственных значений матрицы А описан в [Golub (1974)]. Предлагается специальным образом построить некоторую одноранговую матрицу Г, такую, что подпространство range {Qj) ин¬ вариантно относительно А + Е. Более точно, если в соответствии с методом Ланцоша AQj = QjT} + то, положив Е — тwwT, где т - ± 1 и w = aqj + brj9 можно показать, что (A + E)Qj = Qj{Tj + т a2 e}ej) + (1 + хаЬ)г}е]. Если 0=1+ tab, то собственные значения матрицы 7} = 7} + хаге^е] (трехдиаго- нальной) являются также собственными значениями для А + Е. Тогда из теоремы 8.1.5 мы можем вывести, что каждый из интервалов0 [ХД?}), X*_х(?})], i = 2:у, содержит какое-то собственное значение матрицы А, Эти интервалы локализации зависят от выбора ха2. Предположим, что у нас имеется какое-то приближение к собственному значению X матрицы А. Одна из возможностей-выбирать ха1 таким образом, чтобы det (7} — XTj) = (а, + ха2 — - X)pj_1(X) — $j-iPj-2(b) = 0, где значения полиномов р((х) = det(7] — jc 7J) в точке X можно оценить, используя трехчленные рекуррентные соотношения (8.5.2). Здесь предполагается, что Pj-i{X) ф 0. Оценивание собственных значений в таком духе обсуждается в Lehmann (1963); Householder (1968). 9.1.4. Теория сходимости Каниэля-Пейджа Предыдущее обсуждение показывает, каким образом с помощью алгоритма Ланцоша можно получать оценки собственных значений, но оно не дает никакой информации о скорости сходимости. Результаты такого рода составляют то, что называется теорией Каниэля-Пейджа. Ниже приводится некоторое извлечение из нее. Теорема 9.1.3. Пусть А-симметричная п х п-матрица с собственными значениями Хх ^ ... ^ Хя и соответствующими ортонормированными собственными векторами Если 0!>... суть собственные значения матрицы TJt полученной в результате j шагов итераций Ланцоша, то 2р,г где cos^) = \gjz11, рх = (Xt — Х2)/(Х2 — Хя), с^х (х)-полином Чебышева степени У-1. Доказательство. По теореме 8.1.2 имеем yTTty (Q,y)T A(Q* у) wT Aw 0! — max —=Д- = max •*—;—, J = max —=—. уф 0 У У уф 0 (Qjy) (Qjy) 0Ф*еХ(А,Чху]) " w Поскольку Xj есть максимум wTAw/wT w по всем ненулевым w, отсюда следует, что Xt > 0j. Чтобы получить нижнюю оценку для 02, заметим, что 0 qTp{A)Ap(A)ql max Т 2 9 pePj-, qXp(A) Qi Это верно в случае т = 1. Если т = — 1, то в соответствии с теоремой 8.1.5 в качестве локализации следует взять [Х, + х (7}Х Х, (7))], / = 1 :п — \-Прим. перев.
9.1. Вывод и свойства сходимости 431 и где Р! “Множество полиномов степени у — 1. Если qx = £ то i=l л 1<£р(Х,)2Х( I ^pPs)2 ^ Xj — (Х2 — XJ - ?ГрМ)29! £ ^(Х)2 ^ )2 + J, ^)2 1=1 i — 2 Нижнюю оценку можно сделать весьма точной, выбирая полином р(х) таким образом, чтобы его значение при х — было большим по сравнению со значениями при остальных собственных значениях. Один из способов это сделать состоит в том, чтобы взять р(х) \ Л2 где Cj_1(z) есть (/— 1)-й полином Чебышева, порождаемый рекурсией Cj(z) » 2ZCj.i(z) - Cj_2(z), с0 =1, С, = Z. Эти полиномы ограничены единицей на [— 1, 1], но очень быстро растут вне этого интервала. Если определить р(х) таким образом, то как следствие |р(Х{)| будет ограничено единицей при i — 2: л, в то время как p(Xt) = cJ^1(\ + 2pj). Итак, е, > х, - (X, - —-1— «1 о-1'1 + 2р») Чтобы получить требуемую нижнюю оценку, нужно заметить, что tg(<pt)2 = - (1 - <пу4 □ Из данной теоремы немедленно вытекает аналогичный результат, относящийся к0,: Следствие 9.1.4. В обозначениях теоремы имеем J -и -х I (Xl ~ ^-)tg(cp")2 где р„ = (Х,_! - ХВ)/(Х1 - Х„_ t) и cos(0n) = qlz„. Доказательство. Применяем теорему 9.1.3 с заменой А на —А. □ 9.1.5. Сравнение степенного метода с методом Ланцоша Есть смысл сравнить 0! с оценкой для Х19 отвечающей степенному методу (см. § 7.3.1). Для ясности предположим, что Хг > ...Х„ > 0. После того как к qi будут применены j — 1 шагов степенного метода, мы получим некоторый вектор в направлении v = AJ~lqt = X ciX{~1zi i—i вместе с оценкой собственного значения
432 Га. 9. Методы Ланцоша Используя доказательство и обозначения теоремы 9,1.3, легко показать, что К » Ух (Л, - (9.1.5) (Указание: положить в доказательстве £(л) = л^"\) Таким образом, мы можем сравнить точность нижних оценок для и у1? сопоставляя L, ,-1/ г, l(2^-l)]2>l/[rJ_1(l + 2p1)]! и /ХЛ20"1» - Для выборочных значений j и это сделано в следующей таблице. Таблица 9,1.1. , Ai/Aj II j = 10 j = ib О С* II j = 25 1.56 1.1х1(Г4 3.9ХЮ-» 2 Ох 10"10 6.8x10-* 3.9х1СГх* 1.2x10-* 7 4х10_и 2 Ох Ю”т 1.4х 10“ат 3 6x10-® 1.10 2.7Х10"3 4.7x10-» 6.5х 10“5 1 8x10“» l.lxlO-7 6.9x10“* 2.1XJD-10 27x10-* 4.2х10~13 1.0x10-® 1.01 6бхЮ-1 9 2Х10-1 l.OxlO-1 84X10-» 1 5x10“* 7.6x10-» 20х10“3 6.9x10-» 2.8Х10”4 6.2x10“» Превосходство метода Ланцоша очевидно. Этому и не следует удивляться, посколь¬ ку 0, есть максимум г (л) = хТ Ах!хТ х на всем Ж (A, q{i Д в то время как у I = r(v) значение для некоторого специального v из Ж (A, qv j\ а именно для v — Aj~ 1 qx. 9.1.6, Сходимость внутренних собственных значений Мы закончим некоторыми замечаниями по поводу оценок погрешностей для внутренних собственных значений матриц 7}. Ключевая идея в доказательстве теоремы 9Л.З заключается в использовании сдвинутых чебышевских полиномов. С помощью такого полинома мы усиливаем компоненту вектора qt в направлении zx. Чтобы получить оценки для внутреннею числа Ритца 015 можно использовать схожую идею. Однако оценки не будут столь же хорошими* потому что «усиллваю- J-1 щий полином» имеет ввд q(x) П {х — Х.Д где ^(х) полином Чебышева степени j — 1 к - 1 на интервале [Xi+l, )*„]. Подробности см. в KanieJ (1966), Paige (1971), Scott (1978). Задачи 9.1.1. Предположим, что матрица AeR* * * кососимметрична. Вывести алгоритм типа Лан¬ цоша, вычисляющий кисосимметричную трехдиагональную матрицу Тт , такую, что = QK Т„. гле QlQm = /„. 9.1.2. Пусть матрица A eR" * * симметрична и r(.v) - хт Ах/хт х. Предположим, что подпрост¬ ранство S ct R" обладает тем свойством, что xeS влечет за собой Vr(x)eS. Пиказать, чти S инвариантно опшенгелъно А.
0.2. Практические процедуры Ланцоша 433 9.1 А Показать, чти если симметричная матрица А € R“ *л имеет кратное собственное значение, то итерации Ланцоша заканчиваются дп срока. 9.1.4. Показать, что в теореме 9.1.1 индекс m есть размерность наименьшего А-инвариантного подпространства, содержащег о цл . 9.1 А Пусть матрица симметрична и рассмотрим проблему определения о рто норми¬ рован ной последовательности ql9 </2, .... обладающей тем свойством, что если матрица С/ = Ьр • -• * 4ji известна, то qJ^l выбирается так, чтобы минимизировать ц; — || (f — “ Q/1 l Qj* 1 MCj II f• Показать, что если span {^t, ... , } = Ж </1, qx ,/)» То q} ^, можно выбрать щким образом, что \is = 0. Объяснить, как эта оптимизационная задача приводит к алгоритму Ланцоша. Замечания и литература к § 9.1 К хорошим «глобальным» ссылкам на алгоритм Ланцоша относится Ра г Jett (SEP) (1980b) и Cullum J. К. and Willoughby R.A. (1985a). Lanczos Algorithms for Large Symmetric Eigenvalue Computations, Vol. L Theory, Birkhauser, Boston. Классической ссылкой на метол Ланцоша является Lanczos С. (1950) “An Iteration Method for the Solution of the Eigenvalue Problem of Linear Differential and Integral Operators'’, J. Res. Nat. Bur. Stand. 45, 255 82. Хотя в этой работе и упоминается и сходимости чисел Ритца* дальнейшие детали читатель найдет в Kaniel S. (1966). “Estimates for Some Computational Techniques in Linear Algebra*, Math. Comp. 20, 369-78. Paige С С. (1971). “The Computation of Eigenvalues and Eigenvectors of Very Large Sparse Matrices”, Ph. D. thesis, London University. Изложенная в этих работах теория Каниэля Пейджа прекрасно суммирована в Scott D. (1978). “Analysis of the Symmetric Lanczos Process*, Electronic Research Laboratory Technical Report UCB/ERL M78/40, University of California, Bcrkely. См. также Wilkinson (1965a), Parlett (1980в) и Saad Y. (1980). “On the Rates of Conversenoe of the Lanczos and the Block Lanczos Methods” SIAM J. Num. AnaL 17, 687-706. Связь между алгоритмом Ланцоша» ортогональными полиномами и теорией моментов обсуждается в Golub G.H. (1974). “Some Uses of the Lanczos Algorithm in Numerical Linear Algebra”, in Topics in Numerical Analysis, ed., J.J. H. Miller, Academic Press, New York. Householder A. S. (1968), “Moments and characteristic Roots II,” Numer. Math. 11, 126 28. Lehmann N.J. (1963). “Optimale Eigenwerteinschliessungen”, Numer. math. 5, 246-72. Наше изложение метода Ланцоша мотивировалось замечаниями о неизбежности заполне¬ ния при выполнении трехдиагоналиэации с помощью преобразований Хаусхолдера или Гивенса. В действительности, соблюдая меры предосторожности, иногда можно удержать заполнение на некотором приемлемом уровне. См. Duff I. S. (1974). “Pivot Selection and Row Ordering in Givens Reduction on Sparse Matrices”, Computing 13, 239-48. Duff I. S. and Reid J. K. (1976). “A Comparison of Some Methods for the Solution of Sparse Over-Determined Systems of Linear Equations”, J. Inst. Maths. Applic. 17, 267- 80. Kaufman L. (1979). “Application of Dense Householder Transformations lo a Sparse Matrix”, ACM Trans. Math. Soft. 5, 442 50. 9.2. Практические процедуры Ланцоша На поведение итераций Ланцоша сильнейшее воздействие оказывают ошибки округления. Основная трудность вызвана потерей ортогональности среди векторов
434 Гл. 9. Методы Ланцоша Ланцоша. Это явление затуманивает вопрос об окончании процесса и усложняет соотношение между собственными значениями матрицы А и трехдиагональных матриц Ту Трудности, навеянные этим явлением, вместе с созданием совершенно устойчивого метода хаусхолдеровой трехдиагонализации, объясняют, почему численные аналитики не обращали внимания на алгоритм Ланцоша в течение 50-х и 60-х годов. Однако интерес к методу оживили как теория Каниэля-Пейджа, так и необходимость решать большие разреженные спектральные задачи, размер которых увеличивался вместе с производительностью компьютеров. Поскольку для получения хороших приближений к экстремальным собственным значениям обычно требуется намного меньше чем п итераций, метод Ланцоша привлекает скорее не как соперник подхода Хаусхолдера, а как средство для работы с разреженными матрицами. Успешные реализации метода Ланцоша включают в себя гораздо больше, чем только закодированные соотношения (9.1.3). В этом разделе мы дадим представ¬ ление о некоторых практических идеях, предложенных для того, чтобы сделать процедуру Ланцоша работоспособной. 9*2.1. Реализация в точной арифметике Весь процесс Ланцоша можно выполнить, сохраняя лишь два /i-вектора. Для этого понадобится формула и тщательная организация замещения в (9.1.3). Алгоритм 9.2.1 (Алгоритм Ляицоша). Для заданных симметричной матрицы Ае Rnx" и вектора weR" с единичной 2-нормой следующий алгоритм вычисляет симметричную трехдиагональную J х j-матрицу 7}, такую, что Х(Т}) е Х,(Л). Пред¬ полагается, что есть функция A. mult (и), возвращающая матрично-векторное про¬ изведение Aw. Диагональные и поддиагональные элементы матрицы Т} хранятся соответственно в а (1 :у) и р (1:у — 1). г(1:и) = 0; Ро = 1;у = 0 while Р, Ф 0 if / Ф 0 for / = 1 :п t = w,; w, = 1>Д; Vi = - Р;/ end end v - v + A, mult (и ) j =j + 1; aj = wTv; v - v - ajw; = || v \\2 end Заметим, что А не изменяется в течение всего процесса. Нам нужна лишь процедура A. mult(), вычисляющая матрично-векторные произведения с участием А. Если А имеет в среднем по к ненулевых элементов на строку, то один шаг Ланцоша требует примерно (2 к + 8) п флопов. По окончании процесса собственные значения для 7} могут быть найдены с помощью симметричного трехдиагонального QR-алгоритма или любого из специальных методов из § 8.4, например бисекций. Векторы Ланцоша получаются в л-векторе w. Если предполагается как-то их использовать, то нужны специальные меры по их сохранению. Для типичных
9.2. Практические процедуры Ланцоша 435 разреженных задач до момента использования их можно хранить на диске или в каком-либо другом вспомогательном запоминающем устройстве. 9.2.2. Ошибки округления Разработка практичной, простой в реализации процедуры Ланцоша требует понимания фундаментального анализа ошибок округления, выполненного Пейджем [Paige (1971, 1976а, 1980)]. Осмысление этих результатов дает наилучшую мотива¬ цию для рассматриваемых в этом разделе нескольких модифицированных процедур Ланцоша. После j шагов алгоритма мы получаем матрицу вычисленных векторов Ланцоша й] = Mi >•••♦£/] и соответствующую трехдиагональную матрицу <*i Рг 01 «*2 0i- о Pi-1 cti Пейдж (1971, 1976а) показывает, что если вместо г{ при вычислении получается tp то Л&-йЛ + Ь*1 + Ел, (9.2.1) где |£,|2«аМ|2. (9.2.2) Это означает, что важное уравнение AQ} = Q}Tj + r}ej удовлетворяется с рабочей точностью. К несчастью, с ортогональностью векторов 0, дело обстоит намного хуже. (Речь идет не о нормированное™, так как вычисленные векторы Ланпоша имеют по существу единичную длину.) Если р,= //(|| t} ||2) и мы вычисляем 4]+l =f l(fj/Pj), то простой анализ показывает, что P;4+i « fj + w}, где || и^||2 * и ||^||2 «и |И ||2. Таким образом, мы приходим к выводу о том, что 1*741+ »М|2 W для /=1:/ Другими словами, при малом ^ можно ожидать значительных отклоне¬ ний от ортогональности даже в идеальной ситуации, когда fj q} есть нуль. Малое ^ влечет за собой потерю точности при вычислении вектора fy Мы подчеркиваем, что потеря ортогональности происходит благодаря этой потере точности и не является результатом постепенного накапливания ошибок округления. Пример 9.2.1. Матрица Г 2.64 -0.48 1 [-0.48 2.36 J имеет собственные значения = 3 и А,2 = 2. Если алгоритм Ланцоша для этой матрицы с начальным вектором ql = [0.810, — 0.586]Т выполняется в плавающей трехзначной арифме¬ тике, то — [0.707, 0.707]. Потеря ортогональности происходит из-за того, что подпростран¬ ство spanj^} почти инвариантно для А. (Вектор х - {0.8, —0.6)г является собственным вектором, отвечающим
436 Гл. 9. Методы Ланцоша Вскоре будут даны и дальнейшие детали анализа Пейджа. Сейчас нам доста¬ точно заметить, что на практике потеря ортогональности происходит всегда, а вместе с ней и очевидное ухудшение качества собственных значений матрицы Тг Количественную оценку этого ухудшения можно получить, объединив (9.2.1) с теоремой 8.1.11. В частности, если в этой теореме взять F, ~ r}e] + Хх = Q}y S = Tj и т= || QfQj-Ijh, то можно утверждать, что существуют собственные значения р1ч ру€^(Л), такие, что I 1 ^ R II Г/ II2 + II Ej , г, А и I Mi - М7})1 < у/2 а } + т м II2 для 1=1:/ Очевидное действие с целью помешать знаменателю в верхней оценке приблизиться к нулю заключается в проведении ортогонализации каждого вновь вычисляемого вектора Ланцоша ко всем его предшественникам. Это сразу же ведет к нашей первой «практической» процедуре Ланцоша. 9.2.3. Метод Ланцоша с полной переортогонализацией Пусть заданы г0,..., rj_leRn, и предположим, что вычислены матрицы Хаусхол¬ дера 7У0, ..., такие, что матрица (H0...Hj_i)T\_r0y».9rJ_l] является верхней треугольной. Пусть [</!,... ,<7j] обозначает первые у столбцов хаусхолдерова произве¬ дения (Н0... //j-i). Теперь предположим, что задан вектор i^eR" и мы хотим вычислить нормированный вектор qJ+i, направленный так же, как j >г = г, - £ to; rj></iespan i ~ 1 Если хаусхолдерова матрица Hj обеспечивает треугольный вид матрицы то, следовательно, искомый вектор-это (J + 1)-й столбец в Но - Hj. Включив эти хаусхолдеровы вычисления в процедуру Ланцоша, мы можем получить векторы Ланцоша, являющиеся ортогональными с рабочей точностью: г0 = цх (заданный единичный вектор) Найти хаусхолдерову матрицу Н0 с тем, чтобы Н0г0 = е}. «1 = q\ Atit for j = 1: n — 1 Г) = (А- ajl)gj - , (p0q0 = 0) № = (HJ_l...H0)rJ (9.2.3) Найти хаусхолдерову матрицу Hj с тем, чтобы HjW = (wly...9wj9 pj40,...,0)т. Qj+1 = H0... Hjej+ A; aj+ x = qf+1 Aqj+1 end Это пример схемы Ланцоша с полной переортогонализацией. Тщательный анализ можно найти в работе Paige (1970). Идея использования матриц Хаусхолдера для усиления ортогональности появилась в работах Golub, Underwood, Wilkinson (1972). То что в (9.2.3) вычисленные векторы qt ортогональны с рабочей точностью, следует из свойств ошибок округления при работе с матрицами Хаусхолдера. Заметим, что в силу способа определения qi+l ничего не меняется, если Р, = 0. Поэтому алгоритм может без помех выполняться до j = п — 1. (Однако на практике можно остановиться при намного меньшем значении /) В любой реализации процесса (9.2.3), конечно, сохраняются хаусхолдеровы векторы Vj, а соответствующие Р} никогда не формируются в явном виде. Поскольку //у (1:у, 1 :j) = Ij, нет необходимости в вычислении первых j компонент вектора
9.2. Практические процедуры Ланцоша 437 w = (Hj-1... Н0)г}, так как в точной арифметике эти компоненты были бы нулевыми. Эти возможности экономии, к несчастью, дают очень мало для снижения вычислительных затрат, связанных с полной переортогонализацией. Хаусхолдеровы вычисления увеличивают работу на J-м шаге Ланцоша на О (jn) флопов. Более того, для того чтобы вычислить qJ+l, нужно иметь доступ к хаусхолдеровым векторам, связанным с //0,... 9Ну Для больших пи] это обычно влечет за собой неприемлемо большое число пересылок данных. Таким образом, полная переортогонализация стоит очень дорого. К счастью, есть и более эффективные средства, но они требуют от нас более внимательного анализа того, как теряется ортогональность. 9.2.4. Выборочная ортогонализация Замечательное ироническое следствие из анализа ошибок округления в работе Paige (1971) состоит в том, что потеря ортогональности неразрывно связана со сходимостью некоторой пары Ритца. Более того, предположим, что симметричный QR-алгоритм, примененный к tj, дает вычисленные значения Ритца 6t, ..., и почти ортогональную матрицу собственных векторов Sj = (£м). Если Y} = Qy,, ..., pj\ = =//«Ш то можно показать, что для / = 1:j мы имеем i аГ л I ^ U II ^ II2 /П -I А\ <9'24) И МЛ-6,А12*1&М*л1. (9.2.5) Как видам, поведение последнего из вычисленных векторов Ланцоша таково, что он имеет нетривиальную и нежелательную компоненту в направлении любого из сошедшихся векторов Ритца. Следовательно, вместо того чтобы ортогонализиро- вать 4j+1 по отношению ко всем ранее вычисленным векторам Ланцоша, мы можем добиться того же эффекта, проводя ортогонализацию по отношению к намного меньшему множеству сошедшихся векторов Ритца. Практические аспекты указанного способа усиления ортогональности обсуж¬ даются в работах Parlett и Scott (1979). В предложенной там схеме1 известной под названием выборочной ортогонализации, вычисленная пара Ритца (0, р) называется «хорошей», если она удовлетворяет соотношению 1М>>-вЯ12*ч/«М112- Как только вектор qj+1 вычислен, он ортонормируется по отношению ко всем хорошим векторам Ритца. Это стоит намного меньше, чем полная переортогонали¬ зация, поскольку хороших векторов Ритца обычно намного меньше, чем векторов Ланцоша. Один из способов реализации выборочной ортогонализации состоит в том, что на каждом шаге диагонализируется fj- и затем оцениваются sj7 в свете (9.2.4) и (9.2.5). Гораздо более эффективный подход-оценивать меру потери ортогональности || Ij — Qj Qj || 2, используя следующий результат: Лемма 9.2.1. Предположим, что S+ = [5 d], где SeRn XJ и ds R". Если S удовлетворя¬ ет || Ij — SrS||2 < Ц и 11 - (fd\ < 6, mo || Ij+l - S ||2 < p+, где 1 й+ = 2<H + 5 + 7(й + 8)2+4||5т<Ш).
438 Гл. 9. Методы Ланцоша Доказательство. См. Kahan, Pariett (1974) или Parlett, Scott (1979). Итак, имея оценку Для III) — й! Q) II2’ мы можем получить оценку для || IJ+X — CJ+iQj+i II2* применяя лемму с S = Qj и d = (В этом случае 5 « и и мы предполагаем, что был ортогонализирован по отношению к текущему набору хороших векторов Ритца.) Есть возможность оценить норму вектора &J 4j+1 с помощью простого рекуррент¬ ного соотношения, избавляющего от необходимости доступа к ..., См. Kahan, Parlett (1974) или Parllet, Scott (1979). Накладные расходы минимальны, и лишь когда оценки дают сигнал о потере ортогональности, наступает тот момент, когда ожидается пополнение множества хороших векторов Ритца. В эти и только эти моменты проводится диагонализация матрицы Т). 9.2.5. Проблема теневых собственных значений Значительные усилия были направлены на разработку работоспособной про¬ цедуры Ланцоша, вообще не использующей какое-либо усиление ортогональности. Исследования в этом направлении сосредоточены на проблеме «теневых» или «ложных» собственных значений. Это кратные собственные значения для Тр отве¬ чающие простым собственным значениям для А. Они возникают из-за того, что итерации начинаются по существу заново, когда теряется ортогональность к какому-либо сошедшемуся вектору Ритца. (По аналогии рассмотрите, что может случиться в процессе ортогональных итераций из § 7.3.2, если мы «забудем» ортогонализировать.) Как обнаружить теневые собственные значения и что делать, если они есть, эта проблема обсуждается в Cullum, Willoughby (1979) и Parlett, Reid (1981). Эта проблема особенно актуальна в тех приложениях, где для А требуется найти все собственные значения,- в этих случаях описанные выше процедуры ортогонализации требуют чрезмерных вычислительных затрат. Трудности с итерациями Ланцоша могут ожидаться даже в том случае, когда А имеет по-настоящему кратное собственное значение. Это вытекает из того, что матрицы Tj неразложимы, а неразложимые трехдиагональные матрицы не могут иметь кратных собственных значений (см. теорему 7.4.3). Наша следующая практи¬ ческая процедура Ланцоша пытается преодолеть эту трудность. 9.2.6. Блочный Ланцош Точно так же, как простой степенной метод имеет своим блочным аналогом одновременные итерации, так и алгоритм Ланцоша имеет блочную версию. Пред¬ положим, что п = гр, и рассмотрим разложение М\ Bj О QTAQ = Т = Вх М2 Br- ВТ-1 мг где матрица Q = [X1,...,Xr'}, ортогональная, М£еRpxp для всех /, все матрицы Bteх ^ верхние треугольные. Приравнивание блоков в AQ — QT показывает, что
9.2. Практические процедуры Ланцоша 439 + Х0В0 = О, для у = 1: г — 1. В силу ортогональности Q мы имеем М} = Xj AXj для j = 1 :r. Более того, если мы определим Д, = AXj - XjMj - Bj-t eRn xp9 TO i Bj = Rj представляет собой QR-разложение для Rr Эти наблюдения наводят на мысль о том, что блочно трехдиагональная матрица Т может быть получена следующим образом: 2f,eRp*р-заданная матрица, такая, что Х\Х1 = I . М, = XlAXt for j = 1: г — 1 Rj = AXj -XiMj-Xj_i В].! (X0 Bl == 0) (9.2.7) XJ+l Bj — Rj (QR-разложение для Rj} 1 = Xj+1 AX1+1 end В начале /то прохода цикла мы имеем А{Х, XJ = [X, Xj] Tj + ЯДО,...,0,/J, где Mt О Вг Л/2 (9.2.8) В*. Используя рассуждения, аналогичные тем, что были использованы при доказа¬ тельстве теоремы 9.1.1, мы можем показать, что Х} совместно ортогональны при условии, что все матрицы R} имеют полный ранг. Однако если rank (/у <р для некоторого j, то можно выбрать столбцы матрицы XJ+l так, что X J+1 л f = 0 для / = 1 :j. См, Golub, Underwood (1977). Поскольку Tj имеет ленту шириной р9 она может быть приведена к трех¬ диагональному виду эффективным образом-по алгоритму из работы Шульца (1968). Как только получена трехдиагональная форма, значения Ритца могут быть найдены с помощью симметричного QR-алгоритма. Чтобы принять разумное решение об использовании блочного алгоритма Ланцо¬ ша, необходимо понимать, как размеры блоков влияют на сходимость значений Ритца. Этот вопрос проясняется следующим обобщением теоремы 9.1.3. Теорема 9.2.2. Пусть А-симметричная п х п-матрица с собственными значениями Хх ^... ^ Хп и соответствующими ортонормированными собственными векторами Zj,..., zn. Пусть > ... ^ \ip составляют р старших собственных значений матрицы Tj, полученной после j шагов итераций (9.2.7) блочного Ланцоша. Если Zx = [zl9...9zp] и cos(0p) = op(Z XХг) > 0, то для k = 1 :р имеем *кк ^ р* ^ Хк — ек, где сг _ £к — (Xj - A.*) tan2 (0„) Мй)Г У к = cJ_i{z) есть (j — 1 )-й полином Чебышева.
440 Гл. 9. Методы Ланцоша Доказательство. См. Underwood (1975). □ Аналогичные неравенства можно получить и для младших собственных значений матрицы 7}, применяя эту теорему с заменой А на — А. Основываясь на теореме 9.2.2 и тщательном анализе итераций (9.2.7) блочного алгоритма Ланцоша, мы можем заключить, что: • Оценки погрешности для значений Ритца улучшаются с ростом р. • Объем работы по вычислению собственных значений для Т. пропорционален Р2- • Размер блоков должен быть по меньшей мере таким же, как наибольшая кратность любого из отыскиваемых собственных значений. Как определять размер блоков на базе компромисса отмеченных выше свойств, в деталях обсуждается в работе Scott (1979). Потеря ортогональности является бедой и блочного алгоритма Ланцоша. Все описанные выше схемы усиления ортогональности, однако, можно применять и в блочной постановке. Детали см. в работах Scott (1979), Lewis (1977), Ruhe (1979). 9*2.7* s-Шаговый алгоритм Ланцоша Блочный алгоритм Ланцоша (9.2.7) можно использовать итерационно, если нужно вычислить выборочные собственные значения для А. Чтобы изложить идеи, предположим, что мы хотим найти р старших собственных значений. Задавшись некоторой матрицей XleRnxp с ортонормированными столбцами, мы можем действовать следующим образом: until норма || АХ х — X, 7^ ||2 достаточно мала. Вычислить Х2,...,XseRn х р по блочному алгоритму Ланцоша. Сформировать 7^ = [X!,,XJ7 Л [X j,...,XJ (это р-диагональная матрица размера sp х sp). Вычислить ортогональную матрицу U = [hj,...,usp], такую, что UTTSU = diag (00sp), где 0, > ... Js 0sp. Положить Xx = [X1$...,XJ end Это блочный аналог s-шагового алгоритма Ланцоша, который всесторонне анализировался в работах Cullum, Donath (1974) и Underwood (1975). Та же самая идея может быть использована для вычисления нескольких наи¬ меньших собственных значений для А или смешанной группы как наибольших, так и наименьших собственных значений. См. Cullum (1978). Выбор параметров s и р зависит от ограничений на память, а также от факторов, упоминавшихся выше, когда обсуждался выбор размера блоков. Блочный размер р может быть понижен при появлении хорошего вектора Ритца. Однако это требует проведения ортогона- лизации к сошедшимся векторам Ритца. См. Cullum, Donath (1974). Задачи 9.2.1. Докажите лемму 9.2,1. 9.2.2. Если rank (Rj) < р в (9.2.7), то следует ли отсюда, что range([Х1?..., ХД) состоит из собственных векторов для А1 Замечания и литература к § 9.2 Хорошие общие ссылки для практического метода Ланцоша включают Parlett (SEP) и
9.2. Практические процедуры Ланцоша 441 Cullum J. К. and Willoyghy R. A. (1985b). Lanczos Algorithms for Large Symmetric, Eigenvalue Computations, Vol. 11. Programs, Birkhauser, Boston. Из нескольких вычислительных вариантов метода Ланцоша алгоритм 9.2.1 наиболее устойчив. Детали см. в Paige С. С. (1972). “Computational Variants of the Lanczos Method for the Eigenproblem”, J. Inst. Math. Applic. 10, 373-81. Другие практические детали, связанные с реализацией процедуры Ланцоша, обсуждаются в Parlett В. N. and Nour-Omid В. (1985). “The Use of a Refind Error Bound When Updatinf Eigenvalues of Tridiagonals”, Lin. Alg. and Its Applic. 68, 179 220. Parlett B. N., Simon H., and Stringer L. M. (1982). “On Estimating the Lagesl Eigenvalue with the Lanczos Algorithm”, Math. Comp. 38, 153 -166. Scott D.S. (1979). “How to Make the Lanczos Algorithm Converge Slowly”, Math. Comput. 33, 239-47. Поведение метода Ланцоша в условиях ошибок округления впервые описано в Paige С. С. (1971). “The Computation of Eigenvalues and Eigenvectors of Very Large Sparse Matrices”, Ph. D. thesis, University of London. Важные последующие работы включают Paige С. С. (1976а). “Error Analysis of the Lanczos Algorithm for Tridiagonalizing Symmetric Matrix”, J. Inst. Math. Applic. 18, 341 49. Paige С. C. (1980). “Accuracy and Effectiveness of the Lanczos Algorithm for the Symmetric Eigenproblem”, Lin. Alg. and Its Applic. 34, 235 58. Детали, относящиеся к полной переортогонализации, можно найти в Golub G. Н., Underwood R., and Wilkinson J. H. (1972). “The Lanczos Algorithm for the Symmetric Ax = XBx Problem”, Report STAN CS 72 270, Department of Computer Science, Stanford University, Stanford, California. Paige C.C. (1979). “Practical Use of the Symmetric Lanczos Process with Reorthogonalization”, BIT 10, 183 95. Simon H. (1984). “Analysis of the Symmetric Lanczos Algorithm with Reorthogonalization Methods”, Lin. Alg. and Its Applic. 61, 101 132. Более эффективный подход к поддержанию ортогональности относительно уже сошедшихся векторов Ритца исследуется в Scott D. S. (1978). “Analysis of the Symmetric Lanczos Process”, UCB-ERL Technical Report M78/40, University of California, Berkeley. Parlett B.N. and Scott D.S. (1979). “The Lanczos Algorithm with Selective Orthogonalization”, Math. Comp. 33, 217-38. Если не делать ортогонализацию, то необходимо либо следить за потерей ортогональности и вовремя останавливаться, либо изобрести еще какую-то схему, которая поможет проводить различие между теневыми и настоящими собственными значениями. См. Cullum J. and Willoughby R. А. (1979). “Lanczos and the Computation in Specified Intervals of the Spectrum of Large, Sparse Real Symmetric Matrices” in Sparse Matrix Proc., 1978, ed. I. S. Duff and С W. Stewart, SIAM Publications, Philadelphia, PA. Kahan W. and Parlett B. N. (1974). “An Analysis of Lanczos Algorithms for Symmetric Matrices”, ERL-M467, University of California, Berkeley. Kahan W. and Parlett B. N. (1976). “How Far Should You Go with the Lanczos Process?” in Sparse Matrix Computations, ed. J. Bunch and D. Rose, Academic Press, New York, pp. 131-44. Lewis J. (1977). “Algorithms for Sparse Matrix Eigenvalue Poblems”, Report STAN-CS-77-595, Department of Computer Science, Stanford University, Stanford, California. Parlett B. N. and Reid J. K. (1981). “Tracking the Progress of the Lanczos Algorithm for Large Symmetric Eigenproblems”, IMA J. Num. Anal. 1, 135-55. Блочный алгоритм Ланцоша обсуждается в Cullum J. (1978). “The Simultaneous Computation of a Few of the Algebraically Largest and Smallest Eigenvalues of a Large Sparse Symmetric Matrix”, BIT 18, 265-75.
442 Гл, 9. Методы Ланцоша Cullum J. and Donath W. E. (1974). “A Block Lanczos Algorithm for Computing the q Algebraically Largest Eigenvalues and a Corresponding Eigenspace of Large Sparse Real Symmetric Matrices”, Proc. of the 1974 IEEE Conf. on Decision and Control, Phoenix, Arisona, pp. 505-9, Golub G.H. and Underwood R. (1977). “The Block Lanczos Method for Computing Eigenvalues”, in Mathematical Software III, ed. J. Rice, Academic Press, New York, pp. 364-77. Ruhe A. (1979). “Implementation Aspects of Band Lanczos Algorithm for Computation Eigenvalues of Large Sparse Symmetric Matrices”, Math. Comp. 33, 680-87. Scott D. S. (1979). “Block Lanczos Software for Symmetric Eigenvalue Problems”, Report ORNL/CSD-48, Oak Ridge National Laboratory, Union Carbide Corporation, Dak Ridge, Tennessee. Underwood R. (1975). “An iterative Block Lanczos Method for the Solution of Large Sparse Symmetric Eigenproblems”, Report STAN-CS-75-495, Department of Computer Science, Stanford University, Stanford, California. В блочном алгоритме Ланцоша строится симметричная ленточная матрица с собственными значениями, которые можно вычислить любым из нескольких способов. Один из подходов описан в Schwartz Н. R. (1968). “Tridiagonalization of a Symmetric Band Matrix”, Numer. Math. 12, 231-41. See also HACLA, pp. 273-83. В некоторых приложениях необходимо оценивать внутренние собственные значения. Алго¬ ритму Ланцоша, однако, свойственно сначала находить крайние собственные значения. Этот вопрос рассматривается в следующих работах: Cline А. К., Golub G. Н., and Platzman G. W. (1976). “Calculation of Normal Modes of Oceans Using a Lanczos Method”, in Sparse Matrix Computations, ed. J.R. Bunch and D.J. Rose, Academic Press, New York, pp. 409-26. Ericsson T. and Ruhe A. (1980). “The Spectral Transformation Lanczos Method for the Numerical Solution of Large Sparse Generalized Symmetric Eigenvalue Problems”, Math. Comp. 35, 1251-68. Добавления при переводе к § 9.2 Интересный анализ метода Ланцоша в условиях машинной арифметики и новая устойчивая вычислительная схема предлагаются в Собянин А. В. (1985). Анализ ошибок округления и устойчивость в методах типа Лан¬ цоша-М.: ОВМ АН СССР. Метод Ланцоша можно рассматривать как метод ортогонализации полиномов-для определенного набора весов в точках, являющихся собственными значениями исходной матрицы. Если рекуррентные соотношения слегка возмутить (например, вследствие округ¬ ления чисел), то построенные полиномы теряют ортогональность по отношению к рассмот¬ ренной мере. Тем не менее вычисленные полиномы остаются ортогональными по отношению к несколько иной мере-с весами в большем числе точек, находящихся в малой окрестности множества собственных значений матрицы. Этот факт согласуется (а возможно, и является причиной) хорошо известного явления копирования собственных значений при реальном счете. Такой взгляд на метод Ланцоша развивается в Greenbaum А. (1989). “Behaviour of Slightly Perturbed Lanczos and Conjugate Gradient Recurren¬ ces”, Lin. Alg. Appl. 113, 7-63. Отметим также обзор Икрамов X. Д. (1982). Разреженные матрицы. Итоги науки и техники, т. 20.-М.: ВИНИТИ, 179-257. 9.3. Приложения и обобщения В этом разделе мы вкратце расскажем о том, как итерации Ланцоша могут быть приспособлены для того, чтобы решать большие разреженные линейные системы и задачи наименьших квадратов. Мы обсудим также процессы Арнольди и не¬ симметричного метода Ланцоша.
9.3. Приложения и обобщения 443 9.3.1. Симметричные положительно определенные системы Предположим, что матрица А е R” х п симметричная и положительно определен¬ ная, и рассмотрим функционал <р(дс), имеющий вид где beR*. Поскольку Уф(х) = Ах — Ъ, заключаем, что х — A~l b является единствен¬ ной точкой минимума для ф. Значит, приближение к точке минимума для ф можно рассматривать как приближение к решению системы Ах - Ь. Один из способов построения последовательности {д^}, сходящейся к дг, состоит в генерации последовательности ортонормированных векторов {д}} и определении Xj как точки минимума ф на span {ql9..., qj}9j = I:п. Пусть Qj = [ql9 qj\. Поскольку Заметим, что Ахп = b. Теперь посмотрим, как можно этот подход к решению системы Ах = b сделать эффективным, когда А большая и разреженная. Преодолеть нужно следующие два препятствия: • Линейная система (9.3.2) должна быть «легко» решаемой. • Должна быть возможность получения х} без явного обращения к векторам ql9...,qj, как предполагается в (9.3.1); в противном случае будет чрезмерным число пересылок данных. Мы покажем, что оба эти требования удовлетворяются, если в качестве взять векторы Ланцоша. После j шагов алгоритма Ланцоша мы получаем разложение xespan^j ^}=><р(х) = ~ yT(Qj AQj)y - yT(Qjb) для некоторого уе И', отсюда вытекает, что Xj-Qjyj- (9.3.1) где (QjAQJ)yJ=Qjb. (9.3.2) AQj = Qj Т} + rjeJ, (9.3.3) где “l 0i 01 02 о 1 Tj = Qj AQ, = 0 При таком подходе (9.3.2) становится симметричной положительно определенной трехдиагональной системой, которую можно решать на базе ЬОЬг-разложения (см. алгоритм 4.3.6). В частности, положим
444 Гл. 9. Методы Ланцоша ' 1 0 0 0 ■ ' dj 0- 0 ' Lj = 1 0 0 , Dj = 0 d2 0 1 •• 0 ••• /VI 0 0 dj . и сравнивая элементы в матричном равенстве Tj = LjDjLj, (9.3.5) мы находим, что dx = «i for I = 2 :j W = Pi-iM-i; = a( - P,_,/ц,-, end Заметим, что для того, чтобы получить Lj и Dj из L}f _ v и t, нам нужно лишь найти величины Цу ! = Ру- i/dj-1, 4 = a, - р,._, ц..,. (9.3.6) Как уже отмечалось, важно уметь вычислять х} из (9.3.1) эффективным образом. Для этого мы определим CjeR” х / и р}еRj уравнениями C,Lj = Qj, LjDjPj = Qjb (9.3.7) и заметим, что X, = QjTj'Qjb = Qj(LjDjLJ)1 Qj b = С>,.. Рассмотрим столбцовое разбиение С, — [с Из (9.3.7) следует, что +C2,...,ilj_lCJ_l + Cj] = [?!,...,?у], и поэтому Cj = [Cj_, Cj], Cj = q} - , Cj.!. Заметим также, что если мы положим — [pi,...,Py]T в LJDJpj = Qjb, то это уравнение принимает вид Lj~iDj-i 0---0 Pi qfb P2 92 6 Pi-У 4j-ib . Pi . . яр . В силу j Dj_, ! = £j_! b получаем Pi = [рУ'‘]. Py = (tfjь - IV1 dj-1 Pj-Щ, и, таким образом, х} = С,/»; = -f pjCj = + pjCj. Это именно та рекур¬ рентная формула для х, которая нам нужна. Вместе с (9.3.6) и (9.3.7) она позволяет нам выполнить переход от (q}_ 1? сv t) к {q}, с]у х}) с минимальными затратами по числу операций и памяти. Дальнейшее упрощение получается, если положить qx = £/р0, где Р0 = II РII2- При таком выборе начального вектора для Ланцоша мы видим, что qjb = 0 при / ^ 2. Из
9 J. Приложения и обобщения 445 (9.3.3) вытекает, что Axj = AQjyj = Qj Т}у} + r}ejу} = Qj Qj b + г^]у} = b + г}е]yt. Итак, если P, = || ^ ||2 = 0 в итерациях Ланцоша, то Axj = b. Более того, поскольку \\Axj| — h || 2 = PjkJ^I, итерации обеспечивают оценки текущей невязки. В целом, мы приходим к следующей процедуре. Алгоритм 9.3.1. Если beR” и матрица АеR" *" симметричная положительно определенная, то алгоритм вычисляет вектор agR", такой, что Ах = Ь. г0 ~ к Ро = IIЪ ||2; q0 = 0; j = 0; а0 = 0 while рj ф 0 <7;+1 = rj$j'< j = j + •; «j = if Aqj rj = (A-(tjl)qj-Pj = || oil 2 ify = 1 = ai! ct = Чх 'у Pi = ai/Po> xi = Pi Q\ else Pj-1 = Pi- Jdi-1\dj = aj- P,_, ц,_! 0 = <h~ Pi-. o-1; p; = - Pi-1 di-1 Pi- i/Ji *i = *i-i +PiO end end A = Xj Этот алгоритм требует одно матрично-векторное умножение и несколько операций saxpy на итерацию п. Численное поведение алгоритма 9.3.1 обсуждается в следую¬ щей главе, где мы выводим его заново и узнаем в нем широко известный метод сопряженных градиентов. 9.3*2. Симметричные неопределенные системы Ключевую роль в предыдущих рассмотрениях играет идея вычисления LDLT- разложения трехдиагональных матриц 7}. Если А (и, как следствие, 7)) не положи¬ тельно определенная, то, к сожалению, это разложение потенциально неустойчиво. В способе обхода этой трудности, предложенном в Paige, Saunders (1975), предлага¬ ется строить рекурсии для а,, опираясь на LQ-разложение для 7}. Именно, на у-м шаге итераций мы получаем вращения Гивенса такие, что ' dx 0 0 0 «1 d2 0 0 Л «2 dз 0 0 0 0 0 fj—2 €j—i dj Заметим, что в согласии с этим разложением лу имеет вид *j = Qjyj = QjTrQlb=wjSj, 1) Сюда необходимо добавить одно скалярное произведение и одно вычисление 2-нормы вектора. - Прим. перев.
446 Гл. 9. Методы Ланцоша где W^eR” XJ и SjеRJ определяются как Wj = QjJt-Jj-t, LjSj — Qjb. Тщательный анализ этих уравнений позволяет вывести формулу для вычисления xi по Xj-x и некоторого легко получаемого кратного вектора ^-последнего столбца в Wj. Детали см. в Paige, Saunders (1975). 9.3.3. Двухдиагонализации и SVD Предположим, что для матрицы АеЯтхп проведена двухдиагонализация UTAV= В, где = UT U = /т, г,*а VTV=ln, В = А О а2 О **• А.-1 О Qn (9.3.8) Напомним (см. § 5.4.3), что это разложение может быть вычислено с помощью преобразований Хаусхолдера и что оно используется как прелюдия к SVD-алго¬ ритму. К несчастью, если матрица А большая и разреженная, то в процессе хаусхолдеро- вой двухдиагонализации можно ожидать появления больших и плотных подматриц. Поэтому будет прекрасно, если мы найдем средства для вычисления В непосред¬ ственно, без последовательной двухдиагонализации подматриц матрицы А. Действуя так же, как в § 9.1.2, приравняем столбцы в уравнениях AV= UB и Ат U = VBT для j = 1: п и получим Avj = ajuj + pj-luj_1, ро«о = 0. Ати; = а^} + $^И1, = 0. Определив ry = Avj — PjHf-i и р} = Ати} — djVj, из ортогональности мы можем вывести, что а, = ± Цг;Ц2, и} = rja^ р7 = ± ||py||a, vj+l = pj$}. После правильного упорядочения эти уравнения будут определять метод Ланцоша для двухдиагонали¬ зации прямоугольной матрицы: — заданный л-вектор с единичной 2-нормой Ро = Ро = 1; 7 = 0; и0 = 0 while ру # 0 (9.3.10) «7+1 = Pj/f>p 7=7+1 rj= Avj- P<tj = II rj ||a; u} ~ rjdj Pj — A Uj — dj v}; P, = || Pj || 2 end Если rank (A) = n, то мы гарантируем отсутствие нулевых а;. Действительно, если аj — 0, то span {Avt,..., Avj} с span {«х,..., Uj„ х}, что влечет за собой неполноту ранга. Если Pj = 0, то нетрудно проверить, что
9.3. Приложения и обобщения 447 Л|>1 t>;] = AT[uu...tuj\ = [vlt^.,vJ]Bj, где Bj = /?(1 :j\ 1 :Д а В имеет вид (9.3.8). Таким образом, в данном случае векторы vh и являются сингулярными векторами и ст(Ю с: а (Л). Ланцошева двухдиагонали- зация обсуждается в Paige (1974). См. также Cullum, Willoughby (1985а, 1985b). По существу, это эквивалентно применению схемы ланцошевой трехдиагонализации к симметричной матрице В начале § 8.3 мы показали, что MQ — = — ^+m-i + i(0 Д™ * = 1 Вслед¬ ствие этого неудивительно, что большие сингулярные значения двухдиагональной матрицы оказываются очень хорошими приближениями к большим сингулярным значениям матрицы А. Малые сингулярные значения для А отвечают внутренним собственным значениям для С и аппроксимируются уже не так хорошо. Аналог теории Каниэля-Пейджа для двухдиагонализации Ланцоша можно найти в Luk (1978), а также в Golub, Luk, Overton (1981). Аналитические, алгоритмические и численные рассмотрения, проведенные в двух предыдущих разделах, естественным образом переносятся и на двухдиагонализацию. 9*3.4. Наименьшие квадраты Задачу наименьших квадратов (LS)min || Ах — Ъ ||2 с матрицей А полного ранга также можно решить с помощью двухдиагонализации. Именно, и xLs = VyLs = £ Л».-. 1=1 где у « O'i.-iУп)Т~решение системы By = (u[byulb)T. Заметим, что вследствие верхнего двухдиагонального вида матрицы В мы не можем начать вычисление вектора b до завершения двухдиагонализации. Более того, мы вынуждены хранить векторы г1?..., vH; это малоприятное занятие в случае больших п. Развитие основанного на двухдиагонализации алгоритма для разреженных задач наименьших квадратов может пойти по более удачному пути, если А приводится к нижнему треугольному виду а\ О О UTAV = В = /?1 ОГ2 О о о ап Рп J где V— и U = ып+1]. Осуществляющая это процедура Ланцоша разрабатывается без труда, а итоговый алгоритм очень похож на (9.3.10). Пусть Vj — [ух,..., гу], Uj = [и,,..., Иу], Bj = (1 :j 4- 1,1:j), и рассмотрим миними¬ зацию || Ах — Ь ||2 по всем векторам вида х = V}y, где yeRJ. Поскольку II AVjy — £> ||2 = || UT AVj у — 1/г61|2 = $В}у — Uj+ib\\2 + £ (ufb)2, l=} + 2
448 Гл. 9. Методы Ланцоша искомый минимизирующий вектор х имеет вид Xj = где у. минимизирует (J + I) х / -задачу наименьших квадратов min || Bjy — Uj+ \b\\2. Вследствие того, что матрица 5^-нижняя двухдиагональная, легко вычисляются вращения Гивенса Jl9...9Jj9 такие, что матрица является верхней двухдиагональной. Если то отсюда вытекает, что xj ~ Viyi — Wjdy где = VSRJX. В Paige, Saunders (1975) показано, как можно получить Xj из Xj+1 посредством простой рекурсии, привлекаю¬ щей последний столбец матрицы Wy Окончательным результатом является алго¬ ритм для разреженных задач наименьших квадратов, требующий для своей реализа¬ ции запоминания лишь нескольких «-векторов. 9.3.5. Идея Арнольди Один из способов обобщения процесса Ланцоша на несимметричные матрицы принадлежит Арнольди (Arnoldi (1951)) и опирается на хесеенбергову редукцию QTAQ = H. Именно, если мы запишем 6 = [</i,...,<7n] и приравняем столбцы в AQ = QH* то получим j+i Y.huQi’ 1=1 Таким образом, если мы нашли q{, ..., q};и вычислили hi} = qf Aqj при i = 1: / то 0/+i = ri+i/lkj+i II 2> где j rj+i = Aqj- £ Ayft- Если rj+l =0, то нетрудно показать, что подпространство span {qx,q.) инва¬ риантно относительно А. В целом, мы имеем г = <7i; Р = 1; j = о while Р Ф О hi*ui = Р; 4j+i = г/Р; J=J+ 1 и’ = Aqj; г = w for i = 1 :j hi} = qjw; r = r- end p = I r 12 if j < n Vij = P end end Это и есть то, что называют итерациями Арнольди. Некоторые их численные свойства обсуждаются в Wilkinson (АЕР, 382//). Как и в симметричных ланцошевых итерациях, вызывает вопросы потеря ортогональности среди qj. Заметим также, что на каждом шаге происходит обращение к каждому из вычисленных векторов q.
9.3. Приложения и обобщения 449 Точно так же, как из итераций Ланцоша мы получим процедуры решения симметричных систем Ах — Ь> процесс Арнольди может послужить базой для построения процедур решения разреженных линейных систем. Центральная идея состоит в том, чтобы вычислять последовательность приближенных решений {} с тем свойством, что х} есть решение задачи min \\Ах — h\\2, X е.эГ И, ?,,./) где Jf{A9qi9j) = span{ qt ,Aqx,..., AJ~lql} = span {9,,... , qs). Ссылки на эти ме¬ тоды, связанные с подпространствами Крылова, приводятся в конце параграфа. 9.3.6. Несимметричная трехдиагонализация Ланцоша Еще один подход к обобщению процесса Ланцоша на симметричный случай связан с приведением А к трехдиагональной форме с помощью преобразований подобия. Однако, как указывается в Wilkinson (АЕР, pp. 388-405), из соображений численной устойчивости лучше отказаться от подобных преобразований при трех- диагонализации матрицы общего вида. Несмотря на это, нам кажется, что будет интересно познакомиться с несимметричным процессом Ланцоша,-хотя бы для того, чтобы высветить дополнительные трудности, сопутствующие несимметрич¬ ным спектральным задачам. Предположим, что Ае R" х * и существует невырожденная матрица Л", такая, что Х~1АХ = Т 7i fi\ ОС2 Уп-1 fin — 1 OCfl Рассматривая столбцовые разбиения X = [*!,..., xj, *"'= у» [Л.....Л]. и, приравнивая столбцы в АХ = ХТ и ATY= YTT, находим AXj = Yj-, i + ajXj + Р,х,+ 1, Y0x0 = 0, и ATyj=PJ-1yJ-t + Q-jyj + YjJ'j+i» для j = 1 :n — 1. Эти уравнения вместе с YTX = /„ влекут за собой aj = У] AxJ РЛ + 1 = r} = (А - ajl)xj - Yj-i , Yjyj+i =Pj = (A - ajI)Ty} - р;., . Некоторый произвол есть в выборе масштабирующих множителей Р7 и yjt Стан¬ дартный выбор-взять Pj = 11 fj ||2 и = xJ+iPj-приводит к следующему алго¬ ритму: 15 63
450 Гл. 9. Методы Ланцоша xl, yi -заданные ненулевые векторы. j = 0; Ро = 1; х0 = (у, r0 = xt; у0 = 0; р0 = yt while Э ф 0 Л rjpj ф 0 yj = rJPj/Vj (9.3.11) xJ+i =0/р;; yj+t = pj/jj j =У + 1 aj — yJAxj\ rJ = (A-ajI)xJ-yJ„lXj-l; p}= \\rj ||2 Pi = И ~ ftjl) yj - Py-1 y}-1 end Пусть Xj = [xlf... , *,], 1}= |>t,... ,>>,•] и -ведущая у xу-подматрица в Г. Легко проверить, что = Х} Tj + г; * J, ATYj=YjTj+ Pj ej. Таким образом, всякий раз, когда = || г} ||2 = 0, столбцы матрицы Xj определяют инвариантное подпространство для А. Окончание по этой причине, следовательно, событие желанное. К сожалению, если у j = xj+ \Pj = 0, то итерации заканчиваются, но не дают никакой информации об инвариантных подпространствах для А или А Т. Эта проблема-одна из нескольких трудностей, связанных с (9.3.11). К числу других трудностей относятся отсутствие сходимости собственных значений матриц Tj и близкие к линейно зависимым векторы Xj и yt. Нам неизвестны какие-либо успешные реализации несимметричного алгоритма Ланцоша. Задачи 9.3.1. Показать, что вектор х} из алгоритма 9-3.1 удовлетворяет || Axj — b || 2 = fij\ejуА> где T,y, = Qjb. 9*3.2. Привести пример начального вектора, для которого несимметричные итерации Ланцоша (9.3.12) обрываются и при этом не дают какой-либо информации о инвариантном подпрост¬ ранстве. Возьмем ^1 6 2“ А = 3 0 2 1 3 5_ 9.3.3. Модифицировать алгоритм 9.3.1 так, чтобы он реализовал процедуру решения неопре¬ деленной симметричной системы, следуя схеме из § 9.3.2. 9.3.4. Сколько нужно рабочих векторов, чтобы эффективно реализовать (9.3.10)? 9.3.5. Предположим, что А неполного ранга и а, = 0 в (9.3.10). Как получить Uj, причем итерации могли бы продолжаться? 9.3.6. Разработайте нижний бидиагональный вариант (9.3.10) и подробно опишите процедуру решения по методу наименьших квадратов, намеченный в § 9.3.4. Замечания и литература к § 9.3 Большая часть материала этого параграфа представляет собой выжимку из следующих работ: Paige С. С. (1974а). “Bidiagonalization of matrices and Solution of Linear Equations”, SIAM J. Num. Anal. 11, 197-209. Paige C.C. and Saunders M. A. (1978). “Solution of Sparse Indefinite Systems of Linear Equations”, SIAM J. Num. Anal. 12, 617-29. Paige C.C. and Saunders M.A. (1975). “A Bidiagonalization Algorithm for Sparse Linear Equations and Least Squares Problems”, Report SOL 78-19, Department of Operations Research, Stanford University, Stanford, California. Paige C.C. and Saunders M.A. (1982a). “LSQR: An Algorithm for Sparse Linear Equations and Sparse Least Squares”, ACM Trans. Math. Soft. 8, 43-71.
9.3. Приложения и обобщения 451 Paige С. С. and Saunders М. A. (1982b). “Algorithm 583 LSQR: Sparse Linear Equations and Least Squares Problems”, ACM Tans. Math. Soft. 8, 195-209. См. также Cullum J., Willoughby R.A., and M. Lake (1983). “A Lanczos Algorithm for Computing Singular Values and Vectors of Large Matrices”, SIAM J. Sci. and Stat. Comp. 4, 197-215. Cullum J. and Willoughby R. A. (1985a). Lanczos Algorithms for Large Symmetric Eigenvalue Computations, Vol. 1 Theory, Birkhaiiser, Boston. Cullum J. and Willoughby R. A. (1985b). Lanczos Algorithms for Large Symmetric Eigenvalue Computations, Vol. 11 Programs, Birkhaiiser, Boston. Golub G.H., LukF.T., and Overton M. (1981). “A Block Lanczos Method for Computing the Singular Values and Corresponding Singular Vectors of a Matrix” ACM Trans. Math. Soft. 7, 149-69. Luk F.T. (1978). “Sparse and Parallel Matrix Computations”, Report STAN-CS-78-685, Department of Computer Science, Stanford University, Standford, California. Parlett B. N. (1980a). “A New Look at the Lanczos Algorithm for Solving Symmetric Systems of Linear Equations”, Lin. Alg. and Its Applic. 29, 323-46. Van der Vorst H.A. (1982). “A Generalized Lanczos Scheme, Math. Comp. 39, 559-562. Saad Y. (1987). “On the Lanczos Method for Solving Symmetric Systems with Several Right Hand Sides”, Math. Comp. 48, 651-662. Widlund O. (1978). “A Lanczos Method for a Class of Nonsymmetric Systems of Linear Equations”, SIAM J. Num. Anal. 15, 801-12. Разреженные несимметричные процедуры для Ах = 6, основание на идеях Ланцоша/Арнольди, обсуждаются в Amoldi W.E. (1951). “The Principle of Minimized Iterations in the Solution of the Matrix Eigenvalue Problem”, Quart. Appl. Math. 9, 17-29. Saad Y. (1982). “The Lanczos Biorthogonalization Algorithm and Other Oblique Projection Methods for Solving Large Unsymmetric Systems”, SIAM J. Numer. Anal. 19, 485-506. Saad Y. (1984). “Practical Use of Some Krylov Subspace Methods for Solving Indefinite and Nonsymmetric Linear Systems”, SIAM J. Sci. and Stat. Comp. 5, 203-228. Saad Y. and Schultz M. (1986). GMRES: A Generalized Minimal Residual Algorithm for Solving Nonsymmetric Linear Systems”, SIAM J. Scientific and Stat. Comp. 7, 856-869. Walker H.F. (1988). “Implementation of the GMRES Method Using Householder Transformations”, SIAM I. Sci. Stat Comp. 9, 152-163. Обобщения процесса Ланцоша на спектральные задачи других типов обсуждаются в Golub G.H., Underwood R., and Wilkinson J. H. (1972). “The Lanczos Algorithm for the Symmetric Ax = XBx Problem”, Report STAN-CS-72-270, Department of Computer Science, Stanford University, Stanford, California. Van der Vorst H.A. (1982). “A Generalized Lanczos Scheme”, Math. Comp. 39, 559-562. 15*
Глава 10 Итерационные методы для линейных систем В конце предыдущей главы было показано, каким образом итерации Ланцоша можно использовать для решения различных линейных уравнений и задач наимень¬ ших квадратов. Разработанные методы подходят для больших разреженных задач, так как они не требуют разложения соответствующей матрицы. В этой главе мы продолжим обсуждение процедур решения линейных уравнений, обладающих этим же свойством. Первый раздел-это беглый обзор классических итерационных методов: Якоби, Гаусса-Зейделя, SOR, чебышевских полуитераций и т.д. Мы даем краткое изложе¬ ние этих методов, потому что наша главная цель в этой главе-основательно представить метод сопряженных градиентов. В § 10.2 мы подробно излагаем эту важную технику, естественным образом отталкиваясь от метода наискорейшего спуска. Напомним, что в § 9.3 метод сопряженных градиентов уже появился в связи с итерациями Ланцоша. Метод выводится заново для того, чтобы объяснить некоторые его практические варианты, которым посвящен § 10.3. Мы предупреждаем читателя о непоследовательности в обозначениях этой главы. В § 10.1 разработка методов на «ц] -уровне» делает необходимым исполь¬ зование верхних индексов: обозначает мо компоненту вектора х(Л). В других разделах, однако, развитие алгоритмов происходит без явного упоминания компо¬ нент векторов или матриц. Поэтому в § 10.2 и § 10.3 мы можем отказаться от верхних индексов, а последовательности векторов обозначать как {х*}. 10.1. Стандартные итерации В гл. 3 и 4 процедуры решения линейных уравнений были связаны с разложением матрицы коэффициентов А. Методы такого типа называются прямыми методами. Если матрица А большая и разреженная, то искомые составляющие разложений могут быть плотными, и это ограничивает практическое применение прямых методов. Одним из исключений является случай ленточной матрицы А (см. § 4.3). Но даже во многих задачах с ленточными матрицами сама лента оказывается разреженной, внося трудности в реализацию алгоритмов типа ленточного метода Холецкого. Одна из причин огромного интереса к процедурам решения разреженных линейных уравнений связана с тем значением, которое придается умению находить численные решения уравнений в частных производных. В действительности именно исследователи в области вычислительных методов для уравнений в частных произ¬ водных ответственны за многие из подходов к разреженным матрицам, которые теперь используются повсеместно. Грубо говоря, есть два подхода к разреженной задаче Ах — Ь. Один из них заключается в выборе подходящего прямого метода и его адаптации с тем, чтобы
IO.L Стандартные итерации 453 учесть разреженность в А. Типичные стратегии адаптации связаны с разумным использованием структур данных и со специальными, минимизирующими заполне¬ ния стратегиями выбора ведущего элемента. Есть обширная литература по этим вопросам; заинтересованному читателю следует обратиться к книгам George, Liu (1981) и Duff, Erisman, Reid (1986). Противоположностью прямым методам являются итерационные методы. Эти методы порождают последовательность приближенных решении {хк}, и по су¬ ществу А участвует лишь в матрично-векторных умножениях. При оценивании качества итерационного метода неизменно в центре внимания вопрос о том, как быстро сходятся итерации х{к}. В этом параграфе мы представим некоторые основные итерационные методы, обсудим их практические реализации и докажем несколько характерных теорем о поведении итераций. 10,1.1. Итерации Якоби и Гаусса-Зейделя Простейшей итерационной схемой, возможно, являются итерации Якоби. Они определяются для матриц с ненулевыми диагональными элементами. На метод может натолкнуть запись 3 х 3-системы Ах — Ь в следующем виде: xl = (N ~ а12Х2 — аихз)/аи * Х2 = (62 — **21 *1 — &2ЪХъУ а21 » *3 = (^3 — a3l ХI ““ &Ъ2 Xl)l' Предположим, что х{к)-какое-то приближение = Чтобы получить новое приближение х{к+1), естественно взять xr''-tbi-anxf-щ гх?)/аМ1, Х2 11 = (*2 - «21 - <*nxf )/al2 , (10.1.1) хГи=(Ь, «а.*? Это и определяет итерации Якоби в случае п = 3. Для произвольных и мы имеем for / — 1: л 1аихГ- I ' j=l l=i+l / *5 . ....... _ (10.1.2) end Заметим, что в итерациях Якоби при вычислении х\к+1) не используется инфор¬ мация, полученная в самый последний момент. Например, при вычислении jt(2fc+n используется х{к\ хотя уже известна компонента х(*+1>. Если мы пересмотрим итерации Якоби с тем, чтобы всегда использовать самые последние оценки для xt, то получим for / = 1: п iVr11- i .„«rk, 4 J= 1 j=Hr 1 / (10.1.3) end Так определяется то, что называется итерациями Гаусса-Зейделя. Для итераций Якоби и Гаусса-Зейделя переход от х'к> к х{к+и в сжатой форме описывается в терминах матриц L, D и (У, определяемых следующим образом:
454 Гл. 10. Итерационные методы для линейных чисел ■ 0 0 0 021 0 ' 1 = 031 O32 0 0 0 . °nl &п2 ап,п-1 0 D = diag(olb.. .,ann), 0 Oi2 Oi„ О о и = 0 0 Qn-2,n an — I,n О О О О Именно, шаг Якоби имеет вид Mjх(*+1) = NjXik) + b9 где Af, = D и Nj = — (L+ U). С другой стороны, шаг Гаусса-Зейделя определяется как Мсх{к+= Ncх(М + 6, где Mg = (D + L)hNg=-1/. 10.1.2. Расщепления и сходимость Процедуры Якоби и Гаусса-Зейделя-это типичные представители большого семейства итерационных методов, имеющих вид Mx(k+l> = Nxik} + Ь, (ЮЛ.5) где А = М — N есть расщепление матрицы А. Для практического применения итераций (ЮЛ .5) должна «легко» решаться система с матрицей М. Заметим, что для Якоби и Гаусса-Зейделя матрица М соответственно диагональная и нижняя тре¬ угольная. Сходятся ли итерации (ЮЛ.5) к х = А~х, зависит от собственных значений матрицы М “1 N. Именно, определим спектральный радиус произвольной п х л-мат- рицы G как р((7) = max{|X|:XeX(G)}; тогда величина р{M~lN) и определяет, будут ли итерации (10.1.5) успешными. Теорема 10.1.1. Предположим, что beR" и матрица А = М + NeRn * " невырожден¬ ная. Если Ы невырожденная и спектральный радиус матрицы Л/-1 N удовлетворяет неравенству p(M~1N)<\> то итерации х(Л), определенные согласно Мх(*+1) = = Nx(k) + b, сходятся к х = А~1Ь при любом начальном векторе х*0*.1* Доказательство. Пусть ет = х(к} — х обозначает погрешность на к-й итерации. Вследствие того что Мх — Nx + b, находим M{xik+U ~ х) = N(x{k) — х), и, значит, погрешность для х(*+ u имеет вид е(к+ п ~ М~1 Nem = (М~1N)ке{0). Из леммы 7.3.2 мы знаем, что (M~l N)k 0 тогда и только тогда, когда р(М-1 N) < 1.П 1) Обычно формулируют более полное (см. задачу ЮЛ .6) утверждение, а именно условие р(АГ^^)< 1 необходимо и достаточно для сходимости при любом начальном векторе.- Прим. перев.
10.1. Стандартные итерации 455 Этот результат является центральным при таком изучении итерационных мето¬ дов, когда разработка алгоритмов обычно происходит по следующим направле¬ ниям: • Предлагаются расщепления А = М — N, такие, что линейные системы Mz = d «легко» решаются. • Описываются классы матриц, для которых итерационная матрица G — М-1 N удовлетворяет р(С) < 1. • Устанавливаются дальнейшие результаты относительно p(G), дающие пред¬ ставление о том, каким образом погрешности е(к) стремятся к нулю. Например, рассмотрим итерации Якоби Djc(*+I) = - (L+ U)jc(4) + b. Одним из условий, обеспечивающих p(Mj1NJ) < 1, является строгое преобладание. Действи¬ тельно, если А обладает этим свойством (определение см. в § 3.4.10), то Щ<\. р(Мух Nj) < || D~x(L-\- U) 11^ = max 1 ^ I ^ И j ф i Как правило, чем «сильнее» диагональное преобладание, тем быстрее сходи¬ мость, но есть и контрпримеры: см. задачу 10.1.8. Для метода Гаусса -Зейделя, чтобы установить его сходимость для симметрич¬ ной положительно определенной А; оценка спектрального радиуса осуществляется сложнее. Теорема 10.1.2. Если матрица AeR" х " симметричная и положительно определенная, то итерации Гаусса- Зейделя (10.1.3) сходятся при любом лло\ Доказательство. Запишем А = L + D + LT, где D = diag(аи) и L нижняя строго треугольная. В свете теоремы 10.1.1. наша задача-показать, что все собственные значения матрицы G = — (D 4- L)~1LT находятся внутри единичного круга. Вслед¬ ствие положительной определенности матрицы Ь имеем GX = D l!2GD~1{1 — = — (/ + L1)”1Lf, где Lx = D~112LDlf2. Поскольку G и Gt имеют одинаковые собственные значения, мы должны убедиться в том, что p(Gi) < 1. Если Gx х = Хх и хих=1, то -L[x = >.(/-hL1)x и, следовательно, - xHLlx = Х(1 + xHLix). По¬ ложив а + bi = Xй Lt х9 получаем |Ь|2 = — а + bi 1 + а + bi а2 + Ь2 Однако в силу положительной определенности матрицы D 1/2 AD 1/2 = / + Lt + + L [ нетрудно показать, что 0 < 1 + хИ Ltx + хИ Llx = 1 + 2а, откуда и следует, что |Я.| < 1.П Этот результат используется постоянно, из-за того что многие матрицы, возникающие при дискретизации эллиптических уравнений в частных производных, являются симметричными положительно определенными. В литературе появилось множество других результатов в том же духе. См. Varga (1962), Young (1971), Hageman, Young (1981). 10.1.3. Практическая реализация Гаусса-Зейделя Теперь мы сосредоточимся на некоторых практических деталях, связанных с итерациями Гаусса-Зейделя. Особенно просто реализуется шаг Гаусса-Зейделя (10.1.3) с замещением:
456 Гл. 10. Итерационные методы для линейных чисел for /= 1: п Xi end = i: п < = (*,- £ °iixi - £ auxi )/аи ' j=l j=i+1 ' Число флопов в этих вычислениях примерно в два раза больше числа ненулевых элементов в матрице А. Нет никакого смысла в более точном оценивании вычисли¬ тельной работы, потому что реализация в действительности сильно зависит от структуры решаемой задачи. Для того чтобы подчеркнуть эту мысль, рассмотрим применение алгоритма 10.1.1. к блочно-трехдиагональной системе размера NM х NM: Т -In -In Т -In 0 -In Т 9i ‘ /i ‘ 92 /2 % — : (10.1.6) . 9М . fM . где ' 4 -1 -1 4 0 ' ' G(1J) ' <?(2,j) 1 Co. Co. ■ Г = 0 ••• •• -1 -1 4 . . 9j = . G(N,j) . Эта задача возникает при дискретизации уравнения Пуассона в прямоугольнике. Легко показать, что здесь матрица А положительно определенная. При условии что G(iJ) = 0, если /g{0,JV + 1} или >е{0,М + 1}, один шаг Гаусса -Зейделя с замещением принимает следующую форму: for j= 1:Af for /= 1: Af G(iJ) = (F(iJ) + G(i- l,y) + G(i + 1,;) + G(iJ - i) + G(iJ + l))/4 end end Заметим, что в этой задаче для матрицы А не требуется никакой памяти. 10.1.4. Последовательная верхняя релаксация Метод Гаусса-Зейделя очень привлекателен в силу своей простоты. К не¬ счастью, если спектральный радиус для Af “1JVG близок к единице, то метод может оказаться непозволительно медленным из-за того, что ошибки стремятся к нулю как p(AfJ1 NG)k. Чтобы исправить это, возьмем coeR и рассмотрим следующую модификацию шага Гаусса-Зейделя: for i = 1: п х* + 1) = “(*< - I аих?+1) - £ at)xf\au + (1 - С0)*!*> (10.1.7) end 4 1=1 J=i+l '
10.1. Стандартные итерации 457 Так определяется метод последовательной верхней релаксации (SOR - Successive over relaxation). Используя (10.1.4), мы видим, что в матричных обозначениях шаг SOR выглядит как А/ *<*+1) = ЛГ *<к) + со6, (10.1.8) ш со 1 х 7 где Мш = D + coLh - (1 — w)Z) — ю(/. Для небольшого числа специфических (но важных) задач, таких, как (10.1.6), значение релаксационного параметра со, ми¬ нимизирующего р является известным. Более того, в результате р(Mi 1 Nt) = p(M’lNG) значительно сокращается. В более сложных задачах, одна¬ ко, для того чтобы определить подходящее (о, может возникнуть необходимость в выполнении весьма трудного анализа собственных значений. Полный обзор «теории SOR» появился в Young (1971). Некоторые практические схемы для оценивания оптимального со обсуждаются в O’Leary (1976) и Wachpress (1966). 10Л.5. Метод чебышевских полуитераций Еще один подход к ускорению сходимости итерационного метода извлекает пользу из полиномов Чебышева. Предположим, что посредством итераций Мхи*1* = NxiJ) + b получены x(1), ..., x(k) и мы хотим определить коэффициенты Vj(fc), j = 0:fc, такие, что вектор к /*> = £ У](к)хи) (10.1.9) ./=О лучше приближает решение, чем х{к). Если х(0) = ... = х{к) = х, то разумно потребо¬ вать, чтобы у{к) — х. Следовательно, будем считать, что £ v,(*)«L (10.1.10) j-o Посмотрим, как при этом ограничении выбирать vy(/e) с тем, чтобы минимизировать погрешность для у{к). Вспомним, что согласно теореме 10.1.1 x(k) — х = (М~1N )* е(0), где е(0) = = х(0) — х. Мы видим, что к к у(к) _ х= £ Vj(k)(xU) — х) = £ Nye{0). j=о j-o Работая с 2-нормами, отсюда получаем »>'w-Jfb<llA(G)l2lle,0,la. (10.1.11) где G = M~l N и P*(z) = X >-о Заметим, что условие (10.1.10) влечет за собой р*(1) = 1. Теперь предположим, что матрица G симметричная и ее собственные значения X,- удовлетворяют неравенствам —1<а^Хя<...<Х1<р<1. Отсюда вытекает, что IIР* (С) II2 = max \pk(kf)\< max |pt(X)|. Таким образом, для того чтобы сделать норму pk(G) малой, нам нужен полином pk(z), принимающий малые значения на [a, [3] и подчиненный ограничению
458 Гл. 10. Итерационные методы для линейных чисел Рассмотрим полиномы Чебышева Cj{z), порождаемые рекуррентным соотноше¬ нием Cj(z) = 2zcj.i(z) — Cj_2(z), где c0(z) = 1 и c2(z) = z. Эти полиномы удовлетво¬ ряют неравенству |Cj(z) | < 1 на [— 1,1], но быстро растут вне этого интервала. Как следствие, полином „ т—• где ц = — 1 + 2^—^ = 1 +2^5, И p-а р-а удовлетворяет условию рк (1) = 1 и оказывается малым на [а, Р]. В силу определения pk(z) и уравнения (10.1.11) ь "2 Мй)I ' Таким образом, чем больше р, тем значительнее ускорение сходимости. Для того чтобы изложенное выше стало практической процедурой ускорения, для вычисления у{к) нам нужен метод более эффективный, чем (10.1.9). Мы молчаливо предполагаем, что п большое и поэтому вновь обращаться к jc(0), , х(к) при больших к может быть неудобно или даже невозможно. К счастью, для у{к} можно вывести трехчленные рекуррентные соотношения, опираясь на трехчленные рекуррентные соотношения для многочленов Чебышева. Именно, можно показать, что если „ Л2~р~а СЛй) P-а с*+1(ц)’ то yk+1) = ct)k+1(y(k) — У*"п + уzik)) + Mzik) = Ь - Ау{к\ (10.1.12) Y = 2/(2 — а — Р), где У0> = л(0) и у{1) — х(1). Об этой схеме мы будем говорить как о чебышевском полуитерационном методе, связанном с Му(к*и — Ny{k) + Ъ. Для эффективности ускорения нам нужны хорошие нижние и верхние оценки для аи^. Как и для SOR, установить эти параметры может быть трудно, за исключением небольшого числа специфических задач. Чебышевские полуитерационные методы всесторонне анализируются в Golub, Varga (1961), а также в Varga (1962, гл. 5). 10.1.6. Симметричный метод SOR При выводе чебышевского ускорения мы предполагали, что итерационная матрица G = M~l N симметрична. Таким образом, наш простой анализ неприме¬ ним в случае SOR-итераций с несимметричной матрицей M~lNa. Однако есть возможность симметризовать метод SOR, сделав его пригодным к применению чебышевского ускорения. Идея состоит в сочетании метода SOR и схемы SOR с обратным ходом:
10.1. Стандартные итерации 459 for i; = и: — 1:1 ” = ©(*> - £ aijXf+" - £ al}xf\alt + (1 - <*>)*<*> (10.1.13) end 4 Jml j=i+1 1 Эти итерации получаются, когда неизвестные в (10.1,7) перевычисляются в обрат¬ ном порядке. Обратный метод SOR можно описать в матричных терминах, используя (10.1.4). Именно, имеем Л?дах(* + 1> = J^(0x(k) + соЬ, где = D + coG, Яш = (1 - ю)0 - coL. (10.1.14) Если А симметричная (U = LT), то и и мы получаем итерации М0)Х(*+1/2) = АГи Х{к) + G)fc, (10.1.15) M^c<*+1) = N£*<*+1/2> + coA. Ясно, что G = Af "rNjAf^1NtD представляет собой итерационную матрицу для этого метода. Из определений Мт и Na следует, что G = M-iNm(MnD-1MZ)-l{NlD-lNn). (10.1.16) Если D имеет положительные диагональные элементы и КК Т — (N £ D “1 — раз¬ ложение Холецкого, то КтGK ~т = Кт(AfwD“1МJ)"1X. Таким образом, G подоб¬ на симметричной матрице и имеет вещественные собственные значения. Итерационный метод (10.1.15) называется методом симметричной последова¬ тельной верхней релаксации (SSOR). Он часто используется вместе с чебышевским полуитерационным ускорением. Задачи 10.1.1* Показать, что итерации Якоби можно записать в виде xik+l) = x(k> + Hrik\ где r{k) — b — Ax(k\ Получить аналогичное утверждение для итераций Гаусса-Зейделя. 10.1.2. Показать, что если А обладает строгим диагональным преобладанием, то итерации Гаусса-Зейделя сходятся. 10.1.3. Показать, что итерации Якоби сходятся для симметричных положительно опреде¬ ленных 2 х 2-систем. 10.1.4. Показать, что если матрица А = М — N вырожденная, то нельзя получить р(М“1 N) < 1 ни для какой невырожденной М. 10.1.5. Доказать (10.1.16). 10.1.6. Доказать обращение теоремы 10.1.1. Другими словами, показать, что если итерации Afx(fc+1) = Nx{k) + b всегда сходятся, то р(М-1 N) < 1. Г 1 —1/2 П 10.1.7. (R.S. Varga). Предположим, что Л,=|^ ^ J и А2 = Пусть Jl и J2-соответствующие итерационные матрицы метода Якоби. Показать, что P(Ji)> р(^2)» т- е. опровергнув заявление о том, что усиление диагонального преобладания влечет за собой более быструю сходимость метода Якоби. Замечания и литература к § 10.1 С намного большей основательностью, чем здесь, обзор области итерационных методов дают три исчерпывающих тома: Hageman L.A. and Young D. М. (1981). Applied Iterative Methods, Academic Press, New York. [Есть перевод: Хейгеман JI., Янг Д. Прикладные итерационные методы.-М.: Мир, 1986.] Varga R.S. (1962). Matrix Iterative Analysis. Prentice-Hall, Englewood Cliffs, New Jersey. Young D. M. (1971). Iterative Solution of Large Systems, Academic Press, New York. Г . -3/41 L —1/12 1 J
460 Гл. 10. Итерационные методы для линейных чисел Мы также настоятельно рекомендуем гл. 7 из Ortega J. (1972). Numerical Analysis: A Second Course, Academic Press, New York. Часто предпочтение отдается прямому (неитерационному) решению больших разреженных систем. См. Duff I. S., Erisman А. М. and Reid J. К. (1986). Direct Methods Гог Sparse Matrices, Oxford University Press. George J. A. and Liu J. W. (1981). Computer Solution of Large Sparse Positive Definite Systems, Prentice-Hall, Englewood Cliffs, NJ. [Имеется перевод: Джордж А., Лю Дж. Численное решение больших разреженных систем уравнений. - М.: «Мир», 1984.] Мы видели, что число обусловленности к(А) имеет важное значение, когда к системе Ах = Ь применяются прямые методы. Однако обусловленность системы имеет отношение и к эффективности итерационного метода. См, Arioli М. and Romani F. (1985) “Relations Between Condition Numbers and the Convergence of the Jacobi Method for Real Positive Definite Matrices”, Numer. Math. 46, 31-42. Как уже отмечалось, наиболее полное изложение метода SOR дает Young (1971). Предме¬ том «теории SOR» является выработка рекомендаций по выбору параметра релаксации св. При этом существенно, как упорядочены уравнения и неизвестные. См. Bernal М. J. М. and Vemer J.H. (1968). “On generalizing of the Theory of Consistent Orderings for Successive Over-Relaxation Methods’*. Numer. Math. 12, 215-22. Nicolaides R. A. (1974). “On a Geometrical Aspect of SOR and the Theory of Consistent Ordering for Positive Definite Matrices”, Numer. Math. 12, 99-104. Young D. M. (1970). “Convergence Properties of the Symmetric and Unsymmetric Over-Relaxation Methods”, Math. Comp. 2, 793-807. Young D. M. (1972). “Generalization of Property A and Consistent Ordering”, SIAM J. Num. Anal. 9, 454-63. Интересны также эвристические методы для оценки со. См. O’Leary D. Р. (1976). “Hybrid Conjugate Gradient Algorithms”, Report STAN-CS-76-548, De¬ partment of Computer Science, Stanford University (Ph. D. thesis). Wachrpress E. L. (1966). Iterative Solution of Elliptic Systems, Prentice-Hall, Englewood Cliffs, New Jersey. Анализ чебышевских полуитераций появился в Golub G. Н. and Varga R. S. (1961). “Chebyshev Semi-Iterative Methods, Successive Over-Relaxation Iterative Methods, and Second-Order Richardson Iterative Methods, Parts I and II”, Numer. Math. 3, 157-68. Эта работа использует предположение о вещественности собственных значений соответст¬ вующей итерационной матрицы. Как действовать, когда это не так, обсуждается в Eiermann М. and Niethammer W. (1983). “On the Construction of Semi-iterative Methods” SIAM J. Numer. Anal. 20, 1153-1160. Golub G. H. and Overton M. (1988). “The Convergence of Inexact Chebyshev and Richardson Iterative Methods for Solving Linear Systems”, Numer. Math. 53, 571-594. Manteuffel T. A. (1977). “The Chebyshev Iteration for Nonsymmetric Linear Systems”, Numer. Math. 28, 307-27. Niethammer W. and Varga R. S. (1983). “The Analysis of k-step Iterative Methods for Linear Systems from Summability Theory”, Numer. Math. 41, 177-206. Иногда есть возможность «симметризации» итерационного метода, влекущей за собой упрощение процесса ускорения, поскольку все собственные значения здесь вещественные. Так обстоит дело в случае метода SSOR, обсуждаемого в Sheldon J. W. (1955). “On the Numerical Solution of Elliptic Difference Equations” Math. Tables Aids Comp. 9, 101-12. Некоторое внимание уделялось параллельной реализации классических итераций. См. Evans D.J. (1984). “Parallel SOR Iterative methods”, Parallel Computing I, 3-18.
10,2, Метод сопряженных градиентов 461 JohnssonS. L. and Но С. Т. (1987). “Multiple Tridiagonal Systems, the Alternating Direction Methods, and Boolean Cube Configured Multiprocessors”, Report YALEU DCS RR-532, Dept, of Computing Science, Yale University, New Haven, CT. Patel N. and Jordan H. (1984), “A Parallelized Point Rowwise Successive Over-Relaxation Method on a Multiprocessor”, Parallel Computing 1, 207-222. Plemmons R.J. (1986). “A Parallel Block Iterative Scheme Applied to Computations in Structural Analysis”, SIAM J. Alg. and Disc. Methods 7, 337-347. Добавление при переводе к § ЮЛ Обстоятельное изложение основных итерационных методов и их применений можно найти в следующих отечественных монографиях: Марчук Г. И., Кузнецов Ю. А. (1972). Итерационные методы и квадратичные функционалы - Новосибирск: Наука. Самарский А.А., Николаев Е.С. (1978). Методы решения сеточных уравнений-М.: Наука. Воеводин В. В., Кузнецов Ю.А. (1984). Матрицы и вычисления.-М.: Наука. Марчук Г. И. (1986). Методы расщепления и переменных направлений.-М.: ОВМ АН СССР. Перевод Дьяконов Е. Г. (1989). Минимизация вычислительной работы.-М.: Наука. 10.2. Метод сопряженных градиентов Трудность, связанная с SOR, чебышевскими полуитерациями и такого же типа методами, заключается в том, что они зависят от параметров, правильный выбор которых иногда бывает затруднителен. Например, для того чтобы чебышевское ускорение было успешным, нам нужны хорошие оценки для наибольшего и наи¬ меньшего собственных значений соответствующей итерационной матрицы Af "1 N. Если эта матрица не устроена по-особому, то получение их в аналитическом виде, скорее всего, невозможно, а вычисление дорого. В этом разделе мы представим метод, в котором нет этой трудности,-хорошо известный метод сопряженных градиентов Хестенса-Штифеля. Мы вывели этот метод в § 9.3.1 при обсуждении-как приспособить алгоритм Ланцоша к решению симметричных положительно определенных линейных систем. Здесь мы выводим метод сопряженных градиентов заново для того, чтобы подготовить почву для § 10.3, где будет показана его связь с другими итерационными схемами для Ах = Ь и будут описаны некоторые из полезных его обобщений. 10,2.1. Наискорейшнй спуск Вывод метода мы начнем с того, что обсудим, как может происходить рыскание при минимизации функционала ф(х), имеющего вид фОс) - ^хТ Ах — хтЬ, где beRn и матрица Ае R" хл предполагается положительно определенной и сим¬ метричной. Минимальное значение ф равно —bTA~lb/2 и достигается при х = А~1 Ь. Таким образом, минимизация ф и решение системы Ах— Ь- эквивалент¬ ные задачи. Одной из самых простых стратегий минимизации ф является метод наискорей¬ шего спуска. В текущей точке хс функция ф убывает наиболее быстро в направлении антиградиента — Уф(хс>) = b — Ахс. Мы называем rc = b — Ахс
462 Гл. 10. Итерационные методы для линейных чисел невязкой вектора хс. Если невязка ненулевая, то <р(хс + агс) < ф(хс) для некоторого положительного а. В методе наискорейшего спуска (с точной минимизацией на прямой) мы берем а = г J rjrj Агс, дающее минимум для <р(хс + агс). Получаем к = 0; дг0 = 0; r0 = b while гк Ф 0 к = к+\ a ks=rl.1rk_Jrl-lArk+l Ч - **-i + а*г»_, = А — Ахк (10.2Л) end Выбор начального вектора в виде х0 = 0 не является ограничением. Если х считается более подходящим начальным приближением, то мы просто применим (10.2.1), заменив Ь на b — Ах. В этом случае искомое решение аппроксимируется векторами Глобальная сходимость метода наискорейшего спуска является следствием легко устанавливаемого неравенства фОс*) + \ьТА-Ч < ( 1 - + \ьТА-'Ь). (10.2.2) К несчастью, скорость сходимости может быть недопустимо медленной, если к2{Л) = (А)!\п(А) большое. В этом случае линии уровня для <р являются сильно вытянутыми гиперэллипсоидами, а минимизация соответствует поиску самой ниж¬ ней точки на относительно плоском дне крутого оврага. При наискорейшем спуске мы вынуждены переходить с одной стороны оврага на другую вместо того, чтобы спуститься к его дну. Направления градиента, возникающие при итерациях, являют¬ ся слишком близкими; это и замедляет продвижение к точке минимума. 10.2.2. Произвольные направления спуска Чтобы избежать ловушек при наискорейшем спуске, мы рассмотрим последова¬ тельную минимизацию ф вдоль какого-либо множества направлений {/?i,p2,...}, которые не обязаны соответствовать невязкам { г0, гх,...}. Легко показать, что минимум фС**-! + арк) по а дает а = ак — Рк rk-i/pk Арк . При таком выборе, как легко видеть, получаем +акрк) = <р(хк_1)-^{р1гк_1)1р1Арк. (10.2.3) Таким образом, для того чтобы обеспечить уменьшение ф, мы должны потребовать, чтобы рк не был ортогонален к гк_г. Это приводит к следующей стратегии минимизации: к = 0, х0 — 0, r0 b while гк Ф 0 к = к+ 1 Выбрать направление рк так, чтобы ркгк_х Ф0 а* = Рк rk-JplАрк (10.2.4) хк = + арк гк = Ь - Ахк end
10.2. Метод сопряженных градиентов 463 Заметим, что xk€span{pj, ... ,рк}. Проблема, конечно, состоит в том, как выби¬ рать эти векторы с тем, чтобы гарантировать глобальную сходимость и в то же время обойти ловушки наискорейшего спуска. 10*2.3. А-сопряженные направления спуска По-видимому, идеальный подход был бы связан с выбором линейно независи¬ мых Pi с тем, чтобы каждое х{ было решением задачи min ф(х). (10.2.5) *espen{/7t,... ,Л} Это гарантировало бы не только глобальную сходимость, но и конечность процесса, так как должно быть Ахп — Ь. Заметим, что то, что нам нужно, это такой вектор рк, для которого решение одномерной задачи минимизации min9(xi-1 +ар*) а одновременно дает решение для /с-мерной задачи минимизации (10.2.5). Это серьез¬ ное ограничение, но, оказывается, этого можно добиться. Пусть Рк = [р19... , pk]eR" х * является матрицей направлений спуска. Если x€range(pk), то х = Рк-хУ + арк Для некоторых yeR**1 и aeR. Для х такого вида легко показать, что сс^ <Р (X) = ф(Л,-1 у) + aУТ Pi-1 АРк + yP*r АРк ~ apj Ь. Присутствие «смешанного члена» аут х Арк усложняет минимизацию. Без него задача минимизации ср по range (Pk) расщепилась бы на задачу минимизации по range(Pk_l), решение которой хк_ £ предполагается известным, и простую миними¬ зацию для скаляра а. Один из способов добиться этого расщепления-потребовать, чтобы направление рк было Л-сопряженным по отношению к рх,... ,рк-и т.е. Р[м% = 0. (10.2.6) Если это сделать и определить хк_геrange-1) и akeR соотношениями Ф С**— i) ~ min ф (Рк _ i ^), У ак = Рк b/pl Арк, то задача Г ц2 niinvtP*-! у + акрк) = min«p (Рк-ку) + min j —pi Арк - a pi b у, а у а V ^ будет решена, если взять и a = ak. Поскольку хк_к есть линейная комбинация векторов рх,...,pk_ j, отсюда вытекает, что р% Ахк_ х = 0 и, следова¬ тельно, *k=Plrk-ilplApk, т.е. рецепт для ак точно такой же, как в (10.2.4). Таким образом, получаем к = 0; х0 = 0; r0 = b while гкФ 0 к = к + 1
464 Гл. 10. Итерационные методы для линейных чисел Выбрать />kespan {Арх,..., Арк_х}1 так, чтобы pirk_A Ф 0. (10.2.7) a* = WVi/r*r-i'4r*_, x* = xk-i + акрк гк=Ь- Ахк end Здесь вектор хк = хк_г 4 а крк минимизирует ср на линейной оболочке направлений спуска, т.е. на подпространстве span^,... ,р*}. 10.2.4. Метод сопряженных градиентов Чтобы выполнить (10.2.7), мы должны быть уверены, что возможен выбор рк, при котором р1-кАрк= 0 и р%гк_1ф0. Предположим, что векторы рА,...,/?к_| ненулевые и удовлетворяют условиям рТ Apj = 0 при i Ф j. Поскольку хк_ А € espan {рх,.... рк-{}, отсюда вытекает, что для любого р€ R" мы имеем ртгк_А = = ртb — рт Apk^lz для какого-то zeR*~1. Если ртгк_х = 0 для всех р, являющихся А -сопряженными с рх, ..., pk_ А, то Ъ € span {Арх,..., Арк _ А}. А это влечет за собой х = A~lbespan{pl, и, значит, xk_t = х, т.е. rk_j Ф 0. Следовательно, если rk_A ^ 0, то можно найти ненулевой вектор рк, 4-сопряженный с рА,... *рк-х и удовлетворяющий условию р\гк_х Ф 0. Поскольку наша цель-осуществить быстрое сокращение величины невязок, естественно выбирать в качестве рк вектор, который ближе всего к rk_A среди векторов, А-сопряженных с рх, ... , />к_А. Так мы получаем «нулевую версию» метода сопряженных градиентов: к = 0; х0 = 0; г0 = Ъ while гкФ 0 /с = fc 4- 1 \\к—\ Pi =г0 else (10.2.8) Пусть рк минимизирует || р — гк_ А |]2 среди всех векторов pespanj^, Арк_х}т. end ^=Pkrk-jplAPk *k = *k-i +а кРк гк = Ь- Ахк end х = хк Конечность этого алгоритма обеспечивается тем, что векторы рк ненулевые и, будучи ненулевыми А -сопряженными векторами, линейно независимы. Более точно, или гк _ А =0 для некоторого к ^ л, или мы вычислим х„, минимизирующий ср на фап {р, = R". 10.2.5. Несколько крайне необходимых наблюдений Чтобы сделать (10.2.8) эффективной процедурой для решения разреженных систем Ах — Ь, нам нужен эффективный метод вычисления рк. В качестве первого шага в этом направлении изучим свойства рк как решения определенной задачи наименьших квадратов. Лемма 10.2.1. Для к^2 векторы рк, получаемые согласно (10.2.8), удовлетворяют
10.2. Метод сопряженных градиентов 465 соотношению Рк — Гк- 1 — АР к- 1 Zk- 1 * где zk_ t есть решение задачи min || rfc_ А — АРк_xz\\2. г Доказательство. Предположим, что zk_x-есть решение приведенной выше задачи наименьших квадратов и р = гк_г — APk_lzk_1 -минимальная невязка. Отсюда получаем рТAPk_t = 0. Более того, поскольку р = [I — (АРк_1)(АРк_1)+]гк^х- ортогональная проекция вектора гк_А на range(/4Pft_!), р является ближайшим вектором к rfc_! на range(/4Pfc-i). Таким образом, р = рк_г .□ Используя этот результат, мы можем установить несколько важных соотноше¬ ний между невязками г; и направлениями спуска />,. Теорема 10.2.2. После к итераций метода сопряженных направлений имеем Г) = fj-i. — VjApj, (10.2.9) Pj rj = 0, (10.2.10) span p}) = span {r0,... , rj_,} = span{b, Ab, , AJ~lb}. (10.2.11) Доказательство. Уравнение (10.2.9) получается, если подействовать матрицей А на обе части равенства х} = -I- aft и учесть определение невязки. Чтобы установить (10.2.10), заметим, что если (Pj APj)yj — Pj 6, то уi миними¬ зирует Ф(Р)У) = \уТ(р] APi)y - yTpJЬ. Таким образом, Pf АР}уj = Pj b, и поэтому х} = и Pj r} = Pj(b — АР}у}) = 0. Чтобы доказать соотношение (10.2.11), необходима индукция. При у = 1 оно очевидно верно. Предположим, что оно выполняется для некоторого у, удовлетво¬ ряющего 1 <у < к. Вследствие (10.2.9) /yespan{A, Ah,..., Ajb} и, значит, pj+l = г j — APjZjEspan {b, Ab,..., AJb}. Оба пространства span{r0,..., r7-} и span Pj+1} имеют размерность j + 1, вследствие чего они должны совпадать с span {6, Ab,..., A*b} .□ Теперь мы установим взаимную ортогональность невязок гу. Теорема 10.2.3. После к — 1 шагов алгоритма сопряженных градиентов (10.2.8). невязки г0,..., rk _ j взаимно ортогональны. Доказательство. Из уравнения + а,-д вытекает, что = ri_i — ai Л/?.. Таким образом, по лемме 10.2.1, для у = 1 :fc ^ = Г/-1 - lApi> ••• » 1 ]z>-16span{r0,..., ry_,}. Следовательно, \_pt,..., pk ] = [ r0,..., rk _ t ] T для некоторой верхней треугольной матрицы 7eRfc * *. Поскольку векторы р{ независимы, матрица Т невырожденная и поэтому 1>0> ■ * * > rk~ 1 ] = С*/*1 * • • • > РкЛ Т Как следствие /у_ t е span {pt,..., pj} для j = 1: к. Но в силу (10.2.10) PJ- L rk_t — 0. Поскольку г0,..., rk_2Gspan{pi9... >рк-к}, мы должны заключить, что rjrk^l — 0 для у = 0: к — 2. Теперь покажем, каким образом рк выражается в виде линейной комбинации рк_х
466 Гл. 10. Итерационные методы для линейных чисел к гк_1. Представим вектор zt_L из леммы 10.2.1 в блочном виде к-2 и J 1 и воспользуемся тождеством г*_, — г к-г - at_ L Apt_ [. Мы видим, что Рк = '*-1- *Pk-izk-t=rk-i- АРй_2п-цАрл = ^1 + ^)»*-1 +5*-i. где Я к- 1 = Гк- 2 ~~ АРк-2н> Qk- 1 Вследствие взаимной ортогональности невязок ^ векторы sk- j и гк„ х ортогональны. Таким образом, задача наименьших квадратов из леммы 10.2Л сводится к выбору ц и н\ таких, что величина Ир* 12 = f1 + II г»-‘ Иг + И5*-* 11г \ ak_i/ минимальна. Поскольку 2-норма для г*_2 — имеет минимум в точке дающей невязку рк-1? отсюда вытекает, что sk_x есть кратное вектора Следовательно, span {/•*_!, pk„t}. Не ограничивая общности, мы можем счи¬ тать, что рк — rk_ j + ркрк _,, и так как pl_ г Арк = 0 и i гк_, =0, отсюда вытека¬ ет, что « Pf-i^-i 'l-i'k-1 AT-i^A-i’ * рГ^Р* ‘ Это приводит к «версии 1» метода сопряженных градиентов: к = 0; х0 =* 0; r0 — b while гкФ 0 к = /с+ 1 if кФ I Pi =г0 else Р* = - Р*-1 Лг* -. /Р*-1 »Р*-1 (10.2.12) Р* = Г*-1 + PfcPfc-j end «* = '■J'-i^-i/pJ^A ** = -**-1 +°*Р* Г* = * - Л** end a = *k Кажется, что эти итерации - в том виде, как они записаны-требуют трех различных умножений матрицы на вектор на каждый проход цикла. Однако если вычислять невязки с помощью рекурсии гк = гк_г — акАрк и подставить rl-1 '■*-! = - a*-irI-1 АРк-1. (10.2.13) ^ 1 г*-2 = ак-,Pk--, М-, (10.2.14) в формулу для Рк, то у нас получится следующая более эффективная реализация метода.
10.2. Метод отряженных градиентов 467 Алгоритм 10.2.1 (Отраженные граднеггы). Для симметричной положительной опре¬ деленной матрицы ЛеК"х" и вектора deR" следующий алгоритм вычисляет решение xeR" системы Ах - Ь. к = 0; х„ - 0; r„ = b while гк Ф О к = к + 1 if It = 1 Pi = ro else Э* = »■*-1j»1*-a Pk ~ Гк-I + Р*Л-1 end ak = rl-\rk-llplApk Xk - Xk.1 + akpk rk — rk- 1 — ak^Pfc end Эта процедура и есть по существу алгоритм сопряженных градиентов, появив¬ шийся в оригинальной работе Хестенса и Штифеля (Heslenes, Stiefel (1952)). Детали, связанные с его практической реализацией, обсуждаются в § 10.3. Но уже здесь укажем на то, что каждая итерация требует лишь одного умножения матрицы на вектор. 10.2*6. Связь с алгоритмом Ланцоша Б § 9.3.1 мы вывели метод сопряженных градиентов из алгоритма Ланцоша. Теперь давайте проследим за связями между этими двумя алгоритмами в обратном порядке, «выводя» процесс Ланцоша из сопря¬ женных градиентов. Определим матрицу невязок Д* е R" *- как Д* = [г0, и верхнюю двухдиагональную матрицу BkeRk * * как Вк = 1 -02 — 03 0 0 -0к 1 Из уравнений pi = rJ_1 + fijPj-19J = 2: к и равенства рг - г0 следует, что Л* = РкВк. Как следствие ^[-сопряженности столбцов матрицы Рк = \_pt,..., рк ] мы видим, что ^матрица Rl ARk = Вк diag(^[ Арх,..., р\ Арк)В\ трехдиагональная. Из (10.2.11) и теоремы 10.2.3 вытекает, что если Д — diag(p0,..., p^j), ||г, ||2, то столбцы в Д*Д-1 образуют орто нормированный базис подпространства span {by Abt..., Ак~1Ъ}. Следовательно, столбцы этой матрицы являются, по сути, векторами Ланцоша из алгоритма 9.3.1, т.е. qk— ±ri_t/pi_l, где / = 1 :к. Более того, отвечающая этим ланцошевым векторам трехдиагональная матрица задается формулой Тк = Д“1 Bl diag [р] pt)Bk Д “1. (10.2.16)
468 Гл. JO. Итерационные методы для линейных чисел Диагональные и подциагональные элементы этой матрицы включают величины, которые легко извлекаются из итераций сопряженных градиентов. Таким образом, порождая векторы хк из алгоритма 10.2.1, мы можем получить хорошие оценки крайних собственных значений (и числа обусловленности) матрицы А. 10.2.7. Некоторые практические детали Критерий окончания итераций в алгоритме 10.2.1 нереалистичен. Ошибки округ¬ ления приводят к тому, что невязки теряют ортогональность, а конечность процесса не гарантируется математически. Более того, когда применяется метод сопряжен¬ ных градиентов, то обычно п настолько большое, что в 0{п) итерациях объем работы неприемлемо большой. Как следствие этих наблюдений метод принято рассматривать как какую-то подлинно итерационную технику с критерием останова, основанном на максимуме ктлх для числа итераций и норме невязки. Это приводит к следующей практической версии алгоритма 10.2.1: к = 0; х = 0; г = Ь; р0 = || г ||^ wMe >/р!>8|*Ц2Л k<k^ к = к+ 1 if к= 1 Р = г else Р к = Pfc-l/Pfc-2 Р = г + Р*/> end vv = Ар а* = Pk-i/PTw х = х + а кр г = г — ак w Р* = II Г щ end Этот алгоритм требует одно умножение матрицы на вектор и Юл флопов на одну итерацию. Заметим, что по существу нужна память только для четырех л-векторов: х, г, р и w. Индексация скаляров1) не является необходимой и оставлена здесь только для того, чтобы облегчить сравнение с алгоритмом 10.2,1. Критерий останова может также опираться на эвристические оценки для по¬ грешности А~х rkf получаемые с помощью аппроксимации || А~1 \\2 обратной величиной к наименьшему собственному значению трехдиагональной матрицы Тк вида (10.2.16). Идея рассматривать сопряженные градиенты как итерационный метод берет начало в Reid (1971b). Итерационная точка зрения на метод полезна, но в этом случае центральное значение для успешного применения имеет скорость сходи¬ мости. 10.2.8. Сходимость метода Этот параграф мы завершим изучением сходимости итераций {xfc} метода сопряженных градиентов. Будут приведены два результата, и оба они говорят о том, что метод работает хорошо, когда матрица А близка к единичной-либо по норме, либо в том смысле, что отклонение имеет малый ранг. 1} Тем не менее важно как-то различать pJ[_1 и рк_2.~Прим. перев.
10.2. Метод сопряженных градиентов 469 Теорема 10.2.4. Если А = I + В-симметричная положительно определенная п х п-матрица и rank (Я) = г, то алгоритм 10.2.1 сходится не более чем за г шагов. Доказательство. Если = span {b, Ab,, Ak~l b}, то из равенства rank (A — I) = r вытекает, что dim(S*) ^ г для всех k. Поскольку span {px,..., pk} = и векторы pt независимы, отсюда следует, что итерации не могут продолжаться более чем г шагов. □ Из теоремы 10.2.4 вытекает важная метатеорема: • Если А близка к г-ранговой модификации единичной матрицы, то алгоритм 10.2.1 почти сходится за г шагов. В следующем параграфе мы покажем, как используется это эвристическое утверждение. Оценку погрешности в другом стиле можно получить в терминах /4-нормы, которая определяется следующим образом: II w I\a = J~wfAw. Теорема 10.2.5. Предположим, что матрица /4eRn *" симметричная положительно определенная и beR". Пусть алгоритм 10.2.1 вырабатывает итерации {xfc} и k = k2(A). Тогда I\x-Xk |L<2 \\х-х0 11л(^д+ |) • Доказательство. См. Luenberger (1973, р. 187).□ Точность приближений {хк} часто намного лучше, чем та, что предсказывается этой теоремой. Тем не менее оказывается очень полезной эвристическая версия теоремы 10.2.5: • Метод сопряженных градиентов сходится очень быстро по /4-норме, если кг(А)ъ 1. В следующем параграфе мы покажем, каким образом мы иногда можем превратить заданную задачу Ах = Ь в связанную с ней задачу Ах — Б, где Я близка к единичной матрице. Задачи 10.2.1. Проверить, что в (10.2.1) невязки удовлетворяют соотношению r[ гs = 0 при у = / + 1. 10.2.2. Проверить (10.2.2). 10.2.3. Проверить (10.2.3). 10.2.4. Проверить (10.2.13) и (10.2.14). 10.2.5. Дать формулы для элементов трехдиагональной матрицы Тк вида (10.2.16). 10.2.6. Сравнить требуемые объем вычислений и память для практических реализаций алгоритмов 9.3.1 и 10.2.1. Замечания я литература к § 10.2 Метод сопряженных градиентов является представителем более широкого класса методов так называемых методов сопряженных направлений. В алгоритме сопряженных направлений направления поиска являются ^-сопряженными для некоторой подходящим образом выбран¬ ной матрицы В. Обсуждение этих методов дается в Dennis J. EJr. and Turner К. (1987). ‘‘Generalized Conjugate Directions", Lin. Alg. and Its Applic. 88/89, 187-209.
470 Гл. 10. Итерационные методы для линейных чисел Stewart G.W. (1973). “Conjugate Direction Methods for Solving Systems of Linear Equations’*, Numer. Math. 21, 284-97. Классической ссылкой на метод сопряженных градиентов является Hestenes М. R. and Stiefel Е. (1952). “Methods of Conjugate Gradients for Solving Linear Systems*’, J. Res. Nat. Bur. Stand. 49, 409-36. Анализ метода в точной арифметике можно найти в главе 2 книги Hestenes М. R. (1980). Conjugate Direction Methods in Optimization, Springer-Verlag, Berlin. См. также Axelsson O. (1977). “Solution of Linear Systems of Equations: Iterative Methods”, Sparse Matrix Techniques: Copenhagen, 1976, ed. V.A. Barker, Springer-Verlag, Berlin. Faddeev D. K. and Faddeeva V. N. (1963). Computational Methods of Linear Algebra, W. H. Freeman and Co., San Francisco, California. Фаддеев Д.К., ФаддееваВ.Н. (1963). Вычислительные методы линейной алгебры-М.-JL: Физматгиз. По поводу обсуждения характера сходимости метода сопряженных градиентов см. Luenberger D.G. (1973). Introduction to Linear and Nonlinear Programming, Addison-Wesley, New York. Van der Sluis A. and Van Der Vorst H. A. (1986). “The Rate of Convergence of Conjugate Gradients”, Numer Math. 48, 543-560. Идея использования метода сопряженных градиентов как итерационного впервые обсуж¬ дается в Reid J. К. (197lb). “On the Method of Conjugate Gradients for the Solution of Large Sparse Systems of Linear Equations”, in Large Sparse Sets of Linear Equations, ed. J. K. Reid, Academic Press, New York, pp. 231 -54. Несколько авторов пытались объяснить поведение алгоритма в условиях конечной ариф¬ метики. См. Cullum J. and Willoughby R. A. (1977). “The Equivalence of the Lanczos and the Conjugate Gradient Algorithms”, IBM Research Report RE-6903. Greenbaum A, (1981). “Behavior of the Conjugate Gradient Algorithm in Finite Precision Arithmetic”, Report UCRL 85752, Lawrence Livermore Laboratory, Livermore, California. Wozniakowski H. (1980). “Roundoff Error Analysis of a New Class of Conjugate Gradient Algorithms”, Lin. Alg. and Its Applic. 29, 507-29. См. также анализ в Cullum J. and Willoughby R. (1980). “The Lanczos Phenomena: An Interpretation Based on Conjugate Gradient Optimization”, Lin. Alg. and Its. Applic. 29, 63-90. Jennings A. (1977a). “Influence of the Eigenvalue Spectrum on the Convergence Rate of the Conjugate Gradient Method”, J. Inst. Math. Applic. 20, 61-72. Stewart G. W. (1975a). “The Convergence of the method of Conjugate Gradients at Isolated Extreme Points in the Spectrum”, Numer. Math. 24, 85- 93. Наконец, упомянем о том, что метод можно использовать для вычисления собственного вектора большой разреженной симметричной матрицы. См. Ruhe A. and Wiberg Т. (1972). “The Method of Conjugate Gradients Used in Inverse Iteration”, BIT 12, 543-54. Добавления при переводе к § 10.2 Методы сопряженных направлений и связанная с ними теория подробно освещаются в гл. 13 учебника Воеводин В. В. (1980). Линейная алгебра.-М.: Наука. См. также
10.3. Сопряженные градиенты с предобуслоелшанием 471 Воеводин В. В. (1979). О методах сопряженных направлений.-ЖВМ и МФ, 19, Hi 15,1313-1317. Марчук Г. И., Кузнецов Ю. А. (1980). Теория и применение обобщенного метода сопряженных градиентов.-Новосибирск: ВЦ СО АН СССР. Кузнецов Ю. А. (1983). Метод сопряженных градиентов, его обобщения и применения. Вычис¬ лительные процессы и системы. Вып. 1- М.: Наука. 10.3. Сопряженные градиенты с предобусловливанием Предыдущий параграф мы закончили замечанием о том, что метод сопряженных градиентов работает хорошо для матриц, которые либо хорошо обусловлены, либо имеют лишь небольшое число различных собстенных значений. (Последнее отно¬ сится к случаю, когда А есть малоранговое возмущение единичной матрицы). В этом параграфе мы покажем, как проводится предобусловливание линейной системы с тем, чтобы матрица коэффициентов приобретала одну из этих прекрасных особенностей. Наше изложение будет весьма сжатым и неформальным. Более основательно эти вопросы представлены в Golub, Meurant (1983) и Axelsson (1985). 10.3.1. Вывод Рассмотрим симметричную положительно определенную п х «-систему Ах = Ь. Идея предобусловливания в сопряженных градиентах состоит в том, чтобы «стан¬ дартный» метод сопряженных градиентов применялся к преобразованной системе Ах = В, (ю.3.1) где А = С-1 АС-1, х = Cx,S = C~l b, а С-симметричная положительно определен- ная матрица. Ввиду наших замечаний в § 10.2.8 нам следует попытаться выбрать С таким образом, чтобы Л оказалась хорошо обусловленной матрицей или матрицей с кластеризованными собственными значениями. По причинам, которые скоро появятся, матрица должна быть к тому же «простой». Применяя алгоритм 10.2.1 к (10.3.1), мы получим итерации к = 0, Xq = 0, r0 = b while К ф 0 к = к+ 1 if 1с — 1 be^ * F° Р* = (10.3.2) Pk = fk-t + P*A-i end = /PlC~lAC~lpk *k — **-i + a kpk Гк = Гк-1~акС 1AC lpk end Здесь xk должно рассматриваться как приближение к х, а гк - невязка в преобразо¬ ванных координатах, т. е. гк = В — А хк. Конечно, получив х, мы можем найти х из уравнения х = С~хх. Однако можно избежать явного обращения к матрице С-1, записав рк = Срк, хк = Схк и гк = С~хгк. Действительно, подставив эти выражения
472 Гл. 10. Итерационные методы для линейных чисел в (10.3.2) и вспомнив, что Б = C~L b и х = Сх, мы получим к = 0; Сх0 = 0; С * г0 = С-1 * while С-* rt ^ 0 * = * + 1 if к = I С/>, = С-1 г0 else Pfc - СС-* rft_1)T<c:_1r*_1)/<c:-1r*_a)r(c:-£f^_a) (Ю.з.з) СРк = С 1 Гк_ 1 + Рк Срк_ j end ak = (C-lrk_t)T(C-} гк^)/(Срк)Т(С-1 АС-1)(СРк) Схк = Схк_, + а* Ср* С-1 гк = С"1 гк_х — ак(С”1 АС~1)Срк end Сх = Схк Если мы определим предобусловливатель М как М = С2 (это также положительно определенная матрица) и будем считать, что zk - решение системы Mzk = гк, то (10.3.3) упрощается следующим образом: Алгоритм 10.3Л (Сопряженные градиенты с лредобусловлнванием). Для заданной симметричной положительно определенной матрицы А еКя*и и вектора beR" следующий алгоритм решает линейную систему Ах = Ъу используя метод сопряжен¬ ных градиентов с предобусловливателем MeR" х". к — 0; х0 = 0; г0 = Ъ while (rk ^ 0) Решить Mzk — гк /с = /с + 1 if к= 1 Pi = zo else Pic = Гк- 1 2к- \!Тк-1 2к~2 Рк ~ 2к- 1 + PkPk- 1 end *k = rl-iZk-i/plApk = +a*P* r* = rk.t - akApk end x = xk Относительно этой процедуры следует сделать несколько важных замечаний: • Можно доказать, что невязки и направления спуска удовлетворяют соотноше¬ ниям г J М “1 rj = 0, i*]% (10.3.4) pJiC'1 AC~1)pi = 0, 1Ф]. (10.3.5) • Знаменатели r\_2zk_2 = 2\-г Mzk-2 не обращаются в нуль, так как М положи¬ тельно определенная. • Несмотря на то что преобразование С играло главную роль при выводе алгоритма, его действие проявляется лишь через предобусловливатель М = С2. • Для того чтобы алгоритм 10.3.1 был эффективным для разреженных матриц,
10.3. Сопряженные градиенты с предобусловливанием 473 должны легко решаться линейные системы Mz = г и сходимость должна быть быстрой. Выбор хорошего предобусловливателя может оказать впечатляющее воздейст¬ вие на скорость сходимости. Ниже мы обсудим некоторые возможности такого выбора. 10.3.2* Предобусловливатели, связанные с неполным разложением Холецкого Одна из наиболее важных стратегий предобусловливания связана с вычислением неполного разложения Холецкого матрицы А. Этот подход в идейном плане предполагает вычисление нижней треугольной матрицы Я, которая обладает неко¬ торой хорошо обрабатываемой структурой разреженности и в каком-то смысле «близка» к точному множителю G в разложении Холецкого для А. Предобусловли- ватель берется в виде М = ННТ. Чтобы оценить достоинства этого выбора, рассмотрим следующие факты: • Существует единственная симметричная положительно определенная матрица С, такая, что А/ = С2. • Существует ортогональная матрица Qy такая, что С = QHT, т.е. Яг-это верхний треугольный сомножитель в СЛ-разложении матрицы С Следовательно, получаем эвристическое соотношение Л = С'1 ЛС*1 =* С~ТАС~1 = п зб) = (HQTr'A{QHTrl = Q(H~'GGTH T)QT * L '} Таким образом, чем лучше Я аппроксимирует G, тем меньше обусловленность для Л, и тем лучше работает алгоритм 10.3.1. Легкий, но эффективный способ получения просто устроенной матрицы Я, которая аппроксимирует Gy это подправить редукцию Холецкого, полагая hu равным нулю, если соответствующий элемент аи нулевой. Проделав это с версией Холецкого, построенной на одноранговых модификациях, мы получаем for к = 1: п А (к, к) = у/ А(кук) for i = к + 1: п if А(1ук)Ф0 A(iyk) = A(iyk)/A(kyk) end (10.3.7) end for j =z к + 1: и for i — j:n if A(U)*0 A (ij) = A {ij) - A (iyk) A (/,к) end end end end На практике матрица А и множитель Я неполного разложения Холецкого для нее хранятся в памяти с использованием каких-либо подходящих структур данных, и циклы приведенного выше алгоритма принимают при этом весьма специфический вид.
474 Гл. 10. Итерационные методы для линейных чисел К несчастью, алгоритм (10.3.7) не всегда устойчив. Классы положительно определенных матриц, для которых неполный Холецкий устойчив, устанавливаются в Manteuffel (1979). См. также Elman (1986). 10.3.3. Неполные блочные предобусловливатели Как почти все в этой книге, идеи неполного разложения, намеченные в общих чертах в предыдущем разделе, имеют блочный аналог. Для иллюстрации мы рассмотрим неполное блочное разложение Холецкого симметричной положительно определенной блочно-трехдиагональной матрицы •^1 Е\ 0 А = Е, *2 Е\ _0 е2 *э- В интересах иллюстрации мы предположим, что блоки А{ трехдиагональные, а диагональные. Матрицы такого строения возникают при стандартной 5-точеч¬ ной дискретизации самосопряженных эллиптических дифференциальных уравнений на двумерной области. Случай 3 х 3-матриц обладает достаточной общностью. Наше обсуждение будет основано на Concus, Golub, Meurant (1985). Пусть G1 0 0 ■ <7 = Ft g2 0 _ 0 f2 G3_ есть точный множитель в блочном разложении Холецкого для А. Хотя G разрежен¬ ная, если ее рассматривать как блочную матрицу, отдельные блоки являются плотными, за исключением Gx. Это можно увидеть из требуемых вычислений: Gx G\ = s Al9 Fi = ElGil, G2G\ = Вг = A2- FtFl = A2~ E\, F 2 = G 2 1 * G*Gl = Въ = Аг- F2F2T= A3 - E2B~lE2. Для блочного разложения Холецкого мы ищем, следовательно, приближенный множитель вида 0 0 e = g2 0 _ 0 P2 63- причем такой, чтобы легко решались системы для предобусловливателя М = &бТ. Для этого вводится требование разреженности блоков в б, и в данном случае это разумно, так как блоки Ах трехдиагональные, а блоки Е{ диагональные:
10.3. Сопряженные градиенты с предобуслоеливанием 475 62(jJ = S2 = Л2 — Ef Af E\, Ax (трехдиагональная) % Bfl, f2 = ^2 ^2 1 » 63 £3 = £3 = A3 - E2 A2 E\, Л2 (трехдиагональная) % Z?2_1. Заметим, что все 5, трехдиагональные. Ясно, что Ах должны выбираться тщательно, чтобы обеспечить симметрию и положительную определенность для Bi. Далее, отсюда следует, что матрицы <?, нижние двухдиагональные. Матрицы F, полные, но их не нужно формировать в явном виде. Например, в процессе решения системы Mz = г мы должны решать систему вида ~6г О Л О о о 62 о Л б3 1 нГ | '1 *2 = '2 1 * 1 1 ы 1 Для выполнения матрично-векторных умножений, связанных с Fi = 1, можно использовать прямое исключение: Glwl = г,, б2 w2 = r2~ Ft И’, = г. Е.бГ1 wi = r3~ ?2 w2 = г3 - £2 <?2 1 №2 . Выбор Л,- требует деликатности, так как в итоге Д должна быть положительно определенной. В нашей организации вычислений центральный вопрос, каким обра¬ зом аппроксимировать обратную к симметричной положительно определенной трехдиагональной т х m-матрице Г = (/у) с помощью симметричной трехдиаго¬ нальной матрицы Л. Есть несколько разумных подходов: • Положить Л = diag(l/ftl, ... , • Взять в качестве Л трехдиагональную часть в Т“\ Это может вычисляться эффективно, так как существуют и, ve Rm, такие, что нижняя треугольная часть в Г1 совпадает с нижней треугольной частью матрицы uvT. См. Asplund (1959). • Положить Л ~ UTI/, где [/-нижняя двухдиагональная часть матрицы G"1, такой, что Т = GGT~ разложение Холецкого. Это можно найти за О (hi) флопов. Эти аппроксимации и идущие от них свойства соответствующих предобусловлива- телей обсуждаются в Concus, Golub, Meurant (1985). 10.3.4. Идеи декомпозиции области Численное решение эллиптических уравнений в частных производных часто приводит к линейным системам вида Ai А2 вТ вТ Я, В2 Ар Вр ВТ Q J XI х2 d2 хр dP г . / . (10.3.8)
476 Гл. 10. Итерационные методы для линейных чисел если неизвестные упорядочиваются подходящим образом. См. Meurant (1984). Здесь ^•-симметричные положительно определенные, ^-разреженные, а последний блочный столбец обычно намного уже остальных. Наш пример с р = 2 служит для того, чтобы увязать (10.3.8) и его блочную структуру с геометрией соответствующей задачи и выбранной декомпозицией области. Предположим, что нам нужно решить эллиптическую задачу на области следующей формы: I п Рис. 10.3.1. Декомпозиция области. Есть три «типа» переменных: внутренние для подобласти I (собранные в подвекторе л:,), внутренние для подобласти II (собранные в подвекторе х2) и лежащие на границе между двумя областями (собранные в подвекторе z). Заметим, что внутрен¬ ние неизвестные одной подобласти не взаимодействуют с внутренними неизвест¬ ными другой подобласти,-это и объясняет нулевые блоки в (10.3.8). Заметим также, что число граничных неизвестных обычно мало по сравнению с общим числом неизвестных. Теперь давайте исследуем связанные с (10.3.8) возможности предобусловливания. Для простоты будем по-прежнему считать, что р — 2. Если положить мг1 0 0 М = L 0 MJ1 0 0 0 S"1 где мг 0 0 L = 0 м2 0 9 В1 S то 'м, 0 м = 0 м2 в2 (10.3.9) в\ S* при этом S* = S + В\ М X 1 Bi + В\М2 В2. Посмотрим, как мы могли бы выбрать блочные параметры М1, М2 и S с тем, чтобы получить эффективный предобуслов- ливатель. Если сравнить (10.3.9) и (10.3.8) в случае р = 2, то видно, что есть смысл в том, чтобы Mt аппроксимировало Ai, a аппроксимировало Q. Последнее достигается, если S ъ Q — — В\1В2. Имеется несколько подходов к выбору S, и все они навеяны тем фактом, что мы не можем формировать плотные матрицы Bi Ml1 Bj. Например, как обсуждалось в предыдущем разделе, для М^1 могли бы использоваться трехдиагональные аппроксимации. См. Meurant (1989). Если подобласти устроены достаточно регулярно, а линейные системы с точ¬
10.3. Сопряженные градиенты с предобусловливанием 477 ными Л{ легко решаются (скажем, с использованием быстрых процедур для уравнения Пуассона), то мы можем положить Mf = А-х. Отсюда следует, что М = А + £, причем rank (Е) = т, где т ~ число граничных неизвестных. Таким образом, метод сопряженных градиентов с предобусловливанием теоретически будет сходиться за т шагов. Независимо от того, какие аппроксимации будут включены в процесс, мы видим, что есть замечательные возможности для распараллеливания вследствие расщеп¬ ления на независимые задачи для подобластей. Число подобластей на самом деле является обычно функцией геометрии задачи и в то же время числа доступных для вычислений процессоров. 10.3.5. Полиномиальные предобусловлнватели Вектор z, определяемый предобусловливающей системой Mz — г, до сих пор должен был рассматриваться как приближение к решению системы Az — г, посколь¬ ку М-приближение к А. Один из способов получения такого приближения к реше¬ нию - применить р шагов стационарного метода z<fc+1) = z{ki + r, z(0) = 0. Отсюда вытекает, что если G — М f1 Nt, то z = zip) = (I + G + ... + Ср“1)МГ1г. Таким образом, если М — (/ + G + ... + Gp_x)Mxl, то Afz = г, и мы можем рассматривать М как предобусловливатель. Важно, конечно, чтобы М была симметричной положительно определенной, и это ограничивает выбор Мг, и р. Матрица М является полиномом от G, и поэтому о ней говорят как о полиномиаль¬ ном предобусловливателе. Этот тип предобусловливателя заманчив с точки зрения векторной или параллельной обработки, и, как следствие, он привлек к себе значительное внимание. 10.3.6. Заключительное предложение Обсуждение полиномиального предобусловливателя указывает на важную связь между классическими итерациями и алгоритмом сопряженных градиентов с пред¬ обусловливанием. Многие итерационные методы имеют своим основным шагом + <•>*(?»*»_! +хк-1-хк_2), (10.3.10) где Mzk_i — -b — Axk.l. Например, если мы положим со* = 1 и ук = 1, то хк = М~1(Ь - у4дгь_,)лга_,, т. е. Мхк = Nxk_t + b, где A = M — N. Таким образом, рассмотренные в § 10.1 методы Якоби, Гаусса-Зейделя, SOR и SSOR имеют вид (10.3.10). То же верно относительно полуитерационного чебышевского метода (10.1.12). Следуя Concus, Golub, O’Leary (1976), можно и алгоритм 10.3.1 организовать таким образом, чтобы его центральный шаг имел вид (10.3.10): xt = 0; х0 = 0; к = 0; r0 = Ъ while г к Ф 0 к = к + 1 Решить Mzk^l =г*_! относительно zk^l Ук-i =zl-1Mzk-l/zl_1Azk_l if к — [ if к= 1 со1 — 1
478 Гл. 10. Итерационные методы для линейных чисел else (10.3.11) end + Хк_у-Хк_2) rk = b - Axk end x = x„ Итак, мы можем рассматривать скаляры со* и ук в (10.3.11) как ускоряющие параметры, которые могут выбираться для того, чтобы увеличить скорость сходи¬ мости итераций Мхк = Nxk^l + b. Следовательно, любой итерационный метод, основанный на расщеплении А = М — N, может ускоряться с помощью алгоритма сопряженных градиентов, при условии что матрица М (предобусловливатель) симметрична и положительно определена. Задачи 10.3.1. Разобраться с процедурой неполного разложения, основанной на gaxpy-версии Холец¬ кого, т. е. на алгоритме 4.2.1. 10.3.2. Сколько /j-векторов требуется хранить в памяти при практической реализации алгорит¬ ма 10.3.1? Не учитывайте промежуточную память, которая может требоваться при решении системы Mz = г. Замечания и литература к § 10.3 Наше обсуждение метода сопряженных градиентов с предобусловливанием следует работам Axelsson О. (1985). “A Survey of Preconditioned Iterative Methods for Linear Systems of Equations*’, BIT 25, 166-187. Concus P., Golub G.H. and Meurant G. (1985). “Block Preconditioning for the Conjugate Gradient Method”, SIAM J. Sci. and Stat. Comp. 6, 220-252. Concus P., Golub G. H. and O’Leary D. P. (1976). “A Generalized Conjugate Gradient Method for the Numerical Solution of Elliptic Partial Differential Equations”, in Sparse Matrix Computations, ed. J. R. Bunch and D. J. Rose, Academic Press, New York. Golub G.H. and Meurant G. (1983) Resolution Numerique des Grandes Systemes Lineaires, Collection de la Direction des Etudes et Recherches de l’Electricite de France, vol 49, Eyolles, Paris. К числу других работ, связанных с расширением метода сопряженных градиентов, относятся Bramble J. Н., Pasciak J. Е. and Schatz А. Н. (1986). “The construction of Preconditioners for Elliptic Problems by Substructuring I”, Math. Comp. 47, 103-134. Bramble J, H., Pasciak J. E. and Schatz A. H. (1986). “The construction of Preconditioners for Elliptic Problems by Substructuring II”, Math. Comp. 49, 1-17. ChinR.C., Manteuffe T. A. and de Pillis J. (1984). ADI as a Preconditioning for Solving the Convection-Diffusion Equation”, SIAM J. Sci. and Stat. Comp. 5, 281-299. O’Leary D. P. (1980a). “The Block Conjugate Gradient Algorithm and Related Methods”, Lin. Alg. and Its Applic. 29, 293-322. Reid J.K. (1972). “The Use of Conjugate Gradients for Systems of Linear Equations Possessing Property A”, SIAM J. Num. Anal. 9, 325-32. Идеи неполной факторизации подробно освещаются в Chan T.F., Jackson K.R. and Zhu В. (1983). “Alternating Direction Incomplete Factorizations”, SIAM J. Numer. Anal. 20, 239-257. Elman H. (1986). “A Stability Analysis of Incomplete LU Factorization”. Math. Comp. 47, 191-218. MantuefFel T.A. (1979). “Shifted Incomplete Cholesky Factorization”, in Sparse Matrix Proceedings, 1978, ed. I. S. Duff and G.W. Stewart, SIAM Publications, Philadelphia, PA. Meijerink J.A. and Van H. A. der Vorst (1977). “An Iterative Solution Method for Linear Equation Systems of Which the Coefficient Matrix is a Symmetric M-Matrix”, Math. Comp. 31, 148-62.
10.3. Сопряженные градиенты с предобусловливанием 479 Roderigue G. and Wolitzer D. (1984). “Preconditioning by Incomplete Block Cycle Reduction”, Math. Comp. 42, 549-566. Превосходный обзор по декомпозиции области в терминах матричной алгебры дан в Meurant G. (1989). “Domain Decomposition Methods for Partial Differential Equations on Parallel Computers”, to appear Int’l J. Supercomputing Applications. В основе алгоритма сопряженных градиентов - функционал <р (л:). Однако если вместо него рассматривается минимизация функционала \\Ах — 6||2, то весь вывод подвергается неболь¬ шим изменениям. В результате получается так называемый метод миниминальных невязок, анализируемый в Cline А. К. (1976b). “Several Observations on the Use of Conjugate Gradient Methods”, ICASE Report 76, NASA Langley Research Center, Hampton, Virginia. Его можно «вывести», заменив в алгоритме 10.2.1 все скалярные произведения uTv на иТ Av. Метод минимальных невязок иногда приводит к несколько более быстрому уменьшению нормы невязки. Сходные модификации базового алгоритма сопряженных градиентов класси¬ фицируются в Ashby S., Manteuflel Т. A. and Saylor P. Е. (1988). “A Taxonomy for Conjugate Gradient Methods”, Report UCRL-98508, Lawrence Livermore National Laboratory, Livermore, CA. В то же время в работе Dennis J. E.Jr. and Turner K. (1987). “Generalized Conjugate Directions”, Lin. Alg. and Its. Applic. 88/89, 187-209. предлагается унифицированный подход к получению семейства процедур сопряженных направ¬ лений. Некоторые характерные работы, рассматривающие развитие несимметричных процедур сопряженных градиентов, включают Young D. М. and Jea К. С. (1980). “Generalized Conjugate Gradient Accelaration of Nonsymmetri- zable Iterative Methods”, Lin. Alg. and Its Applic. 34, 159-94. Axelsson O. (1980). “Conjugate Gradient Type Methods for Unsymmetric and Unconsistent Systems of Linear Equations”, Lin. Alg. and Its. Applic. 29, 1-16. Saad Y. (1981). “Krylov Subspace Methods for Solving Large Unsymmetric Linear Systems”, Math. Comp. 37, 105-128. JeaK.C. and Young D. M. (1983). “On the Simplification of Generalized Conjugate Gradient Methods for Nonsymmetrizable Linear Systems”, Lin. Alg. and Its Applic. 52/53, 399-417. Faber V. and Manteuffel T. (1984). “Necessary and Sufficient Conditions for the Existence of a Conjugate Gradient Method”, SIAM J. Numer. Anal. 21, 352-362. Van der Vorst H.A. (1986). “An Iterative Solution Method for Solving f(A)x = b Using Krylov Subspace Information Obtained for the Symmetric Positive Definite Matrix A”, J. Comp, and App. Math. 18, 249-263. Полиномиальные предобусловливатели обсуждаются в Johnson O.G., Micchelli С. A. and Paul G. (1983). “Polynomial Preconditioners for Conjugate Gradient Calculations”, SIAM J. Numer. Anal. 20, 362-376. Eisenstat S. C. (1984). “Efficient Implementation of a Class of Preconditioned Conjugate Gradient Methods”, SIAM J. Sci. and Stat. Computing 2, 1-4. Adams L. (1985). “m-step Preconditioned Conjugate Gradient Methods”, SIAM J. Sci. and Stat. Comp. 6, 452-463. Ashby S. F. (1987). “Polynomial Preconditioning for Conjugate Gradient Methods”, Ph. D. Thesis, Dept, of Computer Science, University of Illinois. Различные векторные/параллельные реализации обсуждаются в Ashcraft С. С. and Crimes R. (1988). “On Vectorizing Incomplete Factorization and SSOR Precon¬ ditioners”, SIAM J. Sci. and Stat. Comp. 9, 122-151. Axelsson O. and Polman B. (1986). “On Approximate Factorization Methods for Block Matrices Suitable for Vector and Parallel processors”, Lin. Alg. and Its Applic. 77. 3-26.
480 Гл. 10. Итерационные методы для линейных чисел Dubois P. F., Greenbaum A. and Rodrigue G. Н. (1979). “Approximating the Inverse of a Matrix for Use on Iterative Algorithms on Vector Processors”, Computing 22, 257-268. Gropp W. D. and Keyes D. E (1988). “Complexity of Parallel Implementation of Domain Decom¬ position Techniques for Elliptic Partial Differential Equations”, SIAM J. Sci. and Stat. Comp. 9, 312-326. Jordan T. (1984). “Conjugate Gradient Preconditioners for Vector and Parallel Processors”, in G. BirkolT and A. Schoenstadt (eds.), Proseedings of the Conference on Elliptic Problem Solvers, Academic Press, NY. Melhem R. (1987). “Toward Efficient Implementation of Preconditioned Conjugate Gradient Methods on Vector Supercomputers” Int’l J. Supercomputing Applications I, 70-98. Meurant G. (1984). “The Block Preconditioned Conjugate Gradient Method on vector Computers”, BIT 24, 623-633. Poole E. L. and Ortega J. M. (1987). “Multicolor ICCG Methods for Vector Computers”, SIAM J. Numer. Anal. 24, 1394-1418. Seager М. K. (1986). “Parallelizing Conjugate Gradient for the Cray X-MP”, Parallel Computing 3, 35 47. Van der Vorst H. A. (1982). “A Vectorizable Variant of Some ICCG Methods”, SIAM J. Sci. and Stat. Comp. 3, 350- 356. Van der Vorst H.A. (1986). “The Performance of Fortran Implementations for Preconditioned Conjugate Gradients on Vector Computers”, Parallel Computing 3, 49 58. Интересное приложение сопряженных градиентов с предобусловливанием к теплицевым системам обсуждается в Chan Т. F. (1988). “An Optimal Circulant Preconditioners for Toeplitz Systems”, SIAM J. Sci. Stat. Comp. 9, 766-771. Добавления при переводе к § 103 Интересные свойства и различные способы предобусловливания с использованием матриц типа теплицевых изучаются в Тыртышников Е. Е. (1989). Теплицевы матрицы, некоторые их аналоги и приложения-М.: ОВМ АН СССР. Новый подход к построению многоуровневых предобусловливателей, связанных с много¬ сеточными методами декомпозиции области, предложен в Kuznetsov Yu. А. (1989). Algebraic multigrid domain decomposition - Sov. J. Numer. AnaL Model¬ ling, 4, N 5, 351-379. В основе широкого класса обобщений методов сопряженных направлений лежит понятие псевдоортогональности: упорядоченная система векторов , ..., sm называется Л-псевдо- ортогональной, если (Rsj9 s() = 0 при х <j^ т и (RsJt Sj) ф 0. Общая схема метода сопряжен¬ ных направлений для решения системы Ах = Ь должна описывать вычисление последова¬ тельных приближений xi4 соответствующих им невязок rt и вспомогательных векторов si9 образующих САВ-псведоортогональную систему для подходящих фиксированных матриц С и В. Нулевой шаг состоит из вектора начального приближения дс0, вычисления невязки r0 = b — Ах0 и присваивания s{ — г0. Далее, на х-м шаге выполняются такие действия: at = (Сг{^г t rt_ i)!(C А В 5j, зД Г, = r,_, -OiABsi, х. = х£—, +в,Я*„ I •S.-+1 =п+ X Pi+t./Sj. j=t где pi+i.j находятся из треугольной системы («J, .S,) 0 Pi + 1.1 (Яг,,5, ) (Aji.s.) .. . (Rs„st) Pi+ l.i (Яг
10.3. Сопряженные градиенты с предобуслоеливанием 481 Если Г; = 0, то процесс заканчивается на i-м шаге. Если г,-~! Ф 0, то ai = 0 или (Rsiy st) = О, тогда процесс обрывается на i-м шаге. Указанная общая схема рассмотрена в Воеводин В. В. (1979). О методах сопряженных направлений.-ЖВМ и МФ, 19, № 5, 1313-1317. В этой же работе показано, что для двучленности соотношений, т. е. для того чтобы pj +, j = О при j < / — I достаточным является условие (С А ВС~1 )* = а / 4- р/4 В, где а, р-какие-то числа. Для fc-членности соотношений, т. е для того чтобы pi+1 j = 0 при j ^ / — /с, достаточным к является обобщенное условие Воеводина (СА ВС~')* = £ а}{АВ)\ где ау-какие-то числа. )=о Е. Е. Тыртышников доказал следующую теорему о необходимости этого условия: пусть для всех начальных приближений, таких, что процесс не обрывается, выполняется условие Воеводина и хотя бы для одного начального приближения процесс заканчивается в точности на и-м шаге. Предположим, что и^2НЗи матрицы А, В, С невырожденные. Тогда Р,+ и = О при j < / — 1. См. Воеводин В. В., Тартышников Е. Е. (1981). Об обобщении методов сопряженных направлений.- Численные методы алгебры,- М.: Изд-во Москов. ун-та.
Глава 11 Функции от матриц Задача вычисления функции f(A) от матрицы А размера п х гг часто встречается в теории управления и других прикладных областях. Грубо говоря, если скалярная функция/(z) определена на спектре Х.(Л), то функцию от матрицы f(A) определяют, подставляя матрицу А вместо переменной z в «формулу» для /(z). Например, если f(z) = (1 + z)/(l - z) и 14ЦА\ то f(A) = (I + A){I-A)’1. Эти вычисления становятся особенно интересными, когда функция / трансцен¬ дентная. Один из подходов в этой более сложной ситуации состоит в вычислении какого-нибудь спектрального разложения А = YBY~l и использовании формулы f(A) = Yf(B) Y~l. Если матрица В достаточно простая, то часто можно вычислить f(B) непосредственно. Это показано в § 11.1 для разложений Жордана и Шура. Не¬ удивительно, что на основе последнего разложения получается более устойчивая f(A) процедура. Другой подход к вычислению функции от матрицы состоит в аппроксимации требуемой функции f(A)y легко вычисляемой функцией д{А). Например, функция д может быть усеченным рядом Тейлора, аппроксимирующим функцию/. Оценки погрешности, связанной с такой аппроксимацией функции от матрицы, даны в § 11.2. В последнем разделе мы обсуждаем специальную и очень важную задачу вычисления матричной экспоненты еА. 11.1. Спектральные методы Для заданной матрицы А размера ихи и скалярной функции /(z) существует несколько способов определить функцию от матрицы f(A). Неформальный способ определения-подставить матрицу А вместо переменной z в формулу для /(z). Например, если p(z) = 1 + z и r(z) = (1 — (z/2))~1 (1 -f (z/2)) при z ф 2, то, конечно, разумно определить р(А) и г (А) как р{А) = 1 + А и rM) = (/-y) + 2<Д04)- Подстановка А вместо z также срабатывает и в случае трансцендентных функций, например, Однако для того чтобы сделать последующие алгоритмические разработки коррект¬ ными, мы должны более аккуратно определить f(A).
ILL Спектральные методы 483 11.1*1. Определение Существует много способов строгого определения понятия функции от матрицы. Смотри [Rinehart, 1955]. Возможно, наиболее изящный подход основан на примене¬ нии контурного интеграла. Пусть функция/(z) аналитична на замкнутом множестве, ограниченном замкнутым контуром Г, который окружает спектр Х{А). Определим f(A) как матрицу f(A) = Ljf(z)izl^Arid2' (11ЛЛ) В этом определении можно сразу узнать матричный вариант интегральной теоремы Коши. Интеграл (11.1.1) определяется поэлементно: f(A) = ^fk) = ^ (z/ - A)1 ejdz. Заметим, что элементы матрицы (zl — АУ1 аналитичны на Г и матрица f(A) определена в тех случаях, когда функция /(z) аналитична в окрестности Х(Л). 11.1.2. Жорданова характеризация Определение (11.1.1), совершенно бесполезное с вычислительной точки зрения, можно использовать для вывода более практичных характеризаций f(A ). Например, если матрица f{A) определена, и А =ХВХ ' =Ardiag{Bl9 , Вр)Х~1, В,еСп‘ * \ - -1 (11.1.2) то несложно проверить, что f{A) = Xf{B)X-x = X diag (f(Bx ),...J(Bp))X- Для случая когда матрицы /^-жордановы блоки, мы получаем следующий резуль¬ тат. Теорема 11.1.1. Пусть X~l АХ = diag(Jl9..., Jp)~ жорданова каноническая форма (JCF) матрицы Ае С" *" с матрицами \ 1 ... О О У I 1 О ... О У- являющимися жордановыми блоками размера mi х т{. Если функция f(z) аналитична в некотором открытом множестве, включающем Х(А), то f(A) = Xdiag(/(Jх), ...,/(Jp))X ~1, где гш = fib) fw(K) О f(K) Рт'-'Чк) (т, - 1)! fw(K) f(K) 16*
484 Гл. II. Функции от матриц Доказательство. Принимая во внимание замечания, предшествующие формулиров¬ ке теоремы, достаточно рассмотреть матрицу /(G), где G-U + Я, E={bitS_x) -жорданов блок размера Пусть матрица (zl — G) невырожденна. Так как я-1 £* то из интегральной теоремы Коши следует, что ' Г 1 г /м j 1 „ 'f/"'w п } (7^IFiT J Заметив, что £* = (5; получаем требуемый результат.□ Следствие 11.1.2. Если АеСп * ”, А = Xdiag(Xl,, Хп)Х~1, и матрицаf(A) опреде¬ лена, /ио /(>1) = X diag (/(X,),..., f(X„)) X ~1. Доказательство. Здесь все жордановы блоки имеют размер 1 х 1.Q Этот результат показывает тесную связь между функцией от матрицы f(A) и собст¬ венной системой матрицы А. К несчастью, вычислительные достоинства JCF-под- хода к проблеме функции от матрицы весьма сомнительны, если только матрица А не является диагонализуемой с хорошо обусловленной матрицей собственных векторов. В самом деле, можно ожидать, что погрешности округления порядка uk2 (X) испортят результат вычисления, так как придется решать линейную систему с матрицей X. Следующий пример наводит на мысль, что плохо обусловленных преобразований подобия следует избегать при вычислении функции от матрицы. Пример 11.1.1. Если то любая матрица собственных векторов является масштабированным по столбцам вариантом матрицы *-Г л LO 2(1 — ю ) J и имеет число обусловленности во второй норме порядка Ю5. Используя компьютер с машинной точностью и я 10"7, мы найдем, что Г 2.718307 2.750000"! П \_Х 1 diag (exp (1 + 10 5), exp (1 — 10 ))2f] = | , * v у L 0.000000 2.718254 J хотя ■ J2- Lo.i 718309 2.718282 "I 0.000000 2.718255 J 11.13. Метод разложения Шура Некоторые трудности, связанные с жордановым подходом к проблеме функции от матрицы, можно обойти, положившись на разложение Шура. Если А = QTQH-
11.1. Спектральные методы 485 разложение Шура матрицы А, то f(A) = Qf{T)QH. Для того чтобы этот подход был эффективным, нам нужен алгоритм вычисления функций от верхних треугольных матриц. К несчастью, явные выражения для /(Г), как показывает следующая теорема, очень сложные. Теорема 11.1.3. Пусть Т = (t^)-верхняя треугольная, матрица п х п с собственными значениями Хг — га, и пусть матрица f(T) определена. Если / (Т) = (fj), то f-tj = 0 при I > у, /ц = f (1,.) при i = j и для всех i < j имеем равенство fij **,. S1 • * 1S4XL^'-50» * * * * \ J » (.Vg, ... . .Vk)€ Sij где S{j означает множество всех строго возрастающих целочисленных последова¬ тельностей, начинающихся с i и заканчивающихся у, и f[Xs , .. , Xs ] - разделенная разность k-го порядка функции / на сетке {Xs^,.. , Хя }. Доказательство. Смотри [Descloux, 1963], [Davis, 1973], [Van Loan, 1975b] Вычисление матрицы f(T) в соответствии с теоремой 11.1.3 потребовало бы 0(2") флопов. К счастью, Парлетт [Parlett, 1974а] получил изящный рекуррентный метод для определения строго верхней треугольной части матрицы F = /(Т). Он требует только 2л3/3 флопов и может быть выведен из следующего коммутацион¬ ного свойства: FT= TF. (11.1.3) В самом деле, сравнивая элементы (ij) левой и правой частей этого уравнения, находим, что } j k=i k=i и, следовательно, если элементы tu и ty различны, то j-1 # , f Ц f it , V ^ikfkj f ik ^kj ” *4 t + ^ ГТ7* lu Jc - i+i ljj hi (11.1.4) Из этого равенства мы заключаем, что элемент f{j является линейной комбинацией своих соседей, стоящих левее и ниже в матрице F. Например, элемент/25 зависит от /22>/23 >/24 */55 ’/45 иf 35 • Поэтому вся верхняя треугольная часть матрицы F может быть вычислена диагональ за диагональю, начиная с /(/ц), ... ,/(0- Полная процедура имеет следующий вид: Алгоритм 11 Л.1. Этот алгоритм вычисляет функцию от матрицы F=/(T), где Т- верхняя треугольная матрица с различными собственными значениями и функция / определена на спектре X (Г). for 1 = 1: п fa =/('к) end for р = 1 :п - 1 for 1 = 1: п — р j=i + p s = hjifjj ~fn)
486 Гл. П. Функции от матриц for k = i + 1 :j — 1 s = s + tikfki-fultki end fij = s! (Oj “ *««) end end Этот алгоритм требует 2w3/3 флопов. Предполагая, что Т = форма Шура матрицы А, имеем /(Л) = QFQH, где F-/(Т). Понятно, что большую часть работы при вычислении f(A) этим способом составит вычисление разложения Шура* Пример 11.1.2. Если 1 2 3 0 3 4 0 0 5 и /(z) = (1 + z)/z, то элементы матрицы F = (/^) = (Т) можно определить по формулам /и =(! + !)/! =2, /22 = (1+3)/3=4/3, /эз = (! + 5)/5 = 6/5, /l2 = ^12 С/22 ~/ll )/(^22 ~ *11 ) = ~ 2/3, Лз = *23 (/зз “/22 )/(*33 ^22 ) ” —4/15, /13 = [*» t/зз “/и ) + (*12/23 ““/l2 ^23)3/(^33 “ *11 ) = —1/^5. 11.1.4. Метод блочного разложения Шура Если матрица /1 имеет близкие или кратные собственные значения, то алгоритм 11.1.1 приводит к плохим результатам. В этом случае разумно использовать блочную версию алгоритма 11.1.1. Мы обрисуем в общих чертах такую процедуру, следуя работе [Parlett, 1974а]. Первый шаг состоит в выборе матрицы Q в раз¬ ложении Шура, такой, чтобы близкие или кратные собственные значения были собраны в блоках Тп,..., Трр, расположенных на диагонали матрицы Т. В частности, мы должны найти разбиение на блоки 1... т12 т1Р~ >н Ргг ■ •• Fip ~ 0 Тгг т2р 0 F2 г • •• Fi, ; , F = ; * О 1 0 О 0 1 при котором Х.(7^1) п ^(Tjj) Ф 0, i Фу. Блочные размеры можно определить, исполь¬ зуя методы § 7.6. Затем мы вычисляем подматрицы Flt = f(Tu) при i= 1 :р. Поскольку собственные значения блока Ти предположительно близкие, эти вычисления требуют специаль¬ ных методов. (Некоторые возможности рассматриваются в двух следующих раз¬ делах.) Если диагональные блоки матрицы F известны, то блоки строго верхней треугольной части матрицы F могут быть найдены рекуррентно, как в скалярном случае. Для того чтобы вывести соответствующие формулы, мы приравняем (/,/)
ILL Спектральные методы 487 блоки левой и правой частей уравнения FT = TF при i<j и получим следующее обобщение равенства (11.1.4): FijTjj - TJij = TtjFjj - F^j + £ (TikFkj-FikTkj). (11.1.5) k = i + 1 Это линейная система, неизвестными которой являются элементы блоков Ftj и чья правая часть «известна», если мы вычисляем Fi7 по блочным наддиагоналям. Уравнение (11.1,5) можно решать по алгоритму Бартелса-Стюарта (алгоритм 7.6.2). Описанный здесь блочный метод Шура удобен, когда вычисляются вещественные функции от вещественных матриц. После вычисления вещественной формы Шура А — Q TQ1 блочный алгоритм можно использовать для того, чтобы справиться с выступами размера 2 х 2 на диагонали матрицы Т. Задачи 11.1.1. Используя определение (11.1.1), показать, что (a) Af(A) =f(A)A, (b) матрица f(A) верхняя треугольная, если матрица А-верхняя треугольная, и (с) матрица f(A) эрмитова, если матрица А эрмитова. 11.1.2. Переписать алгоритм 11.1.1 так, чтобы матрица f(T) вычислялась столбец за столбцом. 11.1.3. Пусть А = Xrdiag(A,j)Ar-1, где X = [xlf .... *„] и X'1 = уп~\н. Показать, что если матрица f(A) определена, то /м>= * = I 11.1.4. Показать, что Т = Г 7»■ Tl1 1 Р =>/(7)= Г F" F'2 1 Р , L О Т22 ] q L о F21 ] q Р Ч Р где F j j =f{Tii) и 7*22 = ЯТ22). Считать, что матрица f(T) определена. Замечания и литература к § 11.1 В следующих книгах проблема функции от матрицы изложена лучше, чем обычно: Bellman R. (1969). Introduction to Matrix Analysis, McGraw-Hill, New York. Гантмахер Ф. P. Теория матриц. Т. I, 2.-М.: Наука, 1967. Mirsky L. (1955). An Introduction to Linear Algebra, Oxford University Press, London. Представление матрицы f(A) контурным интегралом, приведенное в этом разделе, полезно в функциональном анализе благодаря универсальности этого представления. См. Dunford N. and Schwartz J. (1958). Linear Operators, Part I, Interscience, New York. [Имеется перевод: Данфорд H., Шварц Дж. Линейные операторы. Т. 1. Общая теория.-М.: ИЛ, 1962.] Как мы уже говорили, возможны другие определения /{А\ Однако для матричных функций, обычно встречающихся на практике, все эти определения эквивалентны. См. Rinehart R. F. (1955). ‘The Equivalence of Definitions of a Matric Function”, Amer. Math. Monthly 62, 395-414. Различные аспекты жорданова представления детально изложены в Frame J. S. (1964а). “Matrix Functions and Applications, Part II”, IEEE Spectrum I (April), 102-8. Frame J. S. (1964b). “Matrix Functions and Applications, Part IV”, IEEE Spectrum I (June), 123-31. Следующие работы касаются разложения Шура и его связи с f (А) проблемой: Davis D. (1973). “Explicit Functional Calculus”, Lin. Alg. and Its Applic. 6, 193-99.
488 Гл. 11. Функции от матриц Descloux J. (1963). “Bounds for the Spectral Norm of Functions of Matrices”, Numer. Math. 5, 185-90. Van Loan C. F. (1975b). “A Study of the Matrix Exponential”, Numerical Analysis, Report No. 10, Dept, of Maths., University of Manchester, England. Алгоритм 11.1.1 и различные вычислительные трудности, возникающие при его применении к матрицам, имеющим близкие или кратные собственные значения, обсуждаются в Parlett В. N. (1974а). “Computation of Functions of Triangular Matrices”, Memorandum No. ERL-M481, Electronics Research Laboratory, College of Engineering, University of California, Berkeley. Parlett B. N. (1976). “A Recurrence Among the Elements of Functions of Triangular Matrices”, Lin. Alg. and Its Applic. 14, 117-21. Компромис между методами Жордана и Шура для f(A) проблемы достигается, если матрицу А привести к блочно-диаг ональной форме, как описано в § 7.6.3. Смотри Kagstrom В. (1977). “Numerical Computation of Matrix Functions”, Department of Information Processing Report UMINF-58.77, University of Umea, Sweden. 11.2. Аппроксимационные методы Теперь мы рассмотрим класс методов вычисления функций от матрицы, в ко¬ торых собственные значения не играют главную роль. Эти методы основаны на следующей идее: если функция g(z) аппроксимирует f(z) на спектре Х(Л), то матрица д(Л) аппроксимирует матрицу f(A\ например А2 Ая + Л + — + 2! q\ Мы начнем с оценки нормы \\f(A) — д(А)\\ при помощи представлений Жордана и Шура функции от матрицы. И продолжим некоторыми замечаниями о величине матричных многочленов. 11.2.1. Жорданов анализ Жорданово представление функции от матрицы (теорема 11.1.1) можно исполь¬ зовать для оценки погрешности аппроксимации матрицы f(A) матрицей д(А). Теорема 11.2.1. Пусть X~lAX = diag(Jt,..., Jp) есть JCF-матрицы АеСпхп с мат¬ рицами 0 J.= X, 1 0 X,- 1 X.- являющимися жордановыми блоками размера х т{. Если функции f(z) и g(z) аналитичны в открытом множестве, содержащем Х(Л), то ||/(Л)-0И)||2<*2(Х) max mi— r!
11.2. Аппроксимационные методы 489 Доказательство. Полагая h(z) = f(z) — g(z), имеем lf{A)-g(A)U-||Хйаё(Л(^),..мед)Х-Ч12<М*) max IIЛ(Л)Wi- Используя теорему 11.1.1 и уравнение (2.3.8), мы заключаем, что |Л(Г,М1 1|Л(Л)||2 <n»i max доказывая тем самым теорему. П 11.2.2. Анализ на основе разложения Шура Если мы будем исходить из разложения Шура, а не Жордана, то получим альтернативную оценку. Теорема 11.2.2. Пусть QHAQ = Т= diag (^ ■) + N-разложение Шура матрицы АеСпхп с матрицей N, являющейся строго верхней треугольной частью Т. Если функции f(z) и g(z) аполитичны на замкнутом выпуклом множестве П, внутренняя часть которого содержит Х,(Л), то ИМ'II, Г! где 8r = sup|/(r)(z)-0(r)(z)|. zeO Доказательство. Пусть A(z) = /(z) — g(z) и Н = (Al7) = h(A). Пусть Sj? означает множество целочисленных строго возрастающих последовательностей (^0,..., лг), таких, что 50 = i, sr — j. Заметим, что Sij=JU S\? r= 1 и, следовательно, из теоремы 11.1.3 для всех i<j мы получаем следующее равенство: j-i hij = X X ns0.sln8l.s2**-nsr_l,srh[?^s0i ^5Г] • r= 1 Теперь, так как множество Q выпуклое, а функция h аналитическая, мы имеем неравенство >^7^ = ^- (П-2.1) zeQ г- г! Более того, если |N|r = (л}?) при г > 1, то можно показать, что j °’ j<i + r, (11 2 2) Беря абсолютные величины в выражении для hi} и используя затем (11.2.1) и (11.2.2), завершаем доказательство. □ |A[XSo,..., XJKsup- 17 63
490 Гл. И. Функции от матриц Оценки из вышеприведенных теорем наводят на мысль, что для аппроксимации /(А) требуется нечто большее, чем просто аппроксимация f(z) на спектре матрицы А. В частности, мы видим, что если собственная система матрицы А плохо обусловлена и/или отклонение матрицы А от нормальности велико, то различие между f(A) и д{А) может быть значительно большим, чем максимум |f(z) — g[z)\ на А.(Л), Следовательно, хотя аппрохсимашонные методы избегают вычислений, связанных с собственными значениями, они оказываются подверженными влиянию структуры собственной системы матрицы А, Об этом мы еще будем говорить в следующем разделе. Пример 11J.I Пусть -ОЛИ 1 1 А = 0 0 1 0 О 0.01 Если f(z) = и g(z) = 1 + 2 + *72. то ||ДА) - д{А) || % 10"5 и в корме Фробениуса, и во второй норме. Поскольку x2(2Q»107, погрешность 0(1), предсказанная теоремой 11.2.1, пессимистична. С другой стороны, погрешность, предсказанная на основе разложения Шура, есть 0(Ю-2). 11.2.3. Тенлоровы аппрокснманты Популярный способ аппроксимации функции от матрицы, такой, как состоит в усечении ее ряда Тейлора. Условия, при которых функцию от матрицы f(A) можно представить рядом Тейлора, легко устанавливаются. Теорема 11.2.3. Если функция f{z) представима степенным рядом /(*) = Z v* ft =0 в открытом круге, содержащем h(A), то f(A) = £ ckA\ ft —о Доказательство. Мы докажем теорему для случая, когда матрица А диагонализуе- ма. В задаче 11.2.1, мы подскажем, как обойтись без этого предположения. Пусть X~lAX = D = diag(XL,Используя следствие 11.1.2, мы имеем /И = X diag (/(>.,) /(U)*-' - X diagf t I = xk = 0 *"‘ = I ск{хох~1у= Z □ ft = 0 1=0 Некоторые важные трансцендентные функции от матрицы имеют особенно простые представления: М*-4-14г. 1X1 <|* k- 1 * со л2к+1
11.2. Аппроксимацтнные методы 491 Следующая теорема устанавливает границы погрешностей, возникающих, когда функций от матрицы; такие, как эти, аппроксимируют усеченными рядами Тейлора. Теорема 1UA Если функция f{z) представима рядом Тейлора f{z) = £ (V* *=о в открытом круге, содержащем собственные значения матрицы А € С" х ", то ч I к-0 ДА)- “77 max M,+ I/(,+ n(^)ll2- !2 W+*J! Доказательство. Определим матрицу E{s) как f{As) = £ + £(i), 0 < «.< 1. (11.2.3) k = 0 Если функция/и(^) есть (у)-й элемент матрицы f(As)t то она обязательно аналитична и, следовательно, где £ц удовлетворяет неравенствам 0 < < s < 1. Сравнивая степени 5 в (11.2.3) и (11.2.4), мы заключаем, что ey(s)-(if./)-fl элемент матрицы £(s), имеет вид ... *“М"ТГП5Г* • Функция /|J+11 (я) является (4/Ьм элементом матрицы A9*1 /to+1,(j4j) и, следова¬ тельно, , /&+1)М |И€+1/й*1>(^)1а ецЬ) < max / -frf < max ; --и . WW о«,о(2+1)! ood (?+>Л Применяя неравенство (2-3.8), завершаем доказательство. □ Пршср 11.2.2. Если Г -49 241 'П-64 31 Jv -0.73575» 0.0551819 -1.471518 1.103638 Для q — 59 теорема 11.2.4 предсказывает, что п * Ак\ еА- У — М I fc"0 It! ||2 (fl + l)! o<j«1 Однако если использовать приближенную арифметику с Р = 16, f — б, то мы найдем Г “2Г Xhk'J L -61- 22.25880 -1.4322766 49931 -3.474280 ] 17*
492 Гл. 11. Функции от матриц Проблема в том, что некоторые из частичных сумм имеют большие элементы. Например, матрица J + ...+ А11/17! имеет элементы порядка 107. Поскольку машинная точность равна примерно 10"7, при вычислениях появляются погреш¬ ности округления большие, чем норма решения. Пример 11.2.2 отчетливо показывает недостаток аппроксимации усеченными ря¬ дами Тейлора: она хороша только при небольшом числе членов. Иногда эту проблему можно обойти, меняя скалярную функцию. Например, многократно применяя формулы двойных углов: можно «построить» синус и косинус от матрицы из подходящих аппроксимаций усеченными рядами Тейлора: Здесь К -положительное целое, выбранное так, что, скажем, \\А\\о0^2к. Смотри [Serbin, Blalock, 1979]. 11.2.4. Оценка многочлена от матрицы Коль скоро приближение трансцендентных функций матрицы так часто включает оценку многочленов, имеет смысл обратить внимание на детали вычисления многочлена вида где скаляры £0,..bq е R заданы. Самый очевидный подход состоит в использовании схемы Горнера: Алгоритм 11.2.1. Для заданной матрицы А и вектора 6(0:(?) следующий алгоритм вычисляет F = bqAq + ... + ЪХА + Ь01. F = bqA + bq-il for к = q ~ 2: — 1:0 F = AF+ bkI end Это требует q — 1 матричных умножений. Однако в отличие от скалярного случая этот процесс суммирования не является оптимальным. Для того чтобы увидеть почему, положим q = 9. Можно заметить, что р(А) = А3 (А3 (Ь9А3 + (Ь6Аг + М + V)) + (м2 + М + М + м2 + М + М- Следовательно, матрицу F = р(А) можно оценить всего лишь за четыре матричных умножения: cos (2Л) = 2 cos (А)2 — /, sin (2А) = 2 sin (Л) cos (Л), S0 = тейлорова аппроксимация sin С0 = тейлорова аппроксимация соьул/4.) for j = 1: к end р(А) = bQI + bxA + ... + bqAqy A2 = A2, A3 = AA 3 ~ Si Si 2, F x — bgA3 bgA2 4“ b7A H- b^I,
11.2, Аппроксимационные методы 493 Fj — А$ F i + Ь5Л2 4- Ь^А 4- F3 = A$F2 4- Ь2Л2 4- b±A -h b0L В общем случае, если s- произвольное целое, удовлетворяющее неравенству 1 < S < Jq. то р(А)= £ Bk(Af, г = 1фУ\ (11.2.5) fc = о где g _ ( 1 + ••• + bsi + iA + Ьл1, k = 0:r — 1 4“ I v,_,r + ••• + b*r+*A + V. k = r- Если степени A2,.As вычислены, то правило Горнера можно применить к сумме (11.2.5). Окончательный результат состоит в том, что матрица р(А) может быть вычислена за s + г — 1 матричных умножений. Число матричных умножений при¬ мерно минимизирует * = [>/«]• Этот подход обсуждается в работе [Paterson, Stockmeyer, 1973]. Ван Лоан [Van Loan, 1978b] показал, как эту процедуру можно применять, не заводя массивов для хранения матриц А2, ..., А4. 11.2.5. Вычисление степеней матрицы Задача возведения матрицы в заданную степень заслуживает особого внимания. Пусть требуется вычислить А13. Замечая, что А4 = (А2)2, А9 = (А4)2 и А13 = А8А4А, мы видим, что это можно выполнить всего за 5 матричных умножений. В общем случае имеем Алгоритм 11.2.2 (Двоичное возведение в степень). Для заданных положительного целого s и матрицы А е R" *л следующий алгоритм вычисляет матрицу F = А*. t Пусть s = £ Р*2*- двоичное представление числа s с pt Ф О *=о Z = A; q = О while Pq = О Z = Z2; q = q+ 1 end F = Z for k = q 4- 1: t Z = Z2 if p* * 0 F = FZ end end Этот алгоритм требует не более 2|Jog2(.s) J матричных умножений. Если s-степень двойки, то необходимо только log2(.v) матричных умножений. п Здесь и далее [дг]-ближайшее целое большее либо равное х. - Прим. перев.
494 Га. //. Функции от матриц 11.2.6. Интегральные функции от матрицы Мы закончим этот раздел некоторыми замечаниями об интегральных функциях от матрицы. Пусть матрица f{At) определена при всех te [a* Ь] и мы хотим вычислить матрицу F = ]f{At)dt. Л Как и в (11.1.1), интегрирование является поэлементным. Для вычисления матрицы F можно применять обычные квадратурные формулы. Например, применяя формулу Симпсона, имеем F « F = * £ wkf{A{а + kh)), (11.2.6) где т четное, h-{b — а)/т и Г 1 к « 0, т, wk = ^ 4 к нечетное, I 2 к четное, к Ф 0, пи Если производная {d*jdz*)f{zi) — непрерывна при fe[a, Ь] и если матрица определена на том же самом интервале, то можно показать, что Р — F + Е, где В Ла* щах ||f^(At) ||2. (11-2-7) 1BU a^i^b Пусть ftj н etJ означают элементы (i, j) матриц F и Е соответственно. При сделанных выше предположениях мы можем применить стандартную оценку погрешности формулы Симпсона и получить, что кц1 < ~ ^ «ах \e[fH'{At)e}\. 180 аЧКЬ Неравенство (11.2.7) следует из неравенству -Е||2 ^«max|ev| и max \е[fw{At)ej\ < пшх ||/<4)(^0Из- a^t^b a^t^b Конечно, в практических приложениях формулы (11.2.6), функцию, оценивающую f[A (а + kh)\ обычно нужно аппроксимировать. Поэтому общая погрешность вклю¬ чает погрешность аппроксимации матрицы f{A(a + kh)) наряду с погрешностью формулы Симпсона. Задан 11.2.1. (а) Пусть G = XI + Е-жорданов блок размера р х р, где Е). Показать, что mb {/?- (U + £)* = Е ())Хк~>ЕК j-о (Ь) Использовать (а) и теорему 11.1.1 для доказательства теоремы 11.2.3. 11.2.2. Проверить (11.2.2). 11.2.3. Проверить, что если \\А Ц2 < 1, то In (/ + А) существует и удовлетворяет следующей оценке Ц1п(/ + Л)21| < М|2/(1 - \\А$2). 11.2.4. Пусть А - симметричная положительно определенная матрица размера п х п.
ИЗ. Матричная экспонента 495 (а) Показать, что существует единственная симметричная положительно определенная матри¬ ца X, такая, что А = X2. (Ь) Показать, что если Х0 » / и *»+, - № + ЛХ^)!Х ТО Хк-у/л квадратично, где ^[А означает матрицу X из (а). 11.25. Специализировать алгоритм 11.2.1 для случая, когда матрица А симметричная. Сделать то же самое для случая, когда А верхняя треугольная. Для обоих случаев подсчитать число флопов. 11.2.6. Показать, что матрица Х(г) = Сх соь{г/л ) + С1У/А'1 решает задачу Коши = —AX{t\ X(О) = Ct. X(0) — С2. Считать, что матрица А симметричная, поло¬ жительно определенная. 11.2.7. Используя теорему 11.2.4, оценить погрешность аппроксимаций: « ^2* + 1 Щ j2k т(А)» Х<-1)*7Г7 7Г< СО&{А)ъ j (-1)*; (2k + 1)1 Л-o' (2 к)'. Зямечшня ■ литература к { 11.2 Оптимизация схемы Горнера для оценки многочлена от матрицы обсуждается в работах Knuth D. (1981). The Art of Computer Programming, vol. 2. Semi numerical Algorithms, 2nd ed., Addison-Wesley, Reading, Massachusetts. [Имеется перевод: Кнут Д. Искусство програм¬ мирования для ЭВМ. Т. 2: Получисленные алгоритмы.-М.: Мир, 1977,] Paterson M.S. and Stockmcyer L. J. (1973). “On the Number of Nonscalar Multiplications Necessary to Evaluate Polynomials'*, SIAM J. Comp. 2, 60-66. Оценка многочлена от матрицы по схеме Горнера анализируется в работе Van Loan С F. (1978b). “A Note on the Evaluation of Matrix Polynomials**, IEEE Тгапь Auto. Cont AC-24, 320-21. Представления матрицы f{A) многочленами Ньютона и Лагранжа и их связь с другими определениями функции от матрицы обсуждается в Rinehart R. F. (1955). “The Equivalence of Definitions of a Matric Function”, Amer. Math. Monthly 62, 395-414. Метод двойного угла для вычисления косинуса матрицы анализируется в работе Serbin S. and Blalock S. (1979). “An Algorithm for Computing the Matrix Cosine**, SIAM J. ScL Stat Comp. 1, 198-204. Квадратный корень является особенно важной матричной функцией и здесь возможны несколько подходов. Смотри Bjdrck A. and Hammarlmg S. (1983). “A Schur Method for the Square Root of a Matrix11, Lin. Alg. and Its Applic. 52/53, 127-140. Higham N.J. (1986a). “Newton's Method for the Matrix Square Root*', Math. Comp. 46, 537-550. Higham N.J. (I987c)i “Computing Rea) Square Roots of a Real Matrix”, Lin. Alg. and Its Applic 88/89, 405-430. 11.3. Матричная экспонента Одной из наиболее часто вычисляемых функций от матрицы является экспонента (А? 1 *! Было предложено множество алгоритмов вычисления матрицы е*, но, как указано в обзорной статье Малера и Ван Лоана [Moler, Van Loan, 1978], большинство из них обладают сомнительными вычислительными свойствами. Для того чтобы пояснить, какие имеются вычислительные трудности, мы приведем краткий анализ
496 Гл. 11. Функции от матриц возмущения матричной экспоненты и затем используем его для оценки одного из лучших ем алгоритмов. 11.3.1. Теория возмущения Исходной точкой является задача Коши X{t) = AX{t\ X (0) = 7, где А, X (/) е R" х". Эта задача, имеющая единственное решение X (/) = еЛ\ представ¬ ляет собой характеризацию, которая может быть использована для установления тождества t e(A + E)t _ _ ^eA{t-s)^e{A^E)S(js О Из этого тождества следует, что Дальнейшие упрощения могут быть сделаны, если оценить нормы экспонент, стоящие под интегралом. Один из способов осуществить это-воспользоваться разложением Шура. Если QHA Q = diag(X,) + JV- разложение Шура матрицы А € Сп * п, то можно показать, что II е" |[2 « е°И)'М5(0, где а(Л) = max{Re(X):X.6X-(i4)} k = О Kl Немного преобразованный, этот результат может быть использован для уста¬ новления неравенства и JA + EU _ eAt || * —^^ < 11| £'||2Ms(/)2exp(/Ms(f) || Е ||2). 11^ 112 Заметим, что Ms(t) = 1 в том и только том случае, когда матрица А нормальная; это подсказывает, что проблема матричной экспоненты «хорошо себя ведет», если матрица А нормальная. Это наблюдение подтверждает поведение числа обусловлен¬ ности матричной экспоненты v(Ay г), определенной как v [А, /) = шах \\Е ||2<1 \\А ||2 We* ||а Эта величина, рассмотренная в работе [Van Loan, 1977а], измеряет чувствитель¬ ность отображения А -> еА\ поскольку для данного t существует матрица Е, для которой l^A*Eh-eMj2_ л || £||2 „At и . : v(y4, /)- ll^'lli ' 'Mb Следовательно, если величина \(А, /) велика, то малые изменения в матрице А могут
ИЗ. Матричная экспонента 497 привести к относительно большим изменениям ЕЛК К несчастью, трудно определить точно те матрицы А, для которых величина у(Л, /) большая. (Это контрастирует с системой линейных уравнений Ах = Ь, где плохая обусловленность матрицы А изящно описывается в терминах SVD.) Однако кое-что мы можем сказать, а именно, что v(A, t) ^ tA, где равенство имеет место для всех неотрицательных / в том и только том случае, когда матрица А нормальная. 11.3.2. Метод аппроксимации Паде Продолжаем обсуждение, начатое в § 11.2: если д(г)^ех9 то д(А)&ел. Очень полезным классом аппроксимантов для этой цели являются функции Паде, опреде¬ ляемые как Заметим, что функция Rpq(z) = 1 + z + ... + zpjp\-это многочлен Тейлора степенир. К несчастью, как показывает следующее тождество, хороши только первые аппроксиманты Паде: Однако эту проблему можно обойти, используя тождество е4 = (eAim)m. В частности, мы можем масштабировать матрицу А путем деления на /п, так, чтобы матрица Fpq = Rpq(A/m) достаточно точно приближала матрицу еА{т. Затем мы вычислим , используя алгоритм 11.2.2. Если т-степень двойки, то этот алгоритм сводится к многократному возведению в квадрат и, таким образом, является очень эффектив¬ ным. Успех всей процедуры зависит от точности аппроксимации Эти результаты составляют основу эффективной ел процедуры с контролем где И В работе [Moler, Van Loan, 1978] показано, что если то существует матрица £еКяхи, такая, что АЕ = ЕА, II IMIIоо. plql (р + яУ-{р + Я + 0!
498 Гл. И. Функции от матриц погрешности округления. Используя приведенную выше формулу, легко установить неравенство: Параметры ряд могут быть определены, исходя из некоторой заданной относи¬ тельной погрешности. Заметим, что вычисление матрицы F„ требует примерно j + max(p,f) матричных умножений, поэтому имеет смысл положить р = q, так как этот выбор минимизирует z{p,q) при заданном числе операций. Собирая вместе эти идеи, мы получим Алгоритм 11.3.1. Для заданного 8>0 и матрицы ЛеR"х" следующий алгоритм вычисляет матрицу F = ел*в, где || £||ш < 81| А Пусть q-наименьшее неотрицательное целое, такое, что D = I; N *= I; X = /; с = 1 for k = 1:д c-c(q-k + t)/[(2g - к + 1)Л] Х = ЛХ; N - S + сХ; D = D + (- VfcX Решить систему DF = N относительно F, используя исключение Гаусса, for к = 1 :j aid Этот алгоритм требует примерно 2{q+j+ 1/3)я3 флопов. Для того чтобы сделать быстрыми вычисления матриц D = D^A) и N = N„[A), можно обратиться к методу Горнера из § 11.2. Например, если 9 = 8, мы имеем N„(A) =U + AV и Ои(Л) = IJ-AV, где U = е01 + с2Л2 + {cj + с6А2 + сЙА*)А* Понятно, что матрицы N и D можно найти за 5 матричных умножений вместо 7, требуемых алгоритмом 11.3.1, Свойства погрешностей округления алгоритма 11.3,1, в основном, были исследо¬ ваны Вардом [Ward, 1977]. Оценки, которые он вывел, удобны для вычисления и включены в фортрановскую подпрограмму. 113*3. Некоторые выводы об устойчивости Есть несколько интересных вопросов, относящихся к устойчивости алгоритма 11.3.1. Одна из возможных проблем может возникнуть в процессе возведения в квадрат, если матрица А является матрицей, чья экспонента растет, прежде чем начнет затухать. Если j = max(0, 1 +1, logj(Ц А ||„) J), А = АЦК в V=cJ + с3А2 + (csI + с7А2)А\
113, Матричная экспонента 499 то можно показать, что погрешность округления порядка у» и II G2' ||а*и||И||2, что практически исключает возможность малых относительных погрешностей. Если матрица А нормальная, то такой же будет матрица G и поэтому Ц Gm \\2 - = || G ЦТ для всех положительных целых. Следовательно, у * и || ||2 » и II еА ||2 и, таким образом, проблема начального роста отпадает. По существу алгоритм может гарантировать получение малой относительной погрешности, когда матрица А нормальная. Значительно сложнее сделать выводы об этом методе, когда матрица А не является нормальной, так как связь между величиной v(4, t) и явлением начального роста не ясна. Однако, судя по некоторым экспериментам, пред¬ ставляется, что алгоритм 11.3.1 не в состоянии получить относительно точную матрицу е*, только когда величина v(A, 1) достаточно велика. Задача 11.3.1. Показать, что = eAteBt для всех / в том и только том случае, когда АВ — ВА. (Подсказка; выразить обе части через степенные ряды по t и сравнить коэффициенты при Л) 11.3.2. Показать, что lime'1* *0 в том и только том случае, когда и(Л) < 0, где а (Л) определена как а(Л) = п№х{Ке(Л):Хе>.(Л)}. 11.313. Предположим, что матрица А кососимметричная. Показать, что матрица ел и (1,1 )-аппроксимация Паде ЛИ(Л) ортогональные. Существуют ли какие-нибудь другие значе¬ ния р и qy при которых матрица Яп (А) ортогональная? U3A Показать, что если матрица А невырожденная, то существует матрица X, такая, что А = е*. Единственна ли матрица XI 1133. Показать, что если Замечания и литература к § 11.3 Большую часть того, о чем упоминается в этом разделе, и обширную библиографию можно найти в следующей обзорной статье: Moler СВ* and Van Loan CF. (1978). “Nineteen Dubious Ways to Compute the Exponential of a Matrix", SIAM Review 20, 801-36. Масштабирование и возведение в квадрат Паде аппроксимантов (алгоритм 11.3.1) и удобная реализация метода Парлетта для разложения Шура (алгоритм 11.1.1) были найдены одними из наименее сомнительных среди девятнадцати тщательно изученных методов. Различные аспек¬ ты Паде аппроксимации матричной экспоненты обсуждаются в работах. Fair W. and Luke Y. (1970). “Pad* Approximations to the Operator Exponential”, Numer. Math. 14, 379-82. TO fn Fll = \eAT,PeAldt. 0
500 Гл. 11. Функции от матриц Van Loan С. F. (1977а). “On the Limitation and Application of Pade Approximation to the Matrix Exponential”, in Pade and Rational Approximation, ed. E. B. Saff and R. S. Varga, Academic Press, New York. Ward R.C. (1977). “Numerical Computation of the Matrix Exponential with Accuracy Estimate”, SIAM J. Num. Anal. 14, 600-14. Wragg A. (1973). “Computation of the Exponential of a Matrix I: Theoretical Considerations”, J. Inst. Math. Applic. II, 369-75. Wragg A. (1975). “Computation of the Exponential of a Matrix II: Practical Considerations”, J. Inst. Math. Applic. 15, 273-78. Доказательство уравнения (11.3.1) для скалярного случая появилось в работе Varga R.S. (1961). “On • Higher - Order Stable Implicit Methods for Solving Parabolic Partial Differential Equations”, J. Math. Phys. 40, 220-31. В теории управления есть много приложений, требующих вычисления матричной экспоненты. Например, в задачах линейной регулярной оптимизации требуются различные интегралы, содержащие матричную экспоненту. Смотри Armstrong Е. S. and CaglayanA.K. (1976). “An Algorithm for the Weighting Matrices in the Sample-Data Optimal Linear Regulator Problem”, NASA Technical Note, TN D-8372. Johnson J. and Phillips C.L. (1971). “An Algorithm for the Computation of the Integral of the State Transition Matrix”, IEEE Trans. Auto. Cont. AC-16, 204-5. Van Loan C.F. (1978a). “Computing Integrals Involving the Matrix Exponential”, IEEE Trans. Auto. Cont. AC - 16, 395 -404. Понимание отображения A -*ехр(Л/) и его чувствительности будет правильным, если оценить производительность алгоритмов вычисления матричной экспоненты. Работа в этом на¬ правлении включает Kagstrom В. (1977). “Bounds and Perturbation Bounds for the Matrix Exponential”, BIT 17, 39-57. Van Loan C. F. (1977b). “The Sensitivity of the Matrix Exponential”, SIAM J. Num. Anal. 14,971-81. Вычисление логарифма от матрицы - важная область, требующая слишком много работы. Эти вычисления возникают в различных задачах «распознавания систем». Смотри Singer В. and Spilerman S. (1976). “The Representation of Social Processes by Markov Models”, Amer. J. Sociology 82, 1-54. Helton B.W. (1968). “Logarithms of Matrices”, Proc. Amer. Math. Soc. 19, 733-36. Добавления при переводе Обратим внимание читателя на монографию одного из основоположников теории функций от матрицы: Лаппо-Данилевский И. Л. Применение функций от матриц к теории линейных систем обыкно¬ венных дифференциальных уравнений.-Москва.: Гос. изд-во технико-теоретической лит-ры. 1957.- 456 с.
Глава 12 Специальные разделы В последней главе мы обсуждаем набор задач, в котором представлены важные приложения метода SVD и QR-разложения. Сначала мы рассмотрим минимизацию в смысле наименьших квадратов с ограничениями. В § 12.1 рассматриваются два типа ограничений-квадратичные неравенства и линейные равенства. Следующие два раздела связаны с вариантами стандартной LS-задачи. В § 12,2 мы рассмотрим, как может быть аппроксимирован вектор Ь некоторым подмножеством столбцов матрицы А. Этот способ иногда применяют, если матрица А неполного ранга. В § 12.3 мы рассматриваем вариант обычной регрессии, известной как общая задача наименьших квадратов, которая возникает, если матрица А искажена ошибками. Другие приложения метода SVD обсуждаются в § 12.4, где рассмотрены различные подобласти вычислений. В § 12.5 обсуждаются некоторые варианты симметричной проблемы собственных значений. В § 12.6 мы исследуем изменение QR-разложения, когда к матрице А — QR добавляется матрица ранга один. 12.1. Задача наименьших квадратов с ограничениями Задачу наименьших квадратов иногда естественно рассматривать как минимиза¬ цию величины \\ Ах — Ъ || 2 на некотором подмножестве R”. Например, мы хотим определить вектор b, как наилучшее приближение для Ах, с ограничением, что х является единичным вектором. Или, возможно, решение определяет подходящую функцию f(t), которая описывается значениями в конечном числе узлов. Это может привести к задаче наименьших квадратов с ограничениями типа равенств. В этом разделе мы покажем, как эти задачи могут быть решены с использованием QR-разложения и SVD. 12.1.1. Задача LSQI Минимизация в смысле наименьших квадратов с ограничениями типа квадрат¬ ных неравенств -задача LSQI- это подход, который можно использовать, когда решение обычной LS-задачи должно быть регуляризовано. Простой задачей LSQI, которая возникает при стремлении приблизить функцию с искаженными данными, является следующая: минимизировать || Ах — Ъ ||2 при условии || Вх ||2 < а, (12.1.1) где А е Rm * л, be Rm, BeRnxn (не вырождена) и а >0. Ограничения определяют гиперэллипсоид в R* и обычно выбираются так, чтобы уменьшить сильные колеба¬ ния в подходящей функции. Это может быть достигнуто, например, если матрица В является дискретным оператором второй производной.
502 Гл. 12. Специальные разделы В более общем случае мы имеем задачу минимизировать ^Ах — Ь\\г при условии || Вх — </Ц2 < а, (12Л.2) где Л€НЛХЯ (т^п\ beR"\ BeRpx"> deRp и а>0. Обобщение сингулярного разложения в § 8.7.3 отвечает на вопрос о разрешимости задачи (12.1.2), Действи¬ тельно, если UTAX = diag(a1,..., аД UTV - Im, (12.1.3) VTBX = diag(Pi,..., р,), VTV~ I„, q = min [p, n}, является обобщением сингулярного разложения матриц А и В, то (12.1.2) преобразу¬ ется к виду минимизировать || DAy — Б|f2 при условии || DBy - 3\\2 ^ а, где S = UTby 3 = VTd и у - Х~ Хх. Простой вид целевой функции II °лУ - Б 111 - £ Ktt - £|)2 + £ (12.1.4) 1*1 (*«+1 и уравнений ограничения И *V - 3\\ « £ <Р 1У, -3,)2+ £ 3f < а2 (12.1.5) (-1 1*1“ + 1 облегчает анализ задачи LSQI. Здесь г = rank (В) и мы предполагаем, что рг+1 = -... - Э, • о. Во-первых, задача имеет решение тогда и только тогда, когда I —г + 1 Если в этом выражении имеется равенство, рассмотрение формул (12Л.4) и (12.1.5) показывает, что вектор, определяемый соотношением Г Ш >!Г = *s bifa, j = г + 1 :w, а, 0, (12.1.6) L О I ■= г + 1: л, а, = 0 разрешает задачу LSQI. В противном случае £ 32^а2 (12.1.7) 1*г+ 1 и мы имеем несколько альтернатив для продолжения. В згой ситуации вектор у е R”, определяемый соотношением (£>, а, # 0, . Г'-\Ш .,.о, будет минимнзатором выражения || Олу — £||2. Если такой вектор существует, то мы имеем решение задачи (12.1.2). (Однако, это не является необходимым условием минимума 2-нормы.) Поэтому мы допускаем, что £(ft7-*y+ £ 02.1-в) 1^1 \ ■ ' 1=9+1 а,*о Отсюда следует, что решение задачи LSQI имеет место на границе допустимого
12.1. Задача наименьших квадратов с ограничениями 503 множества. Таким образом, наша окончательная цель минимизировать || DAy — В \\2 при условии || DBy — 2|f 2 = а. Для решения этой задачи используем метод лагранжевых множителей. Определив у) = II 1>лУ ~ Sill + ЦII DBy - - «’), мы видим, что уравнения 0 =* dhjdy^ / — 1 in, приводят к линейной системе (DtaDa + XDlDB)y = DIE + XDll В предположении, что матрица коэффициентов невырожденна, система имеет решение ^(Х), где 4" '= I-ч, а* + Xfif l5,/а(, i = q+i:n. Для определения множителей Лагранжа обозначим Ф(Ч.|в.,(Ч-3|5-Ё«,Ь|г^+ t 3‘ ы 1 ui + АД? j—г+1 и потом найдем ранения уравнения ф (X) = а2. Уравнения такого вида называются секулярными уравнениями, (См. § 8.6.) Из формулы (12.1.8) мы видим, что ф (0) > а2. Функция ф (X) является монотонно убывающей при X > 0, и поэтому из формулы (12.1.8) вытекает существование единственного положительного X*, для которого ф(Х*) = а2. Легко показать, что это необходимый корень. Он может быть найден применением какого-либо из стандартных методов нахождения корней, таких, как метод Ньютона. Тогда решением исходной задачи LSQ1 является вектор х = Х>’(Х*). 12.1.2. LS-ммяим нянин на сфере Для возможного случая минимизации на сфере мы имеем следующую процедуру (B = IK, d = 0). Алгоритм 12.1.1. Для данной матрицы А е R" * ", где т&п, вектора Ь е R" и парамет¬ ра а >0 следующий алгоритм вычисляет вектор JtfcR", такой, что \\Ax~b ||2 достигает минимума при ограничении || х ||2 < а. Вычислить SVD А = UT.VT и запомнить V = [с,,.. rj. b = UTb; г = rank (/4) »£(£)'» <■» <«| \<V Найти X* такое, что У 1 *= а2. ,ti \vf + XV (а)"' end Ha процедуру SVD приходится преобладающая часть вычислений а этом алгоритме.
504 Гл. 12. Специальные разделы Пример 12.1.1. Характеристическое уравнение задачи "2 0 задается выражением min II * II2 = 1 0 1 О О ы-Ш Для этой задачи находим X* — 4.57132 и х = (0.93334, 0.35898)т. 12.1.3. Гребневая регрессия Задача, решаемая алгоритмом 12.1.1, эквивалентна проблеме множителей Лагранжа для определения X > 0, такого, что (АТА + Х1)х = АтЬ (12.1.9) и II х || 2 = а. Здесь формула (12.1.9) является точным нормальным уравнением, сформулированным для задачи гребневой регрессии 2 = min || Ах - Ь ||| + к || х ||1. Для обобщенной задачи гребневой регрессии есть некоторый способ выбора гребневого параметра X, например ||х(^)||2 = а при некотором заданном а. Мы опишем процедуру ^-выбора, которая обсуждается в работе Golub, Heath и Wahba (1979). Пусть Dk = I — еке\ = diagfl,..., 1, 0, 1,..., l)eRmxm, и пусть л*(Х) разрешает задачу min || Dk(Ax - b) \\\ + X || х | (12.1.10) Таким образом, хк(Х)-это решение задачи гребневой регрессии при вычеркнутых к-й строки матрицы А и к-й компоненты вектора Л т.е. fc-й эксперимент игнорируется. Теперь рассмотрим выбор такого X, которое минимизирует квадрат ошибки кросс¬ валидации с весами С(Х)1}, задаваемый формулой с(*-) = z X - М2 т k= 1 Здесь coj,..., com-неотрицательные веса и «f-это к-я строка матрицы А. Замечая, что II Лхк(Х) - Ь И! = || Dk(Axk(X) - b ||i + (a[xk(X) - bk)2 мы видим, что слагаемое [акхк(Х) — bj2 увеличивает результирующую сумму квадратов, если к-я строка «восстановлена». Минимизация С(Х) равносильна выбо¬ ру такого X, что окончательная модель не зависит от какого-либо одного экспери¬ мента. Более строгий анализ может сделать это утверждение точным и предложить также метод для минимизации С(Х). При условии что X > 0, алгебраические u Кросс-валидация называется также перекрестной проверкой или перекрестным экзаме¬ ном.- Прим. перев.
12.1. Задача наименьших квадратов с ограничениями 505 преобразования дают формулу =*(*•)+ - Ьк 1 - zja. где z* = (АТА + XI) 1 ак и х().) = {АТА + Л/)^1 АТЬ. Умножение формулы (12.1.11) на —а* и прибавление Ьк к каждой части текущего уравнения дают м е*г(/-Л(ЛгЛ+А./)-Ч> к °кХк^ е[(!-А(АтА +Х1)~1АГ)ек' Замечая, что невязка г = (гlfrm)r — b — Ах(Х) задается — [/ — А(АТА + XiyiAT]b, мы видим, что (12.1.12) формулой г = Отношение rk/(drk/dbk) может рассматриваться как обратная величина «попадания» к-то наблюдения Ьк на модель. Когда дгк/дЬк мало, это говорит о том, что ошибка в модельном предсказании Ьк является в некотором смысле независимой от Ьк. Практическое определение параметра X* осуществляется простым вычислением SVD-матрицы А. Действительно, если UTAV= diag(a!,..., оя) при ...> оп и 5 = U Ь, тогда можно показать с учетом формулы (12.1.12), что к=1 Минимизация этого выражения обсуждается в работе Golub, Heath и Wahba (1979). 12.1,4. Задача наименьших квадратов с ограничениями типа равенств Мы завершаем раздел рассмотрением задачи наименьших квадратов с ограниче¬ ниями типа линейных равенств: min \\Ах-Ь\\2. (12.1.13) Bx = d Здесь y4eRwx", ReRpxn, beRm, d€Rp и rank(R)=/?. Мы называем задачу (12.1.13) задачей LSE. Полагая а = 0 в задаче (12.1.2), мы видим, что задача LSE является частным случаем задачи LSQI. Однако проще решать задачу LSE непосредственно, а не через множители Лагранжа. Предположим для ясности, что обе матрицы А и В имеют полный ранг. Пусть ’Rip _0j л —, QTBT = -QR-разложение матрицы Вт, и пусть , атх = \у]р „ LzJ п-р Р п-р
506 Гл. 12. Специальные разделы Очевидно, что с учетом этих преобразований формула (12.1.3) переходит в соот¬ ношение Таким образом, вектор у определяется из уравнения ограничений RTy = dy а вектор z получается решением задачи LS без ограничений (12.1.13). Алгоритм 12.1.2. Пусть AeRmy", ReRp*\ beRm и deRp. Если гапк(А) = л и rank(#) = р, тогда следующий алгоритм минимизирует величину \\Ах — b \\2 при ограничении Вх = d. Вт = QR (QR-разложение) Решить R(\ :ру 1:р)ту = d относительно у, A = AQ Найти z, такое, что М{:, р + 1 :/i)z — (b — А (:, 1: р)у) ||2 является минимальным x = Q(:, l :p)y + Q{},p+ 1 :n)z Отметим, что такой подход к задаче LSE включает два разложения и матричное умножение. 12.1.5* Метод взвешивания Интересным способом получения приближенного решения задачи (12.1.13) явля¬ ется решение задачи LS без ограничений для больших X. Обобщенное сингулярное разложение из § 8.7.3 отвечает на вопрос о качестве приближения. Пусть суть GSVD пары матриц (А, В), и предположим для ясности, что обе матрицы имеют полный ранг. Если U = [i/j,..., иJ, min \\Aty + A2z — b \\г. RTy = d min || A2z + (b — Aty) B2. z Комбинируя полученное выше, видим, что вектор разрешает задачу (12.1.14) UTAX = diag(a„ a„) = DAetT*\ VTBX = diag(p1(..., P„) = DeeR,,x" ^ X [jfj) • • •* xj) то легко показать, что (12.1.15) является точным решением для задачи (12.1.13), тогда как ' Oiulb + X^fvfd A и[Ь
12.1. Задача наименьших квадратов с ограничениями 507 разрешает (12.1.14). Так как () А й,К + ^Р?) отсюда следует, что jc(X) х при X -► оо. Привлекательность этого подхода к задаче LSE состоит в том, что не требуются специальные подпрограммы: используется только подпрограмма решения обыкно¬ венной LS-задачи. Однако при больших значениях X могут возникнуть численные проблемы и необходимо быть осторожным. См. Powell и Reid (1968) и Van Loan (1982а). Пример 12.1.2. Задача mm ~ 1 2 fv 1 7 3 4 х1 - 1 5 6 L*2 J 3 имеет решение х = (0,3407821, 0.3407821). Оно может быть приближено решением задачи пип 1 2 V 3 4 Г*»! l 5 6 UiJ 3 1000 -1000 0 которое имеет решение х = (0.3407810, 0.3407829). Зядги 12.1.1. (а) Показать, что если пи11(Л) П null (Н) ф {0}, то (12.1.2) не может иметь единственное решение. (Ь) Построить пример, который показывает, что обратное неверно. (Подсказка: допустимо А+Ь.) 12.1*2, Пусть />0(х), ..., p„(x)~ заданные полиномы, (х0, у0), .(хт, ) заданное множество координатных пар, где х(е[а, Ь]. Требуется найти полином р(х) = S-oa*Pfc(x)’ такой, что — Уi)2 является минимальной при ограничении /уда* -»I в о, а < = 0 ' " / где zt = а + ih и b = a + Nh. Показать, что такая постановка приводит к задаче LSQI вида (12Л.1). 12.1.3. Пусть матрица У = [yt,..., yje/r"** обладает следующим свойством УТУ = diag(^t, - d*)t dx 7* d2&„.^dk>0. Показать, что если У = QR является QR-разложением матрицы У, тогда R - диагональная матрица, причем | ru \ = dr 12.1.4. (а) Показать, что если (АгА + XI)x ATb, X > 0 и \\ х ||2 *= а, то вектор z = (Ах — Ь)/Х разрешает двойственные уравнения (ААТ + XI)z = — Ь, где || Атг ||2 — а. (Ь) Показать, что если (ААТ + XI)z = —6, || Атг |[2 = а, то вектор х = —ATz удовлетворяет уравнению (АтА + Х1)х = АТЬ> || х ||2 = а. 12.1.5. Пусть А -это m х 1 матрица из единиц, и пусть 6бНм. Показать, что метод кросс¬ валидации с единичными весами предписывает оптимальное К задаваемое соотношением ЧШЧГ-
508 Гл. 12. Специальные разделы где & = (ЬХ + ... + Ьт)/т и я = £ (Д - Б)2/(т - 1). «=» 12.1.6. Вывести уравнение (12.1.15) из формулы (12.1.17). 12.1.7. Получить SVD-версию алгоритма 12.1.2, которая может работать с матрицами А и В неполного ранга. 12.1.8. Пусть где /41еНчХя является невырожденной и /42eR(m п)Хя. Показать, что ^Vnin ^ш»о (/42/4| ) cmjn(/(J. 12.1.9. Рассмотрим задачу min \\Ax-b\\2, AeRmX\ 6eRw, Д CeRnX". х^Вх = р2 хТСх = У2 Предположим, что матрицы В и С положительно определенные и что zeRnXn невырожденная матрица, удовлетворяющая условию ZTBZ = diag(A,t,..., А,„) и ZTCZ = /„. И пусть Xi ^ ^ Хп. (a) Показать, что множество допустимых х пусто, если не выполнено условие Хп ^ р2/у2 < * (b) Используя Z, показать, как задача с двумя ограничениями может быть сведена к задаче с одним ограничением вида min \\Ax-h ||2, yTWy = $i-'knyi где W= diagt^,...,^)-^/. Замечания и литература к § 12.1 Грубо говоря, регуляризация - это способ преобразования плохо обусловленной задачи к устойчивой. Важным примером является задача наименьших квадратов с квадратичными ограничениями. См. работы Elden L. (1977а). “Algorithms for the Regularization of Ill-Conditioned Least Squares Problems”, BIT 17, 134-45. Elden L. (1977b). “Numerical Analysis of. regularization and Constrained Least Square Methods", Ph. D. thesis, Linkoping Studies in Science and Technology, Dissertation no. 20, Linkoping, Sweden. Литература по кросс-валидации содержится в работах Elden L. (1985). “A Note on the Computation of the generalized Cross-Validation Function for Ill-Conditioned Least Squares Problems", BIT 24, 467-472. Golub G. H., Heath М., and Wahba G. (1979). “Generalized Cross- Validation as a Method for Choosing a Good Ridge Parameter", Technometrics 21, 215-23. Задача LSQI обсуждается в статьях Elden L. (1980). “Perturbation Theory for the Least Squares Problem with Linear Equality Constraints", SIAM J. Num. Anal. 17, 338-50. Elden L. (1983). “A Weighted Pseudoinverse, Generalized Singular Values, and Constrained Least Squares Problems", BIT 22, 487-502. Forsythe G. E. and Golub G. H. (1965). “On the Stationary Values of a Second - Degree Polynomial on the Unit Sphere", SIAM J. App. Math. 14, 1050-68. Gander W. (1981). “Least Squares with a Quadratic Constraint", Numer. Math. 36, 291- 307. Stewart G. W. (1984). “On the Asymptotic Behavior of Scaled Singular Value and QR De¬ compositions”, Math. Comp. 43, 483-490.
12.2. Выбор подмножества при помощи SVD 509 Другие вычислительные аспекты задачи LSQI включают обработку ленточных и разреженных задач. См. Bjorck А. (1984). “A General Updating Algorithm for Constrained Linear Least Squares Problems”, SIAM J. Sci. and Stat. Comp. 5, 394-402. Elden L. (1984). “An Algorithm for the Regularization of Ill-Conditioned, Banded Least Squares Problems” SIAM J. Sci. and Stat. Comp. 5, 237- 254. O’Leary D.P. and Simmons J. A. (1981). “A Bidiagonalization - Regularization Procedure for Large Scale Discretizations of III-Posed Problems”, SIAM J. Sci. and Stat Comp. 2, 474-89. Schittkowski K. and Stoer J. (1979). “A Factorization Method for the Solution of Constrained Linear Least Squares Problems Allowing for Subsequent Data Changes”, Numer. Math. 31, 431-63. Задача LSE обсуждается в работе Lawson и Hansen (SLE, гл. 22). Задачи, связанные с методом взвешивания, анализируются в статьях Barlow J. L., N. К. Nichols, and R.J. Plemmons (1988). “Iterative Methods for Equality Constrained Least Squares Problems”, SIAM J. Sci. and Stat. Comp. 9, 892-906. Powell M.J.D. and Reid J. K. (1968). “On Applying Householder’s Method to Linear Least Squares Problems”, Proc. IFIP Congress, pp. 122-26. Van Loan C. (1985). “On the Method of Weighting for Equality Constrained Least Squares Problems”, SIAM Numer. Anal. 22, 851-864. GSVD также полезно для изучения обобщенных задач наименьших квадратов; см. Paige С. С. (1985). “The General Limit Model and the Generalized Singular Value Decomposition”, Lin. Alg. and Its Applic. 70, 269-284. 12.2. Выбор подмножества при помощи SVD Как упоминалось в § 5.5, LS-задача неполного ранга min \\Ах — Ь\\2 может быть заменена аппроксимацией решения минимальной нормы xls = У vi9 г = rank (Л), i= 1 °i с вектором ujb Xi >= X—v>' r> где A = UZVr='£ ciUivJ. (12.2.1) i= 1 SVD-разложение матрицы А иг- вычисленная оценка для г. Отметим, что вектор хf минимизирует || Арх — Ъ ||2, где матрица г Af= X <W'T 1 = 1 является приближением матрицы А ранга г. См. теорему 2.5.2. Замена матрицы А на матрицу Ар в LS-задаче выполняется для фильтрации малых сингулярных значений и имеет большой смысл в ситуациях, когда матрица А получается из возмущенных данных. Однако в других приложениях неполнота ранга означает избыточность факторов, которые содержит лежащая в основе модель. В этом случае для создателя модели может быть неинтересным такое приближение, как Арх?, которое учитывает все п избыточных факторов. Вместо этого можно найти приближение Ау, где у имеет около г ненулевых компонент.
510 Гл. 12. Специальные разделы Позиции ненулевых элементов вектора определяют некоторые столбцы матрицы А% т. е. некоторые факторы модели, которые используются для приближения Вектора наблюдений Ь. Задача выбора этих столбцов называется выбором подмножества и составляет содержание данного раздела. 12.2,1. Метод QR со столбцовым выбором Метод QR со столбцовым выбором можно рассматривать как метод выбора независимого подмножества столбцов матрицы А, которыми приближается вектор /?. Предположим, мы применяем алгоритм 5.4.1 к матрице AeRm*n и вычисляем ортогональную матрицу Q и перестановочную матрицу П, такие, что матрица R = QTAU является верхней треугольной. Если Л(1 :r, 1 ;F)z = 5(1:^, где $■■ QTbt то полагаем '-"Н- тогда вектор Ау является LS-приближением вектора Ъ, содержащим первые ? столбцов матрицы АП. 12.2.2. Использование метода SVD Хотя метод QR со столбцовым выбором является достаточно надежным способом для решения задач, близких к задачам неполного ранга, иногда по причинам, рассмотренным в § 5.5, более предпочтительным является метод SVD. Поэтому мы опишем процедуру выбора подмножества, основанного на SVD, в соответствии с тем, что предложили Golub, Klema и Stewart (1976): ♦ Вычислить SVD, матрицы А = 1/£Рг, использовать его для определения оценки ранга г. • Вычислить перестановочную матрицу Р, такую, что столбцы матрицы BteRmxr в представлении АР — [BL, В2Л «достаточно независимы». и вектор z е R' минимизирует • Приблизить вектор b вектором Ау\ где у = Второй шаг является ключевым. Так как min || Bkz — b || 2 = \\Ay-b\\2 ^ min \\Ax — b ||2, xeR” то можно сделать вывод, что матрицу перестановок Р необходимо выбирать так, чтобы сделать невязку (/ — ВкВк)Ь предельно малой. К несчастью, такой способ 1 1 0 1 А = 1 1 +Е 1 , Ь = -1 0 0 1 0 г = 2 и Р - I, тогда min || BLz — Ъ ||2 = 0, но || В*b ||а = 0(1/е). С другой стороны, любое подмножество, содержащее третий столбец матрицы А, является строго независимым, ыо приводит к значительно худшей невязке. Этот пример показывает, что возможно противоречие между независимостью выбранных столбцов и нормой невязки, которую они порождают. Для принятия решения при возникновении
122. Выбор подмножества при помощи SVD 511 подобных противоречий требуется дополнительный математический аппарат в виде приемлемых оценок для наименьшего сингулярного значения матрицы Вх. Теорема 12*2*1. Пусть SVD матрицы Ае R"*" задается соотношением (12.2.1), определим матрицу Вг€ RmK?, г < rank (Л) следующим образом AP=lBt Я2], ? п-9 где РеR"*" матрица перестановок. Если PTV= гг. гп. ы ? 1^11 (12.2.2) Г21 г22-1 Г Я—Г «Г», юты/чжденна, то Доказательство. Верхняя оценка следует из минимаксных характеристик сингуляр¬ ных значений, полученных в § 8.3.1. Чтобы установить нижнюю оценку, разобьем диагональную матрицу сингуляр¬ ных значений следующим образом: 1 = pi 0 ] г [_0 Z2J т — г ? л—г Если сое R?-единичный вектор, удовлетворяющий условию || Bxw ||2 « то UtVTP Г- Lo = II til + II Hi ■ Теорема верна, потому что || £, Р||2 > «Тр(Л)/|| Кй1 II2 □- Этот результат предполагает, что, стремясь получить достаточно независимое подмножество столбцов, мы выбираем матрицу перестановок Р, такую, что резуль¬ тирующая подматрица Рх х является предельно хорошо обусловленной. Эвристичес¬ кое решение этой задачи может быть получено вычислением QR-разложения со столбцовым выбором матрицы {УХ^УгЛ, где г. г- ч' Lfi.T.J «-г r2l.r 22- Г n — f является разбиением матрицы V из (12.2.1). В частности, если применить QR со столбцовым выбором (алгоритм 5.4.1) для вычисления QT\V\iVli-]P = VRli. Д,2]> Г П — Т где матрица Q ортогональная, Р перестановочная, a Rlt верхняя треугольная, то из
512 Гл. 12. Специальные разделы (12.2.2) следует, что Отметим, что матрица RXi невырожденна и || Vxx ||2 = || /?Г/ II2* Эвристически, столбцовый выбор позволяет получить хорошо обусловленную матрицу Rxx, и поэтому в целом процесс позволяет получить хорошо обусловленную матрицу Ухх. Поэтому имеем Алгоритм 12.2.1. Для заданных матрицы Л е Rw х я и вектора £eRm следующий алгоритм вычисляет матрицу перестановок Р, оценку ранга г и вектор z е Rr, такие, что первые г столбцов матрицы В = АР независимы и величина \\ В1 :r)z — b ||2 является минимальной. Вычислить SVD UTAV = diag(a,,..., сгя) и сохранить К Определить г < rank (Л). Применить метод QR со столбцовым выбором: QTV(:, 1 :r)TP = [/?n^i2] и по¬ ложить у4Р = [В152], где BxeRmxf и В2еRmxin~^. Определить вектор zeRr, такой, что || b — Bxz ||2 = min. Пример 12.2.1. Пусть 3 4 1 1 7 4 -3 1 2 5 3 b = 1 -1 4 5 1 rank (/4) = 2 и jcls = [0.0815, 0.1545, 0.0730]т. Если применяется алгоритм 12.2.1, то мы находим Р [е2е1ез] и решение х = [0.0845, 0.2275, 0.0000]7. Заметим: || b — Ах^ || « || b — Ах ||2 = 0.1966. 12.2*3. Еще раз о противоречии между независимостью столбцов и невязкой Вернемся к обсуждению противоречия между независимостью столбцов и нор¬ мой невязки. В частности, чтобы оценить описанный выше метод выбора под¬ множества, необходимо оценить невязку, которую задает вектор у: гу ~Ь — Ау — = b — Bxz — (/ — ВХВХ)Ь. Здесь матрица Вх = В(1: г), где В = АР. С этой целью проведем сравнение невязок гу и rx? = b — Ахр, поскольку А является г-ранговой матрицей и вектор х? разрешает задачу, приближенную к г-ранговой LS-задаче, а именно, min || Арс — Ь ||2. Теорема 12.2.2. Если невязки гу и гх? определены как описано выше, и если Ух х является ведущей г х г главной подматрицей матрицы PTVf то II ГХг - Hi < II ^II II2 II * II2- агИ; Доказательство. Отметим, что rx? = (l — UxUx)b и гу = (/ — QxQ[)b, где U = IUX С/2] г т — г является разбиением матрицы U из (12.2.1) и где Qx = B1(BxBiy112. Из § 2.6 мы
12.2. Выбор подмножества при помощи SVD 513 получаем III* - Г, На < || ихи\ - е.еГ ||2 \\Ь\\2 = II Ut2Qx ||2 IIЬ ||2, в то же время из теоремы 12.2.1 можно сделать вывод, что II VlQi Н2 « II VlBx ||2 || (£[£,)'Ш ||2 < аг-+|(Л)—< ^±^11 Й,7 П2 <*?И) г Замечая, что \\гх? — гу ||2 = || Вху — £ (и[Ь)щ ||2, мы видим из теоремы 12.2.2 на- *= L сколько хорошо вектор Вху может приблизить «устойчивую» компоненту вектора b, т.е. Ujb. Попытка аппроксимировать U^b может привести к решению с большой нормой. Кроме того, теорема утверждает, что если j (А)« оу И), то умеренно независимое подмножество столбцов порождает очень близкую невязку. С другой стороны, если не существует хорошей разделенное™ между сингулярными значе¬ ниями, то определение г затрудняется, и усложняется вся задача выбора подмно¬ жества. Задачи 12.2.1. Предположим, что матрица А е Rm х" и что || иТА || 2 = <у, где ити — 1. Показать, что если ит(Ах — Ь) = 0 для xeR" и beR"\ то ||*1|2 ^ \итЬ\/с. 12.2.2. Показать, что если матрица /JjeR"1** содержит к столбцов матрицы ^eR'"*", то a*(^i) ^ СТ*И)- 12.2.3. Из уравнения (12.2.2) видно, что матрица pryj К *12 ] * L V2l V22 J «-f r n — г является ортогональной. Поэтому || V || = || К“211|2 согласно CS-разложению (теорема 2.4.1). Показать, как можно вычислить Р, применяя QR-алгоритм со столбцовым выбором главного _ п элемента к матрице [V\2 *\г\‘ (Для ^ > ~ эта пР°ДеДУРа будет более экономичной, чем способ, рассмотренный в тексте.) Учтите это замечание в алгоритме 12.2.1. Замечания н литература к § 12.2 Содержание этого раздела основано на работе Golub G. Н., Klema V., and Stewart G. W. (1976). “Rank Degeneracy and Least Squares Problems”, Technical Report TR-456, Department of Computer Science, University of Maryland, College Park, MD. Процедура выбора подмножества, основанная на соответствующем методе для общей задачи наименьших квадратов из § 12.3, приводится в работе Van Huffel S. and Vandewalle J. (1987). ‘Subset Selection Using the Total Least Squares Approach in Collinearity Problems with Errors in the Variables”, Lin. Alg. and Its Applic. 88/89, 695-714. Литература по задаче выбора подмножества обширна, и мы отсылаем читателя к статье Hotelling Н. (1957). “The Relations of the Newer Multivariate Statistical Methods to Factor Analysis”, Brit. J. Stat. Psych. 10, 69-79.
514 Гл. 12. Специальные разделы 12.3. Общая задача наименьших квадратов Задача минимизации || D(Ax — b) ||2, где матрица /4eRmx\ а матрица D = = diag(</,, является невырожденной, может быть переформулирована сле¬ дующим образом: min ЦДгЦ2, reRM. (12.3.1) £+re range (Л) В этой задаче по умолчанию существует предположение, что ошибки заключены в векторе «наблюдений» Ь. Когда ошибка также присутствует в «данных» матрицы Ау то более естественно рассмотреть задачу min re/Г, (12.3.2) Ъ+г€ ranged + £) где матрицы D = diag(</lt.dm) и Т = diag(/lf..., /и+1) невырожденны. Эта задача, рассмотренная в работе Golub и Van Loan (1980), была названа общей задачей наименьших квадратов (TLS). Если минимизатор [ivo] может быть найден для задачи (12.3.2), то любой вектор jc, удовлетворяющий системе (А + Е0)х = Ь + г0, называется TLS-решением. Однако следует понимать, что задача (12.3.2) может не иметь совместного решения. Например, если 1 0 1 0 0 0 0 , 1 , *> = /„ Г=/3, £е = 0 е 0 0 1 0 Е то для всех е>0 £ е range (Л + £е)- Тем не менее не существует наименьшего значения || [£r] ||F, для которого Ь + г € range (А + £). Обобщение задачи (12.3.2) получается, если мы допускаем наличие многих правых частей. В частности, если матрица 2?eRmx\ то мы имеем задачу min ||0[£Л]Т||„ (12.3.3) range(B+R) я range И + £) где £eRmxn и RsRmxk, а матрицы D = diag(^,..., dm) и Г= diag(/1?..., гя+Л) не¬ вырожденны. Если [£0Яо] разрешает задачу (12.3.3), то любой XeRMXk, удовлетво¬ ряющий системе (A -f Е0)Х = (£+ £0), называется TLS-решением для задачи (12.3.3). В этом разделе мы рассмотрим некоторые из математических свойств общей задачи наименьших квадратов и покажем, как она может быть решена с использованием SVD. 12.3.1. Математическая основа Следующая теорема дает условия существования и единственности TLS-решения в задаче со многими правыми частями. Теорема 12.3.1. Пусть А, В, D и Т-это матрицы, определенные выше, и пусть т^п + к. Предположим, что матрица C=D[Aff]T=[Ci С2] п к имеет SVD вида UTCV — diag(a1,ая+Л) = I. где матрицы U, V и 1 разбиты
123. Общая задача наименьших квадратов 515 следующим образом v-iVtVA, v=\Vl1 VlI]n, „ к Lv21 V22Jk n к = Г2*10 Iя Lo zj к 2- k Если > ая+, (С), то матрица [£0Л0], заданная соотношением DlEoRJT- - U2Z2 [V\2 VT22\, (12.3.4) разрешает задачу (12.3.3). Если Тг = diag(rl9/и) и Т2 = diag(f„ + 1, ..., /„+4), mo матрица ^TLS= -^^2^22^2 1 существует и является единственным решением системы (А + Е0)Х — В R0. Доказательство. Сначала установим два результата, вытекающие из предположе¬ ния оя(Сt) > оп+1 (с). Из уравнения CV=UJL имеем CXVX2 -h C2V22 = C/2S2* Мы хотим показать, что матрица у» невырожденна. Пусть У22х = 0 для некоторого единичного в 2-норме вектора х. Из соотношения У\7ухг + ^22*22 = J следует, что II ^12*112 = Но тогда ов+ , (О 2* » U212X||2 = (I с, Vi2x II2 > 0.(0* получаем противоречие. Следовательно, подматрица V22 является невырожденной* Другой факт, следующий из предположения > <тй+1(С), касается строгой разделенности ап(С) и ая+1(С). Из следствия 8.3.3 имеем оЛ(С) ^ ^(Cj, и поэтому (Q)>oB+1(C). Теперь мы можем доказать теорему. Если range (В + Л) <= ranged + £), то существует X (и х fc), такой, что (А + £) X = В + R, т. е. {D[v4fi]T+D[£/?]T}T‘‘[^ *] = <>• (12.3.5) Поэтому матрица в фигурных скобках имеет, самое большее, ранг и. Следуя доказательству теоремы 2.5.2, можно показать, что ||D[£/?]T||f3* "l <т,(02 i=it+i и что нижняя оценка достигается на множестве [£7?] = [Е^Ло]. Неравенство ап (С) > <ти+1(С) гарантирует, что [/£0Л0] является единственным минимизатором. Ядро матрицы {DIAB]T+ DIEM Т} = VT2l\ ГV12] задается множеством . Поэтому из (12.3.5) имеем LV22j
516 Гл. 12. Специальные разделы для некоторой к х к матрицы S. Из уравнений Т^Х — VtzS и — Т2 1 = V22S видно, что S = — V22T21. Поэтому мы должны получить * = Ttvt2s = = xTLS. Если сги (С) = аи+1 (С), то TLS-задача может иметь решение, хотя оно может и не быть единственным. В этом случае, желательно выбрать решение «минимальной нормы». С этой целью рассмотрим т-норму, определенную на R"xfc следующим образом: ||Z||T = || TilZT2 ||2* Если X задан соотношением (12.3.5), то из теоремы 2.4.1 имеем IIX III = II vl2v^ III = 1 • Gk\y22) Это предполагает такой выбор матрицы V в теореме 12.3.1, чтобы afc(K22) было максимальным. 12.3.2. Вычисления для случая k = 1 Покажем для важного случая к - 1 как максимизировать V22. Пусть сингулярные значения матрицы С удовлетворяют условию оп_„ > ап_р+ ! = ап+1, и пусть V= [г,, ..., гя+1]-столбцовое разбиение матрицы V. Если Q является матри¬ цей Хаусхолдера, такой, что Г W гЛп Р 1 то вектор имеет наибольшую (п + 1)-ю компоненту для всех векторов из $рап{гя+1_р,..., ги + 1}. Если а = 0, то задача TLS не имеет решения. В противном случае xTLS = — T1zf(tnJrlа). Более того, и поэтому D [£0r0] Т = - D1АЫ г[*] 0га]. В целом, мы имеем следующий алгоритм. Алгоритм 12.3.1. Для заданных матрицы А еRmх п(т > и), вектора beR*" и невырож¬ денных матриц D = diag(^j, и Т = diag(/j,..., /„+i) следующий алгоритм вычисляет (если возможно) вектор AT-n^eR", такой, что (А + Е0)х = (b 4- г0) и II Я [£с/о] T\\F является минимальной. Вычислить SVD вида UT(D [ЛЬ] Т) К= diag^,..., оп+ J Сохранить К Определить р, такое, что > ... ^ аи_р > аи_р +1 =^... = аи+1 _ Вычислить матрицу Хаусхолдера Р, такую, что если V = VP, то V(n + 1, п —р + + 1:я)®0
123. Общая задача наименьших квадратов 517 if vn + Un+l^0 for i = 1: п xi= ^i^i. n + 1 /(^л + l^n+l,it+l) end end Этот алгоритм требует около 2тпг + 12л3 флопов и большая часть из них связана с вычислением SVD. Пример 123.1. Задача TLS min |||>r]||F, {а + <*)л =Ь + г где а = [1, 2, 3, 4]т и =[2.01, 3.99, 5.80, 8.30]т имеет решение xTLS = [2.0212], е = {-0.0045, —0.0209, —0.1048, —0.0855)т и г = (0.0022, 0.0103, 0.0519, — 0.4023)г. Отметим: для этих данных = 2.0197. 12.3.3. Геометрическая интерпретация Можно показать, что TLS-решение xTLS минимизирует функционал m \ajx - b,|2 V(*)= Т 2 а , i=l х I I X н- ln+1 где aj - это /-я строка матрицы Л, а ^ - i-я компонента вектора Ь. Геометрическая интерпретация задачи TLS может быть сделана при помощи этих сведений. Действительно, I аГх-ЪА* xTT;2x + t; является квадратом расстояния от вектора пространства gR"+1 до ближайшей точки под- Рх = | ^ :аеR", beR, b = хта|; здесь расстояние Rn+1 измеряется по норме || z || = || Т21[2. Об этом способе выравни¬ вания было много написано. См. Pearson (1901) и Madansky (1959). Задачи 12.3.1. Рассмотрим задачу TLS (12.3.2) с невырожденными матрицами Он Т. (а) Показать, что если rank L4) <«, то задача (12.3.2) имеет решение в том и только в том случае, если be range (А), (b) Показать, что если rank (Л) = и, то задача (12.3.2) не имеет решения, если АТ&Ъ = 0 и | /Л+, 11 Db ||2 ^ on(DAT^ где Тl = diag (tu.О- 12.3.2. Показать, что если С = D \_АЬ] Т— \_Avd} и ая(С) > стп+1(С), то TLS-решение удов¬ летворяет системе (А\А, — ол + х (С)2 !)х = A\d. 123.3. Покажите, как можно решить задачу (12.3.2) с дополнительным ограничением, что первые р столбцов минимизатора Е нулевые.
518 Гл. 12. Специальные разделы Замечания и литература к § 12.3 Этот раздел основывается на работе Golub G. Н. and Van Loan С. F. (1980). “An Analysis of the Total Least Squares РгоЫепГ* SIAM J. Num. AnaL 17, 883-93. Наиболее подробное исследование задачи TLS имеется в работе Van Huffel S. (1987). “Analysis of the Total Least Squares Problem and Its Use in Parameter Estimation*, Doctoral Thesis, Department of Electrical Engineering, K. U., Leuven. Смотри также Van Huffel S. (1988). “Comments on the Solution of the Nongeneric Total Least Squares Problem”, Report ESAT-itUL-88/3, Department of Electrical Engineering, K. U. Leuven. Если некоторые столбцы матрицы А известны точно, то имеет смысл изменить матрицу TLS-возмущения Е так, чтобы аналогичные столбцы в ней были нулевыми. Детали решения задачи TLS с подобным условием рассматриваются в статьях DemmclJ.W. (I987)i “The smallest perturbation of a submatrix which lowers the rank and constrained total least squares problems* SIAM J. Numer. AnaL 24, 199-206. Van Huffel S. and Vandewallc J. (1988). “The Partial Total Least Squares Algorithm*, J. Comp, and App. Math. 21, 333-342. Дополнительная литература, посвященная выравниванию методом наименьших квадратов, когда существуют ошибки в матричных данных, имеется в списке Cochrane W.G. (1968). “Errors of Measurement in Statistics* Technomctrics 10, 637-66. Gunst R.F., Webster J.T., Mason R.L. (1976). “A Comparison of Least Squares and Latent Root Regression Estimators* Technometrics, 18, 75-83. Lmnik I. (1961). Method of Least Squares and Principles of the Theory of Observations, Pergamon Press, New York. Madansky A. (1959). “The Fitting of Straight Lines When Both Variables Are Subject to Error", J. Amer. Stat. Assoc. 54, 173-205. Pearson K. (1901). “On Lines and Planes of Closest Fit to Points in Space”, PhiL Mag. 2, 559-72. Stewart G. W. (1977c). “Sensitivity Coefficients for the Effects of Errors in the Independent Variables in a Linear Regression”, Technical report TR-571, Department of Computer Science, University of Maryland, College Park, MD. Van der Sluis A. and VeltkampG.W. (1979). “Restoring Rank and Consistency by Orthogonal Projection", Lin. Alg. and Its Applic. 28, 257-78. 12.4. Сравнение подпространств при помощи SVD Иногда необходимо исследовать связь между двумя заданными подпространст¬ вами. Насколько они близки? Пересекаются они или нет? Может ли одно быть «повернутым» в другое? И так далее. В этом разделе мы покажем, как можно ответить на подобные вопросы при помощи сингулярного разложения. 12.4 Л. Поворот подпространств Пусть матрица AeRmxp содержит данные, полученные при обработке некоторо¬ го множества экспериментов. Если такое же множество экспериментов провести повторно, то будет получена другая матрица ВеЛтхр. В ортогональной задаче Прокруста возможность поворота матрицы В в матрицу А устанавливается реше¬ нием следующей задачи: минимизировать \\А — BQ ||, при условии QTQ = 1р. (12.4.1)
12,4, Сравнении подпространств при помощи SVD 519 Заметим, что если матрица QeRpxp является ортогональной, то = trace (АТА) + trace(BrB) — 2trace(QT2?T^4). Поэтому задача (12,4.1) эквивалентна задаче максимизации trace {QTBTA\ Максимизатор Q может быть найден вычислением SVD матрицы Вт А. Действи¬ тельно, если UT(BTA)V = I =diag(ot,ор)-это SVD данной матрицы и мы определим ортогональную матрицу Z следующим образом: Z = VTQTU; то trace(бгЯгЛ) = trace(QTUHVT) — trace(Z2) = £ < £ °i * i=l i=L Очевидно, что верхняя граница достигается при Q = UVT для Z = /р. Это дает следующий алгоритм: Алгоритм 12.4.1. Для данных матриц А и В из R" х р следующий алгоритм находит ортогональную матрицу £eRpxp такую, что \\А — BQ\\F минимальная. С =ВТА Вычислить SVD вида С7гСК-1. Сохранить U и V. Q = UVT Найденная матрица Q является ортогональным полярным множителем матрицы ВТА. См. задачу 4.2.9. Пример 12.4.1. Если 1 2 1.2 2.1 3 4 2 А 4.3 5 6 и В = 5.2 6.1 7 8 6.8 8.1 то матрица Г 0.9999 —0.0126 П 0.0126 0.9999 J минимизирует || А — BQ ||F на множестве всех 2x2 ортогональных матриц Q и значение минимума равно 0.4661. 12.4.2. Пересечение ядер Пусть заданы матрицы ЛеК'"*'1 и BeRpxrt; рассмотрим задачу нахождения ортогонального базиса для пи11(у4) П null (5). Один подход состоит в вычислении ядра матрицы поскольку Сх — 0олепи11(Л) П null(5). Однако если предварительно мы докажем следующую теорему, то из нее вытекает более экономичная процедура. Теорема 12.4.1. Пусть матрица AeRmxn, пусть {zltz,} будет ортогональным базисом null (Л). Определим матрицу Z = [zlr..., zj, и пусть (и^, wq} будет ортогональным базисом null(BZ), еде /?еНрхй. Если матрица W=[wxt и-J, то столбцы матрицы ZW задают ортогональный базис для null [А) П null (Я). Доказательство. Так как AZ = 0 и (i?Z) W =*= 0, то мы очевидно имеем, что range (ZW) <z null (A) n null (В). Теперь предположим, что вектор х принадлежит
520 Гл. 12. Специальные разделы и null (А), и null (5). Отсюда следует, что х = Za для некоторого 0 ф aeR*. Но поскольку 0 = Вх = BZay то мы имеем а = Wb для некоторого beRq. Поэтому * = ZWb Grange (ZW). Если для вычисления ортогонального базиса в данной теореме используется SVD, то мы получаем следующую процедуру: Алгоритм 12.4.2. Для данных матриц AeRmxn и BeRpxn следующий алгоритм вычисляет целое s и матрицу У = [ylfyj, имеющую ортогональные столбцы, которые задают подпространство null(^) П null (Б). Если пересечение тривиально, то 5 = 0. Вычислить SVD вида UaAVa = diag (ст£). Сохранить VA и положить г = rank (А) if г < п C=BVA(:y г + 1:я) Вычислить SVD вида UlCVc = diag(у*). Сохранить Vc и положить q — rank (С) if q < n — r s — n — r — q Y= VA(:, r + 1:л)К(:, q+ 1:и-г) else 5 = 0 end else 5 = 0 end Объем работы, требующийся для этого алгоритма, зависит от относительных размеров т, я, р и г. Отметим, что практическая реализация данного алгоритма требует специального подхода для решения задачи, когда вычисленное сингулярное значение ст, мало. Использование для этих целей барьера 5 (т. е. af < 8 => = 0) приводит к тому, что столбцы вычисленной матрицы г «почти» задают общее ядро матриц А и В в том смысле, что || At \\2 « || BY \\2 « 5. Пример 12.4.2. Если 1 -1 1 4 2 0 1 -1 1 и В = 2 1 0 1 -1 1 0 3 0 то null (А) П null (В) = span{x}, где х = (1 — 2 — 3)г. Применяя алгоритм 12.4.2, находим —0.8165 0.0000 Г 0.3273 L 0.9449 1 0.2673 1 V V = ¥ 2А 2С —0.4082 0.7071 * 0.5349 « 0.2673 -2 0.4082 0.7071 J 0.8018 -3 12.4.3. Углы между подпространствами Пусть F и G- подпространства в R"1, размерности которых удовлетворяют условию р = dim(F) ^ dim(G) = q ^ 1.
12.4. Сравнение подпространств при помощи SVD 521 Главные углы 0j,..., 0, е [0, п/2] между F и G определяются рекурсивно следующим образом: cos (0k) = max max uTv — uTvk ueF veG при условии: IMI = IMI = 1 иТщ = 0 i= \ :к— 1 i7Ti7. = 0 i = 1; к — 1 n Отметим, что главные углы удовлетворяют условию 0 < Gj < ... < 0, < Векторы {м1#nj и {t>i,17,} называются главными векторами между подпространствами F и G. Главные углы и векторы возникают во многих статистических приложениях. Наибольший главный угол связан с понятием расстояния между подпространствами одинаковой размерности, что мы обсуждали в § 2.6.3. Если р = qy то dist(F, G) = = - cos(e„)2 = sin(e„). Если столбцы матриц QFeRm*p и QGeRw><* определяют ортогональные базисы для F и G соответственно, то max max uTv= max max ут(бгбс)2- ueF veG yeRp zeR* Belli» 1 l»y,»l B^li»l IMI*=1 Из минимаксных характеристик собственных значений, полученных в § 8.3.1, сле¬ дует, что если YT{QlQG)Z = diag(CTlt..ctJ задает SVD матрицы QjQG, то можно определить uk, vk и вк следующим образом [ui> --•> = QfY, [г,,D,] = QCZ, cos(et) = а*, к = l:q. Обычно пространства F и G задаются как области определения матриц Л е Rm х р и BeRm*q. В этом случае необходимые ортогональные базисы могут быть получены вычислением QR-разложений этих двух матриц. Алгоритм 12.4.3. Для данных матриц 4eRmxp и BeRMXq{p ^ q) с независимыми линейными столбцами следующий алгоритм вычисляет ортогональные матрицы U = [«!,..., и,] и [|71?vq] и cos(0j),cos(0,), такие, что 0-главные углы между range(.4) и range(5), аики и*-соответствующие главные векторы. Используя алгоритм 5.2.1, вычислить QR-разложение A = QaRa, QtaQa = Ip, RAeRp*р, B = QbRb, QlQB = lq, RBeR<**, С = QlQB Вычислить SVD вида YTCZ = diag (cos (6*)) QAY{■, 1 -q) = [kj u4]; QBZ = [i?x,uj. 18 63
522 Гл. 12. Специальные разделы Этот алгоритм требует около 4m(q2 + 2р2) + 2pq(m + q) + 12^3 флопов. Идея использовать SVD для вычисления главных углов и векторов предложена в работе Bjorek и Golub (1973). В этой статье также рассматривается задача для матриц А и В неполного ранга. 12.4.4. Пересечение подпространств Алгоритм 12.4.3 также может использоваться для вычисления ортогонального базиса для range (A) n range (Я), где Л е Rm * р и BeRmxq. Теорема 12.4.2. Пусть {cos(0k), ик9 vk}l= х определены при помощи алгоритма 12.4.3. Если индекс s задается условием 1 = cos^j) =... = cos(05) > cos(0s+1), то имеем range {А) П range(fl) = span{ut,..., м,} = spanft^, ..., va}. Доказательство. Доказательство следует из того факта, что если cos(0k)= 1, то ик = Vk. В приближенной арифметике приходится вычислять приближенную кратность единичных косинусов алгоритма 12.4.3. Пример 12.4.3. Если 1 2 1 5 A = 3 4 и B = 3 7 5 6 5 -1 то косинусы главных углов между range (А) и range (В) равны 1.000 и 0.856. Задачи 1X4.1. Показать, что если А и В т х /7-матрицы, причем р^ту то min || A-BQ ||£ = £ (о,(Л)г - 2<т,(ЯтЛ) + о,(Я)2). СТС=', <=| 12.4.2. Обобщить алгоритм 12.4.2, так, чтобы он мог вычислить ортогональный базис для null^) П ... П пи11(Ля). 1X4.3. Обобщить алгоритм 12.4.3, чтобы использовать его для случая, когда матрицы А и В неполного ранга. 12.4.4. Установить связь главных углов и векторов между range [А) и range (Я) с собственными значениями и собственными векторами обобщенной задачи на собственные значения [°^.Л][гН Г'1 «][!]• Замечания и литература к § 12.4 Задача минимизации || А — BQ ||f на множестве всех ортогональных матриц возникает в пси¬ хометрии. См. работы Bar-ltzhack L.Y. (1975). “Iterative Optimal Orthogonalization of the Strapdown Matrix”, IEEE Trans. Aerospace and Electronic Systems 11, 30-37. Green B. (1952). “The Orthogonal Approximation of an Oblique Structure in Factor Analysis”, Psychometrika 17, 429-40. Hanson R.J. and Norris M.J. (1981). “Analysis of Measurements Based on the Singular Value Decomposition”, SIAM J. Sci. and Stat. Comp. 2, 363-374. Schonemann P. (1966). “A Generalized Solution of the Orthogonal Procrustes Problem”, Psychomet¬ rika 31, 1-10.
12,5. Модифицированные задачи на собственные значения 523 Если В ~ \ у то данная проблема равносильна нахождению ортогональной матрицы, бли¬ жайшей к А: Это эквивалентно задаче полярного разложения (4.2.9). См. работы Bjorck A. and Bowie С. (1971). “An Iterative Algorithm for Computing the Best Estimate of an Orthogonal Matrix”, SIAM J. Num. Anal. 8, 358-64. Higham N.J. and Schreiber R.S. (1988). “Fast Polar decomposition of an Arbitrary Matrix”, Technical report 88-942, Department of Computer Science, Cornell University, Ithaca, New York. Если матрица А достаточно близка к матрице, ортогональной самой себе, то метод Bj5rck и Bowie более эффективен, чем SVD-алгоритм. Было бы интересно расширить их подход на случай, когда b не является единичной. Задача минимизации \\АХ — В\\г при ограничении, что X-симметричная матрица, ис¬ следована в работе Higham N.J. (1988b). ‘The Symmetric Procrustes Problem”, BIT 28, 133-43. Использование SVD для решения канонической корреляционной задачи было оригинально предложено в статье Bjorck A. and Golub G.H. (1973). “Numerical Methods for Computing Angles Between Linear Subspaces” Math. Comp. 27, 579-94. 12.5. Модифицированные задачи на собственные значения В этом разделе рассматриваются некоторые варианты стандартной задачи на собственные значения. В обсуждении широко используются матричные методы, описанные в этой книге. 12.5.1. Стационарные значения квадратичной формы с ограничениями Пусть матрица /1 е R" *" будет симметричной. Градиент г[х) = хТАх/хТх равен нулю в том и только том случае, если х является собственным вектором матрицы А, Поэтому стационарными значениями г(х) являются собственные значения матри¬ цы А, В некоторых приложениях необходимо находить стационарные значения г(х) при наличии ограничений вида Стх — 0, где CeRn*p и п ^р. Пусть является полным ортогональным разложением матрицы С. Определим матрицу BeR"*" следующим образом: и положим Так как условие Стх = 0 преобразуется к виду STu = 0, то исходная задача переходит в задачу нахождения стационарных значений г (у) = утBy/уту при ограничении и = 0. Но это равносильно просто нахождению стационарных значений (собственных значений) симметричной (п — г) х (п — г) матрицы Вгг, г р-г г п — т 18*
524 Гл. 12. Специальные разделы 12.5.2. Обратная задача на собственные значения Рассмотрим задачу нахождения стационарных значений градиента хтАх/хтх при ограничении стх — 0, где матрица Л е R" * " симметричная, а вектор ceR" ненулевой. С учетом сказанного выше легко показать, что необходимые стационарные значения Х1э ..., £я_! лежат между собственными значениями Xt матрицы А. Хл ^ _ у ^ Хп_ j ^ ^ А-j ^ ^ • Теперь предположим, что матрица А имеет различные собственные значения и что нам даны значения Х15 Хя_ t, удовлетворяющие условию < ^я- 1 < ^и- 1 <••• <^2 ^^1 Наша задача-определить единичный вектор се R", такой, что X,- являются стацио¬ нарными значениями для хтАх при условии хтх = I и стх = 0. Для определения свойств вектора с используем метод множителей Лагранжа. Приравнивая градиент ф(х, X, р) = хтАх — Х(хтх — 1) + 2рхгс к нулю, мы получим важное уравнение (А — XI) х = — рс, из которого вытекает, что X = хтАх, т.е. X является стационарным значением. Поэтому матрица А — XI является невырожденной к х = — р(Л — Х,/)“1. Умножая обе стороны равенства на ст и подставляя спектральное разложение QTAQT = diag(Xj), получаем 0=1 где d = QTc, т. е. р(Х)= I df П (Xj-X) = 0. i=l у=1 Заметим, что 1 = || с || \ = || d || 2 = d\ + ... + d\ является коэффициентом при (— XY Так как р(Х)~полином, имеющий нули ..., Хя_!, получаем я— 1 Р(Х)= П $;~Х). Из этих двух формул для /?(Х) следует, что я- 1 П & - К) = . * я-1 П (Xj - К) ;=1 jV* Так как для d возможны два знака, то существует 2я различных решений этой задачи. 12.53. Одноранговая модификация задачи на собственные значения При заданных ае R, ueR” и D = diag (^,..., dn)y удовлетворяющих условию dx > ... ^ dKi иногда требуется вычислить собственные значения Xt > ... ^ Хп мат¬ рицы С = D + аиит.
12.5. Модифицированные задачи на собственные значения 525 Мы обсуждали эту задачу в § 8.6 и сейчас выскажем несколько дополнительных замечаний. Используя минимаксные характеристики собственных значений, можно показать, что (i) if о ^ О ^ ^ -1 i= 2т d2 < Xt < dx + auTu (ii) if a < 0 4+1 ^ ^ * = 1: л — 1 dn + a uTu ^Xn^dn Один подход к вычислению Х(С) связан с применением метода Ньютона к функции р(Я) = det(D + оииТ — XI). Можно показать, что если то р„{Х) = />(Х). Поэтому вычисление обоих многочленов р(Х) и(X) осуществляется непосредственно. Переплетение свойств может быть использовано для получения хорошего начального значения. Альтернативный метод для нахождения Х(С) приводит к обобщенной трех¬ диагональной задаче на собственные значения. Пусть Р- перестановочная матрица, такая, что если v = Ри, то преобразуется к виду (KPDPTKT + v„enel)y = ХККту, где х = РКту. Обе матрицы KPDPTKT + av*ene* и ККТ симметричные и трехдиагональные. Для нахождения требуемых собственных значений может быть применен обобщенный метод би¬ секций из § 8.4.1. for к = 2: п (12.5.2) end vl = ... = га = 0, 0 <|i?5+1j |t7„|. Далее, пусть К - двухдиагональная матрица О о Заметим, что Kv = и поэтому уравнение (D + стммт)х = Хх
526 Гл. 12. Специальные разделы 12.5.4. Вторая обратная задача на собственные значения Рассмотрим задачу нахождения трехдиагональной матрицы <*1 Л Л <*2 Т = Л-1 такой, что матрица Ги ее ведущая (л — 1)-го порядка главная подматрица Тимеют заданные собственные значения. Другими словами, ищем матрицу 7, заданную условием к(Т) = {XltХ„} и Х(Т) = {Х1#причем ^ Я-i > Xj > .. . > >1Я. | > Хц— | ^ • Для выполнения этих соотношений должна существовать ортогональная матрица Q, такая, что QTTQ = Л = diag^,Х„), и такая, что стационарные значения для хтЪс _ т —при условии е[х = О х‘х достигаются на Х19 Другими словами, К, являются стационарными значе¬ ниями для УтЛу УТУ при условии dTу = 0, где d — QTet, первый столбец матрицы Q. С учетом сказанного выше мы знаем, что V(X,-x,) —. п (*., - хк) J-1 i±k Рассмотрим применение метода Ланцоша (9.1.3) для матрицы А = Л и qx = </. Если алгоритм пробегает все и итераций, мы получаем ортогональную матрицу Q, такую, что матрица QTAQ = Т является трехдиагональной. Так как первым столбцом матрицы Q является вектор d, отсюда следует, что матрица Т удовлетворяет необходимым свойствам. Задачи 12.5.1. Пусть матрица ЛеК"** при ограничениях рассмотрим задачу нахождения стационарных значений для утАх М2М2 , yeR”, xeR", Стх = 0 СеКяхр п>р, DTy = 0 DeRm** m'&q. Покажите, как решить эту задачу, сначала вычислив полное ортогональное разложение матриц С и D и потом вычислив SVD некоторых подматриц преобразованной матрицы А.
12.5. Модифицированные задачи на собственные значения 527 12.5.2. Пусть матрица ЛеК1"*" и матрица BeRpX". Допустим, что rank(i4) — ли rank(5) =*= р. Используя методы этого раздела, покажите, как решить задачу Покажите, что это задача TLS с ограничением. Всегда яи она разрешима? 12.5.3. Пусть матрица Ле1Гх" симметричная и матрица BeRpx" имеет ранг р. Пусть deRp. Покажите, как решить задачу минимизации хТАх с ограничениями типй. ||jc||2 = 1, Bx — d. Укажите, когда решение может не существовать. Замечания и литература к § 12.5 Многие из задач, рассмотренных в данном разделе, появились в следующих обзорных статьях: Boley D. and Golub G.H. (1987). “A Survey of Matrix Inverse Eigenvalue Problems”, Inverse Problems 3, 595-621 Golub G.H. (1973). “Some Modified Matrix Eigenvalue Problems”, SIAM review 15, 318-44. Литература по задаче стационарных значений включена в список Forsythe G.E. and Golub G.H. (1965). “On the Stationary Values of a Second-Degree Polynomial on the Unit Sphere”, SIAM J. App, Math. 13, 1050-68. Golub G.H. and Underwood R. (1970). “Stationary Values of the Ratio of Quadratic Forms Subject to Linear Constraints” Z. Angew. math. Phys. 21, 318-26. Использование QR-алгоритма для определения квадратурных формул Гаусса обсуждается в работе Golub G.H. and Welsch J.H. (1969). “Calculation of Gauss Quadrature Rules”, Math. Comp. 23, 221-30. Методы типа Ланцоша для различных обратных задач на собственные значения детально рассмотрены в работах Boley D.L, and Golub G.H. (1978). “The Matrix Inverse Eigenvalue Problem for Periodic Jacobi Matrices”, in Proc. Fourth Symposium on Basic Problems of Numerical Mathematics, Prague, pp. 63-76. Boley D. and Golub G.H. (1984). “A Modified Method for Restructuring Periodic. Jacobi Matrices”, 42. 143-150. Новые исследования по развитию алгоритмов содержатся в работах Friedland S., Nocedal J., and Overton M. L. (1987). “The Formulation and Analysis of Numerical Methods for Inverse Eigenvalue Problems”, SIAM J. Numer. Anal- 24, 634-667. Gragg W.B. and Harrod W.J. (1984). “The Numerically Stable Reconstruction of Jacobi Matrices from Spectral Data”, Numer. Math. 44, 317-336. Kautsky J. and Golub G. H. (1983). “On the Calculation of Jacobi Matrices”, Lin. Alg. and Its Applic. 52/53, 439-456. Еще один важный класс обратных задач на собственные значения связан с нахождением диагональной матрицы Д такой, что матрица AD (иногда матрица А + D) имеет заданные собственные значения. См. работу Friedland S. (1975)l “On Inverse Multiplicative Eigenvalue Problems for Matrices”, Lin. Alg. and Its Applic. 12, 127-38. min
528 Гл. 12. Специальные разделы 12.6. Модификация QR-разложения Во многих приложениях требуется заново вычислить разложение заданной матрицы А е Rm х" после того, как матрица была незначительно изменена. Напри¬ мер, нам задано QR-разложение матрицы А и требуется вычислить QR-разложение матрицы А9 которая получается (а) прибавлением произвольной одноранговой матрицы к А, (б) добавлением строки (столбца) к матрице А, (в) удалением строки (столбца) из матрицы А. В данном разделе мы покажем, что в ситуациях, подобных этой, гораздо эффективнее «модифицировать» QR-разложение матрицы А, чем выполнить его заново. Перед началом упомянем, что существуют также способы для модификаций разложений РА = LU9 А = GGT и А = LDlI. Однако эти разложения могут быть довольно чувствительны к модификациям, потому что требуется выбор ведущего элемента и, кроме того, когда мы изменяем положительно определенную матрицу, то результат может не быть положительно определенным. См. Gill, Golub, Murray и Saunders (1974) и Stewart (1979с). Следуя этим результатам, мы кратко обсудим гиперболические преобразования и их использование в задаче модификации раз¬ ложения Холецкого после удаления строки. 12.6.1. Одноранговые модификации Пусть мы имеем QR-разложение QR = BeRm*n и нам надо вычислить разложе¬ ние вида В + uvT = Q1R1y где uxvg R" заданы. Заметим, что В -h uvT = Q(R + wvT)9 (12.6.1) где w = QTu. Предположим, что мы уже вычислили матрицы вращения J„_ 1?..., J2, Jj, такие, что Д = + II VflljC,. Здесь каждая матрица Jk выполняет вращение в плоскости к и к + 1. (Для ознакомления с деталями см. алгоритм 5.3.1.) Если эти же самые матрицы вращения Гивенса применить к матрице R, то можно показать, что матрица H = J\...Jl_xR (12.6.2) является верхней хессенберговой. Например, в случае /1 = 4 мы начинаем с матрицей и вектором R = X X X X X 0 X X X X 0 0 X X > W - X 0 0 0 X X и потом изменяем их следующим образом: R = jlR R = jT R = X X X X X 0 X X X т Т X 0 0 X X W = J3w = X 1 0 0 X X _ 0 _ X X X X X 0 X X X т Т X 0 X X X У W = J 2 w — 0 1 0 0 X X 0
12.6. Модификация QR-разложения 529 н = jJr = X X X X X X X X X т Т 0 0 X X X W = Jt W — > 0 _ 0 0 X X 0 Соответственно матрица + wvT) = H± \\*\\2еУ = Нх (12.6.3) является также верхней хессенберговой. В § 5.2.3 было показано, как вычислить QR-разложение верхней хессенберговой матрицы за 0(п2) флопов. В частности, можно найти матрицы вращения Гивенса Gky к — 1: /j — 1, такие, что матрица = Rx (12.6.4) является верхней треугольной. Комбинируя (12.6.1) и (12.6.4), мы получаем QR-раз¬ ложение В + uvT = Q1Rl, где Qi = QJn-i ...G,,.!- Тщательная проверка объема работы показывает, что требуется около 26/22 флопов. Вектор w = QTu требует 2п2 флопов. Вычисление Н и объединение матриц Jk в матрицу Q требуют 12п2 флопов. Наконец, вычисление Ях и умножение матриц Gk на матрицу Q требуют 12л2 флопов. Метод легко обобщается на случай прямоугольной матрицы В. Он также может быть легко обобщен для вычисления QR-разложения матрицы В + UVT, где rank (UVT) — р> 1. 12.6.2. Добавление или удаление столбца Допустим, что имеется QR-разложение QR = А = [а,,..., flj, я.еR", (12.6.5) и разбиение верхней треугольной матрицы ReRmxn выполнено следующим об¬ разом: *ii V *13 к— 1 R = 0 rkk И’т 1 0 0 *33 m — k fc-1 1 n-k Теперь допустим, что мы хотим вычислить QR-разложение матрицы Заметим, что матрица А такая же, как и матрица А с убранным к-м столбцом и при этом матрица егл = является верхней хессенберговой, т.е. *11 *13 О wT О 33 = Н
530 Гл. 12. Специальные разделы X X X X X 0 X X X X 0 0 X X X 0 0 X X X 0 0 0 X X 0 0 0 0 X 0 0 0 0 0 Очевидно, что нежелательные поддиагональные элементы hk+xky hn n_x могут быть обнулены последовательностью вращений Гивенса: х... Gj// = Rx. Здесь матрица G, выполняет вращение в плоскости i и / + 1 для i = к:п — 1. Поэтому если Qi = QGk...Gто Л = является QR-разложением матрицы Л, Приведенная выше процедура может быть выполнена за 0(п2) флопов и очень полезна в некоторых задачах наименьших квадратов. Например, при желании проверить важность к-то фактора в исходной модели исключением /с-го столбца в соответствующих матричных данных и решением получившейся LS-задачи. Аналогично, бывает полезным умение эффективно вычислять решение задачи LS после добавления столбца к матрице А. Пусть мы имеем QR-разложение (12.6.5) и хотим вычислить QR-разложение матрицы Л = где вектор zeRM задан. Отметим, что если w — QTz, то матрица QTA = [ е V.. QTakwQTak + l... Q\] = А является верхней треугольной, исключая присутствие «клина» в к + 1 столбце, например X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 X 0 X 0 0 0 X 0 0 0 0 0 X 0 0 Можно определить матрицы вращения Гивенса Jm_i,Jk + i* такие, что •Лг+1 * * * Jm-\w — 0 где матрица Jk+l...JlJ_lA = R верхняя треугольная. Проиллюстрируем это на
12.6. Модификация QR-разложения 531 приведенном выше примере я = jIa 6 ГУ — я = лтя = я = Дн = X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 X 0 X 0 0 0 X 0 0 0 0 0 0 0 0 X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 X 0 X 0 0 0 0 0 X 0 0 0 0 0 0 X X X X X X 0 X X X X X 0 0 X X X X 0 0 0 X X X 0 0 0 0 X X 0 0 0 0 0 X 0 0 0 0 0 0 Модификация требует О(ггш) флопов. 12.6.3. Добавление или исключение строки Пусть у нас имеется QR-разложение QR = Л е Rm * я, и мы хотим получить разложение матрицы 4:1- где weR". Заметим, что матрица является верхней хессенберговой. Поэтому матрицы вращения Гивенса могут быть определены так, что J*--- J\H — Rx является верхней треугольной. Отсюда следует, что Л = является искомым QR-разложением, где Qx =diag(l, Q)J1...Jn. Результат существенно не усложняется, если новая строка добавляется между строками к и к + 1 матрицы А. Мы просто применим приведенный выше алгоритм с заменой матрицы А на матрицу РА и матрицы Q на PQ, где
532 Гл. 12. Специальные разделы На выходе матрица diag (К PT)QX является искомым ортогональным сомножителем. И в конце мы рассмотрим, как модифицировать QR-разложение QR — А е Rm х ", когда исключена первая строка матрицы А. В частности, мы хотим вычислить QR-разложение подматрицы Ах в матрице (Процедура аналогична, если исключается произвольная строка.) Пусть qT будет первой строкой матрицы Q, и вычисленные матрицы вращения Гивенса таковы, что где матрица Q L е R(m 1)х<и !) ортогональна. Поэтому отсюда мы заключаем, что Аг = QiRl есть искомое QR-разложение. 12М Методы гиперболического преобразования Напомним, что R в разложении А = QR-это есть множитель Холецкого из разложения АтА = GGT. Поэтому существует тесная связь между только что рассмотренными модификациями QR-разложения и аналогичными модификациями разложения Холецкого. Проиллюстрируем это на задаче модификации разложения Холецкого, которая соответствует удалению Л-строки в QR-разложении. В задаче модификации разложения Холецкого после удаления строки, нам дано разложение Холецкого где А е Rm х п при m > п и ze R". Наша цель найти нижний треугольник Gx, такой, что GXG\ = Л\АХ. Существует несколько подходов к этой интересной и важной задаче. Мы представим только процедуру модификации, которая основывается на гипер¬ болических преобразованиях, поскольку это дает удобный случай ввести несколько новых идей. Начнем с определения. Матрица HeRmxm является псевдоортогональной от¬ носительно сигнатурной матрицы S — diag(± l)eRmxm, если HTSH = S. Теперь из (12.6.6) имеем АТА = А\Аt + zzT = GGT и поэтому где а = ± 1. Отметим, что матрица является верхней хессенберговой и что (12.6.6) А\Аг — АТА — zzT = GGT — zzT = [Gz'}
12.6, Модификация QR-разложения 533 Определим сигнатурную матрицу -&-3 (,2'б'7) и предположим, что мы можем найти матрицу ЯеК<я+1) х(л+1>, такую, что HTSH = S, при условии, что матрица - [f] «12м> является верхней треугольной. Отсюда следует, что А\А, = = [G.OJS^'J = G,G[ является искомым разложением Холецкого. Теперь покажем, как построить матрицу гиперболического преобразования Н из (12.6.8), использующую гиперболические вращения. Матрица 2x2 гиперболического вращения имеет вид Г Ch(0) —sh(e)] = Г с -Л L-sh(e) ch(о)J I-* с] 'Sh(0) ch(0) Заметим, что если tfeR2 x 2 является матрицей гиперболического вращения, то HTSH — S, где S = diag(— I, 1). Проводя аналогию с нашими исследованиями вращений Гивенса, давайте рассмотрим, как гиперболические вращения могут быть использованы для обнуления. Из сотношения [-ГЗИ-И- — получаем уравнение сх2 = sxx. Отметим, что решения для этого уравнения не существует, если хх = х2 Ф 0; можно сделать вывод, что гиперболические вращения не так численно устойчивы, как их двойники - вращения Гивенса. Если хх Ф х2, то возможно вычислить пару ch — sh: if х2 = 0 s = 0; с = 1 else if 1*21 <l*i I т = х2/л,; с = 1/^1 — т2; s = сх (12.6.9) elseif | хх | < | х21 х = хх/х2; s = 1Д/1 - т2; с = 5т end end Отметим, что норма матрицы гиперболического вращения, полученной при помощи этого алгоритма, настолько велика, насколько хх близок к х2. Любая матрица И = Я(р, «+1,0) eRin + t) *(я+1}, которая совпадает с единичной за исключением элементов hpp = hn+X n+1 =ch(0) и hpn+ х = Ля+ XtP= —sh(0) удов¬ летворяет условию HTSH = S, где 5-матрица из (12.6.7). Используя алгоритм (12.6.9), мы попытаемся создать гиперболические вращения Нк = Я( 1, к, 0fc) для к = 2:« + 1, такие, что
534 Гл. 12. Специальные разделы Это оказывается возможным, если матрица А имеет полный столбцовый ранг. Гиперболическое вращение Нк обнуляет элемент (/с + 1, /с). Другими словами, если матрица А имеет полный столбцовый ранг, тогда можно показать, что каждое обращение к алгоритму (12.6.9) дает пару ch — sh. См. Alexander, Pan и Plemmons 12.6.1. Пусть нам известно QR-разложение матрицы ЛеКжх" и требуется минимизировать || (Л + Uv^x — b || 2, где и, беР" и i?eR" заданы. Предложить алгоритм для решения этой задачи, требующий О (пт) флопов. Предположить, что матрица Q должна модифицироваться. 12.6Л. Пусть нам известно QR-разложение QR = Л е Rw *". Предложить алгоритм для вы¬ числения QR-разложения матрицы А, полученной вычеркиванием к-й строки из А. Ваш алгоритм должен требовать О (пт) флопов. 12.6.3. Пусть матрица Те R” *" является трехдиагональной и симметричной, и пусть вектор 176 R". Предложить 0(п2) метод для вычисления ортогональной матрицы QeR"*", такой, что матрица QT(T+ w^Q = Т является также трехдиагональной. 12.6.4. Пусть 12.6.5. Каково поведение 2-нормы матрицы гиперболического вращения, полученной алго¬ ритмом (12.6.9) как функции от Xj и х2? 12.6.6. Показать, что гиперболическая редукция из § 12.6.4 не обрывается, если матрица А имеет полный столбцовый ранг. Замечания и литература к § 12.6 Численные аспекты задачи модификации представлены в работе Gill P. Golub G.H., Murray WM and Saunders M.A. (1974). “Methods for Modifying Matrix Factorizations", Math. Comp. 28, 505-35- Дополнительная литература по этой теме Bartels R. Н. (1971). “A Stabilization of the Simplex Method", Numer. Math. 16, 414-434. Daniel J., Gragg W. B., Kaufman L., and Stewart G.W. (1976). “Reirthogonalization and Stable Algorithms for Updating the Gram-Schmidt QR Factorization", Math. Comp. 30, 772-95. Gill P. E, Murray W., and Saunders M.A. (1975). “Methods for Computing and Modifying the LDV Factors of a Matrix", Math. Comp. 29, 1051-77. Gotdfarb D. (1976). “Factored Variable Metric Methods for Unconstrained Optimization”, Math. Comp. 30, 796-811. Фортран-программы для модификации QR-разложения и разложения Холецкого включены в Linpack (гл. 10). Устойчивость разложения Холецкого анализируется в работе Stewart G.W. (1979с). “The Effects of Rounding Error on an Algorithm for Downdating a Cholesky Factorization", J. Inst. Math. Applic. 23, 203-13. (1988). Задачи где m > п. Используя формулу Sherman-Morrison-Woodbury, показать что 1 j_ 11(Лг-0-'с|1а °mJB) " °п,,пН ^ 1 “ CT(ATA)-'C Гиперболические преобразования аналогичны преобразованиям Гивенса, но основаны на ch
12.6. Модификация QR-разложения 535 и sh вместо cos и sin. Использование гиперболических преобразований для модификации разложений описано в статьях Alexander S.Т., Pan СТ., and Plemmons R. J. (1988). "Analysis of a Recursive Least Squares Hyperbolic Rotation Algorithm for Signal Processing”, Lin. Alg. and Its Applic. 98, 3-40. Bojanczyk A. W., Brent R. P., Van Dooren P^ and de Hoog F. R. (1987). “A Note on Downdating the Cholesky Factorization”, SIAM J. Sci. and Stat. Comp. 8, 210-221. Golub G.H. (1969). "Matrix Decompositions and Statistical Computation”, in Statistical Com¬ putation, ed., Milton R.C. and Nelder J. A., Academic Press, New York, pp. 365-97. Работа по распараллеливанию процедур модификации с пополнением и модификации с уда¬ лением только началась. Смотри Henkel С. S., Heath М. Т., and Plemmons R. J. (1988). “Cholesky Downdating on a Hypercube” in Fox G. (1988), 1592-1598. Роль методов модификации для нелинейных уравнений и в задачах оптимизации рас¬ сматривается в работе Dennis J.E and Schnabel R. В. (1983). Numerical Methods for Unconstrained Optimization and Nonlinear Equations, Prentice-Hall, Englewood Cliffs, NJ.
Предметный указатель Алгебраическая кратность (algebraic multipli¬ city) 305 Алгоритмы: (algorithms) Аазена (Aassen’s) 155 барьерный метод Якоби (threshold Jacobi) 403 бисекция (bisection) 393 блочная циклическая редукция (block cyclic reduction) 162-164 блочный Ланцоша (block Lanczos) 438 быстрое вращение Гивенса (fast Givens rota¬ tion) 210 возведение в квадрат ехр(А) (squaring) 498, 499 Гаусса - Зейделя (Gauss - Seidel) 454 двоичное возведение в степень (binary po¬ wering) 493 двухдиагонализация Хаусхолдера (Haushol- der bidiagonalization) 218 диагонального выбора (diagonal pivoting) 156 Дулитла (Doolittle reduction) 99 жорданово разложение (Jordan decomposi¬ tion) 350 исключение Гаусса (Gauss elimination) блочный (block) 113 полный выбор ведущего элемента (complete pivoting) 114 с внешним произведением (outer product) 96 с частичным выбором: версия с внешним произведением (outer product with pi¬ voting) 109 с частичным выбором: gaxpy-версия (gaxpy with pivoting) 111 gaxpy-версия LU-разложения (gaxpy LU) 97 итерации с отношением Релея (Rayleigh quotient iteration) 440 итерации Якоби (Jacobi iteration) 453 классический метод Грама-Шмидта (classi¬ cal Gram - Schmidt) 201 ланцошева двухдиагонализация (Lanczos bidiagonalization) 446, -447 Левинсона (Levinson) 175 ленточный метод Холецкого (band Cho- lesky) 146 ленточная обратная подстановка (band backward substitution) 143 ленточная прямая подстановка (band for¬ ward substitution) 143 матричная операция gaxpy (matrix-matrix gaxpy operation) 22 метод Арнольди (Amoldi method) 448 метод Бартельса - Стюарта (Bartels - Ste¬ wart method) 486 метод оценки обусловленности (condition estimator) 124 метод gaxpy с обратным ходом (backward gaxpy) 458 неявный симметричный QR-шаг со сдвигом Уилкинсона (implicit symmetric QR step with Wilkinson shift) 380 нормальные уравнения (normal equations) 207 обратная подстановка (backward substitu¬ tion) 88, 89 ортогонализация Грама-Шмидта (Gram- Schmidt orthogonalization) 202 ортогональные итерации (orthogonal itera¬ tions) 318 Партлета - Рида (Partlett - Reid) 151 параллельная кольцевая факторизация (pa¬ rallel ring factorization) 277 пересечение подпространств (intersection of subspaces) 522 пересечение ядер (null-space intersection) 519 последовательная верхняя релаксация (se¬ quential over-relaxation SOR) 456 процедура Ланцоша (Lanczos) 433 прямая подстановка (forward substitution) 87, 89 прямое накопление (Hausholder matrix accumulation) 184 решение блочно-диагональной системы (block diagonal system solving) 160-161 решение задачи Прокруста (Procrust) 518 решение симметричной трехдиагональной
Предметный указатель 537 положительно определенной системы (positive definite tridiagonal system sol¬ ver) 147 решение систем Вандермонда (Vandermond system solving) 169 симметричный метод SOR (symmetric suc¬ cessive over-relaxation) 459 скалярное произведение (dot product) 18 скалярное произведение матриц (matrix- matrix dot) 23, 25 сопряженные градиенты с предобусловли- ванием (preconditioned conjugate gra¬ dients) 472, 473 стационарные значения квадратичной фор¬ мы с ограничениями (stationary values with constraints) 523 степенные итерации (power iterations) 316 Тренча (Trench) 177 углы между подпространствами (angles between subspaces) 521 умножение матриц с использованием внеш¬ них произведений (matrix-matrix outer product) 25, 26 умножение матрицы на вектор (matrix-vec- tor row) 19 умножение на матрицу Гивенса (Givens rotation times matrix) 188 умножение на матрицу Хаусхолдера слева (Hausholder refletion times matrix) 184 умножение треугольных матриц'(triangular matrix multiplication) 30 функция от треугольной матрицы (function of triangular matrix) 486 Хаусхолдера трехдиагонализация (Haushol¬ der triangularization) 377 Хаусхолдера QR-разложение с выбором верхнего столбца (Hausholder QR) 216 хессенбергово-треугольное преобразование (Hessenberg-triangular reduction) 356- 358 Холецкого параллельная реализация (Cholesky parallel) 273, 275, 284, 285 Холецкого разложение А — хВ (Cholesky decomposition) 420 Холецкого сопряженных направлений (con¬ jugate gradients) 445, 467 циклический метод Якоби (cyclic Jacobi) 402 чебышёвские полуитерации (Chebyshev semi-iterative) 457 Штрассена (Strassen) 43 экспонента матрицы (matrix exponentiation) 559 gaxpy 22 ЬО!Лразложение (LDLT) 128, 130, 131 Ы)Мт-разложение (LDMT) 127, 129 LU-разложение матрицы Хессенберга (LU Hessenberg) 145 QR-несимметричный (QR unsymmetric) 340 QR-симметричный (QR symmetric) 380, 381 QR-итерации с одинарным сдвигом (single shift QR iteration) 336 QR-разложение: преобразование Гивенса (QR Givens) 198 QR-разложение: преобразование Хаусхол¬ дера (QR Hausholder) 196 QR-шаг Френсиса (Francis QR step) 340 QZ-uiar (QZ step) 361 -362 S-шаг (S-step Lanczos) 440 saxpy 18 SVD 390 SVD-процедура Якоби (SVD procedure Jacobi) 408, 409 SVD-шаг Голуба - Кахана (SVD Golub- Kahan step) 389 TLS 516 Анализ ошибок (error analysis) обратный (backward) 70 прямой (forward) 70 Аппроксимация матричной функции (approxi¬ mation of a matrix function) 488 Арифметика с округлением (rounded arithme¬ tic) 66 - с отбрасыванием разрядов (shopped arith¬ metic) 66 База (base) 66 Базис (basis) 56 Бисскция (bisection) 393 Блочная матрица (block matrix) 36, 37 Блочное диагональное доминирование (block diagonal dominance) 161 Блочные алгоритмы (block algorithms) 36, 53 двухдиагональные системы (bidiagonal sys¬ tems) 161 Ланцоша (Lanczos) 438 повторное использование данных (data re-use) 53 тридиагональные системы (tridiagonal sys¬ tems) 159 циклическая редукция (cyclic reduction) 163, 164 Якоби (Jacobi) 407, 408 Быстрое преобразование Гивенса (fast Givens transformation) 192, 193 Вектор (vector) - Гаусса (Gauss) 93 - Хаусхолдера (Hausholder) 183 Векторно-конвейерные вычисления (vector pi¬ peline computing) 45 Векторно-конвейерный компьютер (vector pi¬ peline computer) 45
538 Предметный указатель Векторные вычисления (vector computing) 46, 47 - - конвейерные (pipelining) 40, 46, 47 - - регистры (registers) 47 - нормы (vector norms) 59, 60 - обмены (vector touch) 52 - обозначения (notation) 18 - операции (operations) 18 Векторы Ланцоша 428 - Шура (Schur vectors) 303 Взаимные перестановки (interchange permuta¬ tions) 107 Взвешивание по столбцам (column weighting) 230 - строкам (row weighting) 230 Внедиагональный элемент (olT-diagonal ele¬ ments) 399 Внешнее произведение (outer product) 17 - блочное (block) 40 Вращения Гивенса (Givens rotations) 187, 188, 198, 199' - Якоби (Jacobi) 400 Выбор ведущего элемента (pivoting) в методе Аазена (Aasen) 155 полный (complete) 114 симметричный (symmetric matrices) 139, 157 , столбец (column) 214, 215 частичный (partial) 108 - подмножества (subset selection) 509 Выборочная ортогоналиэация (selective ortho- gonalization) 437 Вычисление ортонормированного базиса (orthonormal basis computation) 203 - скалярного произведения с накоплением (dot product accumulation) 69 погрешности округления (roundoff errors) 66 Гауссово исключение (Gaussian elimination) 23 — ошибки округления (roundoff errors) 102 . Геометрическая кратность (geometric multi¬ plicity) 305 Гиперболические преобразования (hyperbolic transformations) 532, 533 Главные векторы и углы между подпростран¬ ствами (principal angles and vectors) 521 Гребневая регрессия (ridge regression) 504 Двоеточие (colon) 21, 32 Двоичное возведение в степень (binary powe¬ ring) 493 Двойная точность (double precision) 69 Двухдиагоналиэация (bidiagonaiization) 218 - метод Ланцоша (Lanczos) 446 - с приведением матрицы к верхнедиагональ¬ ному виду (upper triangularizing first) 219 Двухдиагональная матрица (bidiagonal ma¬ trix) 30 Декомпозиция области (domain decomposi¬ tion) 475, 476 Детерминант (determinant) 51, 52, 58 -, вырожденность (singularity) 83 Диагональная форма (diagonal form) 305 Динамическое распределение работы (dyna¬ mically sheduled algorithms) 257, 261 Динамический резерв задач (pool of task) 256, 270 Дифференцирование матрицы (differentiation) 58 Длина вектора (vector length) 47 Добавление или исключение строки (row addi¬ tion or deletion) 531 Доминирующее собственное значение (domi¬ nant eigenvalue) 317 Доминирующий собственный вектор (domi¬ nant eigenvector) 317, 318 Дополнение Шура (Schur complement) 101 Дробление вычислений (granularity) 247, 264, 265 - систолическая модель (systolic model) 266 Единичная матрица (identity matrix) 57 - ошибка (unit roundoff) 66 Единичный шаг выборки (unit stride) 50 Жорданово представление функции от мат¬ рицы (Jordan decomposition of matrix function) 488 - разложение (decomposition) 305, 306 - вычисление (computation) 350 Жордановы блоки (Jordan blocks) 306 Задача наименьших квадратов (least square (LS) problem) 221 невязка (residual) 206 неполного ранга (rank deficient) 221, 222 основные решения (basic solutions) 224 полного ранга (full rank) 224 решение с минимальной нормой (mini¬ mum norm solution) 222 - с ограничениями (constrained least squa¬ res) 501, 503 - типа равенств (equality constrained LS) 505 чувствительность к возмущениям (per¬ turbation sensitivity) 223 - Прокруста (Procrust problem) 518, 519
Предметный указатель 539 - Юла-Уолкера (Yule-Walker problem) 172 Закон Амдаля (Amdahl's law) 52 - инерции Сильвестра (Sylvester law of inertia) 374 теорема 374 Защищенные переменные (protected variables) 258 Иерархическая память (hierarchical memory) 49 Инвариантное подпространство (invariant) subspace) 300, 305 — доминирование (dominating) 318 — вектор Шура (Schur vector) 303 — возмущения (perturbation) 371 — прямая сумма (direct sum of) 305 — чувствительность (sensitivity) 371, 372 Индекс профиля (profile index) 149 Инерция симметрической матрицы (inertia of symmetric matrix) 374 Инициализация (initialization) 258 Интервал значений показателя (exponent range) 66 Исчерпывание (deflation) 335 — хессенбергово-треуголъной формы (Hessen- berg-triangular form) 358 — QR-алгоритм (QR) 335 Итерации Гаусса - Зейделя (Gauss-Seidel ite¬ rations) 507 предобусловливатель (preconditioner) 477, 478 при решении уравнения Пуассона (sol¬ ving Poisson equation) 456 — с одинарным сдвигом (single shift iterations) 377 — отношением Релея (Rayleigh quotient itera¬ tions) 395 QR-алгоритм (QR) 396 симметрично-определенный пучок (symmetric-definite pencil) 421 Итерационная матрица (iteration matrix) 455 Итерационное уточнение (iterative improve¬ ment) 232 — для метода наименьших квадратов (for LS) 232 — линейных систем (for linear systems) 121, 122 — с фиксированной точностью (fixed preci¬ sion) 123 — со смешанной точностью (mixed precision) 122 Итерационные методы (iterative methods) 452 Итерация Якоби для метода (Jacobi iteration for SVD) 408, 409 симметричной задачи собственных зна¬ чений (symmetric eigenproblem) 399 Квадратичная форма (quadratic form) 523 Квадратный корень матрицы (square root of a matrix) 494 Классические итерации Якоби для собствен¬ ных значений (classical Jacobi iterations for eigenvalues) 401 Кольцевые процедуры (ring algorithms) 273 - -- другие (others) 276 - Холецкого (Cholessky) 273, 274 - - Якоби (Jacobi) 405 Кольцо (ring) 240 Комплексная матрица (complex matrix) 27 Конвейеризация (pipelining) 45 - сложения (addition) 45, 46 - saxpy 46 Конфлюэнтные системы Вандермонда (conf¬ luent Vandermonde matrix) 170 Косинус матрицы (cosine of a matrix) 490 Кратность алгебраическая (algebraic multipli¬ city) 305 - геометрическая (geometric) 305 - собственного значения (multiplicity of eigen¬ values) 305 Кратные собственные значения (multiple eigenvakues) 305 матричная функция 486 триангуляции Ланцоша 439 Критический разрез алгоритма (critical sec¬ tion) 257 Кросс-валидации (cross-validation) 504 Круговое распределение (wrap mapping) 274 Крылова матрица (Krylov matrix) 330 - подпространство (Krylov subspace) 426, 427 Ленточное LU-разложение (band LU factoriza¬ tion) 142, 143 Ленточные алгоритмы (band algorithms) исключение Гаусса (Gauss elimination) 144 ленточный метод Холецкого (band Chole- sky) 146 решение треугольных систем (triangular system) 142 LU-разложение матрицы Хессенберга (LU Hessenberg) 144, 145 Ленточный метод Холецкого (band Cholesky) 146 - параллельный gaxpy (parallel gaxpy) 291 - разложение A — xB 420, 421 - - с внешним произведением (outer product) 290 Логарифм матрицы (log of matrix) 490 Локальная программа (nodepfogram) 239 Масштабирование (balancing) 342 Масштабирование по столбцам (column sea-
540 Предметный указатель ling) 30, 121 - строкам (row scaling) 30, 120 Матрица (matrix) - блочная (block) 36 верхняя двухдиагональная (upper bidiago¬ nal) 29 - - треугольная (upper triangular) 29 - хессенбергова (upper Hessenberg) 29 - вырожденная (singular) 57 - диагональная (diagonal) 29, 30 - ленточная (band) 29 - невырожденная (nonsingular) 57 - нижняя двухдиагональная (lower bidiagonal) 29 - треугольная (lower triangular) 29 - - хессенбергова (lower Hessenberg) 29 - нормальная (normal) 303 - плохо обусловленная (ill-conditioned) 82 - преобразования Гаусса (Gauss transforma¬ tion) 93 - простая (nonderogatory) 331 - симметричная (symmetric) 33 - строго диагонально доминирующая (diago¬ nal dominance) 116 - треугольная (triangular) 30, 91 - умножение (multiplication) 92 - трехдиагональная (tridiagonal) 29 - унитреугольная (unit triangular) 91 - Хаусхолдера (Hausholder) 181, 183 - хорошо обусловленная (well-conditioned) 82 - эрмитова (Hermitian) 36 Матричная норма (matrix norm) 61, 62 - согласованность (consistency) 62 - соотношения (relations between) 64 - - Фробениуса (Frobenius) 62 - экспонента (exponential matrix) 495, 496 - аппроксимации Паде (Pade approxima¬ tion) 497 - чувствительность (sensitivity) 495, 496 Матричные операции (operations with matri¬ ces) 17, 18 Машинная точность (machine precision) 67 Метод см. также Алгоритм Метод Аазена (Aasen’s method) 152-156 - Арнольди (Amoldi) 448 - Грама-Шмидта классический (classical Gram - Schmidt) 202 модифицированный (modified) 202 - конечных элементов (finite element method) 284 оценка погрешности (error estimation) 293, 294 - Ланцоша (Lanczos) 445-449 - нормальных уравнений (normal equations) 206 - с диагональным выбором (diagonal pivoting method) 156-158 - сопряженных градиентов (conjugate gradi¬ ent method) 464-467 - - связь с алгоритмом Ланцоша 468 - Холецкого блочный (block) 136 - с внешним произведением (outer product) 135 - Холецкого: gaxpy-версия 134 чебышевских полуитераций (Chebyshev semiatteration method) 457, 458 - Штрассена (Strassen) 42, 43 Якоби для линейных систем (Jacobi) 453 Методы для неопределенных систем (indefi¬ nite system methods) 127 линейного уравнения для блочных трехдиа¬ гональных систем (linear equation met¬ hod for block tridiagonal systems) 159 ленточных систем (band systems) 141, 142 положительно определенных систем (positive definite systems) 132 симметричных неопределенных систем (symmetric indefinite systems) 150 систем Вандермонда (Vandermonde) 166 тёплицевых систем (Toeplitz) 171 треугольных систем (triangular sys¬ tems) 86 Минимальная невязка (minimal residual) 206 Многочлен Чебышева (Chebyshev polynomial) 206 Множитель Лагранжа (Lagrange multiplier) 503 Модель с распределенной памятью (distribu¬ ted memory model) 238, 239 Модификации Краута и Дулитла (Craut and Doolittle) 99 Модификация (update) 21 - QR-разложения (updating QR factorization) 528 Мониторы (monitors) 257, 258 - определение 257 - cholij 295 block.chol 296 - nexti 257 - nextij 270 - gax 261 - prod 271 Наибольшее и наименьшее сингулярные числа матрицы (largest and smallest sin¬ gular matrix numbers) 385 Наискорейший спуск и сопряженные направ¬ ления (steepest descent and conjugate gradients) 461 Направления спуска (search directions) 462,463 Невязки метода сопряженных направлений
(residuals of conjugate gradient method) 465 - выбор подмножества (subset selection) 512, 513 - задачи наименьших квадратов (LS problem) 512, 513 Недоопределенные системы (underdeterminate systems) 234 Независимость линейная (linear independence) 56 Неотрицательно определенные системы (semi-definite systems) 137 Непрерывность разложения собственных зна¬ чений (continuity of eigenvalue decompo¬ sitions) 306 Неприводимые матрицы Хессенберга (unre- dused Hessenberg matrices) 329 Неравенство Коши - Ш варца (Cauchy - Schwartz inequality) 60 Несимметричная проблема собственных зна¬ чений (unsymmetric eigenproblem) 299 Несимметричный метод Ланцоша (unsymmet¬ ric Lanczos method) 449 Неявный симметричный QR-шаг со сдвигом Уилкинсона (implicit symmetric QR step with Wilkinson shift) 380 Норма (norm) 59 Нормальное уравнение (normal equation) 206 Нормальность матрицы и обусловленность собственных значений (normality and eigenvalues condition) 310 Нормальные матрицы (normal matrices) 303 Нормы (norms) - векторные (vector) 59-60 - матричные (matrix) 61 - степеней матрицы (powers of matrix) 321 - Фробениуса (Frobenius) 73-75 Обобщение сингулярного разложения (gene¬ ralized singular value decomposition) 502 Обобщенная задача наименьших квадратов с ограничениями (generalized constrai¬ ned least squares) 501 Обобщенный метод наименьших квадратов (generalized least squares) 231 Обозначение абсолютной величины (absolute value notation) 67 Обозначения (notation) блочная матрица (block matrix) 37 вектор (vector) 17 двоеточие (colon) 32 матрица (matrix) 17 Образ матрицы (range of a matrix) 57 Обратная матрица (inverse of matrix) 57 — случай Теплица (Toeplitz case) 175, 176 - подстановка (back substitution) 88 Предметный указатель 541 - ортогональная итерация (inverse orthogo¬ nal iteration) 322, 323 Обратные задачи о собственных значениях (inverse eigenvalue problems) 532, 533 Обратный метод последовательной верхней релаксации (Backward successive over- relaxation) 458 Обращение в машинный нуль (underflow) 66 Обусловленность (condition) 81 - оценка (estimation) 123 - прямоугольных матриц (condition of rectan- gilar matrix) 206 Одноранговая модификация диагональной матрицы (rank-one modification of a diagonal matrix) 413 - - задачи на собственные значения 542, 545 - QR-разложений (QR factorizations) 528 Операции над векторами (vector operations) 18 - - матрицами (matrix operations) 17 Описание алгоритма (specifying algorithm) 27 Ортогональная матрица (orthogonal matrix) 73 Ортогональное дополнение (orthogonal com¬ plement) 73 Ортогональные векторы (orthogonal vectors) 73 Ортогональный проектор (orthogonal projec¬ tion) 77 Ортогональное матричное представление (orthogonal matrix representation) 186 - - вращение Гивенса (Givens rotation) 189 - - факторизованное (factorized form) 185 Ортогональные итерации (orthogonal itera¬ tions) 318 Ортонормированный базис (orthonormal ba¬ sis) 73 Ортонормальность (orthonormality) 73 Основное решение в методе наименьших квадратов (basic solution in LS) 224, 225 Отбрасывание разрядов (cancellation) 66 Отделенность матриц (separation of matrices) 313 Отношение вычислительных затрат к ком¬ муникациям (computations/communica¬ tions ratio) 246 Оценка погрешности в степенном методе (error estimation in power method) 317 Ошибки округления (roundoff errors) 68, 70 Параллельные вычисления (parallel computa¬ tions) — асинхронная тороидальная процедура (systolic torus) 269 - - матричное умножение, кольцевой алго¬ ритм (matrix multiplication) 273
542 Предметный указатель оби|ая память динамическая (shared memory dynamic) 286 статическая (shared memory static) 286 - решение треугольной системы (triangular system solving) 285 кольцевой алгоритм 285 - Холецкий, асинхронная сеточная про¬ цедура (mesh) 285 кольцевой алгоритм 273 систолический массив 286 - Якоби циклический метод (cyclic Jacobi) 403 - - gaxpy 238 динамическое разделение памяти 259 передача сообщений 249 статическое разделение памяти 252 систолическая модель 243 - QR-разложение (QR factorization) 238 систолический алгоритм (systolic mesh) 287 Передача сообщений (message passing) 248,249 Переменные условия (condition variables) 258 Переопределенная система (overdetermined system) 205 Переполнение (overflow) 66 Перестановка циклов (loop reordering) 26, 27 Перестановочные матрицы (permutation mat¬ rices) 107 Пересылки в общей памяти (shared memory traffic) 253, 254 Персимметричная матрица (persymmetric matrix) 172 Поворот пространств (rotation of subspaces) 518 Погрешность абсолютная (absolute error) 60 - матричной функции (matrix function) 488, 489 - относительная (relative) 60 Подматрица (submatrix) 38 Подпространство (subspace) 56 - базис (basis) 56 - инвариантное (invariant) 300, 301 - ортогональная проекция (orthogonal projec¬ tion) 77 - пересечение (intersection) 522 - ядер (null-space intersection) 519 - поворот (rotation) 518 - понижающее (deflating) 364 - прямая сумма (direct sum) 56 - расстояние между (distance) 77 - размерность (orthogonal projection) 77 - сингулярное (syngular) 385, 386 - угол между 520, 521 Полиномиальный предобуславливатель (polynomial preconditioner) 477 Полное ортогональное пространство (comple¬ te orthogonal space) 217 Полные ортогональные разложения (complete orthogonal decomposition) 217 Положительно определенные системы (posi¬ tive definite systems) 132, 133, 443 алгоритм Ланцоша (Lanczos) 442 итерации Гаусса - Зейделя (Gauss-Sei¬ del iterations) 455 - - - несимметричные (unsymmetric) 133 свойства (properties) 132, 133 симметричные (symmetric) 134 LDLT 134 Полярное разложение (polar decomposition) 140 Понижающее подпространство (deflating sub¬ space) 364 Последовательная верхняя релаксация (suc¬ cessive over-relaxation), SOR 456 предобусловливатель (preconditioner) 477 симметричная задача собственных зна¬ чений (symmetric eigenproblem) 364 SSOR 458 симметричные неопределенные системы (symmetric indefinite systems) 150 Последовательность Штурма (Sturm sequence) 393 Потеря ортогональности (loss of orthogona¬ lity) 437 в методе Грама-Шмидта (in Gram- Schmidt) 203 Ланцоша (in Lanczos) 434, 435 - точности (cancellation) 67 Правило Симпсона (Simpson’s rule) 494 Предобусловливатели (preconditioners) 473 - неполного разложения Холецкого (incom¬ plete Cholesky) 473 - неполные блочные (incomplete block) 474 Преобразование Гаусса (Gauss transforma¬ tions) 93 Гаусса-Жордана (Gauss-Jordan) 101-102 - Кэли (Cayley transform) 194 - матриц (transformation of matrices) - быстрое Гивенса (fast Givens) 191 —, вращения Гивенса (Givens rotations) 191 - Гаусса (Gauss) 93 - гиперболические (hyperbolic) 532 - отражение Хаусхолдера (Hausholder ref¬ lections) 182 - подобия (similarity transformation) 300 - - неунитарное (nonunitary) 306 - определение (definition) 301 - условия (conditions) 306 Принцип «разделяй и властвуй» (“divide and conquer” principle) 42 Проблема собственных значений (eigenprob¬ lem) 368
Предметный указатель 543 несимметричная (unsimmetric) 299 симметричная (symmetric) 368 Проекции (projections) 77 Простые матрицы (nonderogatory matrices) 332 Процессор id (id processor) 240 Псевдообратный (pseudoinverse) 223 Пучок матриц (pencil) 353 — диагонализация (diagonalization) 418 — симметрично-определенный (symmetric- definite) 418 — собственные значения (eigenvalues) 353 — эквивалентность (equivalence) 355 Равномерная загруженность (load balancing) 244, 254, 264 Разбиение матрицы по столбцам (partitioning a matrix into columns) 20 строкам (rows) 20 Разложение (factorization, decomposition) - жорданово (Jordan decomposition) 305 - Кронекера (Kronecker form) 355 - обобщенное вещественное Шура (generali¬ zed real Schur decomposition) 355 - симметричное 2 x 2 400 - трехдиагональное (tridiagonal) 376 - Хессенберга (Hessenberg reduction) 326, 327 - треугольное (Hessenberg triangular) 358 - Холецкого (Cholesky factorization) 134 - неполное (incomplete) 473 - Шура (Schur decomposition) 302 - - вещественное 325, 326 - QR 195 Размерность (dimension) 56 Ранг матрицы (rank of a matrix) 57 - - выбор подмножества (subset selection) 512 - - численное нахождение (determination) 225 - численный (numerical) 226 - QR-разложение 225 - - SVD 75 Распределенные структуры данных (distribu¬ ted data structures) 242 Расщепление (splitting) 454 Релаксационный параметр (relaxation para¬ meter) 456, 457 Решение задачи наименьших квадратов (least squares solutions) методом быстрых вращений Гивенса (fast Givens) 209, 210 Ланцоша (Lanczos method) 447 модифицированным методом Грама- Шмидта (modified Gram-Schmidt me¬ thod) 209 преобразования Хаусхолдера (Haushol- der reduction) 208 SVD 222 - линейной системы (solving a linear system) 97 Свойство чередования (interlacing property) 369, 370 Сдвиг (shift) - в симметричном QR-алгоритме 380 - QR-итерации 335 - - QZ-шаге 360 - - SVD-алгоритме 387 - Уилкинсона (Wilkinson) 378 Секулярное уравнение (secular equation) 416, 503 Сетевая топология (network topology) 239 Сети процессоров (processor networks) 239 Сеточная тороидальная процедура (mesh/torus algorithm) умножение матриц (matrix times matrix) 269 Холецкого алгоритм 285, 286 Сигнатурная матрица (signature matrix) 533 Симметрично-определенный пучок (symmet¬ ric-definite pencil) 418 Сингулярное разложение (singular value de¬ composition (SVD)) 74 - - алгоритм 383, 387 -■ - доказательство (ргоо!) 74 - - метод Ланцоша 446 наименьших квадратов с ограничением (constrained least squares) 503 общая задача (total least squares) 514 - - обобщенное (generalized) 422 - пересечение подпространств (subspace intersection) 522 - поворот подпространств (subspace rota¬ tion) 518, 519 - - проекции (projection) 77 - псевдообратная матрица (pseudo inverse) 223 - - ранг матрицы (rank of a matrix) 75 ядро (null-space) 75 Сингулярные значения (singular values) 74 - возмущения (perturbations) 384 - матрицы (singular values of a matrix) 74 - минимаксная характеризация (minimax characterization) 369, 370 - - собственные значения (eigenvalues) 383 Сингулярный вектор левый 74 - нуль-пространство (null-space) 75 - - образ (range) 75 - - правый 74 Синус матрицы (sine of a matrix) 490 Системы Вандермонда (Vandermonde systems) 166, 167 - общей памяти (shared memory systems) 253, 254
544 Предметный указатель Скалярное произведение (dot product) 18 След (trace) 300 Сложение (addition) 17 Собственное значение — внутреннее (interior) 432 — - дефектное (defective eigenvalue) 305 Собственные значения (eigenvalues) 305 детерминант (determinant) 317 — доминирующие (dominant) 317 — комплексно сопряженные (complex conju¬ gate) 325, 326 обобщенные (generalized) 354 — последовательность Штурма (Sturm sequ¬ ence) 369 симметрические матрицы (symmetric mat¬ rices) 369 след (trace) 300 упорядочение в вещественной форме Шура (ordering in Schur form) 345, 346 — характеристический многочлен (characte¬ ristic polynomial) 299, 300 Собственный вектор (eigenvector) 300 возмущение (perturbation) 311 — дефектная матрица (defective matrix) 306 левый (left) 300 плохо обусловленная матрица (ill-condi¬ tioned matrix) 306 — правый (right) 300 формула Шура (Shur form) 303 — чувствительность (sensitivity) 311 Сопряженное транспонирование (conjugate transposition) 27 Сопряженные направления (conjugate direc¬ tions) 463 Сосед (neighbor) 240 Спектр (spectrum) 300 Спектральный радиус (spectral radius) 454 Стационарные значения (stationary values) 369 — с ограничениями (constrained) 523 Степени матрицы (matrix powers) 381 Степенной метод (power method) 316 — ряд матрицы (power series of a matrix) 490 Стоимость обмена информацией (communica¬ tion cost) 246 Структура данных для блочных матриц (block data structure) 41, 42 — ленточной матрицы (bandedness data structure) 143 - при векторной обработке (vector compu¬ ters) 51, 52 Сходимость (convergence) — итераций Якоби (Jacobi iterations) 344 — итерационных методов (iterative methods) 454 — метода бисскций (bisection) 393 — Гаусса-Зейделя (Gauss-Seidel) 455 — итераций с отношениями Рэлея (Rayleigh quotient iterations) 396 - Ланцоша (Lanczos) 430 - наискорейшего спуска (steepest descent) 461 сопряженных градиентов (conjugate gra¬ dients) 468, 469 - - Якоби для симметрической задачи соб¬ ственных значений (Jacobi’s method for the symmetric eigcnproblem) 401 - чебьи невских пол у итераций (Che by she v semi-iterative) 457 обратных итераций (inverse iterations) 344 - ортогональной итерации (orthogonal itera¬ tion) 318 — симметричного QR-шага со сдвигом (sym¬ metric QR iteration) 380 степенных итераций (power method) 316 циклического метода Якоби (cyclic Jacobi) 403 QR-алгоритма (QR) 335 QZ-алгоритма (QZ) 353 — SVD-алгоритма (SVD) 391 Теорема (theorem) Бауэра Файка (Bauer-Fike) 308 Виландта- Хоффмана о собственных зна¬ чениях (Wielandt-Hoffman) 370 Куранта - Фишера о минимаксе (Courant- Fischer minimax theorem) 369 о кругах Гершгорина (Gershgorin circle theorem.) 307, 308 минимаксе для собственных значений 369 неявном Q (implicit Q theorem) 330, 331 Сильвестра об инерции (Sylvester law of inertia) 374 сингулярных значений (singular values) 385 Теория возмущения (perturbation theory) 307 — для инвариантных подпространств (inva¬ riant subspaces) 313 для недоо пред елейных систем (underde- lermined systems) 236 - - псевдообратной матрицы (pseudo inverse) 223 - собственных векторов (eigenvectors) 310, 311 значений (eigenvalues) 307 — инвариантные подпространства симмет¬ ричных матриц (invariant subspaces of symmetric matrices) 371 — - линейной системы (linear equation prob¬ lem) 80, 81 обобщенное собственное значение (gene¬ ralized eigenvalues) 355 — пара сингулярных подпространств (singu¬ lar subspace paire) 385, 386 — сингулярные значения (singular values) 384, 385
Предметный указатель 545 собственные значения симметричной мат¬ рицы (eigenvalues of symmetric matrix) 370 Какиеля - Пейджа (Kaniel Paige theory) 430 Тёплнцева матрица (Toeplitz matrix) 171 система (Toeplitz system) 171 Top (torus) 240 Точность (precision) 66 Треугольные системы (triangular systems) — ленточные (band) 142, 143 — неквадратные (non-square) 91 — случай нескольких правых частей (mul¬ tiple) 89 Трех диагональная матрица (tridiagonal matrix) 475 — обратная (inverse) 475 Трехдиагональные системы (tridiagonal sys¬ tems) 146 Трехдиагонализация (tridiagonalization) 376, 427 — Ланцоша (Lanczos) 427, 428 — - блочный вариант (block version) 438 — внутренние собственные значения (interior eigenvalues) 432 с выборочной ортогона л изацией (selective orthogonulization) 437 полной переортогонализацией (complete reorthogonalization) 436 — s-шаговый (s-stcp) 440 сопряженные градиенты (conjugate gra¬ dients) 439 — степенной метод (power method) 431 — подпространство Крылова (Krylov subspace) 426 — Хаусхолдера (Hausholder) 377 Умножение блочных матриц (block matrix multiplication) 39 - матриц по Штрассену (Strassen multiplica¬ tion) 43 - блочная версия (block version) 19 матрицы на вектор (matrix vector) 20 матрицу (matrix-matrix) 17, 23 число (scalar matrix multiplication) 39 Уравнение Сильвестра (Sylvester equation) 347 Уравновешивание строчностолбценое (row- column equilibration) 121 Уровень (level) 23, 27 - операции (of operation) 23 Ускорение (speed-up) 246 Ускорение Ритца (Ritz acceleration) 396, 397 пара и метод Ланцоша (pair and Lanczos method) 437, 438 Условия Мура Пенроуза (Moore Penrose condition) 223 Устойчивость (stability) 498, 499 Флоп (flop) 30, 31 Формула двойных углов (doubling formulae) 492, 497 Шермана-Моррисона (Sherman Morrison formula) 57 Функции от матриц (matrix functions) 482 интегральные (integrating) 494 многочлен (polynomial equation) 492, 493 Функция треугольной матрицы (function of triangular matrix) 484, 485, 488 Характеристический многочлен (characteristic polynomial) 299 — обобщенная задача собственных значений (generalized cigenproblcm) 354 Хессенбергова форма и итерация Арнольди (Arnoldi process and Hessenberg form) 448 - преобразования Хаусхолдери (Haushol- dcr reduction) 328 — QR-итерация 344 QR-раэбиения 199 - неприводимость матрицы (unreduced) 330 — обратные итерации (inverse) 328 - свойства 329 Хессснбсрго во-треугольное преобразование (Hessenberg triangular form reduction) 357, 358 Хеесенберговы системы (Hessenberg systems) 145, 146 Хранение ленточных матриц (band matrix store) 32, 33 по диагоналям 33, 34 Циклическая редукция (cyclic reduction) 162 Циклический метод Якоби (cyclic Jacobi method) 402, 403 Число Кроуфорда (Crowford number) 420 обусловленности (condition number) 81, 82 110 Шкеелю (Skcel condition number) 85 с плавающей точкой (floating point number) 65 Чистка (sweep) 402 Чувствительность. См. Теория возмущения Чувствительность линейного уравнения (line¬ ar equation sensitivity) 83 85 Ширина ленты (bandwidth) 30 — верхняя (upper bandwidth) 30 — нижняя (iiwer bandwidth) 30 Штрассена алгоритм (Strassen algorithm) 42
546 Предметный указатель Эквивалентность норм (equivalence of norms) 63 Эффективность (effeciency) 247 Ядро (нуль-пространство) матрицы (null-space) 57 - пересечение (intersection) 519 A-норма (А-погт) 526 А-сопряженное направление спуска (A conju¬ gate searcg direction) 463 cols 20 continue 259 CS-разложение (CS decomposition) 79 delay 259 gauss 93 gaxpy 22 - алгоритм (gaxpy algorithms) gaxpy в распределенной памяти (in distributed memory) 243, 246, 248, 250 - на общей памяти (in shared memory) 252, 255, 258, 261 - и внешние произведения (gaxpy vs. outer product) 52 get 254 givens 188 glob, init 253 house 183 ЬО^-разложение (LDLT) 130, 131 1ЛЭМт-разложение (LDMT) 127, 128 length 18 loc. init 241 LR-итерация (LR iterations) 321 LU-разложение (LU factorization) - ленточное (band) 141, 142 - дифференцирование (differentiation) 101 - детерминант (determinant) 95 - существование (existence) 96, 97 Mathlab 18 mesh 239 my. id 241 n x n матрица перестановок (n x n permita- tion matrix) 172 р-нормы (p-norms) 60 - минимизация (minimisation in) 205 put 254 quit 241 QR-алгоритмы для собственных значений (QR-algorithms for eigenvalues) 316 QR-итерации (QR-iterations) - вывод (derivation) 319, 320 - неявный двойной сдвиг (implicit double shift) 338 - неявный сдвиг 337 - одинарный сдвиг (single shift) 336 - сдвиг и точное собственное значение 336 QR-разложение (QR-decomposition) 195 - вычисление методом блочных отражений (block Hausholder computation) 197 - классическим методом Грама-Шмидта (classical Gram-Schmidt) 201 - - методом быстрых вращений Гивенса (fast Givens rotations) 200 - модифицированным методом Грама - Шмидта (modified) 202 - квадратные системы (square systems) 235 ~ модификация (updating) 528 - наименьших квадратов (LS) 208 - неполного ранга с выбором ведущего столбца (rank defTicient column pivoting) 215 - преобразования Хаусхолдера (Hausholder computation) 196, 197 - ранг матрицы (rank of matrix) 215, 216 - свойства 201 - сеточная систолическая процедура (systolic mesh) 287 - симметричное (symmetric) 376 - хессенберговой матрицы 199 QR-шаг Фрэнсиса (Francis QR-step) 340 R-двухдиагонализация (R-bidiagonalization) 219 recv 214 saxpy 18 send 241 span 57 SVD-шаг Голуба - Кахана (Golub-Kahan SVD step) 389 sym.schur2 401 WY-представление (WY-representation) 187 2-норма
Оглавление Предисловие редактора перевода .... 5 Предисловие к первому изданию 7 Предисловие ко второму изданию . 11 Глава I. Умножение матриц 16 1.1. Основные алгоритмы и обозначения 16 1.2. Учет структуры матриц 29 1.3. Блочные матрицы и алгоритмы 36 1.4. Некоторые аспекты векторно-конвейерных вычислений 45 Глава 2. Матричный анализ 56 2.1. Основные сведения из линейной алгебры 56 2.2. Векторные нормы 59 2.3. Матричные нормы 61 2.4. Матричные вычисления с конечной точностью 65 2.5. Ортогональность и сингулярное разложение 73 2.6. Проекции и CS-разложение 77 2.7. Чувствительность квадратных систем к возмущениям 80 Глава 3. Линейные системы общего вида 87 3.1. Треугольные системы 87 3.2. LU-разложение 92 3.3. Анализ ошибок округления в методе исключения Гаусса . . . 102 3.4. Выбор ведущего элемента 106 3.5. Уточнение и оценивание точности 119 Глава 4. Линейные системы специального вида 127 4.1. Разложения типа LDMT и LDLT 127 4.2. Положительно определенные системы 132 4.3. Ленточные системы 141 4.4. Симметричные неопределенные системы 150 4.5. Блочные трехдиагональные системы 159 4.6. Системы Вандермонда 166 4.7. Тёплицевы системы 171 Глава 5. Ортогонализация и метод наименьших квадратов 181 5.1. Матрицы Хаусхолдера и Гивенса 181 5.2. QR-разложение 195 5.3. Задача наименьших квадратов: случай полного ранга 205 5.4. Другие ортогональные разложения 215 5.5. Задача LS неполного ранга 221 5.6. Взвешивание и итерационное уточнение 230 5.7. Квадратные и недоопределенные системы 234
548 Оглавление Глава 6. Параллельные матричные вычисления 238 6.1. Операция gaxpy на распределенной памяти 238 6.2. Операция gaxpy на общей памяти 252 6.3. Параллельное умножение матриц 262 6.4. Кольцевые процедуры разложения 273 6.5. Сеточные процедуры разложения 281 6.6. Методы разложения на общей памяти 290 Глава 7. Несимметричная проблема собственных значений 299 7.1. Свойства и разложения 300 7.2. Теория возмущения 307 7.3. Степенные итерации 316 7.4. Хессенбергова форма и вещественная форма Шура 324 7.5. Практический QR-алгоритм 334 7.6. Методы вычисления инвариантных подпространств 343 7.7. QZ-метод для Ах = ХВх 353 Глава 8. Симметричная проблема собственных значений 368 8.1. Математические основы 368 8.2. Симметричный QR-алгоритм 376 8.3. Вычисление SVD 383 8.4. Некоторые специальные методы 392 8.5. Методы Якоби 399 8.6. Метод «разделяй и властвуй» 412 8.7. Более общие проблемы собственных значений 418 Глава 9. Методы Ланцоша 426 9.1. Выводы свойства сходимости 426 9.2. Практические процедуры Ланцоша .... 433 9.3. Приложения и обобщения 442 Глава 10. Итерационные методы для линейных систем 452 10.1. Стандартные итерации 452 10.2. Метод сопряженных градиентов 461 10.3. Сопряженные градиенты с предобусловливанием 471 Глава 11. Функции от матриц . 482 11.1. Спектральные методы 482 11.2. Аппроксимационные методы 488 11.3. Матричная экспонента 495 Глава 12. Специальные разделы 501 12.1. Задача наименьших квадратов с ограничениями 501 12.2. Выбор подмножества при помощи SVD 509 12.3. Общая задача наименьших квадратов 514 12.4. Сравнение подпространств при помощи SVD 518 12.5. Модифицированные задачи на собственные значения 523 12.6. Модификация QR-разложения 528 Предметный указатель 536
Научное издание Джин X. Голуб, Чарльз Ф. Ван Лоун МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ Заведующий редакцией академик В.И. Арнольд Зам. зав. редакцией А.С. Попов Ведущий редактор А.А. Бряндинская Редакторы Т.А. Денисова, Н.С. Полякова Художник Ю.С. Урманчиев Художественный редактор В.И. Шаповалов Технический редактор М.А. Страшнова Корректор Н.С. Курлова Лицензия ЛР № 010174 от 20.05.97 г. Подписано к печати 05.01.99 г. Формат 70 х 100 Vie- Бумага офсетная. Печать офсетная. Гарнитура тайме. Объем 17.25 бум. л. Уел. печ. л. 44,85. Уч. -изд. л. 42,77. Изд. № 1/8085. Тираж 5000 экз. Зак. 63. С 002 ИЗДАТЕЛЬСТВО «МИР» Государственного Комитета Российской Федерации по печати 129820. Москва, И-110, l-й Рижский пер., 2 Отпечатано в полном соответствии с качеством предоставленных диапозитивов в ОАО «Можайский полиграфический комбинат» 143200. г. Можайск, ул. Мира, 93
В издательстве «Мир» готовятся к выпуску в свет 1. Труды семинара Н. Бурбаки за 1992 г.: Сб. статей: Пер. с франц./ Сост. Попов В. J1. и Паршин А.Н. — 25 л. 2. Труды семинара Н. Бурбаки за 1993 г.: Сб. статей: Пер. с франц./ Сост. Долбилин Н.П. — 25 л. 3. Международный конгресс математиков в Цюрихе. Избранные доклады: Пер. с англ. — 25 л. 4. Бауэе Г. Алгебраическая гомотопия: Пер. с англ. — 28 л. 5. Кокс Д., Литтл Дж., О’Ши Д. Идеалы, многообразия и алгорит¬ мы. Введение в вычислительную алгебраическую геометрию и коммутативную алгебру: Пер. с англ. - 40 л. 6. Каку М. Введение в теорию суперструн: Пер. с англ. - 38 л. 7. Барндорф-Нильсен О., Кокс Д. Асимптотические методы в ма¬ тематической статистике: Пер. с англ. — 15 л. 8. Логический подход к искусственному интеллекту: От распозна¬ вания речи к логике экспертных систем: Пер. с франц./ Тейз А. и др. - 22 л. 9. Логический подход к искусственному интеллекту: От обучения в информационных системах к областям, граничным с искусст¬ венным интеллектом: Пер. с франц./Тейз А. и др. — 20 л. 10. Уотермен. М. Математические методы анализа последователь¬ ностей ДНК: Пер. с англ. — 27 л. 11. Занг В.-Б. Синергетическая экономика: Пер. с англ. — 21 л. 12. Ноден П., Китте К. Алгебраическая алгоритмика: Пер. с англ. - 48 л. 13. Гуссенс М., Миттельбах Ф., Самарин А. Путеводитель по макро¬ пакету LaTeX и его расширению LaTeX2e: Пер. с англ. — 42 л. 14. Хесс П. Периодические параболические задачи и положитель¬ ность: Пер. с англ. — 8 л. 15. Дистель Р. Теория графов: Пер. с англ. — 20 л. 16. Тан К.-Ш., Стиб В.-Х. Символьный С++: Введение в компью¬ терную алгебру с использованием объектно-ориентированного программирования: Пер. с англ. — 44 л. 17. Петерс Э. Хаос и порядок на рынках капитала: Пер. с англ. — 19 л. 18. Фляйшнер Г. Эйлеровы графы и смежные вопросы: Пер. с англ. - 25 л.
В издательстве «Мир» имеются в продаже 1. Алипрантис К., Браун Д., Бёркеншо О. Существование и опти¬ мальность конкурентного равновесия: Пер. с англ., 1995, 384 с. 2. Труды семинара Н. Бурбаки за 1991 г. Сб. статей: Пер. с англ. и франц./ Сост. Васильев В. А. и Монастырский М.И., 1998,416 с. 3. Гербер М. Математика страхования жизни: Пер. с англ., 1995,156 с. 4. Международный конгресс математиков в Киото, 1990: Пер. с англ., 1996,431 с. 5. Саломаа А. Криптография с открытым ключом: Пер. с англ., 1996, 320 с. 6. Рамм А. Теория оценивания случайных полей: Пер. с англ., 1996, 352 с. 7. Схрейвер А. Теория линейного и целочисленного программиро¬ вания. В 2-х томах, т. 2: Пер. с англ., 1991, 342 с. 8. Труды семинара Н. Бурбаки за 1990 г.: Сб статей: Пер. с англ. и франц., 1996, 348 с. 9. Файте Ф., Джонстон П., Кранц М. Компьютерный вирус: проб¬ лемы и прогноз: Пер. с англ., 1994, 176 с. 10. Касивара М., Шапира П. Пучки на многообразиях: Пер. с англ., 1997, 656 с. 11. Бухвалов А.В., Идельсон А.В. Самоучитель по финансовым рас¬ четам. 1997, 176 с. 12. Говорухин В.Н., Цибулин В.Г. Введение в Maple. Математиче¬ ский пакет для всех. 1997, 208 с. 13. Пайтген Х.-О., Рихтер П.Х. Красота фракталов. Образы комп¬ лексных динамических систем: Пер. с англ., 1993, 176 с. 14. Ревюз Д. Цепи Маркова: Пер. с англ., 1997,432 с. 15. Логический подход к искусственному интеллекту: От модальной логики к логике баз данных: Пер. с франц./Тейз А., Грибомон П., Юлен Г. и др., 1998, 494 с. 16. Грэхем Р., Кнут Д., Паташник О. Конкретная математика. Осно¬ вание информатики: Пер. с англ., 1998, 711с. 17. Каханер Д., Моулер К., Нэш С. Численные методы и программ¬ ное обеспечение: Пер. с англ., 1998, 576 с.
18. Абаффи Й., Спедикато Э. Математические методы для линей¬ ных и нелинейных уравнений: Проекционные ABS-алгоритмы: Пер. с англ., 1996, 208 с. 19. Ловас Л., Пламмер М. Прикладные задачи теории графов: Тео¬ рия паросочетаний в математике, физике, химии: Пер. с англ. — 1998, 656 с. Заказы на приобретение этих книг можно сделать в ближайшем магазине научно-технической литературы или направить непосредственно в издательство «Мир», редакция математики Телефон: 286-42-88, E-mail: asp@mir.msk.su
Авторам удалось успешно сочетать строгость и простоту изложения. Книга читается довольно легко. В ней имеется много нового материала, который еще не публиковался в систематизированном виде на русском языке. Поэтому она будет полезна практически всем специали¬ стам в области вычислительной математики: студентам и аспирантам — как пособие для освоения основ линейной алгебры, прикладникам — как источник рецептов решения задач, опытным специалистам — как пища для размышлений