Книга
Книга
Предисловие редактора перевода
Вниманию читателя предлагается новая книга по линейной алгебре. И, естественно, возникают вопросы: «Что же действительно новое можно найти в ней и чем конкретно она отличается от других книг по линейной алгебре?»
Как никакая другая ветвь математики, линейная алгебра самым тесным образом переплелась с многочисленными приложениями, являясь либо предметом, либо инструментом исследований. С основами линейной алгебры в той или иной мере знаком каждый человек, соприкасающийся с вычислениями и тем более имеющий дело с решением больших задач на современных суперЭВМ. Круг лиц, интересующихся линейной алгеброй, необычайно широк. Он весьма неоднороден по уровню квалификации и включает в себя студентов, аспирантов, молодых специалистов, а также специалистов высшей квалификации. Все эти обстоятельства делают очень трудным написание книг по линейной алгебре. Желание отразить последние достижения и сделать при этом изложение достаточно простым - всегда противоречивы.
Член Национальной Академии наук США, профессор Стэнфордского университета Дж. Голуб и профессор Корнелльского университета Ч. Ван Лоан являются специалистами в области линейной алгебры, известными не только в США, но и во всем мире. Их имена хорошо знакомы и специалистам в нашей стране. Несколько лет назад они предприняли попытку описать в доступной форме последние достижения в области численных методов линейной алгебры. Эта попытка воплотилась в книгу «Матричные вычисления», первое издание которой было встречено с интересом. За последние пять лет авторы провели значительную работу по улучшению содержания книги: в частности, были улучшены многие доказательства, включен материал, касающийся параллельных вычислений. Результатом этой работы было второе издание книги «Матричные вычисления». Именно оно и предлагается вниманию читателя.
Авторам удалось успешно сочетать строгость и простоту изложения. Книга читается довольно легко. В ней имеется много нового материала, который еще не публиковался в систематизированном виде на русском языке. Поэтому она будет полезна практически всем специалистам в области вычислительной математики: студентам и аспирантам - как пособие для освоения основ линейной алгебры, прикладникам - как источник рецептов решения задач, опытным специалистам - как пища для размышлений. Последнее обстоятельство особенно важно для нашего читателя, так как представленный в книге материал хорошо отражает уровень исследований за рубежом в области численных методов линейной алгебры.
Объем второго издания книги «Матричные вычисления» увеличен более чем на треть по сравнению с первым. Введение нового материала во многом объясняется быстрым ростом исследований в области параллельных вычислений. Литература по этому направлению плохо систематизирована. Нет еще установившихся методов исследования. Не всегда даже ясно, что в параллельных вычислениях является
главным, а что-второстепенным. Поэтому попытка авторов навести определенный порядок очень важна. Наличие систематизированых обозначений, методов исследования и источников информации позволяет лучше понять сильные и слабые стороны предметной области. Для всех, кто занимается параллельными вычислениями, сейчас это очень нужно. Для удобства читателя списки литературы помещены по главам.
Добавим к сказанному, что в книге имеется много интересных решений и находок в отдельных доказательствах. Все это можно увидеть, познакомившись с текстом поближе. Хочется надеяться, что в ряду многих книг в области численных методов линейной алгебры предлагаемая читателям книга Дж. Голуба и Ч. Ван Лоана займет достойное место.
В заключение отметим, что перевод книги выполнен группой переводчиков: гл. 7, 8, 11 перевел Ю. М. Нечепуренко, гл. 1, 2-А. Ю. Романов, гл. 3, 4, 12-А. В. Собянин и, наконец, гл. 6, 9 и 10-Е.Е. Тыртышников.
В. В. Воеводин
Посвящается
Олстону С. Хаусхолдеру и Джеймсу X. Уилкинсону
Предисловие к первому изданию
Мы придерживаемся той точки зрения, что «предназначение» численного анализа-обеспечить научную общественность эффективными библиотеками программ. Эта деятельность особенно интересна тем, что ее участникам необходимо знание как математики, так и вычислительной техники. В самом деле, разработка программ высокого качества требует и понимания математического существа решаемой задачи, и чутья к конструированию алгоритмов, и осознания специфики вычислений с конечной точностью. Цель этой книги - снабдить читателя нужными навыками в той мере, в которой они относятся к матричным вычислениям.
Начиная с середины 50-х годов в этой области был достигнут огромный прогресс. Это подтверждается существованием высококачественных программ для решения систем линейных уравнений, многих задач, решаемых методом наименьших квадратов, и задач на собственные значения. Типичный пример-подпрограммы пакетов Eispack и Linpack, широкое использование которых привело к повышению уровня разработки алгоритмов во многих прикладных областях. Используя модули из этих пакетов в качестве строительного материала, ученые и инженеры могут сооружать более сложные, специально настроенные на их нужды, программные средства. Такое положение вещей стимулирует написание хорошо структурированных программ - благоприятная тенденция в условиях, когда все больше научных результатов формулируется в виде программ.
Влияние численной линейной алгебры ощущается и в другом. Наши добрые привычки-склонность полагаться на ортогональные матрицы, осознание роли чувствительности задачи к возмущениям, тщательное рассмотрение ошибок округления-были восприняты во многих других областях исследований. Хороший пример-рост использования сингулярного разложения (SVD) как аналитического инструмента многими статистиками и инженерами в области управления. Работающие в этих областях специалисты переформулируют многие теоретические концепции на языке SVD, и в результате им становится гораздо легче реализовывать свои идеи в условиях влияния ошибок округления и неточных данных.
Дальнейшие свидетельства растущего влияния численной линейной алгебры можно обнаружить в области разработки аппаратных средств ЭВМ. Последние продвижения в области арифметики с плавающей точкой и параллельной обработки были в немалой степени вызваны деятельностью в области матричных вычислений.
Мы написали эту книгу, чтобы охватить эту очень интересную и быстро расширяющуюся область с единых позиций. Многое было сделано после публикации в 1965 г. монументального трактата Уилкинсона «Алгебраическая проблема собственных значений». Многие из этих современных достижений уже отражены в обзорных статьях и в известных специальных монографиях, таких как «Численное решение задачи наименьших квадратов» Лоусона и Хенсона, «Симметричная проблема собственных значений» Парлетта. Мы считаем, что пришло время для
синтеза всего этого материала. В этом отношении мы рассматриваем «Матричные вычисления» как всеобъемлющую, несколько более продвинутую версию книги Стьюарта «Введение в матричные вычисления».
Мы рассчитываем на три категории читателей: студенты-выпускники технических специальностей, ученые и инженеры-вычислители, наконец, наши коллеги по численному анализу. Для каждой из этих групп у нас в книге кое-что припасено.
Для студентов (и их наставников) мы включили значительное количество упражнений. Многие из них носят вычислительный характер и могут стать ядром программного проекта. Наш собственный опыт преподавания на основе этой книги говорит о том, что задания, использующие Eispack и Linpack, существенно оживляют ее содержание. Также успешно использовалась совместно с этим текстом система Matlab-простая в обращении и выполняющая вычисления с матрицами.
Для инженеров и ученых, желающих в процессе своей работы пользоваться этой книгой как справочником, мы постарались свести к минимуму взаимозависимость отдельных глав. Кроме того, в конце практически каждого раздела мы приводим аннотированную библиографию, чтобы ускорить поиск дополнительного материала по любому заданному вопросу.
Для наших коллег по численному анализу мы щедро сопровождаем наши описания алгоритмов элементами теории возмущений и анализом ошибок. Мы хотим снабдить эту категорию читателей достаточным количеством подробностей, чтобы они могли ставить и решать матричные задачи, возникающие в их собственной деятельности. Часто толчком к исследованиям в области численной линейной алгебры служат работы, проводимые в других областях численного анализа. Так, например, некоторые из лучших методов решения разреженных линейных систем были разработаны исследователями, занимавшимися численным решением уравнений в частных производных. Подобным же образом развитие приемов модификации различных матричных разложений было стимулировано работами по квазиньюто- новским методам.
Эта книга писалась шесть лет. Название менялось несколько раз: (1) «Завершающий курс матричных вычислений», (2) «Прикладные матричные вычисления», (3) «Матричные вычисления: специальный курс». Первое название, помимо некоторой претенциозности, вводит в заблуждение. Мы не претендуем на исчерпывающее изложение матричных вычислений. В частности, мы исключили многие темы из животрепещущей области вычислений с разреженными матрицами просто потому, что не хотели погружаться в теорию графов и структур данных. Второе название не подходит, потому что мы не останавливаемся в сколько-нибудь значительной степени на приложениях. По большей части рассматриваемые матричные задачи мы принимаем как данность-их происхождение не прослеживается. Мы согласны с тем, что с педагогической точки зрения это является недостатком, однако опытный преподаватель сумеет его компенсировать. А потом, мы подозреваем, что многие из наших читателей и сами будут обладать достаточным опытом, так что чрезмерная мотивировка им и не нужна. Наконец, с последним названием мы расстались ввиду того, что книга все же содержит вводный материал. Мы решили включить элементарные разделы и ради полноты, и потому, что мы думаем, что наш подход к основам предмета заинтересует преподавателей начальных курсов численного анализа.
О чем же тогда эта книга, если она неполна, не очень-то прикладная и не слишком узко специальная? Ответом на этот вопрос должен послужить краткий обзор содержания.
В первых трех главах закладываются необходимые основы. Приводится обзор матричной алгебры, фиксируются некоторые ключевые алгоритмы. Темп изложения достаточно высок. Читатели, у которых возникают трудности при решении задач из
этих первых глав, безусловно, столкнутся с ними и в остальной части книги.
Значительная часть текущих исследований в численной линейной алгебре сосредоточена на задачах, в которых матрицы имеют специальную структуру, скажем являются большими и разреженными. Искусство извлечения выгоды из наличия структуры - центральная тема гл. 5, где описываются многие методы решения систем линейных уравнений специального вида.
В гл. 6 подхвачено другое течение - возросшее стремление полагаться на ортогональные матрицы. Мы обсуждаем несколько методов ортогонализации и показываем, как применить их в методе наименьших квадратов. Особое внимание уделяется случаю неполного ранга.
Центральное место гл. 7 занимает всемогущий QR-алгоритм для решения несимметричной проблемы собственных значений. Наш методичный вывод должен помочь снять налет таинственности с этого важного метода. Мы останавливаемся также на вычислении инвариантных подпространств и обобщенной проблеме собственных значений.
В гл. 8 мы продолжаем обсуждать проблему собственных значений, сосредоточиваясь на важном симметричном случае. Сначала мы описываем симметричный QR-алгоритм, а затем показываем, как симметрия позволяет построить несколько альтернативных вычислительных процедур.
До самого этого места в книге наше рассмотрение разреженности носит отрывочный характер. В гл. 5 обсуждается решение ленточных линейных систем, в гл. 7 описан метод одновременных итераций, в гл. 8-итераций Рэлея и т. д. Главы 9 и 10, однако, полностью посвящены решению задач с разреженными матрицами. Темами обсуждения являются метод Ланцоша и родственный ему метод сопряженных градиентов. Мы показываем, как эти важные алгоритмы могут быть использованы для решения многих разреженных задач на собственные значения, по методу наименьших квадратов, систем линейных уравнений.
Цель двух последних глав - проиллюстрировать широкую применимость представленных в книге алгоритмов. В гл. 11 речь идет о задаче вычисления функции от матрицы, что часто требуется делать в приложениях теории управления. Глава 12 содержит подборку матричных задач, из которых несколько демонстрируют мощь сингулярного разложения.
Практическая и теоретическая ценность этого разложения является, пожалуй, сквозной темой в этой книге. Действительно, его алгоритмические и математические свойства играют ключевую роль почти в каждой главе. Во многих отношениях данную книгу можно рассматривать как красочное развитие манускрипта нашего коллеги Алена Клайна: «Все, Что Вы Хотели Знать о Сингулярном Разложении (но боялись спросить)».
Пора сказать несколько слов о ссылках на имеющиеся программы. Мы ориентируемся на Eispack и Linpack, и почти каждая подпрограмма из этих пакетов так или иначе упоминается в тексте. Кроме того, многие технические доклады, ссылки на которые мы даем в аннотированных библиографиях, являются на самом деле описаниями программ. Следует подчеркнуть, однако, что с большей частью этих программ мы напрямую не работали (исключая Eispack и Linpack), а посему-caveat emptor (будьте осторожны (лат.)).
В создании этой книги нам помогало много специалистов. Richard Bartels помог подобрать ссылки и переработать черновик нескольких глав. Организованная им школа матричных вычислений, проведенная в августе 1977 г. в John Hopkins University, стимулировала написание этой книги.
Bob Flemmons, John Dennis, Alan Laub и Don Heller использовали фрагменты книги в преподавании и предложили нам многочисленные конструктивные замечания. George Cybenko очень помог нам в разделе о теплицевых матрицах. Во
Kagstrom сделал много ценных замечаний по нашей трактовке вычисления инвариантных подпространств. Per-Ake Wedin тщательно прочитал ранние версии гл. 5 и квалифицированно направлял последующие переработки. Окончательное название книги независимо предложили Uri Ascher и Roger Horn, которых мы и хотим здесь поблагодарить. Мы также благодарны автору анонимного обзора, внесшему много ценных предложений.
И последнее, по порядку, но не по значению, мы с радостью признаем влияние наших коллег Cleve Moler и Pete Stewart. Их работы, великолепно схватывающие дух нашей науки, существенно воздействовали на сбалансированность и стиль нашего собственного изложения.
Предисловие ко второму изданию
Две причины побудили нас написать переработанную и дополненную версию «Матричных вычислений». Во-первых, после пяти лет преподавания по прежнему изданию и многочисленных замечаний наших коллег стало ясно, что многое из написанного можно было написать лучше. Во многих доказательствах и выводах была достигнута большая ясность. Кроме того, мы приняли стилизованный вариант системы Matlab, облегчающий «матрично-векторное мышление». Другая новая черта второго издания - доведение рубрикации материала до уровня подразделов. Это должно облегчить пользование книгой как учебником и как справочником.
Вторая причина появления нового издания связана с расцветом параллельных матричных вычислений. Многопроцессорные ЭВМ революционизуют роль вычислений в науке и технике, и важно, чтобы вклад численной линейной алгебры в этот процесс был документально оформлен. Мы это делаем на машинно-независимом уровне, подчеркивая общие алгоритмические идеи в противовес конкретным реализациям. Как мы говорим в новой главе о параллельных матричных вычислениях, эта область очень подвижна, и литература наводнена исследованиями отдельных случаев. Несмотря на это, в области разработки алгоритмов можно набрать дюжину новых идей, играющих ключевую роль, которые, по всей вероятности, пригодятся нам еще в течение длительного периода и созрели для обсуждения на уровне учебника.
Вот обзор новшеств второго издания (по главам):
В гл. 1 (Умножение матриц) мы вводим обозначения и фундаментальные понятия на примере умножения матриц. Большое внимание уделяется приемам работы с блочными матрицами; добавлен также новый раздел о векторно-конвейерных вычислениях.
В гл. 2 (Матричный анализ) мы собрали математические основы, необходимые для вывода и анализа алгоритмов решения линейных систем и задачи наименьших квадратов.
Гл. 3 (Линейные системы общего вида) и 4 (Линейные системы специального вида) были дополнены новым материалом о «высокопроизводительной» организации гауссова исключения и разложения Холецкого. Акцент делается на реализации, богатые матрично-векторными и матрично-матричными умножениями. Был также добавлен подраздел о положительно полуопределенных матрицах.
В гл. 5 (Ортогонализация и наименьшие квадраты) появился новый материал о блочных преобразованиях Хаусхолдера. Мы также изменили порядок изложения с целью отделить обсуждение ортогональных разложений от решения задачи наименьших квадратов.
В гл. 6 (Параллельные матричные вычисления) мы, используя операцию gaxpy, вводим понятия вычислений над распределенной и общей памятью. Для этих двух моделей параллельных вычислений мы обсуждаем организацию перемножения матриц и различных матричных разложений.
В гл. 7 (Несимметричная проблема собственных значений) мы добавили новый подраздел о приведении к блочно-хессенбергову виду. В гл. 8 (Симметричная проблема собственных значений) внесены два более фундаментальных изменения. Раздел о методе Якоби был полностью переработан в свете последних достижений в параллельных вычислениях. Был также добавлен раздел о новом высокопараллельном алгоритме типа «разделяй и властвуй» для трехдиагональных матриц.
В гл. 9 (Метод Ланцоша) мы добавили подраздел о методе Арнольди. В гл. 10 (Итерационные методы решения линейных систем) расширено обсуждение метода сопряженных градиентов с переобуславливанием. Единственное существенное изменение в гл. 11 (Функции от матриц) и гл. 12 (Специальные вопросы)-это новый подраздел в § 12.6 о гиперболических модификациях.
Мы в большом долгу перед многими читателями, указывавшими нам на опечатки, ошибки и недостатки изложения первого издания. Для нас было удовольствием общение со столь заинтересованной и дружелюбно настроенной читательской аудиторией. Из большого количества наших корреспондентов мы хотели бы особо поблагодарить К. Bjorck, J. Bunch, J. Dennis, T. Ericsson, О. Hald, N. Higham, A. Laub, R. Le Veque, M. Overton, B. N. Parlett, R. Flemmons, 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 Duff из 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, Prentice Hall, Englewood Cliffs, NJ. [Имеется русский первод: Лоусон Ч., Хенсон Р. Численное решение задач метода наименьших квадратов.- М.: Наука, 1986.]
SEP Parlett В. N. (1980). The Symmetric Eigenvalue Problem, Prentice Hall, Englewood 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.M., Ikebe Y., KlemaV. С., and Moler С. В. (1970). Matrix Eigen- system Routines: EISPACK Guide, 2nd ed., Springer-Verlag, New York.
Smith B.T., Boyle J. M., Dongarra J. J., and Moler C.B. (1972). Matrix Eigensystem Routines: EISPACK Guide Extension, Springer-Verlag, New York.
Dongarra J., Bunch J.R., Moler C.B., and Stewart G. W. (1978). LINPACK User Guide, SIAM Publications, Philadelhia.
Таким образом, фраза «подпрограмма xyz имеется в пакете Linpack, гл. 2)» означает, что эта подпрограмма описывается во второй главе руководства по Linpack.
Алгольные версии многих подпрограмм из пакетов Linpack и Eispack собраны в книге
HACLA Wilkinson J. Н. and Reinsch С., eds. (1971). Handbook for Automatic Computation, Vol. 2, Linear Algebra, Springer-Verlag, New York. [Имеется русский перевод: Уилкинсон Дж., Райнш К. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра.-М.: Машиностроение, 1976.]
14 Как пользоваться этой книгой
Во время написания данной книги (1989), программы, реализующие многие из представленных в ней алгоритмов, можно было получить, отправив электронную почту по любому из адресов:
netlib@anl-mcs.arpa
netlib@research.att.com
researchlnetlib
Типичные запросы:
send index
{Список имеющихся библиотек}
send index for Unpack
{Список программ Linpack}
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 Т. F. and Van Loan С. 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 л• • • атпПусть R-множество вещественных чисел. Мы обозначаем через Rm х ” векторное пространство всех вещественных т х и-матриц:
АеГХп^А = (а^) =
АеГХп^А = (а^) =
' " ^1 л
• • • атп
' " ^1 л
• • • атп
atjeR.
В тех случаях, когда для обозначения матрицы используется заглавная буква (например, А, В, А), соответствующая строчная буква с индексом lj относится к (z, у)-му элементу этой матрицы (например, аи, Ь^, &и\ Кроме того, для (z, /)-го элемента матрицы А мы используем обозначение [Л]^. При детальной записи алгоритма мы ссылаемся на элементы матриц по правилам Фортрана: A (z, j\
Операции над матрицами
Основные манипуляции с матрицами включают:
транспонирование (Rm х п -> R" х т)
С=АТ^>с^ = а]Ь .
сложение (Rm Хп х Rm х ” -> Rm х ”)
С = А + В => с^ = аи + ЬФ
умножение матрицы на число (R х Rm х ” -> Rm х ”)
С = аА => см =
умножение матрицы на матрицу (Rm Xr х Rr х ” -> Rm х ”)
С= АВ= ^ aikbkj.
k= 1
Это те кирпичики, из которых строятся матричные вычисления.
Обозначения для векторов
Пусть R"- векторное пространство вещественных векторов:
xeR"xeR"х,- е R.
xeR"
xeR"
Мы обозначаем через х( z-ю компоненту вектора х; при записи алгоритмов мы также используем обозначение x(z).
Заметим, что мы отождествляем R” с R” х 1, так что элементы R” - это векто- ры-столбг{ы. С другой стороны, R1 х" состоит из векторов-строк;
xgR1 х п<=>х = (х1; ..., хп\
Если х- вектор-столбец, то у = хТ - вектор-строка.
Несколько «подозрительно» выглядит операция над векторами, называемая внешним произведением:
С = ху\ хеКт,уеКп.
Но это совершенно законное матричное умножение, поскольку количество столбцов в х совпадает с количеством строк в уТ.
Если С = хут, то си = х^у так что, например,
п
2 [4 5] = _3J
4 5
8 10
12 15_
Операции над векторами
Существуют четыре основные операции над векторами. Если aeR, xgR” и yezn, то мы имеем умножение вектора на число z = a х (zt = axi), сложение векторов z = х + у(г( = xt + у^, скалярное произведение с = хту (с = Х^х^) и покомпонентное произведение z = х. *у(^ = х^). Пятая операция - saxpy - настолько важна для матричных вычислений, что мы дополняем ею наш список основных операций над векторами, несмотря на то, что это делает наш список избыточным. Операция saxpy определяется следующим образом:
z = ах + у => zf = axt + ук
Название “saxpy” используется в пакете Unpack, в котором реализованы многие из приведенных в этой книге алгоритмов. Можно воспринимать “saxpy” как мнемонику для выражения «скаляр альфа, умноженный на х, плюс р> (scalar alpha х plus у).
Вычисление скалярных произведений и операций saxpy
Для записи алгоритмов мы решили использовать стилизованную версию языка Matlab. Matlab-это элегантная интерактивная система, идеально приспособленная для вычислений с матрицами. См. Coleman and Van Loan (1988, гл. 4). Наш способ записи вводится постепенно на протяжении этой главы; здесь мы начинаем с функции, вычисляющей скалярные произведения.
Алгоритм 1.1.1 (Скалярное произведение). По н-векторам х и у этот алгоритм вычисляет их скалярное произведение с = хт у.
function: с = dot(x, у
с = О
п = length (х)
forz = 1 ;п
С = с + X (0>’ (О end
end dot
В этой процедуре размерность векторов дается функцией length. Оператор for показывает, что переменная-счетчик z принимает значения 1, 2, ..., п. Значение скалярного произведения возвращается в с. Скалярное произведение двух и-векторов требует п умножений и п сложений. Менее формально - это О (и)-операция, в том смысле что объем работы линейно зависит от размерности.
Вычисление saxpy-это также О (и)-операция, но она возвращает не скаляр, а вектор:
Алгоритм 1.1.2 (Saxpy). По и-векторам х и у и скаляру а этот алгоритм вычисляет z = ах + у.
function: z = saxpy (а, х, у) п = length (х)
forz = 1:л
^(0 = а х^ + у(<) end
end saxpy
О формализме и стиле изложения
Необходимо подчеркнуть, что приводимые в этой книге алгоритмы, такие как dot и saxpy, лишь заключают в себе важнейшие вычислительные идеи, но никак не являются техническими инструкциями для написания программ. Более того, там, где того требует изложение, записи алгоритмов могут становиться весьма неформальными. Для описания вычислений в этом и в нескольких последующих разделах оказываются удобными функции системы Matlab, но дальше по ходу книги алгоритмы становятся слишком сложными для детализации на “z/’-уровне, и тогда мы прибегаем к менее формальной записи. Для читателя, который по первым главам приобретет интуитивное понимание матричных вычислений, это не должно представлять трудностей.
Умножение матрицы на вектор
Пусть A gRwx", и мы хотим вычислить произведение z = Ах, где xgR". Стандартный способ вычисления заключается в последовательном подсчете скалярных произведений
Zi = Z аИХГ
Это приводит к следующему алгоритму.
Алгоритм 1.1.3 (Умножение матрицы на вектор: Версия с доступом по строкам). По A gRw Хп и х g R” следующий алгоритм вычисляет z = Ах.
function: z = matvec.ij (А, х)
т = rows (Л); п = cols (Л)
z(l:m) = О
forz = 1 :т for/ = i:n z(i) = z(i) + A(i, J)x(j) end
end
end matvec.ij
Функции rows и cols принимают в качестве аргумента матрицу и возвращают количество ее строк и столбцов соответственно. Оператор z(l:m) = 0 инициализирует г как нулевой m х 1-вектор.
Альтернативный алгоритм получится, если рассмотреть z = Ах как линейную комбинацию столбцов матрицы Л, например
1 2
3 4
5 6
"7"
-8_
=
1-7 + 2-8
3-7 + 4-8
5-7 + 6-8
= 7
1
3
5
+ 8
2
4
6
=
23
53
83
Алгоритм 1.1.4 (Умножение матрицы на вектор: Версия с доступом по столбцам). По
А е Rm х п и х е R” следующий алгоритм вычисляет z = Ах.
function: z = matvec.ji (А, х)
т = rows (Л); п = cols (Л); z(l:m) = 0
for/ = Vn
for / = 1 :т
z^ = z^ + x^A^.j)
end end end matvec. ji
Заметим, что цикл по i выполняет операцию saxpy. Мы получили столбцовую версию, переосмыслив на уровне векторов алгоритм матрично-векторного умножения. Другим способом мы могли бы вывести столбцовую версию, поменяв порядок следования циклов в строчном алгоритме. В матричных вычислениях важно осознавать алгебраический смысл модификаций программ, таких как перестановка циклов.
Разбиение матрицы на строки и столбцы
Анализ внутренних циклов показывает, что в алгоритме 1.1.3 доступ к элементам матрицы А осуществляется по строкам, а в алгоритме 1.1.4-по столбцам. Чтобы яснее охарактеризовать эти методы доступа, нам понадобится язык блочных разбиений матриц. С точки зрения строк, матрица представляет собой набор векторов-строк:
A6UmXn^A =A6UmXn^A =дкеК”.дкеК”.(1.1.1)(1.1.1)
A6UmXn^A =
A6UmXn^A =
дкеК”.
дкеК”.
(1.1.1)
(1.1.1)
Это разбиение матрицы А на строки. Так, разбиение на строки матрицы "1 2~
3 4_5 6_
означает, что мы предпочитаем рассматривать А как набор строк, где
«I =[12], «1 = [3 4], аТ3 = 15 61.
С учетом разбиения на строки (1.1.1) мы видим, что функция matvec.ij устроена, в сущности, следующим образом:
for / = 1 :т zt = а{ х end
Иначе матрицу можно рассматривать как набор векторов-столбцов:
АеГхи^а = [я19..., аДакЕКт.(1.1.2)
Это разбиение матрицы А на столбцы. Для вышеприведенного примера мы положили бы ах и аг равными первому и второму столбцу матрицы А соответственно:
1 ах = 3
5
2
4
6
С учетом разбиения (1.1.2) мы видим, что функция matvec.ji - это использующая saxpy процедура, в которой доступ к элементам матрицы А идет по столбцам:
z(l :т) = О
for/ = \vn
Z = Z + XjUj end
Отметим, что в векторе z накапливается сумма, значение которой обновляется операциями saxpy.
Использование двоеточия
Удобным способом сослаться на какой-либо столбец или строку матрицы является использование двоеточия. Обозначим через А (к, :) к-ю строку матрицы А(АеНтХпу
А^к, :) =а*„].
и\к^тки\к^ткАналогично, обозначим через А(:, к) к-й столбец матрицы А:
и\к
^тк
и\к
^тк
А(:, к) =
Используя эти соглашения, мы можем переписать matvec. ij в виде
for i = 1 ;тfor i = 1 :т
z^ = АЦ, :)х илиz^ = dot(/l(z, :), x)
endend
Использующая saxpy версия matvec. ji запишется в виде
z(l:m)= 0z(l:m)=0
for/ =1 :nfor/=1:n
z = z + x(j)A (:, j) илиz = saxpy Vx^jy A (:, jy z)
endend
При описании матричного алгоритма важно верно выбрать уровень и стиль описания. Использование двоеточия позволяет исключить из рассмотрения внутренние циклы, тем самым фокусируя внимание на операциях более высокого уровня. Используя функции, мы можем выявить ключевые вычислительные ядра, которые могут отражать хорошие программные разработки, например dot и saxpy.
Модификация внешним произведением
Как мы видели, метод доступа является важным атрибутом матричного алгоритма. По причинам, о которых мы скажем позже, предпочтительными оказываются алгоритмы, выбирающие элементы массивов по столбцам. Так, версия matvec. ji в большинстве случаев предпочитается версии matvec. ij. Вспомним, что единственная разница между этими версиями - порядок следования двух циклов. Важно осознать эту взаимосвязь между порядком следования циклов и методом доступа
к данным. Для дальнейшей иллюстрации этого рассмотрим модификацию матрицы А внешним произведением:
А^-А -V хуТ, AeRmX\ xcRm, yeRV
Здесь 4- означает присваивание. Вспомним, что хуг-это просто частный случай произведения матриц, так что элементы матрицы А перевычисляются по формуле
aij = aij + XiVp Z = ^mJ = ^*JL
Версия “zj” этого вычисления говорит, что надо к каждой строке матрицы А прибавить вектор, кратный ут:
for i = 1 :m
A (J,:) = A (z,:) + х^у1
end
С другой стороны, версия “jf'
for / = 1 :и
4 С, 7) = Л(:,7) + у(7)х end
выбирает элементы матрицы А по столбцам. Заметим, что обе процедуры используют saxpy.
Вычисление операции gaxpy
Модификация матрицы внешним произведением векторов занимает большое место в традиционных формулировках многих важных матричных алгоритмов. Оказывается, большинство этих алгоритмов можно переформулировать так, что доминирующей становится операция gaxpy. Операция gaxpy - это просто вычисление вида
z = y-v Ах, xgR\ yeRm, AeRmXn.
Как и “saxpy”, термин “gaxpy” обязан своим происхождением программному обеспечению. Можно рассматривать его как мнемонику для фразы «произвольная матрица А, умноженная на х плюс у” (general Ах plus у\ Как будет объяснено в § 1.4, формулировки посредством gaxpy (должным образом реализованные), как правило, предпочтительнее формулировок посредством модификации внешним произведением. Это очень важное с вычислительной точки зрения положение, так что gaxpy достойна формального алгоритмического представления:
Алгоритм 1.1.5 (Gaxpy). По xeR”, yeR™ и AeRmXn этот алгоритм вычисляет 2 = у + Ах.
function: 2 = gaxpy (Л, х, у^
п = cols (Л); 2 = у
{QTj = 1 \И
2 = 2 + Х^А^,Й end
end gaxpy
Мы организовали вычисления так, что в векторе 2 накапливается сумма, значение которой обновляется последовательностью операций saxpy. При такой формулировке мы видим, что gaxpy является обобщением saxpy.
Понятие уровня
Скалярное произведение и saxpy-это примеры операций «уровня 1». Для операций уровня 1 количество данных и количество арифметических действий линейно зависят от размерности операции. Модификация т х «-матрицы внешним произведением или операция gaxpy производят квадратичный объем работы О^тп^ над квадратичным количеством данных О (тп\ Это примеры операций «уровня 2».
Разработка матричных алгоритмов, содержащих много операций высокого уровня, является областью интенсивных исследований, и мы постоянно будем возвращаться к этой теме в нашей книге. К примеру, для высокой производительности алгоритма решения систем линейных уравнений может потребоваться, чтобы гауссово исключение было организовано через операции gaxpy уровня 2. Для этого понадобится некоторое переосмысление обычного алгоритма, так как в стандартной формулировке гауссово исключение описывается на уровне 1, например, «умножить строку 1 на константу и прибавить результат к строке 2».
Кроме того, некоторые алгоритмы можно организовать таким образом, что в них будет много умножений матрицы на матрицу-это операция уровня 3. Операции уровня 3 производят кубичный объем работы над квадратичным количеством данных. Если А, В и С-матрицы, то вычисления С = С + АВ и С = С + + А В- примеры операций уровня 3. Эти состоящие из большого количества действий вычисления могут быть организованы многочисленными способами, как мы сейчас продемонстрируем на примере обычного умножения матриц С = АВ.
Умножение матриц
Рассмотрим задачу вычисления произведения 2 х 2-матриц С = АВ. В терминах скалярных произведений каждый элемент матрицы С вычисляется как скалярное произведение:
1 21 Г5 61 21 Г5 61-5 + 2-7 1-6 + 2-81-5 + 2-7 1-6 + 2-83 43 47 83-5 + 4-7 3-6 + 4-87 83-5 + 4-7 3-6 + 4-8
1 21 Г5 6
1 21 Г5 6
1-5 + 2-7 1-6 + 2-8
1-5 + 2-7 1-6 + 2-8
3 4
3 4
7 83-5 + 4-7 3-6 + 4-8
7 83-5 + 4-7 3-6 + 4-8
В версии, использующей saxpy, каждый столбец матрицы С рассматривается как линейная комбинация столбцов матрицы А:
Наконец, в версии, использующей внешние произведения, С получается как сумма внешних произведений:
Оказывается, что, несмотря на математическую эквивалентность всех трех версий, их реальная производительность может существенно различаться из-за разных способов доступа к памяти. Мы продолжим обсуждение этого вопроса в § 1.4, а пока рассмотрим более детально обозначенные выше три подхода к умножению матриц. Это позволит нам поупражняться в конструировании различных вариантов алгоритмов и записи их с использованием введенных обозначений.
Умножение матриц с использованием скалярных произведений
Пусть Л 6 Rw х r, 5е Rr х п, и мы хотим вычислить С = АВ. Стандартная процедура заключается в последовательном вычислении элементов С в порядке слева направо сверху вниз:'
Алгоритм 1.1.6 (Умножение матриц: версия, использующая скалярное произведение).
По AeRmXn и BeRrXn алгоритм вычисляет С = АВ.
function: С = matmat. Цк(Л, 5)
т = rows (Л); г = cols(); п = cols (5)
C(l:m, 1:и) = О
for i = 1 ;т
for / = 1: п for к = 1: г с(/,у) = с(/,у) + л(/?к^.
end end end
end matmat. ijk
В этом процедуре с- вычисляется как скалярное произведение i-Й строки матрицы А и у-го столбца матрицы В. На языке блочных матриц, если мы имеем разбиения
А =: , akEW
и
B=lbv..„ ЬДbkEW,
то алгоритм 1Л.6 описывается на уровне 1 как
for i = 1 ;т
for] = V.n-
СЧ = “I bi end
end
Заметим, что задача цикла по у-вычислить z-ю строку матрицы С. Мы можем подчеркнуть это, записав
for i = 1 :т
с[ = а[ В
end
где cf i-я строка С. Это описание алгоритма 1Л.6 в терминах матрично-векторных произведений можно рассматривать как описание уровня 2. Конечно, на самом верхнем уровне останется запись С = АВ, не содержащая ни циклов, ни индексов.
Правильный выбор уровня описания важен как для изложения теоретических результатов, так и для разработки программного обеспечения.
Умножение матриц с использованием gaxpy
Предположим, что А, В и С разбиты на столбцы:
А = [«!,..., аД a$eRm,B = \bv,...,bn\,b)eW,
и мы желаем вычислить С = АВ. Поскольку
с,= £ bkjakJ = l:n, к = 1
мы видим, что каждый столбец С является линейной комбинацией столбцов А. Вычисление этих сумм можно организовать как последовательность операций saxpy:
Алгоритм 1.1.7 (Умножение матриц: gaxpy-версия). По ЛеКшХг и BeRrXn следующий алгоритм вычисляет С = АВ.
function: С = matmat. jki (А, В)
т = rows (Л); п = cols (5); r = cols (Л)
С(1:т, 1:и) = О
fory = Vn
for к = 1: г
for i = 1:т
CUJ^CUJHA^ k)B(k,j)
end end end
end matmat. jki
Мы вывели matmat. jki, разбив по столбцам матрицы в равенстве С = АВ, но можно было получить его также изменением порядка циклов в функций matmat. ijk. Ясно, что “у/с/^’-алгоритм состоит из операций gaxpy, поскольку его можно записать в виде
С^.т, 1:и) = 0
fory = 1 :п
С С. у) = gaxpy (Л, В(:,Д (:, ;)) end
Умножение матриц с использованием внешних произведений
Давайте проделаем перестановку циклов еще раз, а затем проанализируем ее смысл в терминах линейной алгебры.
Алгоритм 1.1.8 (Умножение матриц: версия, использующая внешние произведения). По ЛеКтХг и BeRrXn алгоритм вычисляет С = АВ.
function: С = matmat.kji (Л, 5)
т = rows (Л); п = cols (5); г = cols (Л)
С(1:т, 1:и) = 0
for к = 1:г
fory = Vn forz = Vm C(iJ) = C(i,j) + A(i, к)В(кД end
end
end'
end matmat. kji
В этой “куГ’-формулировке происходит вычисление всех элементов с^ одновременно. Для данного к два внутренних цикла осуществляют модификацию матрицы С внешним произведением С С + ак Ь^, где
(1.1.3)(1.1.3)А = [а^..., ar], akeRm
(1.1.3)
(1.1.3)
(1.1.4)
Внутренний цикл в функции matmat. kji выполняет операцию saxpy. Именно, к у-му столбцу матрицы С прибавляется вектор, кратный ак.
Перестановки циклов
Двойной цикл в алгоритме умножения матрицы на вектор может быть переупорядочен 2! = 2 способами. Соответственно имеется 3! = 6 способов упорядочения тройного цикла в алгоритме умножения матрицы на матрицу. Три варианта уже были в деталях изложены выше: ijkjki и kji. Каждый из шести возможных вариантов характеризуется своим способом доступа к данным и доминирующей операцией (скалярное произведение, saxpy). Эти сведения собраны в табл. 1.1.1. Какой же вариант предпочтительнее? Ответ на этот вопрос зависит от архитектуры компьютера, на котором будет реализован алгоритм. Подробнее это обсуждается в § 1.4.
Таблица 1.1.1. Матричное умножение; упорядочение и свойства
Порядок цикла
Внутренний цикл
Средний цикл
Внутренний цикл Доступ к данным
ijk jik
скалярное произведение скалярное
вектор х матрица
матрица х вектор
А на строку, В на столбец
А на строку, В на столбец
ikj
saxpy
строчное gaxpy
В на строку
jki
saxpy
столбцовое gaxpy
А на столбец
kij
saxpy
строка внешнего произведения
В на строку
kji
saxpy
столбец внешнего произведения
А на столбец
О матричных соотношениях
Изучая умножение матриц с использованием внешних произведений, мы по существу установили соотношение
АВ = акЬк,
к = 1
где ак и Ьк определены в (1.1.3) и (1.1.4).
В последующих главах мы получим очень много матричных соотношений. Иногда они выводятся алгоритмически, как это было в приведенном выше примере с внешним произведением, а в других случаях их приходится доказывать на уровне “z/’-компонент. Как пример этого стиля доказательств приведем важный результат, характеризующий транспонирование произведения матриц.
Теорема 1.1.1. Если AeRmXr и BeRrXn, то (ABf = ВТ АТ.
Доказательство. Если С = (АВ)Т, то
= ЕМ^)7Ъ = (^^)л = £
k= 1
С другой стороны, если D = Вт Ат, то
^ = [8Т^Г]и = £ ^BT^ATXj= £ bkiajk,k=lk=l
так что С = D. □
Как свидетельствует это доказательство, погружение на “(/^’’-уровень отнюдь не тождественно глубокому проникновению в материал. Однако иногда это единственный способ получить алгебраический результат высокого уровня.
Об описании алгоритмов
На протяжении этой книги нам понадобится описывать алгоритмы на разных уровнях детализации. В этом разделе все алгоритмы были записаны формально, как функции. В качестве примера более вольного стиля записи алгоритмов приведем процедуру, вычисляющую матричное произведение С = Ат В.
Алгоритм 1.1.9. По двум m х «-матрицам А и В алгоритм вычисляет произведение С = Ат В.
fori = 1:«
for/ = 1:«
СЦ, Д = А(1 :m, i)T В(1 ;т, Д
end end
Комплексные матрицы
Наше внимание в этой книге сфокусировано на вычислениях с вещественными матрицами - для упрощения обозначений, а также ввиду того, что большинство реальных задач имеет дело с вещественными данными. Однако в последующих разделах мы будем работать и с комплексными матрицами-там, где это уместно.
Для начала введем некоторые обозначения. Векторное пространство комплексных т х «-матриц обозначается через СтХп. Умножение на скаляр, сложение и перемножение комплексных матриц такое же, как и в вещественном случае. Однако транспонирование превращается в сопряженное транспонирование:
С = Ан => си = aji.
Векторное пространство комплексных «-векторов обозначается С”. Скалярное произведение комплексных «-векторов вычисляется по правилу
5 = ХН у = £ Х^.
Наконец, если А = В + 1Се Ст х ”, то мы будем обозначать вещественную и мнимую части А через Re (Л) = В и Im (Л) = С соответственно.
Задачи
Пусть даны ЛеЕ"*" и xeRr. Используя saxpy, напишите алгоритм, вычисляющий первый столбец матрицы М = (А — х11)...(А — хг1\
При умножении 2 х 2-матрицы обычным способом требуется вычислить восемь произведений: a11bYY , <hib12, a2vbvv, a2lbl2 , aV2b2V , al2b22 , a22b2l , «22^22 • Составьте таблицу, показывающую порядок выполнения этих произведений для всех шести вариантов следования циклов в алгоритме умножения матриц: ijk, jik, kij, ikj, jki, kji.
Используя функции dot и saxpy, постройте алгоритм, вычисляющий С = (хуТ^к, где .V и у /7-векторы.
Пусть имеются вещественные п х ^-матрицы S, D, Е, F. Укажите способ вычисления вещественных матриц А и В, использующий только три обращения к функции matmat. jki с вещественными п х ^-аргументами, где (А + IB) = (С + /D)( + IF). Подсказка. Вычислите W=(CyD)(E-F).
Замечания и литература к § 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., Hammarling S., and Hanson R. J. (1988). “An Eh tended 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., Duff 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., Hanson R.J., Kincaid D. R., and Krogh F. T. (1979a). “Basic Linear Algebra Subprograms 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.
Мы также рекомендуем книгу
Rice J. 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.
Учет структуры матриц
Эффективность заданного матричного алгоритма зависит от многих характеристик. В этом разделе мы рассмотрим наиболее очевидную из них - количество арифметических операций и объем памяти, требуемые процедурой. Менее очевидны такие характеристики, как способ доступа к памяти, шаг выборки и еще целый сонм издержек, возникающих при пересылке данных. Эти вопросы рассматриваются, в частности, в § 1.4.
Мы продолжаем обкатывать новые ключевые идеи на примерах умножения матрицы на матрицу и матрицы на вектор. Для демонстрации учета структуры матриц мы избрали свойства ленточности и симметричности. Ленточные матрицы содержат много нулевых элементов, поэтому неудивительно, что умножение ленточных матриц позволяет уменьшить по сравнению с общим случаем и арифметические затраты, и объем требуемой памяти. В этом контексте мы обсуждаем структуры данных и понятие «флопа».
Другой пример учета особенностей структуры доставляют симметричные матрицы. Решение систем линейных уравнений и задач на собственные значения с симметричными матрицами играет видную роль в матричных вычислениях, поэтому важно приобрести хороший навык работы с ними.
Мы заканчиваем этот раздел замечанием о записи результатов вычислений на место входных данных-это еще один прием для контроля объема хранимой информации.
Ленточные матрицы и обозначения для них
Будем говорить, что матрица AeRmXn имеет нижнюю ширину ленты р, если' а^ = 0 для i > j + р, и верхнюю ширину ленты q, если из j > i + q следует a^ = 0. Вот пример матрицы 8 х 5 с нижней шириной ленты 1 и верхней шириной ленты 2:
" X
X
X
0
0 "
Здесь крестики означают пр(
XXX 0 х х 0 0 х ООО ООО ООО ООО
)извольные
х 0 X X
X X х х . 0 х 0 0 0 0 _ ненулевь
те (вообще говоря) элементы
матрицы. Такие обозначения очень удобны для показа структуры размещения
Таблица 1.2.1.
Тип матрицы
Нижняя ширина ленты
Верхняя ширина ленты
диагональная
0
0
верхняя треугольная
0
п — 1
нижняя треугольная
т — 1
0
трехдиагональная
1
1
верхняя двухдиагональная
0
1
нижняя двухдиагональная
1
0
верхняя хессенбергова
1
п — 1
нижняя хессенбергова
т — 1
1
нулевых и ненулевых элементов в матрице, и мы будем интенсивно их использовать. Некоторые часто встречающиеся типы ленточных матриц собраны в табл. 1.2.1.
Действия с диагональными матрицами
Для диагональных матриц у нас есть специальные обозначения. Если DeRmX", то
D = diag^, ..., dq\ q = min{m, n^odi = du.
Если D - диагональная, A - произвольная матрица, то произведение DA масштабирует А по строкам, a AD-no столбцам.
Пусть у = Dx, где хе R”, у е R”. Тогда у является покомпонентным произведением векторов: у = d. *х. Здесь вектор de В? составлен из диагональных элементов матрицы D.,
Умножение треугольных матриц
Мы начнем осваивать технику работы с ленточными матрицами на примере матричного умножения С = АВ, где и Л, и В-верхние треугольные п х «-матрицы. Наводящие соображения нам подскажет следующий пример с п = 3:
011^11 011^12 4- 012^22
011^13 4" 012^23 4- O13&33
С =0^22^22
022^23 4- 023^33
_00
аззЬзз_
Этот пример позволяет предположить, что результат С является верхней треугольной матрицей, элементы которой вычисляются как укороченные скалярные произведения. В самом деле, поскольку alk bkj = 0 при к < / или j < к, мы видим, что си = Zk=i aik^kj^ откуда вытекает
Алгоритм 1.2.1. По двум верхним треугольным п х «-матрицам А и В следующий алгоритм вычисляет С = АВ.
С(\\п, 1:«) = 0
for / = 1:«
for/ = 1:«
for к = r.j
C(i,j) = C(i,j)iA(i, k)B(k,j)
end end end
Чтобы дать количественную оценку достигнутой в этом алгоритме экономии, нам нужны инструменты для измерения объема вычислительной работы.
Флопы
Очевидно, умножение верхних треугольных матриц требует меньшего количества арифметических операций, чем умножение произвольных матриц. Один из
способов количественной характеристики разницы дает понятие флопа. Флоп1)-это одна операция с плавающей точкой (floating point operation). Скалярное произведение или операция saxpy размерности и содержат 2п флопов, поскольку каждая из них состоит из п умножений и п сложений.
Умножение матрицы на вектор z = Ах, где A gRw х п, так же, как и модификация матрицы внешним произведением векторов С = А А хуТ, содержит 2тп флопов. Умножение матриц С = АВ, где AeRmXr и ВегХп, содержит 2тпг флопов.
Для оценки количества флопов обычно суммируют арифметические затраты для наиболее глубоко вложенных операторов алгоритма. Для умножения матриц таковым является оператор
С (z, у) = С (z, у) + Л (z, кШМ\
который содержит два флопа и выполняется тпг раз, как показывает подсчет количества проходов циклов. Отсюда мы заключаем, что умножение произвольных матриц требует 2тпг флопов.
Теперь найдем объем вычислительной работы для алгоритма 1.2.1. Заметим, что на вычисление c^i <у) затрачивается 2(/ — z + 1) флопов. Используя оценки
дУд + 1) _ д1
2~ 2
И
326’
мы находим, что умножение треугольных матриц требует примерно пг (3 флопов:
ппп п-Н 1
X £ 2U-i+ 1)= Z Z 2/»
= 1 j = 1,= 1 ;=i
” 2(и —z+l)2" , п3
; X= X 1 ~
s=i2^3
Мы отбрасываем слагаемые низших порядков, поскольку их включение ничего по существу не добавляет к той информации, которую уже несет оценка количества флопов. Например, для алгоритма 1.2.1 точный подсчет количества операций дает и3/3 + п2 + 2nj3 флопов. Для больших п (в типичном случае именно эта ситуация представляет интерес) точная формула не дает никакой новой полезной информации по сравнению с нашей оценкой п2/3.
Оценка количества флопов-это по необходимости грубый подход к измерению эффективности программ, поскольку он игнорирует затраты на индексацию, обмены с памятью и многочисленные прочие издержки, возникающие при исполнении программы на компьютере. Из сравнения количества флопов не следует делать далеко идущих выводов; так, мы не можем заключить, что умножение треугольных матриц в шесть раз быстрее, чем умножение квадратных матриц. Считать флопы - это лишь «быстрая и грязная» бухгалтерия, ухватывающая лишь одно из нескольких измерений эффективности. Как мы увидим, для различных высокопроизводитель-
1} В первом издании этой книги мы определили флоп как объем вычислительной работы, затрачиваемый на операцию вида а^ = а^ + aikakj, т.е. сложение и умножение с плавающей точкой плюс некоторые издержки на индексацию. Таким образом, один «старый флоп» содержит два «новых флопа». Определяя флоп как единичную операцию с плавающей точкой, мы делаем выбор в пользу большей точности при измерении арифметической сложности алгоритмов. Кроме того, новые флопы вытеснили старые флопы из работ по суперкомпьютерам, к великой радости производителей, чьи машины благодаря новой терминологии в одночасье удвоили свою скорость! После некоторых мучительных раздумий мы решили присоединиться к этой перемене.
ных архитектур эффективность такого алгоритма, как умножение матриц, в существенно большей степени зависит от коммуникационных издержек, и более точное измерение эффективности могло бы потребовать учета количества операций saxpy и длины векторных операндов.
Еще раз об использовании двоеточия
Скалярное произведение, вычисляемое циклом по к в алгоритме 1.2.1, можно записать компактно, если обобщить введенное в § 1.1.9 использование двоеточия. Пусть Л g R™ х" и целые числа р, q и г удовлетворяют неравенствам 1 < р < q < п и 1 < г < т. Тогда определим
^(n p:q) = [arp,..., ar, ] е R1 х («"₽+°.
Аналогично, если 1 < р < q < т и 1 < с < п, то
A^p.q, с) =A^p.q, с) =eR9”^1.eR9”^1.
A^p.q, с) =
A^p.q, с) =
eR9”^1.
eR9”^1.
С использованием этих обозначений алгоритм 1.2.1. перепишется в виде:
С(1:«, 1:«) = 0 fori = 1 :п for/ = 1 ;п
C(z, у) = C(z, у) + А о; rj)B(rj^) end end
Упомянем еще одно добавление к нашим обозначениям. При использовании двоеточия допускаются отрицательные приращения. Так, если х и у -«-векторы, то 5 = хТ у(п: — 1:1) есть сумма
* = X
i = 1
т. е. свертка векторов х и у.
Хранение ленточных матриц
(1.2.1)(1.2.1)Пусть Л g R” х ” имеет нижнюю ширину ленты р, верхнюю ширину ленты q, и предположим, что р и q существенно меньше, чем п. Такая матрица может быть размещена в (р + q + 1) х «-массиве A.band при соглашении, что
(1.2.1)
(1.2.1)
в § 1.2.1, то мы имеем:
A.band =
0
0
0
«12
«13
«23
«24
«34
«35
«45
«и
«22
«33
«44
«55
«21
«32
«43
«54
0
аи = A.band(z -j + q + 1, У)
для всех пар (z, У), попадающих внутрь ленты. Так, если и = 5, р = 1 и q = 2, как
Здесь «О»-неиспользуемые элементы массива. С такой структурой данных алгоритм умножения матрицы на вектор с выборкой по столбцу может быть реализован
следующим образом:
Алгоритм 1.2.2. Пусть Л g R" х " имеет нижнюю ширину ленты р, верхнюю ширину ленты q и хранится в формате A.band (1.2.1). Если xgR”, то следующий алгоритм вычисляет z = Ах.'
z(l:n) = О
for/ = 1:п
ztop = rnax(l, j- qY zbot = min (и, j + p^
atop = max(l, q + 2 -j\ abo, = atop + zbo( - ztop
z(ztop:zbot) = z(z,„p:zbol) + x(J)A.band(a,op:abo„ J) end
Заметим, что, храня матрицу А по столбцам в массиве A.band, мы получаем процедуру, использующую saxpy с выборкой по столбцам. Действительно, алгоритм (1.2.2) получается из matvecji, если учесть, что в каждой операции saxpy участвует вектор, содержащий лишь небольшое количество ненулевых элементов; для нахождения позиций этих элементов используется целочисленная арифметика. В результате алгоритм содержит примерно 2п^р-V q-V \^ флопов, в предположении что р и q много меньше п.
Симметрия
Будем говорить, что матрица A gR” х п симметрична, если АТ = А. Так, матрица
1 2 3
2 4 5
3 5 6
симметрична. Объем требуемой для хранения памяти можно уменьшить в два раза, если хранить только нижний треугольник матрицы А в одном векторе; в нашем примере A.Dec = [1 2 3 4 5 6]. Вообще, в этом структуре данных элемент а^ хранится следующим образом:
ац = A.vec^tj — 1)и -JM - 1)/2 + /)(/>».(1.2.2)
Посмотрим, как будет выглядеть алгоритм умножения матрицы на вектор, если матрица А размещена в массиве A.Dec.
Алгоритм 1.2.3. Пусть A g R" х п симметрична и хранится в массиве A.dcc, согласно (1.2.2). По xgR" следующий алгоритм вычисляет z = Ах.
z(l:n) = О
for/ = 1:п
for i =1:7—1
z(z) = z^ + A.Dec^i - 1)и - z(z — l)/2 + j^x^ end for z = j:n
z^ = z^ + A.Dec((j - l)w -JU - l)/2 + iVkh
end end
Этот алгоритм затрачивает те же самые 2п2 флопов, что и умножение произвольной матрицы на вектор. Обратите внимание, какой неуклюжей стала запись вследствие использования специальной структуры данных для хранения матрицы.
Хранение по диагоналям
Если в алгоритме осуществляется выборка элементов массивов, то необходимо стараться так организовать вычисления, чтобы внутренние циклы обращались к данным, расположенным в последовательных ячейках памяти. Например, для двумерных фортрановских циклов это сводится к написанию процедур таким образом, чтобы доступ к элементам матриц шел по столбцам, как обсуждалось в § 1.1. Проблема с алгоритмом 1.2.3 в том, что первый цикл по i не обращается к последовательным элементам массива. Это недостаток избранной структуры данных.
Чтобы обойти эту проблему, рассмотрим другую схему компактного хранения симметричных матриц, в которой матрица хранится по диагоналям. Если
1 2 3
А =А =2 4 5
А =
А =
3 5 6
то при хранении по диагоналям А представляется вектором A.diag = [1462 5 3].
Вообще, если i ^ j, то
(1.2.3)(1.2.3)а1л.кЛ = A.diag (i + пк — к (к — 1)/2) (к ^ 0).
(1.2.3)
(1.2.3)
Введем обозначения, упрощающие описание использования этой структуры данных для умножения матрицы на вектор.
Для А е R"1 х п пусть D (A, k)eRmXn означает матрицу, содержащую к-ю диагональ А:
ЦДА^ЦДА^atp j = z + к, 1 < i ^ т, 1 < j ^ п, . 0в противном случае.
ЦДА^
ЦДА^
Так,Так,АА123123245245356356■ оо о■ оо о0000003003000 2 0 '0 0 50 0 00 2 0 '0 0 50 0 0100100о40о400 о60 о6Р(Л,2)’ 0 02 00 5Р(Л,2)’ 0 02 00 50 "000 "00++Р(Л,0)Р(Л,0)Р(Л,-1)Р(Л,-1)d^aa^’ 0 0d^aa^’ 0 0о3о3о оо оо о оо о оР(Л,-2)Р(Л,-2)
Так,
Так,
А
А
1
2
3
1
2
3
2
4
5
2
4
5
3
5
6
3
5
6
■ о
о о
■ о
о о
0
0
0
0
0
0
3
0
0
3
0
0
0 2 0 '
0 0 5
0 0 0
0 2 0 '
0 0 5
0 0 0
1
0
0
1
0
0
о
4
0
о
4
0
0 о
6
0 о
6
Р(Л,2)
’ 0 0
2 0
0 5
Р(Л,2)
’ 0 0
2 0
0 5
0 "
0
0
0 "
0
0
+
+
Р(Л,0)
Р(Л,0)
Р(Л,-1)
Р(Л,-1)
d^aa^
’ 0 0
d^aa^
’ 0 0
о
3
о
3
о о
о о
о о о
о о о
Р(Л,-2)
Р(Л,-2)
Возвращаясь к нашему способу хранения по диагоналям, мы видим, что ненулевые элементы матриц D(A, 0), D(A, 1), ..., D (А, п — 1) хранятся последовательно в векторе A.diag согласно (1.2.3). Умножение матрицы на вектор z = Ах может быть организовано следующим образом:
И — 1
z = D(A, 0)х + ^ ф(А, к) + D(A, к)Т)х.
к = 1
Произведения D(A, к)х и D(A, к)т х обращаются к последовательно хранящимся данным. Проработав детали, мы получаем
Алгоритм 1.2.4. Пусть TgR”x” симметрична и хранится в массиве A.diag согласно (1.2.3). По xgR” следующий алгоритм вычисляет z = Ах.
for / = 1:л
z(z) = A.diag$x$
end
for/с = 1:л — 1
t = nk — k(k — 1)/2
(z = z + D(A, k)x}
for i = X:n — k
z(z) = z(0 + A.diag(i + Z)x(z + k)
end
{z = z + D(A, k)Tx}
for / = X\n - k
z(i + k) = z(i + k) + A.diag(i + f)x(z)
end end
Здесь внутренние циклы выполняют не операцию saxpy, а покомпонентное произведение векторов (см. § 1.1.4). Заметим, что во внутренних циклах осуществляется доступ к последовательно расположенным в памяти данным.
Для ясности мы сопроводили приведенный выше алгоритм комментариями. Комментарии заключены в фигурные скобки.
Запись поверх входных данных
Основным мотивом алгоритмов из этого раздела было экономное использование памяти. Еще один способ ограничить объем требуемой памяти - запись результатов вычислений на место входных данных. Рассмотрим задачу перемножения п х «-матриц С = АВ с условием, что получающаяся на выходе матрица С должна быть записана на место входной матрицы В. Будем отталкиваться от алгоритма без перезаписи, полученного в § 1.1.15:
С(1:«, 1:«) = 0
for/ = Х:п
fork = Х:п
fori = Х:п
C(iJ) = C(ij)H(i, k)B(kJ)
end end
end '
Здесь столбец BQ, j) нужен на протяжении всего цикла по к, поэтому корректная версия с перезаписью не может быть получена простой подстановкой В вместо С и опущением инициализации С = 0. Для хранения /-го столбца матрицы С требуется рабочий массив длины п, прежде чем можно будет писать поверх BQ.,jY
forj = Х:п
w (1:«) = 0
for к = Х;п
for / = Х.п
w$ = w(z) + A (i, к) Щк, Й
end
end
BQ,jX = wQ}
end
В этом примере требуется рабочий массив линейных размеров (по п\ Обычно это несущественно для процедур, содержащих двумерные массивы того же порядка.
Задачи
Постройте алгоритм, записывающий А1 на место А, где матрица А: (а)-верхняя треугольная, (Ь)-квадратная. Добивайтесь наименьшего объема дополнительной памяти.
Пусть A eR” х п- верхняя хессенбергова матрица и ^ , ... , Хг- данные числа. Постройте использующий saxpy алгоритм для вычисления первого столбца матрицы М = (А — XVI)... ...(А — Хг1).
Постройте использующий saxpy с выборкой по столбцам алгоритм для умножения п х «-матриц С = АВ, где А -верхняя, В -нижняя треугольная матрица.
Обобщите алгоритм 1.2.2 на случай прямоугольных ленточных матриц. Не забудьте описать выбранную структуру данных.
Матрица A eR” х п называется эрмитовой, если Ан = А. Если А = В 4- 1С, то, как легко показать, ВТ = В и Ст =—С. Пусть А размещена в массиве A. herm так, что A.'herm(ij) содержит Ьи при i ^ j и с- при j > L Используя эту структуру данных, напишите процедуру умножения матрицы на вектор, вычисляющую Re(z) и Im(z) по Re(x) и Im(x), так что z = Ах.
Пусть X е R” х р и А е R” х ”, где матрица А симметрична и хранится по диагоналям. Постройте алгоритм, вычисляющий Y = Хт АХ и записывающий результат по диагоналям. Используйте отдельные массивы для хранения матриц А и Y.
Замечания и литература к § 1.2
Детальное описание структур данных для хранения симметричных и/или ленточных матриц имеется в руководстве по пакету Linpack.
1.3. Блочные матрицы и алгоритмы
Умение непринужденно работать с блочными матрицами крайне необходимо для матричных вычислений. Использование блочных обозначений упрощает вывод многих важных алгоритмов. Кроме того, все более возрастает роль блочных алгоритмов в вычислениях на суперкомпьютерах. Здесь под блочными алгоритмами мы подразумеваем по существу такие алгоритмы, которые содержат много операций умножения матрицы на матрицу. Следует ожидать, что эти алгоритмы будут более эффективны по сравнению с теми, которые работают на скалярном уровне, поскольку на каждый обмен данными будет приходиться большее количество вычислений. К примеру, умножение к х /с-матриц занимает 2к3 флопов, вовлекая лишь 2k1 элементов данных. В § 1.4 мы увидим, что при больших к издержки обмена данными становятся относительно менее существенными.
Обозначения для блочных матриц
Разбиения матриц на строки и столбцы суть частные случаи разбиения на блоки. В общем случае разбиение m х «-матрицы А на блоки выглядит следующим образом:
Ли ••• AVq mx .
А = ::.
^pq- mp
Здесь mY + ... + mp = m, nY + ... + nq = n, Atj означает (z, у)-й блок, или подматрицу. Блок Ац имеет размерность mt на Hj, и мы будем говорить, что А = (А^-) есть р х q- блочная матрица.
Операции с блочными матрицами
Блочные матрицы можно складывать так же, как и обычные матрицы, при условии соблюдения соответствия размерностей блоков. Например, если
^11 “* ^lq mi
_BpV ••• Bpq_ тр
"1“q
то мы говорим, что матрица В разбита на блоки согласованно с Л, и их сумма С = А + В есть р х ^-блочная матрица С = (С/;), где С- = А - + Вц.
Умножение блочных матриц устроено чуточку хитрее. Вот ключевой результат:
Лемма 1.3.1. Пусть AeRmXr и BeRrXn разбиты на блоки следующим образом:
АнА = Л21АнА = Л21^12^22 ^2^12^22 ^2mvmvВВт2 , В = Вт2 , В = В”1”1^12 ^22 «2 "^12 ^22 «2 "'l^2 •'l^2 •
Ан
А = Л21
Ан
А = Л21
^12
^22 ^2
^12
^22 ^2
mv
mv
В
В
т2 , В = В
т2 , В = В
”1
”1
^12 ^22 «2 "
^12 ^22 «2 "
'l
^2 •
'l
^2 •
Тогда будем иметь
AB = C = [_C21 ”iAB = C = [_C21 ”iU12 ^22 _ ”2U12 ^22 _ ”2т2,т2,
AB = C = [_C21 ”i
AB = C = [_C21 ”i
U12 ^22 _ ”2
U12 ^22 _ ”2
т2,
т2,
где Сц = AiY BYj + Ai2 B2j для i = 1:2 и j = 1:2.
Доказательство. Доказательство представляет собой упражнение на использование индексов.
E^ij] ^ аЦ- P,kbkAj- l^nY-Vq k= 1
Z аЦ- Г^ту^ pJc^kAj- l^+q
+ Z a(i~ l)mt + p,k ^kAj~ 1)^ -Vq
k = rY + 1 rlr2
= Z [Л1]рк[517]к9+ I VA^pkVB^kq = k=lk=l
= [Ли BYj3pq + [Л/2 B2jlpq = [Ли BXj + Ai2 B2j3pq. □
Лемма 1.3.1 дает всю информацию об умножении 2 х 2-блочных матриц. Для общего случая имеем следующую теорему:
Теорема 1.3.2. Если
АА“‘ A lq“‘ A lqА =А =АААРЦ-АРЦ-mv, В = тПmv, В = тПВВ... В... В'i'iВ, «1В, «1- Bqt_nt- Bqt_ntг.г.
А
А
“‘ A lq
“‘ A lq
А =
А =
А
А
АРЦ-
АРЦ-
mv
, В = тП
mv
, В = тП
В
В
... В
... В
'i
'i
В, «1
В, «1
- Bqt_nt
- Bqt_nt
г.
г.
и произведение С = АВ разбито на блоки следующим образом:
”4
pipi«1«1pt Jntpt Jnt
pi
pi
«1
«1
pt J
nt
pt J
nt
Сц= £ AikBM, i= VpJ = 1:/.
Доказательство. Примените лемму 1.3.1 и индукцию. Мы опускаем детали, поскольку в них нет ничего поучительного. □
Так же, как и для обычных матриц, умножение блочных матриц может быть организовано несколькими способами. Для точного описания этих вычислений нам потребуется ввести некоторые обозначения.
Обозначения для подматриц
Рассмотрим возможные способы задания блоков в матрице, элементами которой являются числа. Пусть AeRmXn и векторы z = (z1,.., ir) и j = Ui^-^ JA имеют целочисленные компоненты, такие, что ^,..., ir g {1, 2,..., т), j\,..., jc g {1, 2,..., Д Мы обозначаем через A^i, j) г х с-подматрицу
A (if =
^(GJi) A^vJ^
/0„Л) ••• АЦГАЙ
Компоненты векторов z и j часто пробегают непрерывный диапазон, и в этих случаях мы используем двоеточие для его обозначения. В частности, если 1 ^ z'^/ ^ т и 1 ^ р ^ q ^ п, то A (i;j, p:q) есть подматрица, стоящая на пересечении строк от z-й до у-й и столбцов от р-го до ^-го матрицы А. Таким образом,
Л (3:5, 1:2) =
Л31 ^32
#41 #42
Л51 а52
В заключение разговора о подматрицах напомним введенные в § 1.2.5 обозначения: если z и у-скаляры, то A(i, :) означает z-ю строку, Л(:, у)-у-й столбец матрицы А.
1.3.4. Умножение блочной матрицы на вектор
Важный частный случай теоремы 1.3.2-это умножение блочной матрицы на вектор. Предположим, что матрица AeRmXn и вектор zeRm разбиты на блоки следующим образом:
А =
, ^ =
Здесь mY + ... + тр = т. Мы называем At z-й блочной строкой. Заметим, что если xgR" и z = Ах, то z^ = А(х, i = 1:р. Таким образом, если m.vec = (mY,..., тД мы получаем следующую блочную версию умножения матрицы на вектор:
last = О
forz = \;р
first = last + 1; last = first + т.пес^й — 1 г yirst: last) = A ^irst: last,:) x
(1.3.1)
end
Конечно, произведения zi = Aix можно находить, используя как matvec.ij, так и matvec.ji.
Другая блочная версия умножения матрицы на вектор получится, если мы разобьем А и х на блоки следующим образом:
а = [а^..., xq], х= ;
nv nqпч
В этом случае мы называем Aj j-м блочным столбцом, и произведение z = Ах имеет вид z = AYxY А-... A Aqxq. Если n.vec = Qiv ..., nqVвектор размерностей блочных столбцов, то имеем следующую столбцовую версию алгоритма (1.3.1):
z(l :т) = 0; last = 0
forj = \;q
first = last + 1; last = first + n.vec (j) — 1
w = A (:, first: last) x {first .last)(1.3.2)
z = z + w
end
Здесь снова отдельные произведения подматриц на векторы (вычисление w) могут выполняться как matvec.ij, так и matvec.ji.
Перемножение блочных матриц
Так же как и обычное умножение матриц, умножение блочных матриц может быть организовано несколькими различными способами. Для простоты предположим, что каждая из матриц А = (А^) и В = (В^) есть N х N-блочная матрица с а х а-блоками, так что п = Na. Для такого «равномерного» разбиения на блоки теорема 1.3.2 дает, что если С = (С^) = АВ, то
Сц= Y AikbBkbj,i=V.NJ=\:N.
Исходя из этой формулы, описывающей блочное скалярное произведение, можно получить следующую процедуру умножения матриц:
С(1:и, 1:и) = 0
for^ = VN
i = (ib - 1)а + 1:/ьа
for/b= V.N
j = Ub- П« + VJba(1.3.3)
for/сь = 1:N
к = (kb — 1)а + Vkba
С(/,Д = С(/,У) + Afi, k)B(k,j) end end end
Благодаря нашим обозначениям, позволяющим переменным i, j, к играть роль векторных индексов, присваивание C(iJ) = Cfij) + A fi k)B(k,j) выглядит точно так же, как и на скалярном уровне.
Другие процедуры для умножения блочных матриц получатся, если изменить
порядок циклов в (1.3.3). Например:
С(1:и, 1:и) = 0
foryb = 1:N
j = к)ь- !)« + 1;Ла
for/cb = 1:N'
к = (kb - l)a + l:/cba(1.3.4)
for zb = V.N
i = (ib - l)a + l:zba
с(/,д = с(/,д +л(/, k)B(kj) end
end end
Лучше всего можно понять эту организацию умножения матриц, если разбить А на блочные столбцы:.
Л = [Л1, ..., An].
Если В = (Ви\ где В-еиа х a, то
AB = C=LCV,..„ CN1, Cj= £ AkBkj.
aak= 1
Таким образом, С7 является блочной линейной комбинацией блочных столбцов матрицы А. Цикл по кь выполняет блочную операцию дахру.
Блочная версия с использованием внешнего произведения получится, если мы переставим циклы в (1.3.3) следующим образом:
С(1:и, 1:и) = 0
for Zc„ = 1:N
к = (kb — l)a + l:/cba
for 4 = 1:N
j = Ub- 0“ + 1:Л“(1.3.5)
for ib = 1: N
i = Ob - 1)" + 1:4«
C (z, у) = C (z, y) + AO, k)B(k,j)
end
end
end
Для понимания этой версии лучше всего подойдут блочные разбиения
А = [А, а
так как тогда мы видим, что цикл по кь вычисляет сумму
N
С = АВ = £ АкьВкь.
кЬ= 1
В этой формулировке мы рассматриваем матрицу С как сумму блочных внешних произведений.
Важный частный случай
В § 1.3.4 наш подход к вычислению произведения матрицы на вектор основывался на разбиении матрицы А на блочные строки и столбцы. Другой важный способ организации этого вычисления - рассмотреть А как 2 х 2-блочную матрицу, а х-как двумерный блочный вектор:
-^2--^2-^11 ^12 Х1—-^21 ^22- — Х2 —^11 ^12 Х1—-^21 ^22- — Х2 —Лц Xi + А12 х2_-^21'^1 Т ^22^2-Лц Xi + А12 х2_-^21'^1 Т ^22^2-
-^2-
-^2-
^11 ^12 Х1
—-^21 ^22- — Х2 —
^11 ^12 Х1
—-^21 ^22- — Х2 —
Лц Xi + А12 х2
_-^21'^1 Т ^22^2-
Лц Xi + А12 х2
_-^21'^1 Т ^22^2-
В последующий главах это блочное разбиение для задачи z = Ах будет интенсивно использоваться.
Структуры данных для блочных матриц
Массивы в фортране хранятся по столбцам. Это означает, что элементы матрицы, находящиеся в одном и том же столбце, занимают последовательные ячейки памяти. Так, если для хранения матрицы А е R4 х 6 было отведено 24 ячейки памяти, то при традиционном хранении по столбцам элементы матрицы выстраиваются в памяти, как показано на рис. 1.3.1.
Рис. 1.3.1. Хранение по столбцам (случай 4 х 6).Рис. 1.3.1. Хранение по столбцам (случай 4 х 6).
Рис. 1.3.1. Хранение по столбцам (случай 4 х 6).
Рис. 1.3.1. Хранение по столбцам (случай 4 х 6).
А(1,1)
А(1,2)
А(1,3)
А(1,4)
А(1,5)
А(1,6)
А(2,1)
А(2,2)
А(2,3)
А (2,4)
А(2,5)
А(2,6)
А (3,1)
А(3,2)
А(3,3)
А(3,4)
А(3,5)
А(3,6)
А(4,1)
А(4,2)
А(4,3)
А(4,4)
А(4,5)
А(4,6)
Рис. 1.3.2. Хранение блоками (случай 4 х 6 с блоками 2 х 2).
Другими словами, если A eRmXn хранится в v (1 \тп\ то элемент A (z, j) находится в v((/ — l)m + z). Такой формат хранения хорошо подходит для алгоритмов, которые выбирают элементы матриц по столбцам, поскольку элементы столбцов расположены в памяти непрерывно.
В некоторых блочных алгоритмах иногда бывает полезно хранить матрицы не по столбцам, а по блокам. Предположим, к примеру, что матрица А из рассмотренного выше примера есть 2 х 3-блочная матрица с 2 х 2-блоками. При блочном хранении по столбцам и при хранении по столбцам элементов каждого блока 24 элемента матрицы А располагаются в памяти, как показано на рис. 1.3.2.
Эта структура данных может быть привлекательной для блочных алгоритмов, поскольку элементы каждого блока хранятся в памяти непрерывно.
Умножение матриц, основанное на принципе «разделяй и властвуй»
В завершение этого раздела рассмотрим совершенно другой подход к задаче умножения матриц. Мы начнем обсуждение с умножения 2 х 2-блочных матриц
^11 ^12_^11 ^12^11 ^12
_C2i c22j ЬЛ21 ?122J ls21 в22_
где каждый блок квадратный. В обычном алгоритме Си = Ап BYj 4- Ai2 B2j имеются 8 умножений и 4 сложения блоков. Штрассен (1969) предложил способ вычисления С с использованием лишь 7 умножений и 18 сложений блоков:
^1 = 0^11 + ^22 )(^11 + ^22 )>
^2 = (^21 4" ^22)^11’
^3 — ^11 (^12 — ^22 Ь
^4 = ^22 (^21 — ^11 X ^5 = С^и + ^12)^22» ^6 = (^21 — ^11 )(^11 4" ^12)5 Pl = Ml2 ~ ^22)^21 4" ^22)?
Сы = PY + Р4 — Р5 + Рп, ^12 = Рз 4" ^5’ Q1 = ^2 4" ^4’ ^22 =Л 4- ^34-^6-
Эти соотношения легко проверяются подстановкой. Пусть п = 2m, так что блоки имеют размер т х т. Подсчитывая сложения и умножения в вычислении С = АВ, мы находим, что обычное уможение матриц требует (2m)3 умножений и (2m)3-(2m)2 сложений. Если же применить алгоритм Штрассена вместе с обычным алгоритмом для умножения блоков, то требуется всего 7m3 умножений и 7m3 + 11m2 сложений. Если m ^ 1, то метод Штрассена обходится примерно в 7/8 арифметических затрат стандартного алгоритма.
Теперь заметим, что идея Штрассена может быть применена рекурсивно. В частности, алгоритм Штрассена может быть применен для нахождения каждого из произведений Pt блоков половинного размера. Таким образом, если исходные матрицы А и В имели размеры п х п с п = 2q, то алгоритм Штрассена можно применить многократно, и на самом нижнем уровне мы получим блоки размера 1x1. Но, конечно, нет никакой необходимости спускаться вниз до уровня п = 1. При достаточно малых размерах блока (л ^ «min) может оказаться выгодным
вычислять Рь используя стандартный алгоритм. Вся процедура в целом выглядит следующим образом:
Алгоритм 1.3.1 (Умножение матриц по Штрассену). Пусть п = 2q и А е Rn х n, BeR" х п. Если «min = 2d, где d^q, то следующий алгоритм вычисляет С = АВ, применяя метод Штрассена рекурсивно q-d раз.
function: С = strass (А, В, nmin) п = rows (Л) •f« < «min С = АВ else
т = п!2*, и = 1 :т; v = т + 1 :п;
Ру = strass (А (и,и) + А (и, и),В (и, и) + В (и,г),ит1Л)
' Р2 = strass (Л (г,и) + Л (г, и),В (и, и\ nmin)
Р3 = strass (Л (w,и\ В (и, г) —В (v, v), nmin^
Р4 = strass (Л (г,г), В (и, и) — В^и, и), nmin^
Р5 = strass (Л (м,и) + Л (и, и),В (и, г), nmin)
Рб = strass^(u,й) — А (и, и),В (и, и) + В (и,v),nmin^
Р7 = strass (А (и,г) — А (и, и),В (и, и) + В (и,г),лт1Л)
С^и, и) = Ру + Р4 - Р5 + Рп
С^и, г) = Р3 + Р5
С(и, и) = Р2 + Р4.
С^ г) = Ру + Р3 - Р2 + Рб end end strass
В отличие от всех ранее рассмотренных алгоритмов, процедура str ass является рекурсивной, т. е. она вызывает сама себя. Алгоритмы, основанные на принципе «разделяй и властвуй», часто наиболее естественно описываются с использованием рекурсии.
Арифметические затраты процедуры strass являются нетривиально устроенной функцией п и nmin. Если nmin 1, то достаточно подсчитать количество умножений, поскольку количество сложений примерно то же самое. Ограничившись подсчетом умножений, мы можем рассматривать только самый внутренний уровень рекурсии, поскольку именно там выполняются все умножения алгоритма. В процедуре strass q d уровней рекурсии, поэтому стандартных умножений матрицы на матрицу всего 1q-d; при этом перемножаются матрицы размера пт1п, так что всего в процедуре strass порядка 5 = (2d)31q-d умножений по сравнению с с = (29)3 в обычном алгоритме. Заметим, что
Sяс \2q;Sяс \2q;|q-d|q-d
Sя
с \2q;
Sя
с \2q;
|q-d
|q-d
При d = 0, т.е. если мы спускаемся до I х I-матриц, имеем
5 = - С = 1q = Mlog2 7 ^ И2'807 .
\8/
Таким образом, количество умножений в методе Штрассена асимптотически равно О (л2 807). Однако относительная доля сложений по отношению к умножениям возрастает при уменьшении nmin.
Пример 1.3.1. Если п = 1024 и nmin = 64, арифметические затраты процедуры strass составляют (7/8)10 ~ 6 « 0.6 от затрат стандартного алгоритма.
Задачи
Пусть AeRmXn хранится по столбцам в массиве A.col (Д:тп\ Предположим, что п = aN, т = рМ и мы рассматриваем А как М х N-блочную матрицу с р х a-блоками. По данным целым числам /, у, г, 5, удовлетворяющим неравенствам 1 < i< р, 1 ^ j ^ а, 1 ^ г ^ М, 1 ^ 5 ^ N, найдите такое /с, что A.col(k) содержит элемент (IJ) из блока (r,s). Постройте алгоритм, преобразующий A.col к блочному формату хранения матрицы А, показанному на рис. 1.3.2. Каких размеров при этом должен быть рабочий массив?
Обобщите алгоритм (1.3.4) на случай произвольной блочной матрицы.
Приспособьте процедуру strass для перемножения квадратных матриц произвольного порядка. Подсказка: если на каком-то шаге получилась матрица А нечетного порядка, окаймите ее нулевыми строкой и столбцом.
Пусть А = Ах + 1А2еСт х п и х = хх + 1х2еСп. Укажите способ вычисления'^ = у1 + + 1у2 = Ах при помощи одного вещественного вызова matvecji.
Пусть п- четное число. Определим функцию Rn R:
и/2
Нх) = л(1:2:и)гх(2:и) = X -v2i-i*2i •
i = 1
Покажите, что если х, j^eR”, то
и/2
хТ у = X <х21-1 + ?1№ы + уг1_])-Их) -Ну).
i= 1
Приведите алгоритм, вычисляющий произведение п х «-матриц С = АВ, требующий «3/2 умножений при применении функции / к строкам матрицы А и столбцам матрицы В. Детали см. в Winograd (1968).
Замечания и литература к § 1.3
Долгое время быстрые методы умножения матриц привлекали к себе достаточно много внимания. См.
Pan V. (1984). “How Can We Speed Up Matrix Multiplication?”, SIAM Review 26, 393-416. Strassen V. (1969). “Gaussian Elimination is Not Optimal”, Numer. Math. 13, 3 54-3 56.
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. Некоторые аспекты векторно-конвейерных вычислений
Действия с матрицами в основном слагаются из скалярных произведений и операций saxpy. Векторно-конвейерные компьютеры способны очень быстро выполнять подобные операции благодаря специальной аппаратной поддержке, учитывающей то обстоятельство, что векторная операция-это очень регулярно устроенная последовательность скалярных операций. Будет ли при использовании такого компьютера достигнута высокая производительность, это зависит от длины векторных операндов, а также ряда факторов, относящихся к пересылкам данных, таких как шаг выборки, количество векторных загрузок/записей, степень повторного использования вектора. Знакомство с этими вопросами и понимание их роли чрезвычайно полезны. Мы не будем пытаться построить всеобъемлющую модель векторно-конвейерных вычислений, позволяющую предсказывать производительность алгоритмов. Наша цель-дать читателям почувствовать основные моменты, которыми следует руководствоваться при создании эффективных программ для векторно-конвейерных компьютеров. Мы не ориентируемся на какую-то конкретную машину; заинтересованных читателей мы отсылаем к литературе, которая содержит очень много конкретных исследований такого рода.
Конвейеризация арифметических операций
Первопричиной высокой скорости векторных компьютеров является конвейеризация. Для осознания смысла этого понятия проведем аналогию со сборочной линией. Допустим, что сборка одного автомобиля идет по одной минуте на каждом из шестидесяти рабочих мест вдоль сборочного конвейера. Если конвейер полностью укомплектован персоналом, так что сборка нового автомобиля может начинаться каждую минуту, тогда 1000 автомобилей могут быть произведены примерно за 1000 + 60 = 1060 минут. Для заказа таких размеров эффективная «векторная скорость» конвейера будет 1000/1060 автомобилей в минуту. С другой стороны, при нехватке персонала, если сборка нового автомобиля может начинаться лишь один раз в час, для выпуска 1000 автомобилей потребуется 1000 часов. В этом случае эффективная «скалярная скорость» конвейера будет 1/60 автомобилей в минуту.
Именно так обстоят дела с конвейеризованной векторной операцией, скажем, со сложением векторов z = х + У- Скалярные операции zt = xt + yt - это автомобили. Количество компонент вектора-это объем заказа. Если на вычисление каждого zt уходит время т, то конвейеризованное сложение векторов длины п займет гораздо меньше времени, чем пт. Так достигается векторная скорость. Без конвейеризации векторное вычисление осуществлялось бы с той же скоростью, что и скалярное, и потребовало бы примерно пт времени.
Рассмотрим, как можно конвейеризовать последовательность операций с плавающей точкой. Обычно такие операции завершаются за несколько тактов. Например, трехтактное сложение двух чисел х и у может протекать, как показано на рис. 1.4.1. Чтобы получить зрительный образ этой операции, представьте себе, что устройство сложения-это сборочная линия с тремя «рабочими местами», как изображено на рисунке. Входные числа х и у двигаются вдоль линии, задерживаясь
х(1П ас МО) уШ) у(Ю)х(1П ас МО) уШ) у(Ю)Рис. 1.4.2. Конвейерное сложение.Рис. 1.4.2. Конвейерное сложение.
х(1П ас МО) уШ) у(Ю)
х(1П ас МО) уШ) у(Ю)
Рис. 1.4.2. Конвейерное сложение.
Рис. 1.4.2. Конвейерное сложение.
Рис. 1.4.3. Конвейерное saxpy.
на один такт у каждого рабочего места. После трех тактов на выходе появляется их сумма z. Заметим, что при выполнении одного отдельно взятого сложения в каждый момент времени активно только одно из трех рабочих мест.
Теперь рассмотрим сложение векторов z = х + у. Конвейеризация распределяет компоненты векторов х и у по всему устройству сложения. В установившемся состоянии, когда конвейер заполнен, очередная компонента zt выдается на каждом такте. На рис. 1.4.2 изображено, как бы мог выглядеть конвейер в установившемся состоянии. В этом случае векторная скорость примерно в три раза выше скалярной скорости, поскольку для одного отдельного сложения требуется три такта.
Такие операции над векторами, как скалярное произведение и saxpy, включают как сложения, так и умножения. Мы будем предполагать, что в нашей модели векторного компьютера устройства сложения и умножения могут быть сцеплены друг с другом, образуя единый конвейер. Так, конвейеризация операции saxpy z = = ах + у могла бы выглядеть, как на рис. 1.4.3.
Здесь w = ах. Таким образом, когда конвейер заполнен, на каждом такте мы получаем одну компоненту вектора z. Заметим, что в установившемся состоянии каждый такт выполняет одно сложение и одно умножение с плавающей точкой. В этом причина того, что пиковая производительность типичного векторного компьютера дается величиной 2/ц операций с плавающей точкой в секунду, где р-время одного такта.
Векторные операции
Векторно-конвейерный компьютер имеет набор векторных инструкций, таких как сложение векторов (zt = xt + yt), покомпонентное произведение векторов (z( = = «^.уД умножение вектора на скаляр (z( = ах,), скалярное произведение и saxpy. Для ясности предположим, что эти операции осуществляются на векторных регистрах. Регистры обмениваются с памятью посредством инструкций загрузки вектора и записи вектора в память.
Важным атрибутом векторного процессора является длина его векторных регистров, которую мы обозначаем через vL. Операция над векторами длины п должна быть разбита на несколько операций с операндами длины vL или меньшей. К примеру, для сложения двух и-векторов х и у такое разбиение может быть осуществлено следующим образом:
first = 1
while first ^ п
last = min {«, first + vL — 1}
Загрузить вектор х fir st; last).(1-4.1)
Загрузить вектор у fir st: last).
Сложить векторы: zfirst.last) = xfirsf.last) + yfirst.last).
Записать вектор: zfirsv.last). first = last + 1 end
Заметим, что здесь все операции (загрузить, сложить, записать) - это векторные операции. Порядочный компилятор для векторного компьютера должен автоматически сгенерировать (1.4.1) по оператору z = х + у программы. Конечно, возможно, что программисту придется задавать сложение векторов в виде фортрановского цикла.
Длина вектора
Предположим, что на начальную загрузку конвейера при выполнении векторной операции требуется тор тактов. Если при заполненном конвейере на каждом такте получается одна компонента результата, то время выполнения «-мерной векторной операции будет
ropW = (тор + Л)ц, и ^ vL,
где ц - продолжительность такта, vL- длина векторных регистров компьютера.
Если длина векторов, участвующих в операции, превосходит длину векторных регистров, то, как мы видели, векторы должны быть разбиты на умещающиеся в векторные регистры куски. Так, если
и = «1 PL + и0, 0 s= и0 < vL,
то общее время выполнения «-мерной векторной операции будет
Т м = Р1(тор +«0 = 0,
°Р ”((«! (тор + pl) + Тори0)ц, и0 ^ 0.
Это можно записать и более просто:
,Тор (и) = (и + тор ceil (n/vL)) ц,
где ceil (а) - наименьшее целое число, такое что а < ceil (а). Если для вычисления каждой компоненты требуется р флопов, то эффективная скорость вычислений дается для произвольного п формулой:
р« р1
(Если значение ц берется в секундах, то Яор получается в флопах в секунду.) Асимптотическая скорость будет
1 Р hm Яор(«) =.
и —> соI | ^Ор Р
Для оценки относительной роли издержек на начальную загрузку конвейера Хокни и Джессхоуп (1988) ввели величину л1/2 как наименьшее п, для которого достигается половина пиковой производительности, т.е.
Р«1/2 _1Р^("1/2)2 g’
Для машин с большим коэффициентом л1/2 на операциях с короткими векторами не достигается высокая производительность.
Оптимизация кода с учетом длины векторов
Мы представили упрощенную модель векторных вычислений, в которой производительность является функцией от длины векторов и коэффициента начальной загрузки тор. Забыв на время про все прочие факторы (как, скажем, метод доступа к данным), посмотрим, как эта модель советует организовать процедуру перемножения матриц.
Пусть нужно вычислить произведение С = АВ, где Л е Rm х \ ^е Rr х". Вспомним из § 1.1, что стандартный алгоритм может быть организован шестью способами, причем самый внутренний цикл выполняет либо скалярное произведение, либо saxpy. Рассмотрим версию ijkz
for i = 1 :т
for/ = 1 :п
for к = 1: г
C(iJ) = C(iJ)^A(i, к) В (kJ)
end end end
Внутренний цикл вычисляет скалярное произведение векторов длины г. В условиях нашей простой модели, если мы не учитываем никаких затрат, кроме вычислений скалярных произведений, время выполнения алгоритма будет
Tijk = mn[r + ceil (r/pL) Tdol ] g.
В версиях “jkf и “kif самые внутренние циклы выполняют операцию saxpy длины т и п соответственно. Следовательно, ожидаемое время выполнения этих двух алгоритмов будет
Т/ы = nr [их + ceil (m/vL) тмх ] g
И
Tkij = mr[n + сеП(л/уь)тмх] g.
(Рассматривать версии JikJ “kjf и “ikj” нет необходимости, поскольку в нашей модели Tjik = Tijk, Tkji = Tjki и Tikj = Tkij.) Из выписанных трех формул ясно, что наиболее эффективная версия матричного умножения определяется соотношением между размерностями т, п и г и коэффициентами начальной загрузки Tsax и Tdot. Машинно-зависимая оптимизированная процедура умножения матриц могла бы следующим образом выбирать наиболее эффективную из возможных версий:
function: С = matmat.opt (А, В, vL, Tdon Tsax)
т = rows (Л); п = cols (В); г = rows (В)
h = пгт^сей^т/с^
tj = mrTsaxcei\(n/vL)
tk = mnTdo, ceil (r/vL)
ifц = min^, tj, tk)
C = matmat.jki (Л, B)
elseifZj = min(rz, tp tk)
C = matmat.kij (Л, B)
elseifrk = min^., tj, tk)
C = matmatijk (Л, 5) end
end matmat. opt
Элементарные прикидки показывают, что если Tsax и xdot примерно равны, то в случае, когда т, п и г меньше, чем rL, функция matmatopt выбирает версию с максимальной длиной внутреннего цикла. Если же т, п и г существенно больше rL, то разница между всеми тремя версиями невелика.
Напомним, что эти наблюдения, как и сама matmatopt, основаны на одномерном представлении о векторно-конвейерных вычислениях, учитывающем лишь длину векторов. Для уточнения нашей модели мы должны обратиться к обмену данными между памятью и регистрами, на которых, собственно, и выполняются векторные операции.
Многоуровневая память
Прежде чем векторный компьютер сможет выполнить векторную операцию, операнды должны находиться «в нужном месте», а за доставку в нужное место приходится платить. Проблема в том, что память обычно организована иерархическим образом. Между функциональными устройствами, выполняющими арифметические операции, и основной памятью, в которой лежат данные, может располагаться относительно небольших размеров высокоскоростная кэшпамять. Детали могут меняться от машины к машине, но вот две вещи, о которых необходимо постоянно помнить при работе в условиях многоуровневой памяти:
Объем памяти на каждом уровне иерархии ограничен по экономическим причинам и уменьшается при повышении уровня иерархии.
Обмен данными между уровнями иерархии сопряжен .с затратами, иногда сравнительно большими.
Выводы из этого очевидны. Если мы хотим разработать эффективные матричные алгоритмы для типичного векторного компьютера, мы должны постоянно держать
в поле зрения передвижение данных по уровням иерархии памяти. Это остается в силе даже для вычислений с матрицами относительно малых размеров, поскольку современные компиляторы пока не способны отобразить основные матричные алгоритмы на системы с многоуровневой памятью.
Конечно, управление обменами с памятью не является чем-то особенно новым в научных вычислениях. При решении матричных задач на самых первых электронных машинах приходилось продумывать обмен данными с бумажными лентами и другими примитивными устройствами хранения информации. В вычислениях с разреженными матрицами создание эффективных программ всегда требовало внимания к вопросам обменов с памятью.
Многоуровневая память налагает на разработчика алгоритмов специфические требования, побуждая его мыслить в определенном ключе. Этому будет посвящен остаток данного раздела.
Единичный шаг выборки
Очень важно, чтобы при перемещении данных между уровнями иерархии памяти эти данные занимали в памяти непрерывную область. Для векторов это подразумевает единичный шаг выборки. Шаг выборки для хранящегося в памяти вектора-это расстояние (измеренное в ячейках памяти) между его компонентами. Доступ к строке в двумерном фортрановском массиве не является операцией с единичным шагом выборки, поскольку массивы хранятся по столбцам.
Векторные операции с неединичным шагом выборки могут помешать конвейеризации. Например, загрузка вектора с неединичным шагом выборки из памяти с чередующимися адресами может потребовать дополнительного количества тактов из-за конфликтов в банках памяти.
Теперь учтем влияние шага выборки на производительность нашей оптимизированной процедуры matmatopt. Из трех возможных самых глубоко вложенных циклов
for / = 1 \т
C^j) = C^j)^A^ k)B(k,j)
end
for/ = \;n
С(/,у)=С(/,у) + Л(/, kW,j) end
for k = 1: r
СО=СО + Я(4/с)В^
end
только первый выбирает элементы массивов А, В и С с единичным шагом. Ясно, что для реализации процедуры matmatopt на фортране потребуется пересмотреть ее с учетом влияния шага выборки. Насколько сильно уточненная процедура будет тяготеть к избранию версии matmatjki, зависит от того, насколько пагубно векторные операции с неединичным шагом выборки сказываются на производительности. Мы не будем дальше разбирать этот вопрос, так как он особенно сильно зависит от архитектуры конкретного компьютера. Для нас главное зафиксировать следующий момент: требования к длине вектора и к шагу выборки бывает трудно совместить.
Дилеммы такого рода типичны для высокопроизводительных вычислений. Достижение одной из целей (максимальная длина вектора) может противоречить
другой цели (единичный шаг выборки). Иногда наилучший компромисс можно найти, изучая в деталях времена исполнения отдельных операций.
Роль структур данных
Иногда разумный выбор структур данных может помочь разрешить противоречивые требования на длину вектора и шаг выборки. Рассмотрим снова умножение матрицы на вектор z = Ах, где матрица А симметричная. Пусть А — п х «-матрица, и пусть для простоты п ^ vL. Если А хранится обычным образом, то при использовании процедуры matvecji основное вычисление состоит из п операций saxpy длины п с единичным шагом выборки:
z(l:«) = О
Гогу = V.n
Z = Z + Л(:, Дх(/) end
Считая только операции saxpy, имеем следующее ожидаемое время исполнения:
^1 =и(тМх + и)Н-
Посмотрим, насколько хуже станет производительность при использовании специальных структур данных, учитывающих симметрию. Если мы будем хранить нижний треугольник матрицы А по столбцам в массиве A.vec(:\ как в § 1.2.7, то соответствующая версия matvecji запишется в виде:
z(l:«) = О
Гогу = \ :п
forz = 1:у — 1
z(z) = z(z) + A.vec^i — 1)« — z(z — 1)/2 + j)x$ end forz = j:n
z^ = z(0 + A.vecUj - 1) и -JU ~ l)/2 + z)x(z) end
end
Хотя второй из циклов по z выполняет операцию saxpy длины п — j + 1 с единичным шагом выборки, первый цикл по z выполняет saxpy длины j- 1 уже с неединичным шагом.
Для того чтобы дать количественную оценку ущербу, понесенному вследствие использования операции с неединичным шагом выборки, нам придется сделать некоторые предположения. Допустим, что векторное вычисление с неединичным шагом выборки приводит к обработке со скалярной скоростью 7?s флопов в секунду. Тогда на выполнение первого цикла (это примерно половина всех операций алгоритма) уходит п2 / Rs секунд. В то же время второй цикл, несмотря на убывание длины обрабатываемых им векторов, может в среднем работать с гораздо более высокой скоростью Rv флопов в секунду. Полное время вычислений дается формулой
V 17 \ п2 ( Rs\
Т2 = п2 —+ — =— 1 + — •
Заметим, что даже в случае Rv = оо достигается не более чем двукратное ускорение по сравнению со скалярной обработкой. Это одно из проявлений закона Амдаля: Если в процедуре доля скалярной обработки составляет /е[0, 1], то
Время вычислений при полностью скалярной обработке1
Время вычислений при векторной обработке с бесконечной скоростью /
Мы можем заключить, что в условиях, когда шаг выборки является критическим параметром, стандартная схема хранения матрицы А в процедуре matvec.ji предпочтительнее, чем хранение по столбцам нижнего треугольника.
Теперь предположим, что матрица А хранится по диагоналям в массиве A.diagVX как описано в § 1.2.8, и что z = Ах вычисляется по алгоритму 1.2.4. В этом алгоритме все покомпонентные произведения векторов выполняются с единичным шагом выборки. Поэтому ожидаемое время вычислений зависит от издержек на начальную загрузку конвейера для покомпонентного произведения векторов:
и - 1
Т, = ^vm + «)и + £ Е(т„т + (л - /с)) + (т„т + (и - /с) )] Ц =
= ((2л-1)т„т + и2)ц.■ (1.4.2)
Таким образом, насколько выгодно применять схему хранения по диагоналям, определяется величиной Т3 — Тх = ((2п — V)xvm — пт^рц а также относительной значимостью компактности хранения информации. Но из нашего обсуждения ясно следует, что ценность компактных схем хранения снижается в условиях векторноконвейерной обработки.
Операции gaxpy, внешние произведения и векторные обмены
Во многих случаях большим шагом на пути к получению хорошей векторизованной программы является минимизация количества векторных загрузок и записей. Для удобства будем называть векторные загрузки и записи векторными обменами.
Многие алгоритмы численной линейной алгебры могут быть организованы таким образом, что доминирующей операцией будет являться либо модификация матрицы внешним произведением векторов, либо операция gaxpy. (См. § 1.1.15 и § 1.1.16.) Для матриц размера т х п обе операции требуют 2тп флопов, но gaxpy при этом требует в два раза меньше векторных обменов.
Чтобы убедиться в этом, возьмем для простоты случай т = тхсьип = пхсь. Для векторных вычислений модификация внешним произведением запишется следующим образом:
for^ = Х:тх
• = U„ - D^t + 1 :<>l; “’ = u^
forjv = 1:«!
j = Uv - P VL + 1 Jv VL ; A j) = A U, j) + WV end
end
Каждый столбец подматрицы A(i, У) должен быть загружен, модифицирован и записан обратно в память. Учитывая также обмены для векторов и и с, приходим к следующей оценке для общего количества векторных обменов:
"Ч / Л1\
Z ( 1 + Е о + 2vl) ) % 2т1 и-
(Заметьте, что мы пренебрегли несущественными для нас слагаемыми низшего порядка.)
Теперь рассмотрим т х «-операцию gaxpy и = и + Ас, где ueRm, reR”, AeRm х п.
Разбивая это вычисление на отрезки длины uL, получаем:
for z = 1 \mv
i = U„ ~+ V.ievL; w = m(z)
for/; = I:»,
j=Mv- l)ft+ X-jv»L
'w = w + A (i, 7) и (/)
end
w(z) = w
end
Здесь снова каждый столбец подматрицы A (i, j) должен быть считан, но запись в память теперь требуется только одна - необходимо записать вектор w. Таким образом, общее количество векторных обменов будет
/ni\
£ (2 + Е о + м)«min’
iv - 1lv~
т. е. примерно половина используемых при модификации внешним произведением.
В практике векторных вычислений следует отдавать предпочтение тем схемам матричных алгоритмов, которые интенсивно используют операцию дахру, а не модификацию внешним произведением.
Блочные алгоритмы, кэш-память и повторное использование данных
Тщательное управление обменами с памятью является ключом к написанию хороших векторизованных программ. Мы проиллюстрировали это выше на примере векторных обменов. Сходные наблюдения могут быть сделаны относительно общего случая передвижения данных вверх и вниз по уровням иерархии памяти в ходе вычислений. В качестве конкретного примера рассмотрим, как может повлиять на разработку алгоритма перемножения матриц присутствие кэш-памяти. Напомним (см. § 1.4.5), что кэш-память можно представлять себе как локальную память, расположенную между основной памятью устройствами обработки. См. рис. 1.4.4. Для этой достаточо типичной ситуации мы будем считать, что операнды для векторной операции должны находиться в кэше и обмен данными между кэшем и основной памятью относительно дорогостоящ. Так что если уж какие-то данные попали. из основной памяти в кэш, становится очень важным использовать их максимальным образом.
Рассмотрим умножение п х «-матриц С = АВ. Предположим, что кэш может вмещать М чисел с плавающей точкой, причем М «п2. Разобьем матрицы В и С на блочные столбцы:
В= №,..., BN}, С=[С1,..., С„],а аа а
где п = aN. Предположим, что а было выбрано таким образом, что М ^ п (2a + + 1) « 2«2/N, так что в кэш как раз влезают блочные столбцы матриц В и С, а также столбец матрицы А. Вот процедура матричного умножения, которая добивается многократного использования каждого загружаемого в кэш блочного столбца В у.
fory= 1:N
Загрузить в кэш Bj и Cj = 0.
for k = 1:«
Загрузить в кэш Л(:, /с) и обновить значение С7
end
Записать в основную память вычисленный С?
end
По сути дела, цикл по к выполняет ориентированное на использование saxpy умножение матриц Cj = ABj. Подсчитывая количество Г\ чисел с плавающей точкой, которые при выполнении нашего алгоритма проходят (и в том, и в другом направлении) по каналу «кэш - основная память», получаем:
N
Г1 = X [«(«/#) + и2 + n(n/N)] = (2 + N)n2 = 2n2(l + п2/М\ j=l
Эта формула явственно демонстрирует преимущества большой кэш-памяти.
Теперь мы покажем, что подход, основанный на блочных скалярных произведениях, приводит к более эффективному использованию кэш-памяти. Будем рассматривать А (А^, В = №v), С = (Со) как N х N-блочные матрицы с одним и тем же размером блоков а = n/N. Допустим, что N выбрано таким образом, что За2 % М, так что в кэш помещаются три блока. Располагая в кэше рабочий массив CL, будем действовать следующим образом:
for / = 1:N
for/ = 1:N
CL(l:a, l:a) = 0
for к = 1:N
Загрузить в кэш Aik и Bkj.
Cl™ Q + ^ik Bkj
end
Записать CL в основную память на место, отведенное для С^. end
end
В этой версии количество обменов «кэш - основная память» будет
М N / N \2и3 /З
Г2 = X X «2 + I 2a2 = «2(1 + 2N) « —i = i j=ik = i '
Поскольку Г1/Г2 «п/^ЗМ, мы видим, что блочные скалярные произведения имеют решительное преимущество. Наример, для п = 210 и М = 214 наши два метода различаются по количеству обменов «кэш» - основная память» в 4.5 раза.
На этом примере мы видим, что наилучшая производительность для компьютеров, имеющих кэш-память, обычно достигается на блочных алгоритмах.
Резюме
Мы продемонстрировали, что эффективность векторно-конвейерных вычислений с матрицами зависит от длины вектора, шага выборки, количества векторных обменов и способности алгоритма многократно использовать один и тот же блок данных. Проведение оптимизации по всем этим параметрам - дело чрезвычайно трудное и отчасти является искусством. В этом разделе мы обозначили основные моменты, на которые следует обращать внимание в векторно-конвейерных вычислениях. .Конечно, хороший компилятор может выполнить за вас часть работы, но лучше не слишком-то на это полагаться!
Задачи
Рассмотрим произведение матриц D = АВС, где ^eRm х R, BeW х п, CgR" х 9. Пусть все матрицы хранятся по столбцам и время выполнения операции saxpy длины к с единичным шагом выборки дается формулой t(k) = (L+ к)ц, где L- константа, ц - продолжительность такта. При каких условиях в этой модели выгоднее вычислять D как D = А (ВС) вместо В = (АВ)С^ Считайте, что все умножения матриц используют gaxpy-алгоритм (это версия
Пусть все матрицы в процедуре matmatjki хранятся по столбцам и время выполнения операции saxpy длины к с единичным шагом выборки дается формулой t(k) = (L+ к)ц, где L- константа, ц - продолжительность такта. Сколько времени уходит в matmatjki на выполнение операций saxpy? Адаптируйте matmatjki так, чтобы она эффективно обрабатывала случай верхних треугольных п х и-матриц А и В. Получается ли алгоритм для треугольных матриц в шесть раз быстрее, как предполагает подсчет количества флопов?
Постройте алгоритм вычисления С = АТ ВА, где А и В-п х и-матрицы, причем В симметрична. Во всех наиболее глубоко вложенных циклах доступ к массивам должен осуществляться с единичным шагом выборки.
Замечания и литература к § 1.4
Вот два превосходных обзора по векторным вычислениям:
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.
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 Jesshope С. R. (1988). Parallel Computers 2, Adam Hilger, Bristol and Philadelphia.
Schonauer W. (1987). Scientific Computing on Vector Computers, North Holland, Amsterdam.
Вот некоторые из многочисленных статей по практическим аспектам векторных вычислений:
Buzbee В. L. (1986). “A Strategy for Vectorization”, Parallel Computing 3, 187-192.
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.
Kagstrom B. and Ling P. (1988). “Level 2 and 3 Blas Routines for the IBM 3090 VF/400: Implementation and Experiences”, Report UMINF-154.88, Inst, of Inf. Proc., University of Umea, S-901 87 Umea, Sweden.
Madsen N., Roderigue 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.
Наконец, в последнем разделе мы изучаем поведение решения линейной системы Ах = b при возмущении матрицы А и вектора Ь. При этом вводится важное понятие числа обусловленности матрицы.
Основные сведения из линейной алгебры
Этот раздел представляет собой беглый обзор линейной алгебры. Читателям, которые пожелают ознакомиться с более подробным изложением предмета, мы рекомендуем обратиться к ссылкам в конце этого раздела.
Линейная независимость, подпространства, базис и размерность
Набор векторов {а1,..., ап^ из Rm линейно независим, если из £"=! ajOj = 0 следует а(1 :п) = 0. В противном случае существует равная нулю нетривиальная линейная комбинация векторов а(, и говорят, что набор ^aY, ..., ап^ линейно зависим.
Подпространство Кт-это такое его подмножество, которое также является линейным пространством. Если заданы векторы av, ..., апе№\ то множество всевозможных линейных комбинаций этих векторов является линейным пространством, называемым линейной оболочкой {а^ ..., ап}:
span{a1, й„} = ] £ р7а/ ₽7екк4=1 }
Если {а^ ..., ап}-линейно независимый набор векторов и ^espan^, ..., ап}, то b единственным образом представляется в виде линейной комбинации векторов aj.
Если S1? ..., Sk - подпространства в Rm, то их сумма определяется как подпространство 5 = {«i + а2 + ... + ak: a^S^ i = 1: /с}. Говорят, что 5 является прямой суммой, если каждый вектор vgS имеет единственное представление v = aY + А-..Лак, где a^S^ В этом случае мы пишем £ = £!©...©£*. Пересечение подпространств ^ также является линейным подпространством: S = ^ A S2 А ... A Sk.
Подмножество ^а( , ..., at } называется максимальным линейно независимым подмножеством {aY, ..., anY если оно линейно независимо и не является собственным подмножеством никакого другого линейно независимого подмножества {^,..., anY Если {«z , ..., а( }-максимальное линейно независимое подмножество, то span {«j,..., ап} = span ^а^,at } и {at ,aik} является базисом для span ^aY, ..., anY Если S g Rm - подпространство, то можно найти базисные вектора aY, ..., akeS так, что S = span{«1, ..., akY Все базисы подпространства S имеют одинаковое количество элементов. Это число называется размерностью S и обозначается dim(S).
Область значений, ядро и ранг матрицы
Со всякой т х /«-матрицей А связаны два важных подпространства. Область значений матрицы А определяется так:
range (Л) = {j/gR"1: у = Ах для некоторого xgR"}.
Ядро (нуль-пространство) матрицы А задается следующим образом:
null (Л) = {xgR”: Ах = 0}.
Если А = [«1? ..., ап3 есть разбиение по столбцам, то
range (А) = span {aY, ..., anY
Ранг матрицы А определяется следующим образом:
rank (Л) = dim (range (Л)).
Можно показать, что rank (Л) = rank (Ат), и, таким образом, ранг матрицы равен максимальному числу линейно независимых строк или столбцов. Для любой матрицы AeRmxn мы имеем dim (null (Л)) + rank (Л) = п.
Обратная матрица
Единичная п х «-матрица 1п задается следующим блочно-столбцовым представлением:
1„ = [е,. .... е„], где е6-/с-й канонический вектор
ек = (0,0, 1, 0,...,0)г .
к-1п-к
Конические векторы часто появляются в матричном анализе, и в тех случаях, когда их размерность не ясна из контекста, мы используем верхние индексы, например е^ е R".
Если матрицы А и X из R”x” удовлетворяют равенству АХ = I, то X является обратной к матрице А и для нее используется обозначение Л-1. Если Л-1 существует, то матрица А называется невырожденной, в противном случае А называется вырожденной.
Некоторые свойства обратной матрицы играют важную роль в матричных вычислениях. Обратная к произведению матрица является произведением обратных к сомножителям, взятым в обратном порядке:
(АВ)"1 = ВМ1.(2.1.1)
Транспонирование обратной матрицы-это то же самое, что обращение транспо-
нированной:
(Л-ум^Т1 = А~Т.(2.1.2)
Тождество В-1 = А"1 -В"ЧВ- А^А"1(2.1.3)
показывает, как изменяется обратная матрица при изменении самой матрицы. Формула Шермана - Моррисона - Вудбери дает удобное представление для матрицы, обратной к (Л + UVT\ где AeRnxn, a U и V-nx /с-матрицы: (Л + UVTYv = А-1 -A"1U(I+ yTA"1UY1HTA"1.(2.1.4)
Таким образом, /с-ранговая модификация матрицы приводит к /с-ранговой модификации ее обратной. В (2.1.4) мы предполагаем, что и Л, и (I + FTA-1U) невырожденные. Каждый из приведенных фактов можно легко проверить, просто показав, что выписанная матрица и в самом деле является обратной. Вот, например, как проверяется (2.1.3): В^А"1 - В"ЧВ- AV^ = BA"V -(В-А)А"1 = I.
Детерминант
Если A =(a)eR1x1, то ее детерминант дается равенством det (Л) = а. Детерминант п х «-матрицы определяется через детерминанты (п — 1) х (« — 1)-матриц. Именно, для AeRnxn имеем:
ае1(Л)= £(-1У+Ч^еЦЛ1у), j=i где Л1у-это (« — 1) х (« — 1)-матрица, получаемая из А вычеркиванием первой строки и у-го столбца. Вот несколько полезных свойств детерминанта: det (АВ)= det (Л) det (В),А, В е R"х \
det^T)=det^),ЛеВпхп,
det (сА)= сп det (Л),А е R"х ",с е R,
det (Л) ^ О о А невырожденная, Л е R"х".
Дифференцирование
Пусть а-скалярная величина и А(а)-т х «-матрица с элементами а^а\ Если для всех i и j функция ач^ дифференцируема по а, то под Л (а) мы подразумеваем матрицу
• d (d \А (а) = — А (а) = ^-^(а) = (dv(a)).da \da JJ
Дифференцирование матрицы, зависящей от параметра, оказывается удобным способом исследования чувствительности различных матричных задач.
Задачи
Покажите, что если матрица ЛеКтХл имеет ранг р, то существуют такие матрицы XeRmX₽ и УеКлХр, что
А = ХУ7, где гапк(Х) = гапк(У) = р.
Пусть Л(а)еКт х г и B(a)eRr х "-матрицы, элементы которых являются дифференци-
Векторные нормы 59
руемыми функциями скаляра а. Покажите, что
d— ^А^В^^ dad— ^А^В^^ daГ d— А№L daГ d— А№L daB(a) + A(a)B(a) + A(a)Г d — В (a)L daГ d — В (a)L da
d
— ^А^В^^ da
d
— ^А^В^^ da
Г d
— А№
L da
Г d
— А№
L da
B(a) + A(a)
B(a) + A(a)
Г d — В (a)
L da
Г d — В (a)
L da
1ЛЗ. Пусть элементы ^(a)eR" хл-дифференцируемые функции скаляра а. В предположении что Л (а) всегда невырожденная, покажите, что
Л (а)"1.Л (а)"1.dГ d
Л (а)"1.
Л (а)"1.
— [A(a)-1]= -Л(а)-1 — А(а)
daL da
Пусть Л eR” х л, Z>eR” и отображение \у: R" R" задается формулой v(x) = -хТАх — — хтЬ. Покажите, что градиент \у выражается как V\|/(x) = -(Лг 4- А)х — Ь.
Замечания и литература к § 2.1
Среди множества вводных курсов линейной алгебры только некоторые обеспечивают начинающего изучать матричные вычисления необходимым ему материалом. Особенно полезными мы считаем следующие книги:
Halmos HR. (1958). Finite Dimensional Vector Spaces, 2nd ed., Van Nostrand-Reinhold, 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 Cliffs.
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.
Стюарт (IMC, гл. 1) также дает великолепный обзор матричной алгебры.
Векторные нормы
Нормы в векторных пространствах служат той же цели, что и взятие модуля на вещественной прямой: они позволяют измерять расстояния. Точнее, R" вместе с введенной на R" нормой определяет метрическое пространство. Поэтому при работе с векторами и векторнозначными функциями мы будем располагать привычными понятиями окрестности, открытого множества, сходимости и непрерывности.
Определения
Норма вектора на R"-3TO функция /: R"->R, удовлетворяющая следующим свойствам:
/И > о,/(х + у)</(*)+.Ш>Дох) = |а|/(х),/И > о,/(х + у)</(*)+.Ш>Дох) = |а|/(х),х е R"(/ (х) = 0 <=> х = 0),
/И > о,
/(х + у)</(*)+.Ш>
Дох) = |а|/(х),
/И > о,
/(х + у)</(*)+.Ш>
Дох) = |а|/(х),
х, yeR", aeR, xeR".
Мы будем обозначать такие функции, окружая аргумент вертикальными двойными чертами:/(х) = ||х||. Чтобы отличить одну норму от другой, мы будем использовать индексы при двойной черте.
Полезный класс векторных норм-это р-нормы, определяемые как
П^Пр = (1^11Р +- + l^„lp)1/P’ p^v<22Л)
Наиболее важными из р-норм являются 1, 2 и оо-нормы:
Ml = 1*11 ++ |*„|,
M2 = (i*ii2 + ..- + i*„i2)* = (*r*A
ll*IL = max |xj.
Единичным по отношению к норме || || называется вектор х, удовлетворяющий равенству ||х|| = 1.
Некоторые свойства векторных норм
Классический результат о р-нормах - неравенство Гёльдера:,
Ix^MIpM,, - + -=1.(2.2.2)
р q
Очень важным частным случаем этого неравенства является неравенство Коши- Шварца*.
Ix^MzWh.(2.2.3)
Все нормы в R" эквивалентны, т. е. для двух норм || ||а и IHI^ в R" существуют положительные константы с1 и с2, такие, что
CilMKIWI^^IklL(2.2.4)
для всех .xeR”. Например, при xeR"
■1И12 ^INI, < V”IHl2.(2-2.5)
М^Мг^чАМоо,(2.2.6)
INIoo^lNIi <«INL-(2.2.7)
Абсолютная и относительная погрешности
Пусть xeR” есть аппроксимация к xeR". Для заданной векторной нормы ||'|| мы будем говорить, что
^abs = II-X--XII
есть абсолютная погрешность х, а при х ф 0 формула
_ 11-х — -х||
8reZ W
задает относительную погрешность х. Для оо-нормы относительная погрешность позволяет сформулировать утверждение о количестве верных значащих цифр в х. В частности, если
то максимальная компонента вектора х имеет примерно р верных значащих цифр.
Пример 2.2.1. Если х = (1.234 0.05674/, х = (1.23 5 0.05128/, то Р - х || „/|| х || „« 0.0043 « « 10 ~3. Обратите внимание, что в хг верны примерно три значащие цифры, в то время как в х2 только одна.
Сходимость
Будем говорить, что последовательность {х(к)} и-векторов сходится к вектору х, если
lim ||х(/с) — х|| = 0.
Отметим, что вследствие (2.2.4) сходимость в a-норме влечет сходимость в [3-норме, и наоборот.
Задачи
Покажите, что при xeR” lim || х || р = II х || rj0.
Докажите неравенство Коши-Шварца (2.2.3), рассмотрев неравенство 0 < (ах + Ьу)Т х х (ах + by) для подходящих чисел а и Ь.
Проверьте, что || • || j, || • || 2 и || • || х являются векторными нормами.
Проверьте (2.2.5)-(2.2.7). Когда в каждом из этих неравенств достигается равенство?
Покажите, что в Rnx(0->x тогда и только тогда, когда х^ хк для к = \:п.
Покажите, что любая векторная норма в R” равномерно непрерывна, проверив неравенство I II х II - II у II I II х - у II .
Пусть || ♦ || -векторная норма в Rm и AeRmXn. Покажите, что если гапк(Л) = и, то || х || А = || Ах || - векторная норма в R”.
Пусть х и у - векторы из R”. Определим функцию у: R -► R равенством \|/(а) = || х — ау ||. Покажите, что минимум этой функции достигается при а = хТу/уТу.
(а) Проверьте, что || х || р = (| хг |р + ... + | хп | р)1,р есть векторная норма в Сл. (Ь) Покажите, что при хе С* имеем || х || р < с( || Re(x) || р + || Im(x) || р). (с) Найдите такую константу сп, что сп( || Re(x) || 2 + II Im(x) || 2) II х || 2 для всех хеСп.
Замечания и литература к § 2.2
Очень хорошее обсуждение векторных норм можно найти у Стьюарта (IMC). См. также Householder A. S. (1974). The Theory of Matrices in Numerical Analysis, Dover Publications, New York.
Pryce J. D. (1984). “A New Measure of Relative Error for Vectors”, SIAM J. Numer. Anal. 21, 202-221.
Матричные нормы
Матричные нормы часто требуются при анализе матричных алгоритмов. Например, программа решения систем линейных уравнений может давать некачественный результат, если матрица коэффициентов «почти вырожденная». Для количественной характеристики близости к вырожденности нам нужно уметь измерять расстояния в пространстве матриц. Такую возможность дают матричные нормы.
Определения
Поскольку Rmxn изоморфно Rmn, определение матричной нормы должно быть эквивалентно определению векторной нормы. Именно,/: Rwx” R является матричной нормой, если
/(Л)^0,AeRmxn (/(Д) = 0оЛ = 0),
ПА + В) ^/(А) + /(В), A, BeRmxn, J(aA) = |а|/(Л),aeR,AeRmxn.
Мы будем обозначать матричные нормы так же, как и векторные нормы: двойной чертой, добавляя, если нужно, индексы, т.е. ||Л|| = /(Л).
Чаще всего в вычислительной линейной алгебре используются норма Фробениуса
\W\F = j ii\aij\2(2.3.1)
и /7-нормы
IMI, = supX ^0IMI, = supX ^01И<IWI,1И<IWI,(2.3.2)(2.3.2)
IMI, = sup
X ^0
IMI, = sup
X ^0
1И<IWI,
1И<IWI,
(2.3.2)
(2.3.2)
Заметим, что матричные /7-нормы определяются через векторные /7-нормы, рассмотренные в предыдущем разделе. Проверку того, что (2.3.1) и (2.3.2) действительно нормы, мы оставляем читателю в качестве упражнения. Ясно, что ||Л||р есть /7-норма наибольшего вектора, полученного действием А на векторы единичной (в /7-норме) длины:
IMIIP = sup ЛППГIMIIP = sup ЛППГ= max ||Лх||р.р 1И1,= 1= max ||Лх||р.р 1И1,= 1
IMIIP = sup ЛППГ
IMIIP = sup ЛППГ
= max ||Лх||р.
р 1И1,= 1
= max ||Лх||р.
р 1И1,= 1
(2.3.3)(2.3.3)Важно понимать, что (2.3.1) и (2.3.2) определяют целые семейства норм: 2-норма в R3х2-это другая функция, чем 2-норма в R5x6. Таким образом, легко проверяемое неравенство
(2.3.3)
(2.3.3)
||Л5||р^||Л||р||5||р, АеГ*\ BeR"^
в действительности описывает соотношение между тремя различными нормами. Формально мы будем говорить, что нормы /1,/2 и/3 в пространствах Rmx9, Rwx", R"xe взаимно согласованы, если для всех AeRmxn, BeRnxq мы имеем f^^AB^ «fiWsW.
Не все матричные нормы удовлетворяют мультипликативному свойству
||ЛВ||^||Л||||5||.(2.3.4)
Например, если ||Л||Д = шах|я0| и
А = В =А = В =1_11_11111
А = В =
А = В =
1
_1
1
_1
1
1
1
1
то ||ЛВ||Д > ||Л ||д||В||д. Но в основном мы будем работать с нормами, удовлетворяющими (2.3.4).
/7-Нормы обладают тем важным свойством, что для каждой матрицы AeRmxn и вектора xeR" мы имеем ||Лх||р < ||Л ||р ||х||р. Более общо, для любых векторных норм ||-||а в R" и ||-||p в Rm мы имеем ||Лх||р IM На,р Н^Па’ где матричная норма IIЛ||аЭ определяется как ’ ’
imiUimiU= sup х^О= sup х^ОН^ПаН^Па(2.3.5)(2.3.5)
imiU
imiU
= sup х^О
= sup х^О
Н^Па
Н^Па
(2.3.5)
(2.3.5)
(2.3.6)(2.3.6)Будем говорить, что |Н1ар подчинена векторным нормам || ||а и ||*||р- Поскольку множество {xeR”: ||х||а= 1} компактно и замкнуто, в силу непрерывности нормы ||-||р получаем, что
(2.3.6)
(2.3.6)
IMIIap = max ||Лх||р = ||Лх*||„’w.= i
для некоторого x*eR" с единичной а-нормой.
Некоторые свойства матричных норм
Норма Фробениуса и /2-нормы (в особенности при р = 1, 2, оо) удовлетворяют определенным неравенствам, часто используемым в анализе матричных вычислений. Для AeRmxn имеем:
1МН2«
;imiif^
V«imii2»
(2.3.7)
max|ai7-| и
1И|2<.
^/mn max|al7|, и
(2.3.8)
IMIL
= max
1 ^/^M
1 = 1
(2.3.9)
ML
= max
1 z^ m
j=l
(2.3.10)
4=ml
^M|2 =
V^IMIIcO»
(2.3.11)
<M|2
V^iMik-
(2.3.12)
Доказательства нетрудны и оставляются в качестве упражнения.
Последовательность {Л<м} е R"^" сходится, если lim ИЛ**1 — Л|| = 0. Выбор нормы не имеет значения, поскольку все нормы в Rwx" эквивалентны.
Матричная 2-норма
Прекрасным качеством матричных 1-нормы и оо-нормы является то, что их легко вычислить, используя (2.3.9) и (2.3.10). Значительно сложнее оказывается характеристика 2-нормы.
Теорема 2.3.1. Если A eRmx", то существует единичный в 2-норме п-вектор z, такой, что АТ Az = p2z, где Ц = ||Л||2.
Доказательство. Пусть zeR"-TaKofi единичный вектор, что ЦАгЦ2 = 1ИН2- Поскольку z доставляет максимум функции
||Лх||21 хТ АТ Ах
.9 ( ^) Z 112э Т ’
||х||22 х1 х
8g(z)OZ:8g(z)OZ:то должно выполняться Vg^x) = 0, где Vg-градиент д. Утомительное дифференцирование показывает, что для i = 1: п
8g(z)
OZ:
8g(z)
OZ:
(zTz) X ^A^Zj-^ATAz^z K^z)2.
В векторных обозначениях это означает, что АтAz = (zTATAz)z. Утверждение теоремы следует отсюда, если положить ц = ЦАгЦ2. □
Из теоремы вытекает, что ||Л Ц2 является нулем многочлена р (X) = det (А т А — X/). Более конкретно, 2-норма матрицы А равна квадратному корню из наибольшего собственного значения матрицы АтА. О собственных значениях мы будем говорить подробно в гл. 7 и 8, а пока мы ограничиваемся замечанием, что вычисление 2-нормы носит итеративный характер и определенно сложнее, чем вычисление 1-нормы или оо-нормы. К счастью, если целью является лишь получение оценки
||Л ||2 по порядку величины, можно использовать (2.3.7), (2.3.11) или (2.3.12).
В качестве еще одного примера «анализа норм» приведем удобный для оценки 2-норм результат.
Следствие 2.3.2. Для AeRmxn имеем ||Л||2 Vilalii Halloo-
Доказательство. Если вектор z^O таков, что АТ Az = p2z, где ц = ||Л||2, то ^llzll^ll^zlh ^IM^IJMIIJIzll^lMILIMIIJIzl^.D
Возмущения и обратная матрица
Нормы часто используются для количественной оценки влияния возмущений, а также для доказательства того, что последовательность матриц сходится к указанному пределу. Для иллюстрации этих применений норм дадим количественную оценку возмущения А"1 как функцию возмущения А.'
Лемма 2.3.3. Пусть F eRnxn и ||*||-норма, обладающая мультипликативным свойством (2.3.4). Если ||F|| < 1, то матрица I-F невырожденна и
Ц-ЕГ1= f Е\к = 0
причем
Доказательство. Допустим, что 1-F вырождена. Тогда для некоторого ненулевого вектора х имеем (I-F)x = 0. Но тогда из ||х|| = ||Fx|| вытекает, что ||F|| ^ 1, в противоречие с условием леммы. Значит, I-F невырожденна. Чтобы найти выражение для обратной к ней, рассмотрим тождество
X Fk)(I-F) = I-FN+1.k = 0/
Поскольку ||F|| < 1, имеем lim Fk = 0, так как HF* || ^ ||F||*. Таким образом, n \
lim ^ Fkj(I-F) = I.
N^aok = O /
N
Отсюда следует, что (Z-F)-1 = lim £ Fk. Теперь легко показать, что
N-» оо к = О
оо]
IK/-^)-1 II L llfll^!—к = 01-11^11
Заметим, что из леммы следует также ||(/-/)-1 — /|| ^ ||F||/(1 — ||F||). Таким образом, для е « 1 возмущения порядка О (е) в матрице I вызывают возмущения порядка О (е) в обратной матрице. Распространим этот результат на матрицы общего вида.
Теорема 2.3.4. Если А - невырожденная матрица и Ц^- !F|| = г < 1, то матрица (А + Е) невырожденна и ||(Л + Е)-1 — Л"11|||£|| ||Л-11|2/(1 — г).
Доказательство. Так как А невырожденна, А + Е = A (I-F), где F = —А-1Е. Поскольку ||F|| = r<l, из леммы 2.3.3 следует, что I-F невырожденна и ||(/-F)"1|| < 1/(1 - г). Но (A F ЕГ1 =Ц-ЕГ1А"1, так что
Из (2.1.3) мы получаем, что (Л + Е)-1 — Л-1 = —Л-1Е(Л + Е)"1 и, переходя к нормам, находим:
II м + £)-1 - Л -1II < IM -1IIII £|| IIМ + £)-1II < H1_JU^. □
1 — г
Задачи
Докажите, что || АВ || р || А || р || В || р, где 1 р со.
Пусть В -любая подматрица А. Покажите, что || В || р ^ || А || р.
Покажите, что если D = diag(pii, ... , |ik)eRmx n, где k = min { m,n }, to || D ||p = max | |iz |.
Проверьте (2.3.7) и (2.3.8)
Проверьте (2.3.9) и (2.3.10).
Проверьте (2.3.11) и (2.3.12).
Покажите, что если 0 sgR" и EgR" х ", то
Пусть ueRm и vgR". Покажите, что если Е = uv1, то || E||F = || Е||2 = || «Нг II гИг и Heh^imjml.
Пусть AeRm х ”, yeRm , 0 / sgR". Покажите, что матрица Е = (у — As\sT (sT s имеет наименьшую 2-норму среди всех т х «-матриц, удовлетворяющих (А + E)s = у.
Замечания и литература к § 2.3
Полный обзор норм имеется у Стьюарта (IMC, рр. 160- 184). Вот еще несколько ссылок: Bauer F. L. and Fike С. Т. (1960). “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.
Матричные вычисления с конечной точностью
Ошибки округления - это одна из тех вещей, которые делают матричные вычисления нетривиальной и интересной областью. В этом разделе мы построим модель арифметики с плавающей точкой и применим ее для получения оценок ошибок при вычислении с плавающей точкой скалярных произведений, операций saxpy, произведений матрицы на вектор и матрицы на матрицу.
Числа с плавающей точкой
При выполнении вычислений на компьютере на результат каждой арифметической операции в общем случае влияет ошибка округления. Возникновение этой ошибки обусловлено тем, что аппаратура способна представлять лишь конечное подмножество множества вещественных чисел. Мы будем обозначать это подмножество буквой F и называть его элементы числами с плавающей точкой. Следуя соглашениям, принятым в книге Форсайта, Малькольма и Молера (1977, рр. 10—29), будем характеризовать систему чисел с плавающей точкой для каждой конкретной
-2-1 -0.5 0 0.5 12-2-1 -0.5 0 0.5 12Рис. 2.4.1. Образец системы чисел с плавающей точкой.Рис. 2.4.1. Образец системы чисел с плавающей точкой.
-2-1 -0.5 0 0.5 12
-2-1 -0.5 0 0.5 12
Рис. 2.4.1. Образец системы чисел с плавающей точкой.
Рис. 2.4.1. Образец системы чисел с плавающей точкой.
машины четырьмя целочисленными параметрами: базой 0, точностью / и интервалом значений показателя [L, 17]. Конкретно, F содержит все числа / вида
/= ±d1d2...dt х 0е, 0^. <0, dY^^, L^e^U,
а также число нуль. Обратим внимание, что для каждого ненулевого /gF выполняется т < |/| М, где
m = ^L"\ М = 0^(1 - 0’0-. (2.4.1)
Приведем пример. Для 0 = 2, / = 3, L = 0, 17 = 2 элементы множества F показаны штрихами на рис. 2.4.1. Заметьте, что числа с плавающей точкой отстоят друг от друга на неравные промежутки по оси. Типичным значением для четверки (0, /, L, 17) могло бы быть (2, 56, —64, 64).
Модель арифметики с плавающей точкой
Чтобы делать общие утверждения о влиянии ошибок округления на данный алгоритм, необходимо иметь на множестве F модель компьютерной арифметики. Для ее построения определим множество G как
G = {xgR: т ^ |х| ^ М} и {0}(2.4.2)
и оператор fk G-^¥ как
jl^ = 1jl^ = 1ближайшее к х число cgF, если используется арифметика с округлением. При наличии двух таких чисел выбирается то из них, которое отстоит дальше от нуля.
jl^ = 1
jl^ = 1
ближайшее к х число cgF, удовлетворяющее |с| ^ |х|, если используется арифметика с отбрасыванием разрядов.
Пусть а и Ь- любые два числа с плавающей точкой и ор означает любую из четырех арифметических операций +, —, х, — . Если | a op b | ф G, то происходит арифметическая ошибка, являющаяся либо переполнением (|а op b\ > М), либо обращением в машинный нуль (0 < \а ор Ь\ < т). Если \а op b\ g G, то в нашей модели арифметики с плавающей точкой будем считать, что результатом выполнения (а ор Ь) на компьютере является fl^a ор Ь\
Арифметическая ошибка обычно влечет за собой остановку программы, хотя некоторые машины и компиляторы продолжают счет при нехватке точности, полагая результат нулем. Обработка арифметических ошибок-это интересный и важный вопрос (см. Demmel (1984)).
Если арифметической ошибки не происходит, то важно ответить на вопрос о точности fl (а ор Ь). Можно показать, что оператор // удовлетворяет соотношению
//(х) = х(1 +8),|8|^и,(2.4.3)
где и-единичная ошибка округления, определяемая как
_ J 2^ 1 для арифметики с округлением,
U I -(2.4.4)
I Р1 ' для арифметики с отбрасыванием разрядов.
Следовательно, /7(я ор Ь) = (а ор />)(1 + е), где |е| ^ и. Тогда оценка
\Л(а ор Ь) — {а ор Ь)\
^ и, a op b ^ 0(2.4.5) \а ор
показывает, что отдельные арифметические операции выполняются с малой относительной погрешностью. Важно осознавать, однако, что это уже необязательно будет так для последовательности операций.
Пример 2.4.1. При Р = 10, Z = 3 используется арифметика с плавающей точкой с отбрасыванием разрядов; можно показать, что//[//(Ю-3 + 1) — 1] = 0, что влечет за собой относительную ошибку, равную 1. С другой стороны, точный ответ дается выражением//[//(Ю-3 + 1) + + /7(1 — 1)] = 10-3. Отсюда видно, что арифметика с плавающей точкой не всегда ассоциативна.
Потеря точности
Еще один важный аспект арифметики с конечной точностью - феномен катастрофической потери точности. Грубо говоря, этот термин относится к потере многих верных значащих цифр при получении малых чисел в результате сложения / вычитания больших чисел. Хорошо известный пример, описанный в книге Форсайта, Малькольма и Молера (1977, рр. 14-16),-это вычисление е”а, а > 0, через ряд Тейлора. При таком методе ошибка округления примерно равна и, умноженному на наибольшую частичную сумму. Для больших значений а эта ошибка может даже превысить верное значение экспоненты, и ответ не будет содержать верных цифр, сколько бы членов ряда ни складывать. С другой стороны, если сложить достаточно членов в ряде Тейлора для еа и обратить результат, можно получить оценку для е~а с полной точностью.
Обозначение абсолютной величины
Прежде чем переходить к анализу ошибок округления в основных вычислениях с матрицами, мы введем некоторые полезные обозначения. Пусть ЛеКшх" и мы желаем дать количественную оценку ошибкам, возникающим при представлении этой матрицы числами с плавающей точкой. Обозначая через //(Л) реально хранимую в компьютере матрицу, мы видим, что
1Л№ =Л^Л = аи^ + ецХ М ^ и(2.4.6)
для всех / и /. Можно дать более удобное представление для этого факта, если принять следующие два соглашения. Пусть А и В суть т х /7-матрицы. Тогда
В= |Л|=>617 = |я17|, i = \ :mj = 1:п,
В ^ А=> b^ ^ а^, z = 1: т, j = 1: п.
С учетом этих обозначений мы видим, что (2.4.6) принимает вид:
|//(Л) — Л| ^ и|Л|.
Подобное соотношение легко можно превратить в неравенство для норм, например, ||//(Л) — Л||х < и||Л 1^. Однако для количественной оценки ошибок округления, возникающих при манипуляциях с матрицами, обозначение абсолютной величины может быть намного более информативным, поскольку сообщает нечто о каждом (z, /)-м элементе.
Ошибки округления в скалярных произведениях*
Мы начинаем изучать матричные вычисления с конечной точностью с рассмотрения ошибок округления, возникающих в стандартном алгоритме вычисления скалярного произведения:
5 = 0
for к = 1: п
s = Я- хкук^АЛ")
end
Здесь х и у суть п х 1-векторы, составленные из чисел с плавающей точкой.
Пытаясь дать количественную оценку возникающим в этом алгоритме ошибкам округления, мы немедленно сталкиваемся с проблемой обозначений: как различить вычисленные и точные величины? В тех случаях, когда ясно, какие именно вычисления производятся, мы будем использовать оператор // (•) для обозначения вычисленных величин. Так,//(хгу) означает реально вычисленный в (2.4.7) результат. Оценим |//(.хг}0 - (лг7»!- Если
(
р
Ё ^кУк
к = 1
то 5Х = xYyY (1 + 8J, где |8Х | < и и для р = 2:п
Sp =Л(зр-1 +Л(хрУР» =
= ^р-1 + хруДХ + §„))(! + ер), |5р|, |ер|^и.(2.4.8)
После несложных преобразований получаем, что
Л^у) = $„ = У хкук(1 + yt),к- 1
где
(1 + ь) = (1 + 8J П (1 +£7.)j = k
при договоренности, что ех = 0. Итак,
|//(хгу) - (хгу)| X |х^ 11yj.(2.4.9)
к= 1
Для дальнейшего необходимо оценить величины | чк I через и. На этом пути полезен следующий результат.
Лемма 2.4.1. Если (1 + а) = П (1 + ак), где |ак| < и и пи < 0.01, то |а| < 1.01ли. к= 1
Доказательство. См. Форсайт и Молер (SLE, р. 92). □
Применяя этот результат к (2.4.9) при «разумном» предположении ли ^0.01, получаем
\Л(хТу) - «у)| ^' 1.01A7UЬхГ Iу|.(2.4.10)
Обратите внимание, что если |хгу| « |х|т|у|, то относительная погрешность fl(xTy) может уже не быть маленькой.
2.4.6. Альтернативные методы количественной оценки ошибок
Более простой, хотя менее точный, способ оценки а в лемме 2.4.1 дается неравенством | а | < ли + О (и2). При этом мы имеем
|//(хгу) - (хгу)| < ии|х|т|>-| + О(и2).
(2.4.11)
По-другому этот же результат можно выразить как
|/7(хту) - (xTj)| < \|/(«)«Mrljl
(2.4.12)
или как
|//(хг>’) - (хгу)| < спи|хГ1Я
(2.4.13)
где в (2.4.12) \|/(л)-«не очень быстро растущая» функция л, а с в (2.4.13)-константа порядка 1.
Мы не будем отдавать предпочтение ни одному из показанных в (2.4.10)-(2.4.13) методов оценки ошибок. Это избавляет нас от необходимости приведения имеющихся в литературе результатов по ошибкам округления к фиксированному формату. Более того, излишнее внимание к деталям отдельных оценок не согласуется с «философией» анализа ошибок. Как пишет Уилкинсон (1971, р. 567):
«Все еще существует тенденция придавать слишком большое значение точным оценкам ошибок, полученным путем априорного анализа. По моему мнению, получаемая в этом процессе оценка обычно менее всего важна сама по себе. Основная цель подобного анализа - выявление в алгоритме потенциальных неустойчивостей (если они есть), с надеждой на то, что добытые подобным образом знания могут привести к созданию улучшенных алгоритмов. Сама оценка обычно слабее, чем она могла бы быть, в силу необходимости придерживаться разумных пределов детализации, а также ввиду ограничений, налагаемых представлением ошибок в терминах матричных норм. Априорные оценки-это в общем случае не те величины, которые стоит использовать на практике. Для практического определения ошибок, как правило, следует использовать какую- либо разновидность апостериорного анализа, что дает все преимущества учета статистического распределения ошибок, а также других специальных свойств матрицы, как, например, разреженности».
Именно по этим причинам у анализа ошибок округления своя специфика, отличающая его от «чистого матанализа».
Вычисление скалярных произведений с накоплением
В некоторых компьютерах предусматривается вычисление скалярных произведений с накоплением в двойной точности. Это означает, что если х и у-векторы, составленные из чисел с плавающей точкой с мантиссой длины /, то текущее значение суммы 5 из (2.4.7) накапливается в регистре с мантиссой длины 2/. Поскольку произведение двух чисел с мантиссой длины / точно укладывается в переменную двойной точности, то ошибка округления возникает лишь в тот момент, когда 5 записывается в ячейку памяти с одинарной точностью. В этой ситуации обычно можно утверждать, что вычисленное скалярное произведение имеет хорошую оценку относительной погрешности, т. е. fl(xTy) = хгу(1 + 5), где 151 и. Таким образом, способность вычислять скалярные произведения с накоплением очень привлекательна для вычислений с матрицами.
Ошибки округления в других основных матричных вычислениях
Легко показать, что если А и В -матрицы из чисел с плавающей точкой и а-некоторое число с плавающей точкой, то
(2.4.14)(2.4.14)(2.4.15)(2.4.15)//(аЛ) = аЛ + Е, |£| ^и|аЛ|
(2.4.14)
(2.4.14)
(2.4.15)
(2.4.15)
и
//(Л + В) = (Л + В) + £,| £| ^ и|Л + В|.
Как следствие этих двух последних результатов легко получить, что вычисленные значения saxpy и модификации внешним произведением удовлетворяют соотношениям
//(ах + j) = ах + у + z,I z | ^ и(2 |ах| + у) + О(и2),(2.4.16)
fl (С + uvT) = С + uvT + Е,| £| < и (| С| + 21 uvT |) + О (и2).(2.4.17)
Используя (2.4.10), легко показать, что умножение двух матриц Л и В с плавающей точкой, основанное на использовании скалярных произведений, удовлетворяет
//(Л В) = АВ + Е, | £| ^ ли|Л||В| + О (и2).(2.4.18)
Этот же результат остается в силе при использовании процедуры gaxpy или модификации внешним произведением. Обратим внимание, что матричное умножение необязательно дает малую относительную погрешность, поскольку |ЛВ| может быть гораздо меньше, чем |Л||В|. Например,
1 ПГ 1.0 oJL-0.991 ПГ 1.0 oJL-0.990 _ 0.01 0оJ “ L о 0.0 _ 0.01 0оJ “ L о 0.
1 ПГ 1
.0 oJL-0.99
1 ПГ 1
.0 oJL-0.99
0 _ 0.01 0оJ “ L о 0.
0 _ 0.01 0оJ “ L о 0.
Из полученных результатов по ошибкам можно легко извлечь оценки в терминах норм. При рассмотрении 1-нормы в матричном умножении с плавающей точкой легко показать, используя (2.4.18), что
||//(ЛВ) - AB\V < huIMIL НЯ1 + O(u2).(2.4.19)
Прямой и обратный анализ ошибок
Каждая из приведенных выше оценок ошибок округления получена путем прямого анализа ошибок. Альтернативный способ характеристики возникающих в алгоритме ошибок округления дает методика, называемая обратным анализом ошибок. В ней ошибки округления привязываются не к решению задачи, а к ее данным. Для иллюстрации рассмотрим умножение треугольных матриц при п = 2. Можно показать, что
//(ЛВ) =//(ЛВ) =«11^11(1 + 61). о«11^11(1 + 61). оаи/>12(1 + е2) + a12Z>12(l + е3)(1 + е4)
//(ЛВ) =
//(ЛВ) =
«11^11(1 + 61)
. о
«11^11(1 + 61)
. о
022^22^ + е5)•
где lej < и для i = 1:5. Однако, если мы положим
tin + ^зН1 + eJ_ 0Я22(1 + 85) .
и
/ц(1 + 81)/?12(1 + 82)(1 + 84Г
.0Ь22_
то легко проверить, что fl(AB) = АВ. Более того,
А = А + Е, |£| = 2и|Л| + 0(и2),B=B + F, |F| <2u|B| + 0(и2).
Иными словами, вычисленное произведение есть точное произведение слегка возмущенных матриц А и В.
Ошибки округления в алгоритме Штрассена
В § 1.3.8 мы привели нетрадиционную процедуру умножения матриц, изобретенную Штрассеном в 1969 г. Поучительно сравнить влияние ошибок округления для этого метода с любым из обычных алгоритмов матричного умножения из § 1.1.
Можно показать, что подход Штрассена (алгоритм 1.3.1) приводит к матрице С = //(АВ), удовлетворяющей неравенству вида (2.4.19). Для многих приложений этого вполне достаточно. Однако вычисляемая в методе Штрассена матрица С не всегда удовлетворяет неравенству вида (2.4.18). Чтобы убедиться в этом, положим
Г0.990.0010"
А = В =
L0.0010 0.99 J
и пусть алгоритм 1.3.1 исполняется в арифметике с округлением до двух знаков. Среди вычисляемых величин, в частности, будут
Р3 =//(0.99(0.001 - 0.99)) = -0.98,
Р5 =//((0.001 + 0.99)0.99) = 0.98, с12=//(Р3 + Л) = 0.0.
Но в точной арифметике с12 = 2 (0.001) (0.99) = 0.00198, так что полученное в алгоритме 1.3.1 г12 не имеет верных значащих цифр. Алгоритм Штрассена в данном примере терпит неудачу по той причине, что малые внедиагональные элементы складываются с большими диагональными. В обычном же матричном умножении ни /)ы с />12, ни с я12 не суммируются, так что потери вклада малых внедиагональных элементов не происходит. Действительно, для вышеприведенных матриц А и В стандартное умножение матриц дает с12 = 0.0020.
В некоторых приложениях недостоверность отдельных компонент матрицы С может быть серьезным недостатком. Например, в марковских процессах элементы atp bijs с^ суть вероятности переходов и поэтому неотрицательны. Если с^ соответствует какой-нибудь особенно важной вероятности в моделируемом явлении, то его точное вычисление может быть критически важным. Заметим, что если А > 0 и В > 0, то стандартное умножение матриц дает матрицу С с поэлементно малой относительной ошибкой:
|С- С| ^ ли|Л||В| + О(и2) = ли|С| + О(и2).
Это следует из (2.4.18). Так как аналогичное утверждение не будет справедливым для метода Штрассена, мы заключаем, что алгоритм 1.3.1 непривлекателен для некоторых задач перемножения неотрицательных матриц, если требуется получать относительно точные элементы с^.
Развивая идеи проведенного здесь обсуждения, мы приходим к двум достаточно очевидным и в то же время важным выводам:
Различные методы вычисления одной и той же величины могут приводить к существенно различным результатам.
Насколько удовлетворительными окажутся выданные алгоритмом результаты, зависит от рода решаемой задачи и от целей человека, который эту задачу решает.
Эти утверждения будут разъяснены в последующих главах. Они оказываются тесно связанными с понятиями устойчивости алгоритма и обусловленности задачи.
Задачи
Покажите, что если в (2.4.7) у = х, то fl(xT х) = хтх(1 + а), где | а | < пи + О (и2).
Докажите (2.4.18).
Покажите, что если Ее Rm х ", где т ^ п, то || | Е\ || 2 < х/п || Е || 2 ♦ Этот результат полезен при выводе оценок в терминах норм из оценок в терминах абсолютных величин элементов. 2.4.4. Пусть имеется функция извлечения квадратного корня, удовлетворяющая условию /Z(xA) = v ' (1 +8), где | £ | ^ и. Приведите алгоритм для вычисления || х || 2 и оцените ошибки округления.
Пусть А и В-верхние треугольные п х «-матрицы из чисел с плавающей точкой. Если С = fl (АВ) вычислено по любому из традиционных алгоритмов из § 1.1, верно ли, что С = АВ, где А и В близки к А и ВЧ.
Пусть А и В-п х «-матрицы из чисел с плавающей точкой и матрица А невырожденная, причем || | А ~111 А | || = т. Покажите, что если С = fl (АВ) вычислено по любому из алгоритмов из § 1.1, то существует такая В, что С = АВ и || В — В || < «ит || В || + О (и1).
Замечания и литература к § 2.4
Наиболее полное изложение анализа ошибок округления содержится у Уилкинсона (АЕР, гл. 3). Превосходное изложение имеется также у Форсайта и Молера (SLE, рр. 87-97) и Стьюарта (IMC, рр. 69-82). Для общего знакомства с ролью ошибок округления мы рекомендуем гл. 2 книги
Forsythe G. Е., Malcolm М. A., and MolerC. В. (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, П”, 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 арифметики с плавающей точкой по работе
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.P. (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.
Ортогональность и сингулярное разложение
Ортогональность играет в вычислениях с матрицами выдающуюся роль. Введя несколько определений, мы докажем очень полезную теорему о сингулярном разложении (SVD). Помимо всего прочего, SVD позволяет по-умному подойти к проблеме ранга матрицы. Понятие ранга, совершенно ясное в условиях точных вычислений, становится скользким в присутствии ошибок округления и погрешностей в исходных данных. Сингулярное разложение позволяет ввести практичное понятие численного ранга.
Ортогональность
Набор векторов {л^, ..., лрj в Rm называется ортогональным, если xfXj = 0 при i ^ j, и ортонормированным, если x/xj = 5/;. Интуитивно, ортогональные векторы максимально независимы, поскольку направлены в совершенно разные стороны.
Подпространства 51? ..., Sp в R"1 попарно ортогональны, если хТ у = 0 для всех хеSj и yeSj, таких что i^j. Ортогональное дополнение подпространства 5 ^ R"1 определяется как.
51 = ^yeRm:yTx = 0 для всех хе5}.
Можно показать, что range (Л)1 — пи11(Лт).
Векторы vY, ..., ик образуют ортонор мированный базис подпространства S ^ Rw, если они ортонормированы и их линейная оболочка совпадает с S. Такой базис всегда можно достроить до ортонормированного базиса {г^ ..., гт} всего пространства Rw. Отметим, что в этом случае 51 = span{t\ + 1, ..., ит}.
Говорят, что матрица QeRmxm ортогональна, если QTQ = I. Если Q = [^1? ..., ^т] ортогональна, то векторы qi образуют ортонормированный базис в Rw.
Нормы и ортогональные преобразования
2-норма инвариантна относительно ортогональных преобразований, поскольку если QTQ = I, то ||2х||2 = xTQT Qx = хТх = ||х||2. Этим же свойством обладают
матричная 2-норма и норма Фробениуса. Именно можно показать, что для всех ортогональных матриц Q и Z подходящих размеров мы имеем:
(2.5.1)(2.5.1)(2.5.2)(2.5.2)|^Z||F = ||A||F
(2.5.1)
(2.5.1)
(2.5.2)
(2.5.2)
и
iie^zn2 = iMii2.
Сингулярное разложение
Развитая в двух предыдущих разделах теория норм позволяет получить очень полезную теорему о сингулярном разложении.
Теорема 2.5.1 (Сингулярное разложение (SVD)). Если А-вещественная т х п-матрица, то существуют ортогональные матрицы’
U = [и^ ..., wm]eRwxw и V=[y^ ..., v„]gR”x”,
такие, что
UTAV = diag(o1, ..., Qp)eRmxn р = min{m, п^,
где ох ^ о2 ^ • • °р ^ 0.
Доказательство. Пусть xeR" и у е Rm - единичные в 2-норме векторы, удовлетворяющие равенству Ах = су, где с = ||Л||2. Поскольку любой ортонормированный набор векторов может быть расширен до ортонормированного базиса всего пространства, то можно найти такие матрицы J^eR"4^"^ и Ut GRmx(m-i)^ что V = [х KJeR"4" и U = [у U1]eRmxm ортогональны. Нетрудно показать, что UTAV имеет следующую структуру:
Так как
2> (а2 + wTwf*,2> (а2 + wTwf*,22
2
> (а2 + wTwf*,
2
> (а2 + wTwf*,
2
2
то мы имеем ||Ах Ц! > (о2 + wTw\ Но с2 = || Л||2 = || Л х Ц1 и поэтому необходимо w = 0. Теперь теорема легко доказывается применением метода математической индукции. □
Числа с{ называются сингулярными значениями матрицы А, а векторы щ и vf - соответственно левыми и правыми сингулярными векторами. Сравнивая матричные равенства AV = Zt/ и ATU = ИТА по столбцам, легко убедиться, что
= с^Д ..
тГ z = 1:min{т, п}.
АТщ = ср^ J11
Введем следующие обозначения для сингулярных значений:
сДА)-ье по величине сингулярное значение матрицы А,отах (Л) - максимальное сингулярное значение матрицы А,omin(Л)-минимальное сингулярное значение матрицы А.
Сингулярные значения матрицы Л-это в точности полуоси гиперэллипсоида Е, задаваемого соотношением Е = {Лх:||х||2 = 1}.
Пример 2.5.1.
А =А =0.962.280.962.281 -72 = у у ут _ 0.60.96 JL0.81 -72 = у у ут _ 0.60.96 JL0.8— 0.83— 0.830.6JL00.6JL000.81 JLo.600.81 JLo.6-0.8-0.8
А =
А =
0.96
2.28
0.96
2.28
1 -72 = у у ут _ 0.6
0.96 JL0.8
1 -72 = у у ут _ 0.6
0.96 JL0.8
— 0.83
— 0.83
0.6JL0
0.6JL0
00.8
1 JLo.6
00.8
1 JLo.6
-0.8
-0.8
Сингулярное разложение дает большую информацию о структуре матрицы. Если SVD матрицы А задано, как в теореме 2.5.1, то, определяя г соотношениями
Ох > . . . > Qr > Or+1 = . . . = Ср = 0,
мы имеем
(2.5.3)(2.5.4)(2.5.5)(2.5.3)(2.5.4)(2.5.5)rank (Л) = г, пи11(Л)= span{rr+1, ..., гй},
(2.5.3)
(2.5.4)
(2.5.5)
(2.5.3)
(2.5.4)
(2.5.5)
range (Л) = span{w1? ..., иД.
Более того, обозначив Ur = U (:, 1: г), Иг = Е(1: г, 1 :г) и Иг = F(:, 1 :г), мы получим следующее разложение'.
А = U^Vj = £ c^vf.А = U^Vj = £ c^vf.(2.5.6)(2.5.6)
А = U^Vj = £ c^vf.
А = U^Vj = £ c^vf.
(2.5.6)
(2.5.6)
Наконец, в терминах SVD изящно характеризуются как 2-норма, так и норма Фробениуса:
1ИПг = О1 + ... + Ср,1ИПг = О1 + ... + Ср,р = min {m, «},р = min {m, «},(2.5.7)(2.5.7)
1ИПг = О1 + ... + Ср,
1ИПг = О1 + ... + Ср,
р = min {m, «},
р = min {m, «},
(2.5.7)
(2.5.7)
(2.5.8)(2.5.8)||Л|| =о1.
(2.5.8)
(2.5.8)
Неполнота ранга и SVD
Одно из наиболее ценных качеств сингулярного разложения состоит в том, что оно позволяет нам разумно обращаться с понятием ранга матрицы. Многие теоремы линейной алгебры формулируются примерно так: «Если такая-то матрица имеет полный ранг, то выполняются такие-то и такие-то свойства». Аккуратные и эстетичные результаты в этом духе тем не менее мало помогают в преодолении вычислительных затруднений, часто возникающих при работе с матрицами, близкими к матрицам неполного ранга. Ошибки округления и погрешности в исходных данных превращают определение ранга в нетривиальное упражнение. В действительности нас может интересовать 8-ранг матрицы, который для некоторого малого 8 определяется по формуле
rank (Л, е) =min rank (В).
1М-5||2<8
Так, если элементы а- матрицы А получаются в лаборатории с точностью до ±0.001, то, по-видимому, имеет смысл посмотреть на rank (Л, 0.001). Аналогично, если А есть т х «-матрица из чисел с плавающей точкой, то разумно считать А численно неполноранговой, если rank (Л, е) < min(m, п), где 8 = и||Л||2.
Численная неполнота ранга и 8-ранг прекрасно характеризуются в терминах SVD, поскольку сингулярные значения показывают, насколько данная матрица близка к какой-нибудь матрице меньшего ранга.
Теорема 2.5.2. Пусть SVD матрицы ЛбКтх" задано, как в теореме 2.5.1. Если k < г = rank (Л) и
Ак= Ц aiuiv^(2.5.9)
то
min ||Л-5||2 = ||Л-ЛЛ2 = о4+1.(2.5.10)
rank (5) = к
Доказательство. Поскольку UT Ак V = diag(o1, ..., ск, 0,0), то rank^A^ = к
и UT^A - Ак)У = diag(0, ..., 0, о* + 1, ..., ар\ так что |М - Л*||2 = о*+1.
Теперь предположим, что rank(5) = к для некоторого BeRmxn. Тогда мы можем найти такие ортонормированные векторы хх, ..., хп_к, что null (В) = = span х {х1? ..., хп_к^. Из соображений размерности ясно, что
span{x1; ..., x„_t} П span{v1, ..., ^+1} # {0}.
Пусть z-единичный в 2-норме вектор, принадлежащий этому пересечению. Поскольку Bz = 0 и
k + i
Az = £ a^v^z) иИ'
i = 1
мы имеем
11+ - #111 > ||(+ - B)z^ = \\Az\\22 = £ aUvIzf > cLt, 1=1
что завершает доказательство нашей теоремы. □
Теорема 2.5.2 утверждает, что наименьшее сингулярное число матрицы А равняется измеренному в 2-норме расстоянию от этой матрицы до множества всех матриц неполного ранга. Из нее также следует, что множество матриц полного ранга является открытым и всюду плотным в Rmxn.
Наконец, если rE = rank (А, е), то
Qj ^ ... ^ оГ£ > е ^ оГе+ т ^ ... ^ ар, р = min {m, л}.
Мы вернемся к обсуждению вопросов, связанных с численным рангом матриц, в § 5.5 и § 12.2.
Задачи
Покажите, что если ST = — S, то матрица I — S невырожденна, а матрица (/ — S)-1 х х (/ + S) ортогональна. Это преобразование Кэли матрицы S.
Покажите, что если треугольная матрица ортогональна, то она диагональна.
Покажите, что если матрица Q = Qx + iQ2, где Qx , Q2 е R” х п, унитарна, то вещественная 2п х 2и-матрица
Z =Z =Qi1е2Qi1е2-QieJ-QieJортогональна.ортогональна.Докажите свойства (2.5.3)- (2.5.8).Докажите свойства (2.5.3)- (2.5.8).Докажите, чтоДокажите, чтоo«U) = maxo«U) = maxveRm,xeR"veRm,xeR"у1 АхII -V II 2 Hj^ II 2у1 АхII -V II 2 Hj^ II 2Для 2 х 2-матрицы А =Для 2 х 2-матрицы А =w, х, у и z.w, х, у и z.получите выражения для <зтаДА) и omin(A) как функцииполучите выражения для <зтаДА) и omin(A) как функцииТ5Л. Покажите, что любая матрица из Rm х ” является пределом последовательности матриц полного ранга.Т5Л. Покажите, что любая матрица из Rm х ” является пределом последовательности матриц полного ранга.
Z =
Z =
Qi
1е2
Qi
1е2
-Qi
eJ
-Qi
eJ
ортогональна.
ортогональна.
Докажите свойства (2.5.3)- (2.5.8).
Докажите свойства (2.5.3)- (2.5.8).
Докажите, что
Докажите, что
o«U) = max
o«U) = max
veRm,xeR"
veRm,xeR"
у1 Ах
II -V II 2 Hj^ II 2
у1 Ах
II -V II 2 Hj^ II 2
Для 2 х 2-матрицы А =
Для 2 х 2-матрицы А =
w, х, у и z.
w, х, у и z.
получите выражения для <зтаДА) и omin(A) как функции
получите выражения для <зтаДА) и omin(A) как функции
Т5Л. Покажите, что любая матрица из Rm х ” является пределом последовательности матриц полного ранга.
Т5Л. Покажите, что любая матрица из Rm х ” является пределом последовательности матриц полного ранга.
Покажите, что если матрица Л 6 Rm х " имеет ранг п, то || А (А т А) 1 А т || 2 = 1.
2.5.9. Какая матрица ранга 1 ближе всего к матрице А =2.5.9. Какая матрица ранга 1 ближе всего к матрице А =1 МО 11 МО 1по норме Фробениуса?по норме Фробениуса?
2.5.9. Какая матрица ранга 1 ближе всего к матрице А =
2.5.9. Какая матрица ранга 1 ближе всего к матрице А =
1 М
О 1
1 М
О 1
по норме Фробениуса?
по норме Фробениуса?
Покажите, что для матрицы ДеНт х " IM II F < Vrank и) II Л II 2 , что улучшает оценку (2.3.7).
Замечания и литература к § 2.5
Хорошее описание роли SVD в анализе задачи Ах = b дают Форсайт и Молер (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 в приложениях, где требуется тонкое обращение с матричным рангом. Диапазон приложений весьма впечатляющ; одно из наиболее интересных описано в
Moler С. В. and Morrison D. (1983). “Singular Value Analysis of Cryptograms”, Amer. Math. Monthly 90, 78-87.
Об обобщениях SVD на случай бесконечномерных гильбертовых пространств см. книги
Gohbergl.C. and Krein M.G. (1969). Introduction to the Theory of Linear Non-Sclf Adjoint Operators, Amer. Math. Soc., Providence, R. I.
Smithies F. (1970). Integral Equations, Cambridge University Press, Cambridge.
Понижение ранга матрицы, как в теореме 2.5.2., при ограничениях на возмущающую матрицу обсуждается в
Demmel J. 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.
Проекции и CS-разложение
Если в результате вычисления должна получиться матрица или вектор, то для оценки точности ответа или для измерения того, насколько успешно продвигается итерационный процесс, удобно применять нормы. Если же необходимо вычислить целое подпространство, то для получения аналогичных оценок нам нужно уметь давать количественное выражение расстояния между подпространствами. Очень важную роль при этом играют ортогональные проекторы. Рассмотрев элементарные понятия, мы переходим к обсуждению CS-разложения. Это похожее на SVD разложение оказывается очень кстати, когда нужно сравнить пару подпространств. Мы начинаем с понятия ортогонального проектора.
Ортогональные проекторы
Пусть 5 ^ R"-подпространство. Матрица РеКпхп называется ортогональным проектором на подпространство S, если range (Р) = S, Р2 = Р и РТ = Р. Из этого определения легко усмотреть, что если xeR”, то PxeS и (I — Р)хе8\
Если PY и Р2 - ортогональные проекторы, то для любого zeR” мы имеем
|| (Рх - P2)Z||i = Ц\ zfU - P^z + (P2zHl - P^z.
Если range (Рг ) = range (Р2) = S, то правая часть этого выражения обращается в нуль, показывая, что для данного подпространства ортогональный проектор на него единствен.
Если столбцы V = [г1?..., гк] образуют ортонормированный базис подпространства S, то Р = V VT - единственный ортогональный проектор на S. Заметим еще, что если reR", то Р = ииТ/иТи есть ортогональный проектор на S = span {г}.
Проекторы, связанные с SVD
С сингулярным разложением ассоциируется несколько важных ортогональных проекторов. Пусть А = UHVTeRmxn есть сингулярное разложение матрицы А, причем rank (Л) = г. Если матрицы U и V разбиты на блоки как
и = [иг ид V= [И, К] ,г m — rг п — г
то
VrVj -проектор на null (Л)1 = range (Лг), VrVj -проектор на null (Л), UrUr~ проектор на range (Л), UrUr - проектор на range(Л)-L = пи11(Лг).
Расстояние между подпространствами
Взаимно однозначное соответствие между подпространствами и ортогональными проекторами на них позволяет нам выработать понятие расстояния между подпространствами. Предположим, что Si и S2 - подпространства в R" и dim (Sx) = dim(S2). Определим расстояние между этими двумя подпространствами как
dist(S19 S2) = ||P1-P2||2)(2.6.1)
где Р, - ортогональные проекторы на 8^
Геометрическую интерпретацию dist(-, •) можно получить, рассмотрев случай одномерных подпространств в R2. Пусть S^ span {х} и S2 = span{y}, где х и у-единичные в 2-норме векторы из R2. Поскольку их 2-норма равна 1, мы можем записать
Feos(6г)™|_ Fcos(62)
Х _sin(6i)_ ’_sin(62)_
для некоторых 6г и 62 из интервала [0, 2л]. Если ввести ортогональные матрицы
w =
cos (€
_sin (6
>1) -sin^)’ i) cos^J.
, z =
cos(62) — sin(62)
_sin(62)cos(62)_
то
W
cos(92 — 9J
,ZT x
cos(61 — 62)
Вычисление показывает,
WT(xx
_sin(92 — 9j)_ что
r-yyT)Z =
"0
„sin^ — 02)_
sin^ — 62)
.sin^ — 6
0_
так что ||ххг — уут ||2 = || WT(xxT — yyT)ZH2 = |sin(0t — 02)|. Следовательно, dist(S1? S2) = |sin(01 — 02)|, величине синуса угла между двумя подпространствами.
Эта удачная геометрическая интерпретация функции расстояния применима и для более высоких размерностей, но предварительно необходимо расширить понятие угла между подпространствами. Следующая теорема позволяет это сделать.
Теорема 2.6.1 (CS-разложение). Если матрица
би 612 к
-621 622- jк j
ортогональна, причем к > j, то существуют ортогональные матрицы UY, J^eR*4* и ортогональные матрицы U2, r2eR7x7, такие что
"и, ОТГ^ ^ЛГ^ о'-о t/J Lq2i е22Ло v2_"и, ОТГ^ ^ЛГ^ о'-о t/J Lq2i е22Ло v2_U-j О о
"и, ОТГ^ ^ЛГ^ о'
-о t/J Lq2i е22Ло v2_
"и, ОТГ^ ^ЛГ^ о'
-о t/J Lq2i е22Ло v2_
(2.6.2)(2.6.2)10 С S г. 0 -S С ,
(2.6.2)
(2.6.2)
где
С = diag^сх, ..., Cj) g R7х \с\ = cos (0;),
S = diag (^, ..., Sj) 6 R7 x 7,st = sin (0,)
и 0 0i 02 0j ^ k/2.
Доказательство. См. Davis and Kahan (1970) или Stewart (1977). Предположение k^j сделано лишь для удобства обозначений. □
Грубо говоря, CS-разложение эквивалентно одновременной диагонализации блоков ортогональной матрицы.
Пример 2.6.1. Матрицы
6 =
-0.716
-0.698
_ -0.006
0.548
-0.555
-0.626
0.433
-0.451
0.780_
, и =
-0.721
-0.692
_ 0.000
-0.692
0.721
0.000
0.000
0.000
1_
и
0.999
-0.010
0.000
У =
-0.010
-0.999
0.000
0.000
0.000
1
ортогональны с точностью до трех десятичных знаков и удовлетворяют соотношению
1.0000.0000.000
UTQV=
0.0000.7800.625
0.000-0.6250.780
Таким образом, на языке теоремы 2.6.1 к = 2, j = 1, сх = 0.780 и s, = 0.625.
Теперь мы покажем, как подходящим образом выбранное CS-разложение раскрывает «степень близости» между парой подпространств одинаковой размерности.
Следствие 2.6.2. Пусть Ж = [И^, W23 и Z=[Z1? Z2]-ортогональные матрицы, причем Wx, ZxeRnxk, a W2, Z2eRnx(n~k\ Если ^ = ranged) и S2 = range (ZJ, mo dist(S„ S2) = V^cTAWlzy.
Доказательство. Пусть Q = WTZ, и предположим, что k ^ j = n — k. Пусть CS-разложение Q дается формулой (2.6.2) c Qip = W‘Zp. Отсюда следует, что
II ^[z21|2 = II W^Z, ||2 = Sj = V1 - d = V1 -^(^[zj.
Поскольку W3 W^ и Z, Zf - ортогональные проекторы на St и S2 соответственно, мы имеем
dist^, S2) = 11W1WI-Z1ZTII2
= ||^r(W1^[-Z1Z[)Z||2 == ||^r(W1^[-Z1Z[)Z||2 =" о wiz2: .-w^ о _" о wiz2: .-w^ о _
= ||^r(W1^[-Z1Z[)Z||2 =
= ||^r(W1^[-Z1Z[)Z||2 =
" о wiz2: .-w^ о _
" о wiz2: .-w^ о _
Если же k < j, то наше рассуждение все равно проходит, если просто положить
е = №, wxyvz^ zj
и заметить, что amax(lVlZJ = amax(W{Z2) = sp □
Пример 2.6.2. Если ST = span^, с2} и S2 = span {е2, е3}-подпространства R”, то матрица Q из следствия равна
<2 = [е,, ег, е3, е4, ... , е„]Т [е2, е3, ег, е4, ... , еД = [е2, е3, et е4,, еД.
Таким образом, dist (Sj, S2)=l. Этот пример показывает, что факт пересечения подпространств не эквивалентен нулевому расстоянию между ними.
Задачи
Покажите, что если Р- ортогональный проектор, то матрица Q = 1 — 2 Р ортогональна.
Чему равны сингулярные числа ортогонального проектора?
Пусть в теореме 2.6.1 к = j. (а) Покажите, что
11611 Г'Н2 = З^Ю,.)IIг||2 => ||621 Р||2 = 5т(„(е21 )||<
(Ь) Покажите, что из вырожденности 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 III”, SIAM J. Num. Anal. 7, 1 46.
Paige С. C. and Saunders M. (1981). “Toward a Generalized Singular Value Decomposition”, SIAM J. Numer. Anal. 18, 398-405.
Вычислительные детали см. в § 8.7.
Чувствительность квадратных систем к возмущениям
В этом разделе мы применяем разработанный в предыдущих параграфах инструментарий к анализу линейной системы Ах = Ь, где А е R"х п - невырожденная
матрица и beRn. Наша цель-исследовать, как возмущения в А и b влияют на решение х.
1ЛЛ. SVD-анализ
Если
Л = f = U2.VTi- 1
есть сингулярное разложение матрицы А, то
Z
yT b
(2.7.1)
Это разложение показывает, что малые изменения в А или в b могут вызывать относительно большие изменения в х, если ап мало. Действительно, если cos(O) = |mJZ>|/||Z>||2 и
(Я - EW„^)j = b + £sign(u^)iv„, CT„ > £ > О,
то можно показать, что ||j — *||2 ^ (e/aJ IWI2 cos($)- Таким образом, возмущения порядка 0(c) могут изменить решение на £,<зп.
Влияние абсолютной величины а„ на чувствительность задачи Ах = b не должно удивлять нас, поскольку мы помним из теоремы 2.5.2, что а„-это расстояние от А до множества вырожденных матриц. Интуитивно ясно, что по мере приближения к этому множеству решение х должно быть во все большей степени чувствительным к возмущениям.
Обусловленность
Точно измерить чувствительность линейной системы мы сможем, рассмотрев параметризованную систему
(А + гР^х^ = b + с/,х(0) = х,
где РеКпхп и/eR”. Если А невырожденна, то ясно, что функция х(е) дифференцируема в окрестности нуля. Далее, х(0) = А"1 (/— Рх\ и поэтому разложение л(с) в ряд Тейлора имеет вид
‘х(с) = х + еа- (0) + О (с2).
В любой векторной норме и согласованной с ней матричной норме мы получаем:
ЕЦЛ"11|№ + II л} + O^Y(2.7.2)
МUNI J
Определим для квадратных матриц А число обусловленности ж^А) соотношением
аД^НИНМ"1!!,(2.7.3)
условившись, что ае(Л) = оо для вырожденных матриц А. Воспользовавшись неравенством ||/>|| < || А|| ||х||, мы получим из (2.7.2), что
||х(£) — Х||
$ (л) (рл + рб) + О (^(2.7.4)
гдегде_ 11^11Ра Б|МН’_ 11^11Ра Б|МН’_ 11/11Рь е 11*11_ 11/11Рь е 11*11
где
где
_ 11^11
Ра Б|МН’
_ 11^11
Ра Б|МН’
_ 11/11
Рь е 11*11
_ 11/11
Рь е 11*11
представляют соответственно относительные погрешности А и Ь. Таким образом, относительная погрешность х может в ае (Л) раз превышать относительные погрешности А и Ь. В этом смысле число обусловленности ае(Л) количественно характеризует чувствительность задачи Ах = Ь.
Отметим, что ае() зависит от нормы, в которой оно вычисляется. Когда необходимо подчеркнуть использование какой-либо определенной нормы, мы будем использовать индексы, например
®2М) = 1^112 1^-412 = ^^. (2.7.5)
Таким образом, обусловленность матрицы А в 2-норме является мерой вытянутости гиперэллипсоида {Лх:||х||2 = 1}.
Приведем еще два способа характеристики числа обусловленности. Для чисел обусловленности в /7-норме мы имеем
1«РМ)1«РМ)minА + Е вырожденаminА + Е вырожденаIMII,IMII,(2.7.6)(2.7.6)
1
«РМ)
1
«РМ)
min
А + Е вырождена
min
А + Е вырождена
IMII,
IMII,
(2.7.6)
(2.7.6)
Этот результат можно найти у Кахана (1966). Он показывает, что аер(Л) является мерой относительного расстояния от А до множества вырожденных матриц, измеренного в /7-норме. Мы также имеем для любой нормы:
ае(Л) = lim sup^0||£||^8||X||ае(Л) = lim sup^0||£||^8||X||щл-н^-л-1!! 15IM"1!!щл-н^-л-1!! 15IM"1!!(2.7.7)(2.7.7)
ае(Л) = lim sup
^0||£||^8||X||
ае(Л) = lim sup
^0||£||^8||X||
щл-н^-л-1!! 1
5IM"1!!
щл-н^-л-1!! 1
5IM"1!!
(2.7.7)
(2.7.7)
Этот внушительный на вид результат на самом деле просто свидетельствует о том, что число обусловленности - это нормированная производная Фреше отображения А-^А-1. Дальнейшие детали см. Rice (1966). Напомним, что первоначально мы пришли к ае(Л) через дифференцирование.
В случае если ае(Л) велико, говорят, что А-плохо обусловленная матрица. Заметим, что это свойство зависит от выбора нормы. Однако в Rnxn любые два числа обусловленности эквивалентны в том смысле, что найдутся такие константы сх и с2, что
• с. жа (Л) ^ ^ (А) ^ с2 жа (Л), Л е R”х л.
Например, в Rnxn мы имеем:
- х2 (А) ^ aet (Л) ^ п ае2 (Л),
(2.7.8)(2.7.8)
(2.7.8)
(2.7.8)
^(А) ^ &Х(А) t£ п^А).
Так что если матрица плохо обусловлена в a-норме, то она будет плохо обусловлена и в p-норме, с поправкой на упомянутые выше константы сх и с2.
Для любой /7-нормы мы имеем аер(Л) > 1. Матрицы с малыми числами обусловленности называются хорошо обусловленными. В 2-норме ортогональные матрицы обусловлены наилучшим возможным образом, поскольку ae2(Q) = 1, если Q ортогональна.
Определители и близость к вырожденности
матрицыматрицыЕстественно задаться вопросом, насколько хорошо величина определителя оценивает обусловленность матрицы. Известно, что det (Л) = 0 эквивалентно вырожденности матрицы А, но верно ли, что det^)«O означает почти вырожденность? К сожалению, величина определителя det (Л) и обусловленность задачи Ах = b слабо связаны между собой. К примеру, опре/
матрицы
матрицы
1-1...-1
GRRxnGRRxn(2.7.9)(2.7.9)В,-:'":1
GRRxn
GRRxn
(2.7.9)
(2.7.9)
о6...i
равен единице, но aex(5n) = n2n"Y. С другой стороны, очень хорошо обусловленная матрица может иметь очень маленький определитель. Например, для матрицы
D^diagdO"1, ..., IO^gR”*”,
aep(Z)n) = 1, хотя det(Z)n) = 10"n.
Точная оценка по норме
Вспомним, что ценность вывода (2.7.4) определялась тем, что он отчетливо выявил связь между ае(Л) и скоростью изменения х(е) в точке 8 = 0. Несколько разочаровывает, однако, зависимость от «достаточной малости» 8, а также отсутствие каких-либо сведений о величине слагаемого О(е2). В этом и следующем подразделах мы получим еще несколько теорем о возмущениях задачи Ах = Ь, в которых оценки уже будут совершенно точными.
Сначала мы докажем полезную лемму, которая в терминах ае(Л) указывает, когда мы можем ожидать, что возмущенная система окажется невырожденной.
Лемма 2.7.1. Предположим, что
Ах = b, AeRnxn, 0^beRn,
(A + AA)y = b + Ab, AAeR(A + AA)y = b + Ab, AAeRAZ>gR\AZ>gR\
(A + AA)y = b + Ab, AAeR
(A + AA)y = b + Ab, AAeR
AZ>gR\
AZ>gR\
где ЦДЛ|| ^ 5ЦЛЦ, ||AZ>|| ^ 5||/>||. Если 5ае(Л) = г < 1, то А 4- АА невырожденна, и
Ill'll 1+г
IWI 1 - г*
Доказательство. Поскольку ЦЛ"1 ДЛЦ < 5 ЦЛ"11| ЦЛЦ = г < 1, из теоремы 2.3.4 следует, что (А 4- ДЛ) невырожденна.
Учитывая, что (/ 4* А-1 АА)у = х 4* Л"1 АЬ, находим, используя лемму 2.3.3, что ■IIjII < и + Л"1 АЛ)"111(11x11 + 511^-4111^11)
(ПагЩ- 5 ЦЛ"1 ||||Z>||) =
Поскольку ||Z>|| = ||Лх||||Л|| ||х||, то
И <^(11x11+ г||х||). □
Теперь мы готовы к получению точной оценки для возмущения Ах = Ь.
Теорема 2.7.2. В условиях леммы 2.7.1
llx-^ll 25 ,(ДХи и ^ -;$(Л).
х 1 —г
Доказательство. Так как
(2.7.11)(2.7.11)у — х = А~1 ДЬ — Л ”1 ДАу,мы имеем Цу - х|| < ЗЦЛ"1|| ||6|| + ЗЦЛ-1|| ЦЛЦ ЦуЦ, так чт0Пт-х||Ill’ll , Д1у1Г
(2.7.11)
(2.7.11)
8зе(Л) 1 +8зе(Л) 1 +25251 — г/ 1 — г1 — г/ 1 — г$(Л).П$(Л).П
8зе(Л) 1 +
8зе(Л) 1 +
25
25
1 — г/ 1 — г
1 — г/ 1 — г
$(Л).П
$(Л).П
Пример 2.7.1. Задача Ах = Ь
1 0х,О Ю"6х21 0х,О Ю"6х21НГ61НГ6
1 0х,
О Ю"6х2
1 0х,
О Ю"6х2
1
НГ6
1
НГ6
имеет решение х = (1 1)т и обусловленность жх(А) = 106. Если AZ> = (10 60)т,АЛ = 0 и (А + ЛА)у = Ь 4- ЛЬ, то неравенство (2.7.10) в ос-норме имеет вид
10 “6
^ 10'6106.
10°
Таким образом, наша оценка сверху для ошибки, вызванной возмущением, может оказаться сильно завышенной. С другой стороны, если ЛЬ = (0 10 -6)т, А А = 0 и (А 4- Л А) у = Ь + ЛЬ, то наше неравенство дает
10°
^2 х 10-6 106.
10°
Мы видим, что существуют возмущения, для которых оценка (2.7.10) по существу достигается.
Несколько точных покомпонентных оценок
В заключение этого раздела мы покажем, что можно построить более точную теорию возмущений, если ввести в рассмотрение покомпонентные оценки возмущений и использовать обозначение абсолютной величины.
Теорема 2.7.3. Предположим, что
Ах = b, АеКпхп, Ъ^ЬеКп,
(А 4- ЛА)у = Ь4- ЛЬ, AAeWxu, ЛЬе^п
и что |АЛ| < §И|, |AZ>| < 5|/?|. Если 5жа(Л) = г < 1, то (А 4- ЛА) невырожденна, и^^j^s-^IIM-'IMIII..
Доказательство. Поскольку ЦДЛЦ^ < 5\\АЦ^ и ЦААЦ^ < 5Н^Ц^, условия леммы
удовлетворены в оо-норме. Из этого следует, что А + ДА невырожденна и
ПуНоо < 1 + гl|x|L"l-r’
Теперь, используя (2.7.11), находим
|у-х|^|Л-1||АМ + |Л-1||АЛ||у|^
^зм-Ч^н зи-Мипу! 8|Л-1 цл|(|х| + |у|).
Переходя к нормам, получаем
/1 4- Г\
Цу - хЦ^ ^ ЗИМ"11 ИП^ HxIL + ЦхЦ^ .
\1 — г/
Разделив последнее неравенство на НхЦ^, получаем утверждение теоремы. □
Величину HI А|| А"1 Щ^ мы будем называть числом обусловленности по Шкеелю. Это число было эффективно использовано при анализе некоторых важных преобразований линейных систем. См. § 3.5.
Наконец, приведем результаты Oettli, Prager (1964), показывающие, при каких условиях приближенное решение х е R” п х ц-системы Ах = b удовлетворяет возмущенной системе с заранее предписанной структурой. В частности, пусть ЕеКпхп и /eR” заданы и имеют неотрицательные элементы. Мы ищем такие 5/leR”x”, bb е R” и ю 0, что
(2.7.12)(2.7.12)(А + 5А)х = Ь + 5Ь,|6Л|^ю£,|5/>|^со/:
(2.7.12)
(2.7.12)
Заметим, что при надлежащем выборе Е и / возмущенная система может принимать определенные свойства. Например, если Е = | Л |,/ = |/?| и со мало, то х удовлетворяет некоторой покомпонентно близкой системе. Oettli, Prager (1964) показывают, что для заданных A, b, ^, Е и / минимально возможное со в (2.7.12) выражается как
= maXА
Если Л^ = Ь, то comin = 0. С другой стороны, если comin = оо, то х не удовлетворяет никакой системе с предписанной структурой возмущения.
Задачи
Покажите, что если ||/|| > 1, то зе(Л) 1.
Покажите, что для данной нормы ^(АВ) < ае(Л)ае(^) и что ж(сх Л) = ж(Л) для всех ненулевых а.
Замечания и литература к § 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.
В некоторых приложениях возникает необходимость изучить чувствительность решения задачи Ах — b по отношению к возмущениям определенной структуры. Например, мы можем интересоваться изменением х при колебании каждого элемента b в пределах заданного интервала. Такой более тонкий анализ чувствительности проводится в статье
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.
Обратное к числу обусловленности служит мерой близости данной задачи Ах = b к вырожденности. Во многих случаях важность информации о том, насколько данная задача близка к труднорешаемой или вообще неразрешимой, получила должную оценку. См.
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.
DemmelJ. W. (1987a). “On the Distance to the Nearest Ill-Posed Problem”, Numer. Math. 51, 251-289.
Dimmel 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.
Higham N.J. (1988b). “Computing 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 C. (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, где вводится концепция выбора ведущих элементов. В последнем разделе мы предлагаем некоторые замечания по поводу важных для практики вопросов, связанных с масштабированием, итерационным уточнением и оценкой обусловленности.
Треугольные системы
Традиционные методы разложений для линейных систем включают в себя приведение исходной квадратной системы к треугольной системе, которая имеет такое же решение. Данный раздел посвящен решению треугольных систем.
Прямая подстановка
Рассмотрим следующую нижнюю треугольную 2 х 2-систему:
/ы 0xY _ bY
-^21 ^22-1 Lx2J l£2_
Если /ц/22 / 0, то неизвестные могут быть определены последовательно:
xi = ^1Ди > х2 = (^2 — ^21Х1^22*
Это 2 х 2-версия алгоритма, известного как прямая подстановка. Общую процедуру получаем, разрешая t-е уравнение системы Lx = b относительно х(: (i-i \
;=i7
Если вычисления выполнить для z = 1: п, то будут получены все компоненты х. Заметим, что на z-м шаге необходимо скалярное произведение векторов L(z, 1: z — 1)
и х(1: i — 1). Так как bt содержится только в формуле для xis мы можем записать xt на месте Ь^\
Алгоритм 3.1.1 (Прямая подстановка: строчная версия). Предположим, что LeRnxn- нижняя треугольная матрица и beRn. Алгоритм заменяет b на решение системы Lx = b. Матрица L должна быть невырожденна.
bW = bW/L^ 1)
for i = 2: п
Ь^ = <Ш"Ш 1^- 1)^(11))/L(z, О
end
Алгоритм требует п2 флопов. Заметим, что доступ к L осуществляется по строкам. Вычисленное решение х удовлетворяет
(L + F^ = b, |F| ^ nu\L\ + O(u2).(3.1.1)
Этот результат доказывается в Forsythe and Moler (SLE, pp. 104-105). Он говорит о том, что вычисленное решение точно удовлетворяет слабо возмущенной системе. Более того, каждый элемент в матрице возмущения F мал относительно соответствующего элемента L.
Обратная подстановка
Аналогичный алгоритм для верхней треугольной системы Ux = b называется обратной подстановкой. Вот формула для хр.
Xt = \bi — £ UijxMuij
и снова xt можно записать на месте bt.
Алгоритм 3.1.2 (Обратная подстановка: строчная версия). Если матрица U eRnxn верхняя треугольная и beR\ то следующий алгоритм заменяет b на решение системы Ux = b. U должна быть невырожденной.
b(n) = b (ri} / U (п, п) for i = п — 1: — 1 : 1
Ь^ = ф^- иц, i + \.n)b(i + \.п^[и^ д end
Алгоритм требует п2 флопов и осуществляет доступ к U по строкам. Можно показать, что вычисленное решение х, полученное с помощью алгоритма, удовлетворяет
(U-t-F)x = b \F\^nu\U\FO(u2\(3.1.2)
Столбцовые версии
Столбцовые версии приведенных выше процедур могут быть получены изменением порядка выполнения циклов. Чтобы понять, что это означает с алгебраической точки зрения, рассмотрим прямую подстановку. Как только компонента xY найдена, она может быть удалена из всех уравнений от 2 до и, и мы продолжим процесс с редуцированной системой Ь^’.п, 2;п)х(2;п) = Ь(2:п) — х^Ц^/.п, 1). Потом мы вычислим х2 и исключим ее из всех уравнений от 3 до п, и т. д. Таким образом, если
п Алгоритмы, в которых результат получается на месте, занимаемом исходными данными, обычно называют алгоритмами с замещением.-Прим, перев.
этот подход применить к
217217О59О59О О 8_О О 8_х2L x3Jх2L x3J62.5.62.5.
2
1
7
2
1
7
О
5
9
О
5
9
О О 8_
О О 8_
х2
L x3J
х2
L x3J
62.5.
62.5.
мы найдем xt = 3 и потом будем иметь дело с 2мы найдем xt = 3 и потом будем иметь дело с 2х 2-системойх 2-системой
мы найдем xt = 3 и потом будем иметь дело с 2
мы найдем xt = 3 и потом будем иметь дело с 2
х 2-системой
х 2-системой
5 0 х2.9 8 J Lx35 0 х2.9 8 J Lx325.25.117.7.-1_-16_ '-1_-16_ '
5 0 х2
.9 8 J Lx3
5 0 х2
.9 8 J Lx3
2
5.
2
5.
1
1
7.
7.
-1
_-16_ '
-1
_-16_ '
Это полная процедура с замещением.
Алгоритм 3.1.3 (Прямая подстановка: столбцовая версия). Предположим, что ЬеКпхп нижняя треугольная и beRn. Этот алгоритм заменяет b на решение системы Lx = b. L должна быть невырожденной
for j = 1: п — 1
b(j) = b(j)/LUJ)
b(j + 1: и) = bU + 1 :w) - b(j)L(j + 1 :n, j)
end
b^ = b(n)/ L(n, n)
Можно получить также и столбцовую процедуру типа saxpy для обратной подстановки.
Алгоритм 3.1.4 (Обратная подстановка: столбцовая версия). Предположим, что U 6 R"х п - верхняя треугольная матрица и beRn. Алгоритм заменяет b на решение Ux = b. U должна быть невырождена
for j = п: — 1:2
b(VJ- = b<\J- \)-b^U^ J- 1, 7) end
^(l) = /7(l)/l/(l, 1)
Заметим, что главная операция в обоих алгоритмах 3.1.3 и 3.1.4-это операция saxpy. Ошибки округления в этих версиях с saxpy ведут себя в основном так же, как и для вариантов со скалярным произведением.
Чаще'всего точность решения треугольной системы на удивление хорошая. См. Higham (1988d).
Случай нескольких правых частей
Рассмотрим задачу вычисления решения X е R”х q для системы LX = В, где L6R”x"-нижняя треугольная матрица и BeRnxq. Это задача прямой подстановки в случае нескольких правых частей. Покажем, что задача такого рода может быть решена с использованием блочного алгоритма, в котором много матричных умножений, при условии, что q и п достаточно велики. Это окажется важным в последующих разделах, где обсуждаются различные блочные разложения. Отметим, что, хотя мы рассматриваем здесь только задачу с нижней треугольной матрицей, все, что говорится, применимо также и для верхнего треугольного случая.
Чтобы реализовать блочный алгоритм прямой подстановки, разобьем систему
LX = В на блоки следующим образом:
(3.1.3)(3.1.3)
(3.1.3)
(3.1.3)
Допустим, что диагональные блоки квадратные. По аналогии с выводом алгоритма 3.1.3, мы решаем систему LVVXY = BY относительно Xt и далее исключаем XY из всех блочных уравнений от 2 до N:
^22
0.
.. 0
" х/
"s2
— l21x1
^32
^33•
.. 0
х?
=
S3
— ^31^1
^ni
^N3•
• • lnn
_ Хм _
_BN
— LN1XY
Продолжая таким образом, мы получим следующую схему прямого блочного saxpy-исключения:
for j = 1: N
Решить LjjXj = Bj
for i=j-^l:N(3.1.4)
S, = B, - LijXj end end
Заметим, что z-цикл содержит один пересчет блочного варианта saxpy следующего вида:
Для реализации этого алгоритма в виде умножения матриц на данной архитектуре, очевидно, что разбиение на блоки (3.1.3) должно давать достаточно «большие» Xj. Допустим, что в этом случае Xt имеет по крайней мере г строк. Тогда алгоритм может быть выполнен, если N = ceil(и/r), Х^ ...» A^^gR'^ и J^gR*"-^-1)г) х ?.
Доля флопов 3 уровня
Удобно взять на вооружение какую-нибудь меру, дающую количественную оценку для матричных умножений в данном алгоритме. С этой целью определим долю флопов 3 уровня в алгоритме, как относительное количество флопов, реализующих матричные умножения. Такие флопы мы назовем флопами 3 уровня.
Определим долю флопов 3 уровня для (3.1.4) при простом предположении, что п = rN. (Аналогичные выводы имеют силу и с неравными блоками, описанными выше.) Так как имеется N применений прямой подстановки для г х г-систем (вычисления реализуются на уровне 2) и общее число операций равно п\ то доля флопов 3 уровня аппроксимируется выражением
пг N"
Таким образом, для больших N почти все флопы-это флопы 3 уровня и поэтому разумно выбрать N настолько большим, насколько это возможно, при том условии, что предполагаемая архитектура может обеспечить высокий уровень производительности при реализации блочных операций saxpy ширины не меньше г = n/N.
Решение неквадратных треугольных систем
Проблема решения неквадратных, т х п, треугольных ° систем заслуживает некоторого упоминания. Рассмотрим сначала нижний треугольный случай, когда т ^ п, т. е.
-^1 LYYeRnxn ^gR”_L21_T LJ L21eR(m~”)x” Ьге!Тп'
Допустим, что матрица L^ нижняя треугольная и невырожденная. Если мы применим прямую подстановку к = Ь, то х является решением системы в том случае, когда L2Y(LYY Ь^ = Ь2. Другими словами, не существует решения для всей системы. В такой ситуации может быть подходящей минимизация в смысле наименьших квадратов (см. гл. 5).
. Далее рассмотрим нижнюю треугольную систему Lx = b, когда число столбцов п превосходит число строк т. В этом случае применим прямую подстановку к квадратной системе L(l:m, l:m)x(l:m, l;m) = b, а для х(т + 1:п) зададим произвольные значения. Чтобы получить добавочные комментарии по системам, имеющим больше неизвестных, чем уравнений, см. § 5.7.
Рассмотрение неквадратных верхних треугольных систем проводится аналогично. Детали оставляем для читателя.
Унитреугольные системы
Унитреугольная матрица-это треугольная матрица с единицами на главной диагонали. Многие из треугольных матриц, вычисляемых ниже, обладают этим дополнительным свойством. Очевидно, что при этом не затрудняется реализация указанных выше процедур.
Алгебраические свойства треугольных матриц
Мы приведем некоторые свойства произведений и обратных матриц для треугольных и унитреугольных матриц, с целью использовать эти свойства в дальнейшем:
Обратная к верхней (нижней) треугольной матрице является верхней (нижней) треугольной.
Произведение двух верхних (нижних) треугольных матриц является верхней (нижней) треугольной.
Обратная к верхней (нижней) унитреугольной матрице является верхней (нижней) унитреугольной.
Произведение двух верхних (нижних) унитреугольных матриц является верхней (нижней) унитреугольной.
Задачи
Предложить алгоритм для вычисления ненулевого zeR", такого, что Uz = 0, где UeR" хи является верхней треугольной, причем ипп = 0, a uYY • •• ип_ Y п_ Y / 0.
и Такие системы иногда называют трапециевидными.-Прим, перев.
Выяснить, как может быть вычислен определитель квадратной треугольной матрицы с наименьшим риском переполнения сверху и снизу.
Переписать алгоритм 3.1.4, предполагая, что U хранится по столбцам в массиве и. пес длины п^п + 1)/2.
Написать детально вариант (3.1.4) без предположения, что N делится на п.
Доказать все свойства треугольных матриц, приведенные в конце раздела.
Замечания и литература к § 3.1
Фортран-программу для решения треугольных линейных систем можно найти в LINPACK (гл. 6). Точность решения треугольных систем анализируется в работе
Higham N.J. (1988d). “The Accuracy of Solution to Triangular Systems”, Report 158, University of Manchester, Department of Mathematics. (To appear, SIAM J. Numer. Anal.)
L(/-разложение
Как мы только что видели, треугольные системы решаются «легко». Идея исключения Гаусса-это преобразование данной системы Ах = b в эквивалентную треугольную систему. Преобразование достигается составлением соответствующих линейных комбинаций уравнений. Например, в системе
3xt + 5х2 = 9,
6xY + 7х2 = 4,
умножая первую строку на 2 и вычитая ее из второй, мы получим
3xt + 5х2 = 9, - Зх2 = - 14.
Это и есть исключение Гаусса при п = 2. Наша цель в данном разделе-дать полное описание этой важной процедуры, причем описать ее выполнение на языке матричных разложений. Данный пример показывает, что алгоритм вычисляет нижнюю унитреугольную матрицу L и верхнюю треугольную матрицу U так, что А = LU, т.е.
5 _ 1 °] Г3 5
— L2 iJLo-3.
Решение для исходной задачиРешение для исходной задачиАх = b находится посредством последовательного
Решение для исходной задачи
Решение для исходной задачи
решения двух треугольных систем:
Ly = b, Ux = и=> Ах = LUx = Ly = b.
L[/-разложение-это «высокий уровень» алгебраического описания исключения Гаусса. Представление результата матричного алгоритма на «языке» матричных разложений полезно. Оно облегчает обобщение и проясняет связь между алгоритмами, которые могут казаться очень разными на скалярном уровне.
Матрицы преобразования Гаусса
Чтобы получить разложение, описывающее исключение Гаусса, нам нужно иметь некоторое матричное описание процесса обнуления матрицы. Пусть п = 2, тогда как Xj / 0 и т = х2/хп то
10 xt xY
_-т 1JLx2J = Lo_'
В общем случае предположим, что xeR” и хк / 0. Если
Тт = ( 0,.,0 ,тк+1,... ,тп) т{ = — i = k+l:n к
Мк = 1 — тек,(3.2.1)Мк = 1 — тек,(3.2.1)и мы обозначим
Мк = 1 — тек,(3.2.1)
Мк = 1 — тек,(3.2.1)
то
Матрица Мк-это матрица преобразования Гаусса. Она является нижней унитре- угольной. Компоненты т(/с + 1:«)-это множители Гаусса. Вектор т называется вектором Гаусса.
Для реализации данных идей имеется функция, которая вычисляет вектор множителей:
Алгоритм 3.2.1. Если xeR” и элемент xY ненулевой, функция вычисляет вектор t длины п — 1, такой, что если М- матрица преобразования Гаусса, причем М(2:п, 1) = — t и у = Мх, то у (2: «) = 0.
function: t = gauss (х) п = length (х) t = х(2:«)/х(1)
end gauss
Алгоритм требует и — 1 флоп.
Применение матриц преобразования Гаусса
Умножение на матрицу преобразования Гаусса выполняется достаточно просто. Если матрица CeR"xr и Мк = I — тек, тогда преобразование вида
МкС = (/ - т^7) С = С - т(екС)
осуществляет одноранговую модификацию. Кроме того, поскольку т(1 :к) = 0, то задействованы лишь элементы матрицы С (к + 1 :п, :). Следовательно, мы получаем
Алгоритм 3.2.2. Если матрица CeRHXr и М задает и х «-преобразование Гаусса, причем М(2:«, 1) = — Z, тогда следующая функция заменяет С на МС.
function: С = gauss.app(C, z)
п = rows(Q
С(2:п, :) = С(2:«, :) - zC(l, :)
end gauss.app
Этот алгоритм требует 2(« — 1)г флопов. Отметим, что если матрица М^к + 1:«, к) = = — Z, тогда обращение вида С = gauss.app(С(к ;п, :), Z) заменяет С на МкС.
Пример 3.2.1
12312345645678107810t =t ==>мс ==>мс =1471 1 14 10 171471 1 14 10 17
1
2
3
1
2
3
4
5
6
4
5
6
7
8
10
7
8
10
t =
t =
=>мс =
=>мс =
147
1 1 1
4 10 17
147
1 1 1
4 10 17
Свойства ошибок округления в преобразованиях Гаусса
Обозначим через t вычисленный аналог вектора t в процедуре gauss, тогда нетрудно убедиться, что
t = t + е, |^| ^ и|Z|.
Если вектор t используется в процедуре gauss.app и й(У — teI)Q обозначает результат реальных вычислений, то
П^1 - ^)О = (I ~ ^[)С + Е,
где
|£|^Зи(|С| + И|С(1, :)|) + O(u2).
Очевидно, что при большом векторе t ошибки в вычисленных данных могут быть велики относительно |С|. По этой причине использование преобразований Гаусса требует тщательной проверки, которая будет рассмотрена ниже в § 3.4.
Приведение к верхнему треугольному виду
Допустим, что матрица А е R"х п. Матрицы преобразования Гаусса Mt,..., Mn. t, как правило, можно подобрать так, что матрица Мп-1... MYA = U является верхней треугольной. Чтобы убедиться в этом, сначала рассмотрим случай для п = 3. Предположим, что
1 41 4А = 2 5А = 2 53 63 678107810
1 4
1 4
А = 2 5
А = 2 5
3 6
3 6
7
8
10
7
8
10
ЕслиЕслиMYMY1 о о-2 1 0-3 0 11 о о-2 1 0-3 0 1тогдатогда
Если
Если
MY
MY
1 о о
-2 1 0
-3 0 1
1 о о
-2 1 0
-3 0 1
тогда
тогда
11МХА = 00МХА = 0047-3-6-6 -1147-3-6-6 -11
1
1
МХА = 0
0
МХА = 0
0
47
-3-6
-6 -11
47
-3-6
-6 -11
Аналогично,
11М2 =М2 =О о1 о-2 1О о1 о-2 1М2<М^ =М2<М^ =147О -3 -6О 01147О -3 -6О 01
1
1
М2 =
М2 =
О о
1 о
-2 1
О о
1 о
-2 1
М2<М^ =
М2<М^ =
147
О -3 -6
О 01
147
О -3 -6
О 01
Обобщение этого примера позволяет нам представить к-й. шаг следующим образом:
Мы имеем дело с матрицей А(к-1) = *Мк_1 ...М1А, которая с 1-го по (к — 1)-й столбец является верхней треугольной.
Множители Гаусса в Мк определяются по матрице А(к-1\к + 1 :п, к\
Особенно важно для продолжения процесса выполнение условия а^к"^ ^ 0.
Замечая, что полное приведение к верхнему треугольному виду достигается через и — 1 шаг, мы получаем следующий алгоритм к= 1
while А (к, к) / О Д к ^ п — 1
t = gauss (А (к: п, к))
А(к:п, :) = gauss.app(А (к:п, ;), г)(3.2.2)
к = к А- X end
Элемент А (к, к) необходимо проверять, чтобы избежать деления на нуль в процедуре gauss, в которой вычисляются множители вида А (i, к)/ А (к, к). Элементы А (к, к) называются ведугцими элементами, и их относительная величина оказывается крайне важной.
£ 17-разложение
Если алгоритм (3.2.2) завершается при к = п, то, говоря на матричном языке, он вычисляет матрицы преобразования Гаусса Mi.-.^.i, такие, что матрица Mn_1...M1A = U является верхней треугольной. Легко убедиться, что если Мк = I — т^ек, тогда обратная к ней задается следующим выражением Мк = = I + т^ек и поэтому
А = LU,(3.2.3)
где
>l = m;V..m;_V(3.2.4)
Очевидно, что L-это нижняя унитреугольная матрица, поскольку каждая матрица MkY является нижней треугольной. Разложение (3.2.4) называется LU-разложением матрицы А. Необходимость проверять в алгоритме (3.2.2) ведущие элементы на нуль говорит о том, что £ 17-разложение может не существовать. Например, невозможно определить 1^ и и^ в следующем случае:
1 2 32 4 73 6 31 2 32 4 73 6 31 О о /11 1 О ^31 ^32 11 О о /11 1 О ^31 ^32 1l/ц и12 w13
1 2 3
2 4 7
3 6 3
1 2 3
2 4 7
3 6 3
1 О о /11 1 О ^31 ^32 1
1 О о /11 1 О ^31 ^32 1
О и22 «23
о о i/33
Чтобы убедиться в этом, приравняем соответствующие элементы и заметим, что мы должны получить следующее uY1 = 1, и12 = 2, /21 = 2, и22 = 0 и /31 = 1. Однако если потом рассмотреть элемент (3.2), то мы придем к противоречивому уравнению 6 = U1M12 + ^32^22 = 4.
Как мы только что показали, нулевой ведущий элемент в алгоритме (3.2.2) мо ^ю отождествить с наличием вырожденной главной подматрицы.
Теорема 3.2.1. Для матрицы AeR”*” существует LU-разложение, если det (А (1. к, 1: к^ ^ 0, для к = 1 \п — 1. Если LU-разложение существует и А не вырождена, тогда LU -разложение единственно и det Л = uvv...unn.
Доказательство. Предположим, что (/с — 1)-й шаг в алгоритме (3.2.2) выполнен. В начале /с-го шага матрица А будет заменена матрицей Мк_:... MY А = А(к~п. Заметим, что ^-1) является к-м ведущим элементом. Поскольку матрицы преобразования Гаусса-нижние унитреугольные, то, как следует из вида ведущей к х к части полученного уравнения, det (А (1: к, 1: к)) = a(Yf п... а^п. Поэтому если А (Г. к, Х:к) не вырождена, то к-й ведущий элемент является ненулевым.
Для доказательства единственности предположим, что А = L1U1 и А = L2U2- два L (7-разложения невырожденной матрицы А, тогда L^1 Lv = и2и^. Так матрица L2vLv является нижней унитреугольной, а С^С^-это верхняя треугольная матрица, то отсюда следует, что обе матрицы должны быть равны единичной. Следовательно, Lv = L2 и UY = U2.
И наконец, если А = LU, то det(T) = det(L(7) = det(L)det (U) = det((7) = =
Несколько практических замечаний
С практической точки зрения существует несколько улучшений, которые могут быть реализованы в алгоритме (3.2.2). Во-первых, поскольку мы уже получили нули в столбцах с 1-го до (к — 1)-го, то преобразование Гаусса нужно применять только к столбцам с к-го до и-го. На самом деле нет необходимости применять преобразование Гаусса также и к к-му столбцу, так как мы знаем результат. Поэтому эффективным способом для вызова процедуры gauss.app является следующий
А (к: п, к + 1: п) = gauss.app (А (к: и, к + 1: п\ t\
Другое существенное замечание состоит в том, что множители, задающие матрицу Мк, могут храниться в позициях, в которых получены нули, т.е. в элементах А (к + Х:щ к\ С учетом этих изменений мы получаем следующую версию алгоритма (3.2.2).
Алгоритм 3.2.3 (Исключение Гаусса с внешним произведением). Предположим, что матрица А е R”хп обладает таким свойством, что подматрицы А (1: к, 1: к) невырождены для к = Г.п— 1. Данный алгоритм вычисляет разложение Mn_Y...MYA = U, где матрица U является верхней треугольной, а каждая матрица Мк-это матрица преобразования Гаусса. Матрица U хранится в верхнем треугольнике матрицы А. Множители, задающие матрицы Мк, запоминаются в элементах А (к + 1:«, к\ т. е. А(к + Х:п, к) = -Мк(к + Х;щ к).
for к = 1: п — 1
t = gauss (Л (к: и, к))
А (к + 1: л, к) = t
А (к: и, к + 1: и) = gauss.app (А (к: и, к + 1:и, г)) end
Этот алгоритм требует (2/3) п3 флопов и является классической формулировкой метода исключения Гаусса. Заметим, что каждое прохождение через /с-цикл реализует внешнее произведение.
Где хранить матрицу L?
Алгоритм 3.2.3 представляет матрицу L в виде сомножителей. В частности, если fW-это вектор множителей, задающий матрицу Мк, тогда на выходе алгоритма мы получим, что А (к + Г. п, к) = tw. Одно из наиболее благоприятных совпадений в матричных вычислениях состоит в том, что если L = Му 1... M„2Y, тогда L(k + Х:п, к) = tw. Этот факт очевиден, если внимательно посмотреть на произведение, задающее матрицу L. Действительно,
L = (I + т(1)е{)... (/ + Vn-ne„_ i) = / + £ T<k) ск-к = 1
Поскольку столбец А (к + 1: н, к) содержит /с-й вектор сомножителей tkk\ отсюда следует, что элементы А (/, к) содержат lik для всех i > к.
Решение линейной системы
После разложения матрицы А посредством алгоритма 3.2.3 в массиве А будут храниться матрицы L и U. Поэтому мы можем решить систему Ах = Ь, последовательно решая треугольные системы Ly = b и Ux = у с использованием методов из § 3.1.
Пример 3.2.3. Если алгоритм 3.2.3 применен к матрице
147О -3 -6О 01147О -3 -6О 01
147
О -3 -6
О 01
147
О -3 -6
О 01
тогда на выходе
47
-3 -6
21
Если вектор b = (1, 1, I)7, то вектор у = (1, — 1, О)7 разрешает систему Ly = b.
а вектор х = (—1/3, 1/3, О)7 разрешает систему Ux = у.
Gaxpy-версия LtZ-разложения
Исключение Гаусса, как и умножение матриц, описывается процедурой, содержащей тройной цикл, который может быть упорядочен разными способами. Алгоритм 3.2.3 соответствует “kjf’ версии исключения Гаусса, действительно, если мы распишем подробнее функцию вызова и внесем незначительные изменения, мы получим алгоритм
for к = 1: п — 1
А(к + Х:п, к) = А(к + Х:п, к)/А(к, к)
for j = к + 1: п
for i = к + 1: п
A (i, h = A (i, j) - A Ц, к) А <к, end end end
Заметим, что в вычислениях преобладает модификация с внешним произведением.
Теперь мы получим у7с/-вариант исключения Гаусса, который преобладает в gaxpy-
версиях и прямом исключении. При таком подходе матрицы преобразования Гаусса не изменяют непосредственно всю матрицу А, как это делается в вариантах с внешним произведением. Их применяют постепенно. Столбец исходной матрицы А (:, у) остается неизменным до у-го шага. На данном шаге алгоритма столбец А (:, у) заменяется на столбец Mj_ 1... М1А (:,у). После чего вычисляетсяу-матрица преобразования Гаусса.
Чтобы дать строгое описание алгоритма допустим, что для 1 ^ у ^ и — 1 нам известны матрицы 17(1:у — 1, 1:у — 1) и Ц:, 1:у — 1), т. е. мы знаем первые у — 1 столбцов матриц L и U. Для вычисления у-х столбцов матриц L и U мы составим уравнение относительно этих столбцов А = LU: А(:, у) = LU(:, у). Отсюда следует, что
А (1J -1,у) = L(1 J - 1, 1 J - 1) 1/(1 J - 1, 7),
A U: п, У) = ^ L(j ;n,kW (к, 7).
Первое уравнение-это нижняя треугольная система, которая может быть решена относительно вектора (7(1 :у — 1,у). Когда это выполнено, второе уравнение может быть преобразовано так, что получаются формулы для элемента U (у, у) и столбца L (у + 1: п, у), действительно, если мы положим
У (7: ") = A(j: п, ft - Е L(j;n,kWkk,ft =
= AU:n,j)-LU:n, Lj- 1) L/(l :J- 1,7),
то U (у, у) = г (у) и LU ^ \:n)/U (у, у). Таким образом, L(j + 1 ;п, у)-это скалярная операция gaxpy, и поэтому мы получаем алгоритм
for у = 1: п
Решить L(l:y — 1, 1:у- 1)(7(1:у- 1, у) = Л(1:у- 1,у)
у(у:л) = Л(у:и,у)-Е(у^ 1 :у - 1) 1/(1 :у - 1, у)(3.2.5)
UU, У) = vU); LU + 1 : л, у) = г(у + l:nWU, У)
end
Если мы изложим подробнее этот алгоритм и расположим вычисленные матрицы L и U на месте матрицы А, то мы получим
Алгоритм 3.2.4. (Gaxpy-версия исключения Гаусса). Пусть матрица AeRnxn и главные подматрицы А (Г. к, Г. к) невырожденны для к = 1:п — 1. Данный алгоритм вычисляет разложение А = LU, где L-нижняя унитреугольная матрица, a U-верхняя треугольная. Если i > у, то элементы А (z, у) содержат элементы L (i, у). Если i ^ у, то элементы A (i, у) содержат элементы (7 (z, у).
for у = 1: п
{Решить L^J-h 1:у- X^UUJ- 1,у) = Л(1:у- 1,у)}
for к = 1 :у — 1
for i = к + 1 :у — 1
A (i, 7) = А у, /) - А (/, к) А кк, 7)
end end
{»(?:«) = A(j:n,ft- Uftn, 1:7- 1) L7(l V — 1,7)}
for к = 1 :y — 1
for i = j;n
A {i, y) = A (z, y) - A (z, /с) A (k, y)
end
end
{Mj + 1: n, j) = v(j + 1: n^n U^
AU + 1: n, 7) = АЦ + 1: л, MA U, j)
end
Этот алгоритм требует 2и3/3 флопов.
Модификации Краута и Дулитла
Отметим, что существует /7/с-версия описанной выше процедуры, приводящая к методу со скалярным произведением для Ш-разложения. Это более или менее соответствует тому, что известно как варианты Краута и Дулитла исключения Гаусса.
Блочное L 17-разложение
Исключение Гаусса можно организовать так, что умножение матрицы будет основной операцией. Ключом к исследованию этой блочной процедуры является разбиение матрицы Л g R” х ” следующим образом
^11 ^12_Л21 л22_^11 ^12_Л21 л22_гп — г'гп — г'
^11 ^12
_Л21 л22_
^11 ^12
_Л21 л22_
г
п — г'
г
п — г'
г п — г
где г-это блочный параметр. Предположим, что мы вычислили LtZ-разложение Гы 1/11 = Лы и далее решаем треугольные системы с несколькими правыми частями 7-ц^712 = ^12 и 7-21^11 = ^21 Для ^12 и ^2i соответственно. Тогда
^11 ^12_Л21 л22_^11 ^12_Л21 л22_(3.2.6)(3.2.6)lv1 о "|Г;Г oiri/ц и12 L2i r22J Lo a A Lo in_rA ’
^11 ^12
_Л21 л22_
^11 ^12
_Л21 л22_
(3.2.6)
(3.2.6)
где Л = Л22 — L21U12. Отметим, что если г « п, то в вычислениях больше всего требуются флопы 3 уровня при r-ранговой модификации матрицы Л22. Мы можем повторить процесс для редуцированной матрицы Л. Продолжая аналогичным образом, получим
Алгоритм 3.2.5 (Блочная версия £ {7-разложения с внешним произведением). Пусть Л gr„ х п и главные подматрицы А (1: к, 1: к) невырождены для к = 1: п — 1. Предположим, что г удовлетворяет условию 1 ^ г ^ и. Следующий алгоритм вычисляет разложение А = LU посредством r-ранговой модификации. Причем элементы Л (/,/) замещаются на элементы L(i,j) при i > j и элементы А (/,у) замещаются на U (i,j) при j I.
Х = 1
while Х^п
у = min (и, X 4- г — 1)
Используется алгоритм 3.2.3 для замещения Л(Х:у, Х:у) = LU на L и U. Решаем: LZ = Л (X: у, у 4- 1: п). Замещаем: А (X: у, у 4- 1, п) 4- Z Решаем: WU = Л (у 4- 1: и, X: у). Замещаем: Л (у 4- 1: и, X: у) *- W Л (у 4- 1: и, у 4- 1: п) = А (у 4- 1: и, у 4- 1: и) — WZ X = у 4- 1 end
Алгоритм требует Ъ?13 флопов.
В соответствии с результатами § 3.1.5 давайте рассмотрим долю флопов 3-го
уровня в этой процедуре. Если г « п (а это представляется разумным), то мы можем допустить для простоты, что п = гN. При реализации г х г LU-разложения матрицы Л(Х:ц, Х:р) = LC требуются только такие флопы, которые не являются флопами 3-го уровня. Поскольку в процессе всего вычисления приходится решать N таких систем, то очевидно, что доля флопов 3-го уровня будет задаваться соотношением
ЛГ(2г3/3)1'
2и3/3N2"
Аналогично можно получить алгоритм блочного L [/-разложения на основе базовой операции gaxpy. Заметим, что через г шагов алгоритма 3.2.4 мы получаем матрицы Еы, L2Y и С7и из (3.2.6). После этого решаем систему ЕИ[/12 = Л12 относительно UY2 и вычисляем А = А22 — L2YU Y2. Повторяя этот процесс, мы получим
Алгоритм 3.2.6 (Блочная gaxpy-версия L [/-разложения). Пусть матрица ЛеК"х" имеет ненулевые главные миноры А (1: к, 1: к) для к = 1 :п — 1. И пусть целочисленный параметр г удовлетворяет соотношению 1 ^ г ^ и. Тогда следующий алгоритм вычисляет разложение А = LU посредством r-ранговой модификации. На выходе A (i, у) замещаются на L(z, у) для i > j и A (i, у) замещаются на U (i, у) для у > I.
Х = 1
while X ^п
ц = min (и, X + г — 1)
rY = ц — X + 1
Выполняем rY шагов алгоритма 3.2.4 для А(Х:п, Х:п)
Замещаем А (X: ц, ц + 1: и) в соответствии с решением
А (X: ц, X: ц) Z = А (X: ц, ц + 1: и)
А (ц + 1: и, ц + 1: и) = А (ц + 1: и, р + 1: и)
— А (ц + 1: и, X: ц) А (X: ц, ц + 1: п)
X = ц + 1
end
Алгоритм требует 2и3/3 флопов.
В алгоритме 3.2.6 использование алгоритма 3.2.4 требуется только для тех флопов, которые не являются флопами 3-го уровня. Поэтому не трудно показать, что в алгоритме 3.2.6 доля флопов 3-го уровня задается соотношением 1 -3/(2А) при выполнении условия и = rN. Таким образом, доля флопов 3-го уровня в этой процедуре меньше, чем в алгоритме 3.2.5. Тем не менее если N достаточно велико, то нет большой разницы между этими двумя процедурами с точки зрения использования флопов 3-го уровня.
L [/-разложение прямоугольной матрицы
L [/-разложение прямоугольной матрицы А е R” х п может быть выполнено аналогичным образом. Случай для т > п иллюстрируется уравнением
описывает случай для т < п. LU-разложение матрицы Л е Rm х п всегда существует, если главные подматрицы Л (1 :к, 1 :к) невырожденны для к = 1: min (т, п).
Чтобы распространить алгоритмы квадратного Ы/-разложения, описанные выше, на случай прямоугольных матриц, их надо незначительно модифицировать. Например, чтобы реализовать случай т^ п мы модифицируем алгоритм 3.2.5 следующим образом
for j = 1: min (am — 1, и)
Решить L(1 -J, 1 7) 17(17, j) =
относительно U (1: i, J)
v(j + i:m) = (A(j + l:m,j)~m+ l:m, I7- 1)17(1 7,7))
Uj + 1: m, У) = vU + 1: m>U)
end
Алгоритм требует mn2 — n3/3 флопов.
Несостоятельность метода
Как известно, исключение Гаусса требует невырожденности первых (и — 1) главных подматриц. Это условие может быть нарушено для довольно простых матриц, например
Несмотря на то что матрица А имеет прекрасное спектральное число обусловленности, для нее нельзя выполнить Ы/-разложение, поскольку ее главная подматрица вырождена.
Поэтому чтобы эффективно использовать исключение Гаусса для решения линейных систем общего вида, необходимо применить модификации метода. Анализ ошибок округления, изложенный в последующих параграфах, позволяет получить такие модификации.
Задачи
Предположим, что элементы матрицы Л(Е)еКпХп являются непрерывно дифференцируемыми функциями от параметра е. Пусть А = А (0) и все ее главные подматрицы вырождены. Показать, что для достаточно маленьких е матрица А (е) имеет L [/-разложение А (е) = L (е) U (е) и обе матрицы L (е) и U (е) непрерывно дифференцируемы.
Предположим, что мы разбили матрицу А е R" х п следующим образом:
^11^12
А = ,_^21 ^22_
где Ан - это (г х г)-матрица. Пусть АИ невырожденна. Тогда матрица S = А^ — Л21 А ^ Л12 называется представлением Шура матрицы АИ для матрицы Л. Показать, что если Ан имеет L [/-разложение, то через г шагов алгоритма (3.2.3) матрица А (г 4- 1:и, г+ 1:и) содержит матрицу S. Как может быть получена матрица S через г шагов алгоритма (3.2.4)?
Пусть матрица AeRnXn имеет L [/-разложение. Показать, каким образом может быть решена система Ах = Ь, без хранения сомножителей, с вычислением L[/-разложения п х (и + 1) матрицы [А Z>].
Описать вариант исключения Гаусса, который получает нули в столбцах матрицы А в порядке п: — 1:2 и который получает разложение А = U L, где U -верхняя унитреугольная матрица, L- нижняя треугольная матрица.
Матрицы из RnXn вида N (у, к^ = I — уе {, y^R”, называются матрицами преобразова-
ния Гаусса-Жордана, (а) Дать формулу существования матрицы N(у, /с)-1. (Ь) Для данного вектора xeR" найти вектор у, такой, что N (у, к) = е^. (с) Построить алгоритм, использующий матрицы преобразования Гаусса-Жордана, который замещает матрицу А на матрицу А ~1. Каковы условия на матрицу А, обеспечивающие успех вашему алгоритму?
Описать детально версию алгоритма 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.
В некоторых прикладных областях представления Шура известны как «преобразования Гаусса». Использование матриц преобразования Гаусса-Жордана детально изложено в книге Fox L. (1964). An Introduction to Numerical Linear Algebra, Oxford University Press, Oxford.
Как мы уже упоминали, версии исключения Гаусса со скалярным произведением давно известны и некоторое время использовались. С этими //с-вариантами связаны имена Краута и Дулитла. Они были популярны во времена настольных вычислителей, поскольку требуют значительно меньше промежуточных результатов, чем исключение Гаусса. Эти методы все еще достаточно притягательны, так как их можно использовать с накоплением скалярного произведения. Дополнительные ссылки по этому вопросу можно найти в гл. 4 Fox (см. выше) или в работе Stewart (IM С, рр. 131-39). АЛ ГОЛ-процедура может быть найдена в статье 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. (I960). “Crout with Pivoting”, Comm. ACM 3, 507-8.
McKeeman W. M. (1962). “Grout with Equilibration and Iteration,” Comm. ACM. 5, 553-55.
Организация циклов в L (/-вычислениях обсуждается в работах
Dayde M.J. and Duff I. S. (1988). “Use of Level-3 BLAS in LU Factorization on the Cray-2, theETA-IOP, and the IBM 3090-200/VF”, 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 (/-разложения большой разреженной матрицы-тема многих исследований. См.
Bjork A., Plemmons R.J. and Schneider Н. (1981). Large-Scale Matrix Problems, North-Holland, New York.
Duff I. S., ErismanA. M. and Reid J. 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.
Анализ ошибок округления в методе исключения Гаусса
В первых двух разделах мы оценим влияние ошибок округления, когда алгоритмы используются для решения линейной системы Ах = Ь. Прежде чем приступить к этому анализу, полезно рассмотреть ситуацию, близкую к идеальной, при которой не возникает ошибок округления в процессе решения, а ошибки возникают при
задании А и Ь. Таким образом, если fl (b) = b + е, а хранимая матрица fl (Л) = А 4- Е невырождена, то мы допускаем, что вычисленное решение £ удовлетворяет соотношению
(Л + £)* = (b + h, H^IL^ulMIL, IklL^ullAIL,(3.3.1)
т. е. х является решением системы, «близкой» к точной. Более того, если u/с^ (Л) < ^ 1/2 (например), то, используя теорему 2.7.1, можно показать, что
HallooHalloo^ 4u/c00 (Л).^ 4u/c00 (Л).(3.3.2)(3.3.2)
Halloo
Halloo
^ 4u/c00 (Л).
^ 4u/c00 (Л).
(3.3.2)
(3.3.2)
Оценки (3.3.1) и (3.3.2) являются «наилучшими» оценками по норме. В общем случае не существует анализа ошибок округления в оо-норме для решения линейной системы, который требовал бы хранения А и b и позволял бы получить более тонкую оценку. Как следствие этого, мы не вправе критиковать алгоритм за нахождение неточного решения Д если матрица А плохо обусловлена относительно машинной точности, например u/с^ (Л) « 1.
Ошибки в 117-разложении
Давайте сравним оценки ошибок для исключения Гаусса с идеальными оценками, приведенными выше. Для удобства будем использовать бесконечную норму и остановимся на алгоритме 3.2.3 (версии с внешним произведением). Оценки ошибок, которые мы получим, также применимы к алгоритму 3.2.4 (gaxpy-версии).
Наша первая задача - получить оценки ошибок округления, связанные с вычислением треугольных сомножителей.
Теорема 3.3.1. Пусть А-это п к п матрица, заданная в арифметике с плавающей запятой. Если в процессе реализации алгоритма 3.2.3 не возникает нулевых ведущих элементов, тогда вычисленные треугольные матрицы L и 0 удовлетворяют соотношению
(3.3.3)(3.3.4)(3.3.3)(3.3.4)LU = A-V Н,|/7|^3(„- 1)и(|Л| + |1||11) + О(и^
(3.3.3)
(3.3.4)
(3.3.3)
(3.3.4)
Доказательство. Доказательство проведем по индукции относительно п. Очевидно, что теорема верна при п = 1. Пусть она верна для всех (п — 1) х (и — 1) матриц, заданных в арифметике с плавающей запятой. Если
wT 1
г1г1B\n-Vп — 1
г
1
г
1
тогда на первом шаге алгоритма вычисляются вектор z = fl (у/а) и матрица Лт = =fl(B — zwT\ Поэтому мы имеем
2 = -Г+/,/ ^U —аа2 = -Г+/,/ ^U —аа(3.3.5)(3.3.5)
2 = -Г+/,/ ^U —
аа
2 = -Г+/,/ ^U —
аа
(3.3.5)
(3.3.5)
и
А, = В - zwT + Г, |F| ^ 2и(|^| + |^| |и^Г) + O(u2)(3.3.6)
Используем алгоритм для вычисления 117-разложения матрицы Av. По индукции A1 = L1U1 и результирующие треугольные матрицы Lv и Uv удовлетворяют
соотношению
(3.3.7)(3.3.8)(3.3.7)(3.3.8)
(3.3.7)
(3.3.8)
(3.3.7)
(3.3.8)
LVUV = А, 4- Hv,| H, I < 3 (n - 2) u (I A, I + \Lt 11 Ox I) + О (u2).
Поэтому
10 a wTz tj Lo Uy
= Л 4-= Л 4-о 0_a/ HyfF_о 0_a/ HyfF_= A A- H.= A A- H.
= Л 4-
= Л 4-
о 0
_a/ HyfF_
о 0
_a/ HyfF_
= A A- H.
= A A- H.
Из (3.3.6) следует, что
|^| ^ (1 + 2u)(|5| + |z| |w|r) + O(u2),
и поэтому, используя (3.3.7) и (3.3.8), мы получаем
1/7, + Г| ^ 3(н - l)u(|S| + |z|Wr + Itjl^l) + O(u2).
Так как |a/| ^ u|v|, то легко убедиться, что
|Я|^3(и-1)и{IL|Я|^3(и-1)и{IL|В| J|В| J0|а| |w|ritjJL о 1(7,1 _0|а| |w|ritjJL о 1(7,1 _+ O(u2),+ O(u2),
|Я|^3(и-1)и{
IL
|Я|^3(и-1)и{
IL
|В| J
|В| J
0|а| |w|r
itjJL о 1(7,1 _
0|а| |w|r
itjJL о 1(7,1 _
+ O(u2),
+ O(u2),
откуда следует доказательство теоремы. □
Отметим, что если матрица А размера т х п, тогда теорема применима при условии, что п из соотношения (3.3.4) заменяется на меньшее из чисел п и т.
Решение треугольных систем с приближенными треугольными матрицами
Оценим влияние ошибок округления, если решение треугольных систем с матрицами L и U выполняется методами из § 3.1.
Теорема 3.3.2. Пусть t uU вычислены в результате LU -разложения п к п матрицы А в режиме с плавающей запятой посредством алгоритма 3.2.3 или 3.2.4. Предположим, что для нахождения решения у системы Ly = b и решения х системы Ux = у используются методы из § 3.1. Тогда (А + Е)х = Ь, где
|Е| ^ ли(3|Л| 4- 5|£| |(7|) 4- О(и2).(3.3.9)
Доказательство. Из соотношений (3.1.1) и (3.1.2) мы имеем
(LA-F)y = b, \F\^nu\L\FO(u2^
(U 4- G)x = у, \G\^nu\U\ 4- O(u2), поэтому
(£ 4- F^U 4- G^x = (LU 4- FU A-LG A- FG)x = b.
Как следует из теоремы 3.3.1,
LU = А 4- И,
где \Н\ ^ 3(п — 1)и(|Л| 4- |L||(7|) 4- О (и2), поэтому, задавая матрицу
Е = НА- FU 4- LG 4- FG,
мы получаем (А 4- Е)х = Ь. Причем
|Е|^|Я| + |£|Щ| + |£||6| + 0(и2К
^ Зли(|ЛI + |£||#1) + 2ии(|£||(/|) + О(и2).
Если величина |L| | (7| не слишком велика, то оценка (3.3.9) сопоставима с идеальной оценкой (3.3.1). (Множитель п не имеет значения; ср. с результатом Уилкинсона из § 2.4.6.) Такая ситуация возможна, так как в исключении Гаусса нет никаких средств для управления возникновением маленьких ведущих элементов. Если маленькие ведущие элементы встречаются, то мы можем ожидать больших чисел в представлении матриц L и U.
Подчеркнем, что маленькие ведущие элеметы не являются необходимым следст- Г 8 1 вием плохой обусловленности, что подтверждается примером с матрицей А =.
Таким образом, исключение Гаусса может давать сколь угодно плохие результаты, даже для хорошо обусловленных матриц. Метод является неустойчивым.
Для того чтобы исправить этот недостаток алгоритма, необходимо в процесс исключения ввести перестановки строк и/или столбцов, с целью удержать в подходящих границах числа, возникающие по ходу вычислений. Эта идея развивается в следующем разделе.
Пример 3.3.1. Пусть 0 = 10, t = 3 и для решения системы используется приближенная арифметика:
1.003.001.003.000.001 1.00 хх
1.00
3.00
1.00
3.00
1.00 2.00J |_х2
Применяя исключение Гаусса, мы получим
101000 1101000 10.00110-10000.00110-1000
10
1000 1
10
1000 1
0.0011
0-1000
0.0011
0-1000
причем вычисления показывают, что
Отметим, что матрица 6Отметим, что матрица 6LU =LU =0.001 11 2_0.001 11 2_о о0 -2_о о0 -2_= А + Н.= А + Н.10 “6 0.00110 “3 1.00110 “6 0.00110 “3 1.001является граничной матрицей из соотношения (3.3.4)является граничной матрицей из соотношения (3.3.4)
Отметим, что матрица 6
Отметим, что матрица 6
LU =
LU =
0.001 1
1 2_
0.001 1
1 2_
о о
0 -2_
о о
0 -2_
= А + Н.
= А + Н.
10 “6 0.001
10 “3 1.001
10 “6 0.001
10 “3 1.001
является граничной матрицей из соотношения (3.3.4)
является граничной матрицей из соотношения (3.3.4)
и дает верхнюю оценку для \Н\. Если мы продолжим решение задачи, используя методы для решения треугольных систем из § 3.1 и применяя арифметику той же точности, то мы получим вычисленное решение х = (0,1)т. Это не совпадает с точным решением х = (1.002 ... , 0.998 ...)т.
Задачи
Показать, что отмена предположения о том, что матрица А задана в арифметике с плавающей запятой, как в теореме 3.3.1, приведет к замене в соотношении (3.3.3) коэффициента «3» на «4».
Пусть А-матрица размера п х п, а матрицы Ln 0 получены при помощи алгоритма 3.2.3. (а) Сколько требуется флопов для вычисления || |L| |Г| Ц^ ? (Ь) Доказать, что//(|L| |Г|) ^ ^(1 +2ли)|Г||Г| + Q(u2)?
Пусть х = А ""1 Ь. Доказать, что если е = х — х (ошибка) и г = b — А х (невязка), тогда
||z||
— ^Ikll^lM^lllkll.
IM II
Допустить согласованность между матричной и векторной нормами.
Используя двухразрядную с десятичным основанием плавающую арифметику, вычислить LtZ-разложение матрицы
7 6
9 8
Что представляет матрица Н из соотношения (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). «Вычислительные основы линейной алгебры».-М.: Наука.
Выбор ведущего элемента
Приведенный в предыдущем разделе анализ показывает, что мы должны быть уверены в отсутствии больших элементов в вычисленных треугольных множителях L и U.
Пример
0.0001 10.0001 1100.00011
0.0001 1
0.0001 1
10 000 1J L 0-9999
показывает источник возникших неприятностей: относительно малый ведущий элемент. Перестановкой строк от этих сложностей можно избавиться. В нашем примере, если P-это матрица перестановок вида
00111010тотоРА =РА =1 10.0001 11 10.0001 11 о 0.0001 11 о 0.0001 1110 0.9999110 0.9999= LU.= LU.
0
0
1
1
1
0
1
0
то
то
РА =
РА =
1 1
0.0001 1
1 1
0.0001 1
1 о 0.0001 1
1 о 0.0001 1
11
0 0.9999
11
0 0.9999
= LU.
= LU.
Сейчас треугольные множители содержат достаточно малые элементы.
В этом разделе мы покажем, как определить перестановочный вариант матрицы
А, чтобы добиться достаточно устойчивого L [/-разложения. Существует несколько способов достижения цели, и все они соответствуют разным стратегиям выбора ведущего элемента. Мы остановимся на стратегиях частичного и полного выбора ведущего элемента. Мы обсудим эффективные реализации этих стратегий и их свойства. А начнем с обсуждения применения матрицы перестановок.
Перестановочные матрицы
Стабилизация процесса исключения Гаусса, которая обсуждается в данном разделе, предполагает переупорядочивание данных в виде перестановки двух матричных строк. В соответствии с нашим желанием описывать все вычисления в «матричных терминах» нам необходимо ввести понятие перестановочной матрицы. Перестановочная матрица-это матрица, отличающаяся от единичной лишь перестановкой строк, например
0 0 0 Г
° ° °
■"0010 '
0 1 о 0_
Перестановочную матрицу нет необходимости хранить полностью. Гораздо более эффективно перестановочную матрицу можно представить в виде целочисленного вектора р длины п. Один из возможных способов такого представления это держать в р (к) столбцовый индекс единственной «1» /с-й строки матрицы Р. Так вектор р = (4123) соответствует кодировке приведенной выше матрицы Р. Также возможно закодировать Р указанием столбца той позиции, в которой находится элемент «1», например р = (2431).
Если P-это матрица перестановок, а Л-некоторая матрица, тогда матрица АР является вариантом матрицы А с переставленными столбцами, а РА вариантом матрицы А с переставленными строками.
Перестановочные матрицы ортогональны, и поэтому если Р перестановочная матрица, тогда Р1 — РТ. Произведение перестановочных матриц также является перестановочной матрицей.
В этом разделе для нас особый интерес представляют взаимные перестановки. Такие перестановки осуществляют матрицы, получаемые простой переменой мест двух строк единичной матрицы, например
"о о о Г
‘0 1 о о
- 0 0 1 0 ’
J о о о
Взаимные перестановки могут использоваться для описания перестановок строк и столбцов матрицы. В приведенном выше примере порядка 4x4 матрица ЕА отличается от матрицы А перестановкой 1-й и 4-й строк. Аналогично матрица АЕ отличается от матрицы А перестановкой 1-го и 4-го столбцов.
Если Р = Еп... Ех и каждая матрица Ек является единичной с переставленными к и р(к) строками, тогда вектор р(Х:п) содержит всю необходимую информацию о матрице Р. Действительно, вектор xeR” может быть замещен на вектор Рх следующим образом:
for к = 1: п
xik^x^pik^
end
Здесь символ «^» обозначает «выполнение перестановки».
x(/c)^.v(p(/c))or = х(к\ х(к) = х^рЩ\ x(j)(k^ = г.
Поскольку каждая матрица Ек является симметричной и РТ = Ех...Еп, то также можно выполнить замещение вектора х на вектор Ртх:
for к = п: — 1:1 x(k^x(j)(k^ end
Необходимо отметить, что операции перестановок не принадлежат к операциям плавающей арифметики. Тем не менее, операции с матрицами перестановок часто приводят к нерегулярной сортировке данных и могут потребовать значительных вычислительных затрат.
Частичный выбор ведущего элемента: общая идея
Мы показали, как можно использовать взаимные перестановки в L U -разложении, чтобы обеспечить появление множителей Гаусса, по абсолютной величине не превосходящих единицу. Пусть матрица
3
17
10
2
4
-2
6
18
-12
Чтобы добиться наименьших множителей в первой матрице разложения по Гауссу с помощью взаимных перестановок строк, надо сделать элемент aYY наибольшим в первом столбце. Если PY -матрица взаимных перестановок, тогда
0 0 1
0 1 0
1 0 0
Поэтому
ТОТО10 06 18 -12мх =-1/3 10^>MyPyA =0-22-1/2 0 1081610 06 18 -12мх =-1/3 10^>MyPyA =0-22-1/2 0 10816ввТеперь, чтобы получить наименьший множитель переставить 2-ю и 3-ю строки. ПоэтомуТеперь, чтобы получить наименьший множитель переставить 2-ю и 3-ю строки. Поэтому2 ""2 ""100100001001M2P2MYPYA =M2P2MYPYA =матрице М2, необходимоматрице М2, необходимоесли1 00м2 =0 100 1/416 1€? -120 8160 ()6если1 00м2 =0 100 1/416 1€? -120 8160 ()6ии01о01о
ТО
ТО
10 0
6 18 -12
мх =
-1/3 10
^>MyPyA =
0-22
-1/2 0 1
0816
10 0
6 18 -12
мх =
-1/3 10
^>MyPyA =
0-22
-1/2 0 1
0816
в
в
Теперь, чтобы получить наименьший множитель переставить 2-ю и 3-ю строки. Поэтому
Теперь, чтобы получить наименьший множитель переставить 2-ю и 3-ю строки. Поэтому
2 ""
2 ""
1
0
0
1
0
0
0
0
1
0
0
1
M2P2MYPYA =
M2P2MYPYA =
матрице М2, необходимо
матрице М2, необходимо
если
1 0
0
м2 =
0 1
0
0 1/4
1
6 1€
? -12
0 816
0 (
)6
если
1 0
0
м2 =
0 1
0
0 1/4
1
6 1€
? -12
0 816
0 (
)6
и
и
0
1
о
0
1
о
6
18
-12
М =
2
4
-2
-3
17
10
Пример иллюстрирует общую идею, основанную на перестановке строк. Обобщая эту идею, мы получаем следующую схему:
for к = 1: и — 1
Построить матрицу взаимных перестановок Ек, такую, что если z-это к-й столбец матрица! ЕкА, то Kz^HlkMIL.
А = ЕкА
Построить матрицу преобразования Гаусса Мк, такую, что если v- это к-й столбец матрицы МкА, то v (к + 1: л) = 0.
А = МкА end
Такая стратегия, основанная на перестановке строк, называется стратегией частичного выбора. По окончании у нас образуется верхняя треугольная матрица M„_xEn_x...MxExA = U.
В результате применения стратегии частичного выбора мы получаем множители, не превосходящие по абсолютной величине единицу. Это следует из того, что
WEkMk_x...MxExA\k\ = max \<ЕкМк_ х...МхЕхА\к\
для к = 1:п — 1. Таким образом, стратегия частичного выбора является надежной защитой от появления чрезмерно больших множителей.
Детали стратегии частичного выбора
Давайте рассмотрим полностью метод исключения Гаусса (G.E.) в сочетании со стратегией частичного выбора.
Алгоритм 3.4.1. (G.E. с частичным выбором: версия с внешним произведением). Если матрица Л g R” х ”, то данный алгоритм вычисляет матрицы преобразования Гаусса М1...МЛ_1 и матрицы взаимных перестановок Ex...En_v такие что матрица Мп _ vEn _ t... MVEV A = U является верхней треугольной. При этом нет множителей, превосходящих 1 по абсолютной величине. Подматрица Л(1:/с, /с) замещается на матрицу (7(1:/с, к\ к=\:п. Подматрица А (к А- 1:и, к) замещается на матрицу- Мк(к + 1 :п, к), к = V.n — 1. Целочисленный вектор pw ^Д :п — 1) задает взаимные перестановки. В частности, матрица Ек представляет строки к и piv(k), к = 1 \п — 1.
for к = 1: п — 1
Зададим ц, такое что к ^ ц ^ п и | А (ц/с) | =
1М(Ь:и,
А (к, к:п)<-+А (ц, к: п\ pw (к) = ц if А(к, к) /0 t = gauss (А (к: п, к)); А (к А- 1: п, к) = t А (к: п, кА- 1: п) = gauss.app (А (к: п, кА- 1: и), г) end end
Заметим, что если на к-м шаге ЦА(к:п, к) П^ = 0, то в условиях точной арифметики первые к столбцов матрицы А линейно зависимы. В отличие от алгоритма 3.2.3, здесь это нам не доставляет трудностей. Мы просто обойдем нулевой ведущий элемент.*
Дополнительные затраты, вызванные применением стратегии частичного выбора, являются минимальными относительно затрат плавающей арифметики, так как
требуют лишь О (л2) операций сравнения для поиска ведущего элемента. В целом алгоритм требует 2п3/3 флопов.
Чтобы решить линейную систему Ах = b после вызова алгоритма 3.4.1, мы должны
Вычислить вектор у = Мп _ YEn _ t... MYEYb.
Решить верхнюю треугольную систему Ux = у.
Вся необходимая для этого информация содержится в массиве А и целочисленном векторе pic.
Пример 3.4.1. Если алгоритм 3.4.1 применить к матрице Л из § 3.4.2, тогда на выходе мы получим
6 18- 12'
А =А =1/3 8161/2 1/46_1/3 8161/2 1/46_
А =
А =
1/3 816
1/2 1/46_
1/3 816
1/2 1/46_
и pit) = (3,3).
Где хранить матрицу L?
Метод исключения Гаусса вычисляет L [/-разложение матрицы А с переставленными строками. Доказательством являются следующие рассуждения.
Теорема 3.4.1. Если метод Гаусса с частичным выбором используется для вычисления верхней триангуляризации вида
Mn_YEn_Y...MYEYA = U(3.4.2)
посредством алгоритма 3.4.1, то
РА = LU,
где Р = Еп_ Y... EY и L-это нижняя унитреугольная матрица с элементами \1ц\ < 1. к-й столбец матрицы L ниже диагонали является перестановочной версией к-го вектора Гаусса. В частности, если Мк = I — twlk, то L(k + 1: п, к) = g(k + 1 :п\ где д =,Ек+/к\
Доказательство. Преобразование формулы (3.4.2) позволяет получить соотношение вида Mn—Y... MyPA = U, где Мп_ Y = Мп_ Y и
^к = Еп _ Y... Ек + YMkEk + t... Еп _ t, к ^ n — 2.
Так как каждая матрица Ej является матрицей взаимных перестановок, меняющей /ю строку с ц-й строкой, где ц ^ j, то матрица £Д1 \j — 1, 1 V — 1) = Ij_ t. Отсюда следует, что каждая матрица Мк-это матрица преобразования Гаусса с вектором Гаусса ^ = Еп_ Y... Ек + Ytw. Опираясь на результат теоремы, легко показать, как можно изменить алгоритм 3.4.1, чтобы на выходе в матрице A (i, j) содержалась матрица ЕЦ, j) для всех / > j. Мы просто применим преобразование, задаваемое матрицей Ек, ко всем ранее вычисленным векторам Гаусса. Это достигается изменением записи “А (к, к: п) <-► А (ц, к:пУ в алгоритме 3.4.1 на запись “Л (к, 1: и) Л (ц, 1: пу.
Gaxpy-версия
В § 3.2 мы рассмотрели схему с внешним произведением и gaxpy-версию для вычисления L [/-разложения. Объединив выбор ведущего элемента и схему с внеш-
ним произведением, естественно было бы это же выполнить и для gaxpy-версии. Возьмем из алгоритма (3.2.5) общую структуру Е1/-процесса для gaxpy-версии.
^ Решить L(1 :j - 1, 1:J - 1) U (1 J - 1, j) = А (1 J - 1, j)
vU'n) = AU-n, J) — LU'm, 1 ;j - 1)[/(1:7- 1,7) uaj) = vui
L(j + 1 :n, J) = vU + 1 :n)/UU, j) end
В сочетании co стратегией частичного выбора мы получаем следующий алгоритм for j = 1: и
AUj^E^.-.E^Uh
Решить LUU- 1, IV- 1)^(1V- 1,7) = AUU- 1,7)
vU-n) = AU;n^ - LU'.n, \:j - 1)[/(1:7- 1,7)
Определить p, j ^ ц ^ n, такое что |г(ц)| = ||г(7:^)11оо Пусть Ej меняет строки 7 и ц и переставляет: (/)<-► (ц). if vUW vU + 1:и) = vU + \*n^ end
UUJ) = vU)
L(J + 1 :n, 7) = vU + 1: л)
LU IV- X^E^LU IV - D end
Если наполнить схему деталями и учесть замещение матрицы А, то получим
Алгоритм 3.4.3. (G.E. с частичным выбором: Gaxpy-версия). Алгоритм вычисляет нижнюю унитреугольную матрицу L, верхнюю треугольную матрицу U и матрицу перестановок Р, такие, что РА = LU. Матрица A^iJ) замещается на матрицу LU1V если i >7, и на матрицу U(ij) в противном случае. Матрица Р = Еп_ 1...Е1 задается целочисленным вектором pivU :п — 1). В частности, матрица Ej выполняет взаимные перестановки строк j и pivU\
for j = 1: л
{Л (:, 7) = £7_ t.Et^(:, 7)}
for к = 1 ;j — 1
А<к, ft^ Akpw<k\ ft end
■{Решить L(1 \j - 1, 1 :j - 1) U (1 :j - 1, ft = A (1 :j - 1, j^ for к = 1 :j — 1
for i = к + 1: j — 1
A (z, ft = A (i, j) - A U, k) A (k, j) end
{yU-zz) = a O':n, j) - L(j.n, 1 :j - 1) U(1 :j - 1, 7)} for к = 1 :j — 1
A (z, 7) = A (i, 7) - A (z, k) A (k, 7) end end {Определить Ej и применить к v и LU X:j — 1)} Найти ц, такое, что j ^ ц ^ п и |Л (ц, »| = || Л (у: м, 7)11^ рю^Й = Н
for к = 1 :j
Atj, к)<-> А (ц, к)
end
^U + 1 :и, у) = vU + 1 : л)НУ)}
if A U, О
for i = j + 1 : п
AU,J) = AU, л/AU, j)
end end end
Как и версия с внешним произведением, эта процедура требует 2п3/3 флопов и О (л2) сравнений. Чтобы решить систему Ах = Ь после применения алгоритма 3.4.3, мы должны (а) положить с = РЬ (выполнить перестановки компонент вектора Ъ\ (Ь) решить систему Ly = с (нижняя треугольная система) и (с) решить систему Ux = у (верхняя треугольная система).
Пример 3.4.2. Если алюритм 3.4.2 применить к матрице А из примера 3.4.1, то на выходе мы получим
"О 18 - 12 "
1/3 816
- 1/2 1/46-
и piv = (3,3).
Анализ ошибок округления
Давайте проверим на устойчивость метод со стратегией частичного выбора. Для этого надо подсчитать ошибки округления, которые появляются в процессе исключения и в процессе решения треугольных систем. Учитывая, что перестановки не дают ошибок округления, несложно показать, с учетом теоремы 3.3.2, что вычисленное решение х удовлетворяет соотношению (А + Е) х = Ь, где
| Е | ^ пи (31А | + 5РТ | Ц 101) + О (и2).(3.4.3)
При этом мы считаем, что матрицы Р, L и U вычислены аналогично матрицам Р, L и U, в соответствии с приведенным выше алгоритмом. Элементы матрицы L ограничены сверху единицей вследствие выбора ведущего элемента. Поэтому НИ^ л, и мы имеем оценку
IMIL < "UOIMIL + 5«||(7|U + 0(u2).(3.4.4)
Наша задача оценить ПГ/П^. Определим понятие фактор роста р следующим образом
1^>|
Р = тахПЛ1Г’(ЗА5)
.j.k IM IL
где Aw - вычисленный аналог матрицы- Aw = МкЕк...М1Е1А. Отсюда следует, что
HEIL^pIMILu + Odi2)(3.4.6)
Может ли эта оценка быть сопоставимой с идеальной оценкой (3.3.1), зависит от величины фактора роста р. (Множитель п3 на практике не является действенным и в наших суждениях может быть опущен.) Фактор роста является мерой величины чисел, появившихся в процессе исключения. На практике, р обычно бывает порядка
но оно может быть и таким же большим как 2Л-1. Несмотря на это, большинство специалистов по численному анализу считает, что случайная последовательность растущих элементов в исключении Гаусса с частичным выбором ведет себя близко к практике. Метод является надежным для использования.
Пример 3.4.3. Если метод исключения Гаусса с частичным выбором использовать при решении задачи
0.001 1.001.00 2.000.001 1.001.00 2.001.003.001.003.00
0.001 1.00
1.00 2.00
0.001 1.00
1.00 2.00
1.00
3.00
1.00
3.00
при 0 = 10, t = 3 в приближенной арифметике, то
0 11 00 11 0L =L =1.001.000.0010.001о1.00о1.001.00 2.000 1.001.00 2.000 1.00
0 1
1 0
0 1
1 0
L =
L =
1.00
1.00
0.001
0.001
о
1.00
о
1.00
1.00 2.00
0 1.00
1.00 2.00
0 1.00
и х = (1.00, 0.998) имеет правильные три цифры.
Пример 3.4.4. Если матрица А е Rп х п задается формулами
если i = j или j = п, если i > у, для остальных i, j.если i = j или j = п, если i > у, для остальных i, j.
если i = j или j = п, если i > у, для остальных i, j.
если i = j или j = п, если i > у, для остальных i, j.
тогда в LLZ-разложении матрицы А элементы |ei;| < 1, а ипп = 2п 1
Метод блочного исключения Гаусса
Исключения Гаусса с частичным выбором можно организовать так, что в нем будет много операций 3-го уровня. Мы детально исследуем блочную процедуру с внешним произведением, но отметим, что также возможно блочное представление gaxpy-версии и версии со скалярным произведением. См. Dayde и Duff (1988).
Пусть матрица Л е R” х ” и для простоты и = rN. Разобьем матрицу А следующим образом:
А =А =- ^21- ^21^12^22-^12^22-Гп — ГГп — Г
А =
А =
- ^21
- ^21
^12
^22-
^12
^22-
Г
п — Г
Г
п — Г
г и — г
Первый шаг блочного преобразования является типичным и выполняется следующим образом:
Используем скалярный метод исключения Гаусса с частичным выбором (например, прямоугольные версии алгоритмов 3.4.1 или 3.4.2), чтобы вычислить матрицу перестановок P1eRnxn, нижнюю унитреугольную матрицу LtieRnxn и верхнюю треугольную матрицу U1YeRrxr, так чтобы
• Преобразуем посредством матрицы Рг остальную часть матрицы А:
^12-^22^12-^22^12-^22^12-^22
^12
-^22
^12
-^22
^12
-^22
^12
-^22
Решаем систему с нижней треугольной матрицей и многими правыми частями^11^12 = ^12 '
• Выполняем преобразование 3-го уровня= ^22 — ^21^12 *В результате этих вычислений мы получаем разложение ^и ^12' О 1п-г- '• Выполняем преобразование 3-го уровня= ^22 — ^21^12 *В результате этих вычислений мы получаем разложение ^и ^12' О 1п-г- 'Р^ =Р^ =L_LL_LО "О "I г О",0 А.I г О",0 А.
• Выполняем преобразование 3-го уровня
= ^22 — ^21^12 *
В результате этих вычислений мы получаем разложение ^и ^12' О 1п-г- '
• Выполняем преобразование 3-го уровня
= ^22 — ^21^12 *
В результате этих вычислений мы получаем разложение ^и ^12' О 1п-г- '
Р^ =
Р^ =
L
_L
L
_L
О "
О "
I г О"
,0 А.
I г О"
,0 А.
Далее процесс повторяется для первых г столбцов матрицы А.
В целом в течение к шагов (1 ^ к ^ N — 1) блочного алгоритма мы применяем скалярный метод исключения Гаусса к матрице порядка (п — (к — 1)г) х г. Решаем г х (и — кг) систему со многими правыми частями и выполняем преобразование 3-го уровня размера (л — кг) х (и — кг). Вклад операции 3-го уровня в общий процесс аппроксимируется соотношением 1 — 3/(2N). Поэтому для больших N процедура содержит много операций 3-го уровня.
Полный выбор ведущего элемента
Другая стратегия выбора ведущего элемента, называемая полным выбором, обладает тем свойством, что возможная оценка фактора роста значительно меньше, чем Т - 1. Заметим, что при частичном выборе /с-й ведущий элемент определяется исследованием текущего подстолбца А(к'п, к). При полном выборе в позицию (к, к) помещается наибольший элемент текущей подматрицы А (к: п, к:п). Следовательно, мы вычисляем верхнюю триангуляризацию Мп _ гЕп_ i...MiEiAFi...Fn_ г = U таким образом, что на к-м шаге имеем дело с матрицей
A<k-" = Mk_1Ek_1...M1E1AF1...Fk_1
и определяем матрицы перестановок Ек и Fk из условий
max*>FJy|.
Имеет место аналог теоремы 3.4.1.
Теорема 3.4.2. Если исключение Гаусса с полным выбором ведущего элемента используется для вычисления верхней триангуляризации
Mn_1E„_1...MvE1AFv..Fn_1 = U,(3.4.7)
то
PAQ = LU,
где Р = Еп_ х... Ev Q = F x...Fn_ х; a L-нижняя унитреугольная матрица с элементами |/у| ^ 1; к-й столбец матрицы L ниже диагонали-это переставленный вариант к-го вектора Гаусса. В частности, если Мк = I — twlk , то L(k + 1 : п, к) = g (к + Г. п\ где g = Е„ _ j. Ек +
Доказательство. Доказательство аналогично доказательству теоремы 3.4.1. Детали оставляем для читателя.
Вот подробный алгоритм исключения Гаусса с полным выбором:
Алгоритм 3.4.3 (G.E. с полным выбором ведущего элемента). Этот алгоритм вычисляет разложение с полным выбором PAQ = LU, где L-нижняя унитреугольная матрица, a U-верхняя треугольная. Матрицы Р = £п_1...Е1 и Q = F1...Fn_1 осуществляют взаимные перестановки. Подматрица Л(1 :к, к) замещается матрицей С(1 :к, к), к = 1 :п. Подматрица А (к + 1 :п, к) замещается матрицей L(k + 1 :п, к),
к = 1, п — 1. Матрица Ек переставляет строки к и р(к). Матрица Fk переставляет столбцы к и q(k).
for к = 1: п — 1
Определить ц и X, такие, что
|Л (ц, Х)| = max {|^ (f, у)|:i = к:и, j = к:п\
А (ку 1: п) *-* А (ц, 1: и); А (1: п, к) *-* А (1: п, X)
р^ = ц; q(k) = X
if А(Х, к) / О
t = gauss (А (к: и, к))
А (к + 1: и, к) = t
А (к*. Пу к + 1: п) = gauss.app (А (к: Пу к + 1: л), t) end end
Алгоритм требует 2и3/3 флопов и такое же количество сравнений. В отличие от частичного, полный выбор ведущего элемента приводит к значительному увеличению вычислительных затрат, поскольку на каждом этапе выполняется двумерный поиск.
Замечания по стратегии с полным выбором ведущего элемента
Пусть rank (Л) = г < и. Из этого следует, что в начале (г + 1)-го шага подматрица А (г + 1: и, г + 1: и) = 0. Это означает, что Ек = Fk = Мк = I для к = г + 1: п и поэтому алгоритм может быть завершен через г шагов в виде разложения такого рода
PAQ = LU =PAQ = LU =-^21-^210 ПГ^П^ЗЛ-JLo о0 ПГ^П^ЗЛ-JLo о
PAQ = LU =
PAQ = LU =
-^21
-^21
0 ПГ^П^ЗЛ-JLo о
0 ПГ^П^ЗЛ-JLo о
Здесь Llt и L^-это г х г матрицы, a Т21 и С/Г2-матрицы (и — г) х г. Таким образом, исключение Гаусса с полным выбором ведущего элемента может быть в принципе использовано для определения ранга матрицы. Однако ошибки округления создают возможность изменения точного нулевого значения ведущего элемента. На практике можно «объявить», что матрица А имеет ранг к, если ведущий элемент на к + 1 шаге достаточно мал. Подробно задача численного определения ранга матрицы обсуждается в § 5.4.
Уилкинсон (1961) показал, что в условиях точной арифметики элементы матрицы Л(к) = МкЕк... M^E^AF^ ...Fk удовлетворяют соотношению
‘l^l ^ к^^-З^^.к^’^^тах(3.4.8)
Верхняя граница этого неравенства является медленно растущей функцией от к. Этот факт в сочетании с обширным эмпирическим обоснованием позволяет предположить, что величина р всегда умеренна (например, р = 10), и это позволяет нам сделать вывод об устойчивости исключения Гаусса с полным выбором ведущего элемента. Этот метод решает слабо возмущенную линейную систему (А + Е)х = b точно в смысле соотношения (3.3.1). Тем не менее не имеется практических обоснований для предпочтения стратегии полного выбора перед частичным выбором, исключая случай, когда стоит вопрос об определении ранга матрицы.
Пример 3.4.5. Если исключение Гаусса с полным выбором ведущего элемента применяется при решении задачи
0.001 1.001.00 2.000.001 1.001.00 2.00-^1*2.-^1*2.1.003.00_1.003.00_
0.001 1.00
1.00 2.00
0.001 1.00
1.00 2.00
-^1
*2.
-^1
*2.
1.00
3.00_
1.00
3.00_
при 0 = 10, t = 3 в условиях приближенной арифметики, то
0 11 00 11 0, п =, п =0 11 о0 11 о1.00 0.000.500 1.001.00 0.000.500 1.002.00 1.000.00 0.499_2.00 1.000.00 0.499_
0 1
1 0
0 1
1 0
, п =
, п =
0 1
1 о
0 1
1 о
1.00 0.00
0.500 1.00
1.00 0.00
0.500 1.00
2.00 1.00
0.00 0.499_
2.00 1.00
0.00 0.499_
и _х = (1.00, 1.00). Это решение верно до двух значащих цифр в каждой компоненте. Ср. с примером 3.4.3.
Отказ от выбора ведущего элемента
Для некоторых классов матриц нет необходимости производить выбор ведущего элемента. Выявить такие классы важно, поскольку выбор ведущего элемента усложняет процесс. Чтобы проиллюстрировать, какого рода анализ требуется для доказательства безопасного отказа от выбора ведущего элемента, рассмотрим случай с диагонально доминирующими матрицами. Будем говорить, что матрица AeRnxn является строго диагонально доминирующей, если
Ы > Е Kh t=\-.n.
j=1
и i
Следующая теорема показывает, как это свойство может прекрасно гарантировать выполнение L [/-разложения без выбора ведущего элемента.
Теорема 3.4.3. Если матрица АТ является диагонально доминирующей, тогда LU-разложение матрицы А существует, |/l7| < 1. Другими словами, если применять алгоритм 3.4.1, то Р = 1.
Доказательство. Разобьем матрицу А следующим образом
где а порядка 1 х 1, и заметим, что после одного шага L [/-процесса с внешним произведением мы получим разложение вида
a wT _ 10v С _ г/а Ia wT _ 10v С _ г/а I1 01 0a wTa wTОС — vwT/a J |_0 IОС — vwT/a J |_0 I
a wT _ 10
v С _ г/а I
a wT _ 10
v С _ г/а I
1 0
1 0
a wT
a wT
ОС — vwT/a J |_0 I
ОС — vwT/a J |_0 I
Доказательство теоремы будет получено индукцией по и, если мы сможем показать, что матрица, транспонированная к В = С — vwT/a, является строго диагонально доминирующей, поскольку из разложения В = L^U^ следует, что
10aw
г/a Lx О Ux
Но доказательство факта, что ВТ - матрица с диагональным доминированием, получается без всяких осложнений. Из определения мы имеем
и — 1И — 1И - 1I I и - 1
Z 1^1= Z k,7-^./a|< £ 1С«1+ы X к.К
i = 1i = 1i = 1I u I i = 1
i^ji^ji^ji^j
И aИ a= k,J- □= k,J- □< (kj,-l - kJ) + y-ydal - kJ) <
И a
И a
= k,J- □
= k,J- □
" J |a|J
Некоторые приложения
Мы сделаем выводы и приведем примеры, иллюстрирующие, как нужно рассуждать на языке матричных разложений, когда сталкиваешься с различными видами линейных уравнений.
Пусть Л-невырожденная п х п матрица, а В -матрица п х р. Рассмотрим задачу нахождения матрицы X (п х р), такой, что АХ = В, т. е. задачу со многими правыми частями. Если имеются столбцовые разбиения матриц X = [^, ..., хр] и В = = [бр ..., Ьр"\, тогда имеем алгоритм
Вычислить РА = LU.
for к = 1: р
Решить Ly = Pbk(3.4.9)
Решить Uxk = у
end
Заметим, что разложение матрицы А выполняется однажды. Если В = 1п, то у нас возникает задача вычисления Л-1.
Другой пример применения L [/-разложения является «нетрадиционным»; предположим, мы хотим решить линейную систему Акх = Ь, где Л е R” х ”, b е R” и к- целое положительное число. Один подход состоит в вычислении матрицы С = Ак и далее в решении системы Сх = Ь. Он требует О (кп3) флопов. Намного более эффективный алгоритм следующий:
Вычислить РА = LU
for j = 1: к
Вектор b замещается решением Ly = Pb(3.4.10)
Вектор b замещается решением Ux = b
end
В качестве последнего примера мы покажем, как избегать ловушки, связанной с явным вычислением обратной матрицы. Пусть заданы матрица Л е R” х ” и векторы deRn и ceR”, мы хотим вычислить 5 = cTA-id. Один подход состоит в вычислении матрицы X = Л"S как предлагается в задаче, и потом в нахождении 5 = cTXd. Более экономная процедура состоит в выполнении РА = LU и потом в решении треугольных систем Ly = Pd и Ux = у. Далее следует, что 5 = сТх. Цель данного примера- подчеркнуть, что когда в формуле встречается матричное обращение, то мы должны рассуждать на языке решения систем, а не на языке формирования точной обратной матрицы.
Задачи
Пусть А = LU будет L [/-разложением п х «-матрицы Л, причем |e,J ^ 1. Обозначим через а ' и и [ z-e строки матриц А и U соответственно. Проверить уравнение
i - 1
и т. = а У — £ l^uТ
j = 1
и, используя его, показать, что || U П^ < 2п " 1|| А П^.
(Подсказка: возьмите нормы и используйте индукцию.)
Показать, что если разложение PAQ = LU получается методом Гаусса с полным выбором, то не существует элемента в U(z, i:n) большего по абсолютной величине, чем |м;/|.
Пусть для матрицы ЛеК"^ существует £[/-разложение, и пусть Ln U известны. Дать алгоритм вычисления (z, /) элемента матрицы А ~1 сложности (« — /)2 + (« — z)2 флопов.
Показать, что если У-это обратная матрица, вычисленная посредством алгоритма (3.4.9), то ЛХ = / + Г, где Н^Н, «и(3 + 5п2 р) || А^ Н^Щ .
Доказать теорему 3.4.2.
Обобщить алгоритм 3.4.3 так, чтобы с его помощью можно было разложить на множители произвольную прямоугольную матрицу.
Написать подробно вариант алгоритма блочного исключения, набросок которого дан в § 3.4.7.
Замечания и литература к § 3.4
Фортран-программа для решения линейных систем общего вида может быть найдена в Linpack (Часть 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.
Предположение, что |й(^| ^ timaxl^l, когда используется полный выбор ведущего элемента, было доказано для вещественного случая при п = 4 в работе
Cryer С. W. (1968). “Pivot Size in Gaussian Elimination”, Numer. Math. 12, 3 3 5-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 А. М., and Reid J. К. (1986). Direct Methods for Sparse Matrice. Oxford University Press..
Связь между малыми ведущими элементами и близостью к вырожденности рассматривается в работе
Chan Т. F. (1985). “On the Existence and Computation of LU Factorizations with small pivots”, Math. Comp. 42, 53 5-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.
Точно так же, как существует шесть «условных» вариантов скалярного метода исключения
Гаусса, существует и шесть условных описаний блочного исключения Гаусса. Для ознакомления с этими процедурами и их реализациями см.
Dayde М. J. and Duff I. S. (1988). “Use of Level-3 BLAS in LU Factorization on the Cray-2, the ETA-1 OP, and the IBM 3090-200/VF”, Report CSS-229, Computer Science and Systems Divison, Harwell Laboratory, Oxon 0X11 ORA, England.
Дополнительные практические и теоретические подробности о блочном LU-разложении могут быть найдены в
Caliban D. А. (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”, Int’l J. Supercomputer Applic. 2, 12-48.
3.5. Уточнение и оценивание точности
Пусть для решения п х п системы Ах = b используется метод исключения Гаусса с частичным выбором ведущего элемента. Предположим, применяется /-разрядная плавающая арифметика с основанием р. Уравнение (3.4.4) гарантирует, что если фактор роста умеренный, то вычисленное решение х удовлетворяет соотношению
(Л + £)х = b, HEL ^ ulMIL, и = р^.(3.5.1)
В этом разделе мы исследуем практические разветвления этого результата. Сначала сделаем акцент на различии, которое следует делать между величиной невязки и точностью. Потом продолжим обсуждение масштабирования, итерационного уточнения и оценки обусловленности.
Прежде чем начать, мы сделаем два замечания по поводу обозначений. Всюду используется бесконечная норма, так как это удобно для анализа ошибок округления и для практической оценки ошибки. Кроме того, где бы в этом разделе мы ни употребили выражение «исключение Гаусса», мы всегда будем иметь в виду исключение Гаусса с некоторой устойчивой стратегией выбора ведущего элемента, такой, как частичный выбор.
Большая невязка дает плохую точность
Невязкой вычисленного решения х для линейной системы Ах = b является вектор b — Ах. Маленькая невязка обозначает, что вектор Ай эффективно «приближает» правую часть Ь. Из соотношения (3.5.1) мы имеем ||Z> — Л^Н^ « и||А||^П^Пи поэтому получаем
Вывод 1. Метод исключения Гаусса дает решение х с малой относительной невязкой.
Из маленьких невязок не следует высокой точности. Сопоставляя (3.5.1) с теоремой 2.7.1, мы видим, что
——% их Л .3.5.2)
Это подтверждает второй ведущий принцип.
Вывод 2. Если машинная точность и обусловленность удовлетворяют соотношениям u« 10~d и хТ\А)^ 10*, тогда исключение Гаусса дает решение с d—q правильными десятичными знаками.
Для иллюстрации выводов 1 и 2 рассмотрим систему
0.986 0.5790.409 0.2370.986 0.5790.409 0.237*1*2-*1*2-0.2350.1070.2350.107
0.986 0.579
0.409 0.237
0.986 0.579
0.409 0.237
*1
*2-
*1
*2-
0.235
0.107
0.235
0.107
в которой х^ (Л) « 700 и х = (2 — 3)т. Вот что мы находим для различных вариантов машинной точности:
0
t
*1
*2
II х ||°° 1М=о
|| 6 - Ах ||оо 1И1|оо|И|со
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•10~3
2.1 • 10"6
10
6
2.00025
-3.00094
3•10"4
4.2 • 10~7
Можно ли признать вычисленное решение х удовлетворительным - зависит от требований, заложенных в исходной задаче. Во многих приложениях точность не так важна, но важна малость невязки. В этом случае бывает достаточно вычислить х при помощи исключения Гаусса. С другой стороны, если наличие правильных цифр в х спорно, то ситуация является не такой простой, и в оставшейся части мы ее, безусловно, обсудим.
Масштабирование
Пусть p-это основание системы счисления; обозначим через Вг и D2 следующие диагональные матрицы
Dx =diag(pri...pr^),
D2 = diag(pci...pc").
Решение n x n линейной системы Ax = b может быть найдено решением масштабированной системы фу1 AD2)y = D^1 b исключением Гаусса с учетом х = D2y. Масштабирование матрицы А и векторов b и у требует только О (и2) флопов и может быть выполнено без ошибок округления. Отметим, что матрицы масштабирования Dr и D2 неизвестны.
Из вывода 2 следует, что если х и ^-это вычисленные аналоги векторов х и у, то
:== ux^ фх ADA.(3.5.3)
Поэтому, если xaф^ TAD2) может быть сделано значительно меньшим, чем х^А), то можно ожидать соответственно более точного решения х, при условии, что ошибки оцениваются в £>2-норме, которая определена следующим образом: П^П^ = = \ф2 ^П^ . Это и есть цель масштабирования. Заметим, что оно сопряжено с двумя вопросами: обусловленность масштабированной задачи и оценка для ошибки в £>2-норме.
Поиск точного минимума функции Хрф^АО^ для произвольных диагональных матриц Dt и различных p-это интересная, но очень трудная математическая задача. Различные результаты, полученные в этом направлении, не пригодны для практики. Однако это не слишком обескураживает, когда мы вспоминаем, что оценка (3.5.3) является эвристической, и не имеет смысла искать точный минимум этой эвристиче-
ской оценки. То, что мы ищем,-это быстрый приближенный метод для улучшения качества вычисленного решения.
Среди множества подходов одним является простое строчное масштабирование. В этой схеме матрица D2 будет единичной, а матрица DY выбирается так, что каждая строка в матрице Dy1 А имеет приблизительно одинаковую оо-норму. Строчное масштабирование уменьшает вероятность сложения очень маленького числа с очень большим числом в ходе исключения, что в результате значительно уменьшило бы точность.
Несколько более сложным, чем простое строчное масштабирование, является строчно-столбцовое уравновешивание. В данном случае наша цель - выбрать матрицы Dv и D2 так, чтобы оо-норма каждой строки и столбца матрицы DyYAD2 принадлежала интервалу [1/р, 1], где p-это основание плавающей системы счисления. Среди работ в этом направлении смотри McKeeman (1962).
Не будет излишним подчеркнуть, что ни простое строчное масштабирование, ни строчно-столбцовое уравновешивание не могут «решить» задачу масштабирования. Действительно, каждый из этих методов может дать худший вектор х, чем какой-либо другой, не использующий масштабирование. Развитие этого взгляда подробно обсуждается в работе Forsythe and Moler (SLE, гл. 11). Основная рекомендация состоит в том, что масштабирование уравнений и неизвестных должно производиться на уровне исходной задачи. Обычная стратегия масштабирования ненадежна. Лучше масштабировать (если вообще масштабировать) базис, по которому исходная задача задает значение каждого элемента а-. При этом можно принять во внимание единицы измерения и ошибки данных.
Пример 3.5.1 (Forsythe and Moler (SLE стр. 34, 40)). Если система
10 100000 хх10 100000 хх100000100000
10 100000 хх
10 100000 хх
100000
100000
и эквивалентная строчно-масштабированная задача
0.0001 1110.0001 111
0.0001 1
11
0.0001 1
11
Р = 10 и t = 3, тогда вычисляются, соответственно, 1.00). Заметим, что точным решением являетсяР = 10 и t = 3, тогда вычисляются, соответственно, 1.00). Заметим, что точным решением являетсярешаются в арифметике с основанием решения х = (0.00, 1.00) и х = (1.00, х = (1.0001 ... , 0.9999 ...).
Р = 10 и t = 3, тогда вычисляются, соответственно, 1.00). Заметим, что точным решением является
Р = 10 и t = 3, тогда вычисляются, соответственно, 1.00). Заметим, что точным решением является
Итерационное уточнение
Пусть система Ах = b решена с использованием разложения с частичным выбором РА = LU и пусть мы хотим улучшить точность вычисленного решения х. Если мы выполним алгоритм
г = b — Ах
Решить Ly = Рг,
Решить Uz = у,(3.5.4)
то в точной арифметике получим Лхиен, = Ах + Az = (b — г) + г = Ь. К несчастью, непосредственное выполнение этих формул в плавающей арифметике приводит к вектору xnew, который не более точен, чем х. Этого можно ожидать, так как г = f 1 (Z> — Ах) имеет мало, если вообще имеет, правильных значащих цифр. (Вспомним Вывод 1.) Следовательно, z = JHA~Yr) « А-1. «Погрешность « погрешность»
является очень плохой поправкой с точки зрения улучшения точности ^. Тем не менее Skeel (1980) провел анализ ошибок, который показывает, когда алгоритм (3.5.4) дает улучшенное решение x„evv с точки зрения обратного анализа ошибок. В частности, если величина
Г = (II ИМ"1! IIJ(max(|^||x|),/min(H^
не слишком велика, то алгоритм (3.5.4) вычисляет вектор x„evv, такой, что (А + Е) xnew = b при очень малой матрице Е. Конечно, если использовать исключение Гаусса с частичным выбором, то вычисленное решение уже разрешает систему, близкую к исходной. Однако этого может не быть в случае применения стратегий выбора, которые используются для сохранения разреженности. В этом случае шаг итерационного уточнения с фиксированной точностью (3.5.4) может быть очень дешевым и оправданным. См. Arioly, Demmel и Duff (1988). ,
Для того чтобы алгоритм (3.5.4) получил более точный вектор Д необходимо вычислить невязку b-А^ в плавающей арифметике с повышенной точностью. Обычно это означает, что если для вычисления разложения РА = LU и векторов х, у использовалась r-разрядная арифметика, то для вычисления невязки Ь-А^ используется 2г-разрядная арифметика, т. е. двойная точность. Процесс может быть итерационным. В частности, если мы вычислим разложение РА = LU и положим начальный вектор х = 0, то мы повторяем следующий процесс:
г = b — Ах (Двойная точность)
Решить Ly = Рг относительно у.
Решить Uz = у относительно z. (3.5.5) х = х + z.
Мы назовем этот процесс итерационным уточнением со смешанной точностью. Исходная матрица А должна быть использована в вычислениях вектора г с двойной точностью. Основной результат работы алгоритма (3.5.5) содержится в следующем выводе.
Вывод 3. Если машинная точность и и обусловленность удовлетворяют соотношениям и = 10-d и х^ (Л) % 109, то через к выполнений алгоритма (3.5.5) вектор х имеет приблизительно min(d, k^d—q^ правильных знаков.
Грубо говоря, если их^Л)^ 1, то с помощью итерационного уточнения можно в конечном счете получить решение, которое является предельно точным (для простой точности). Заметим, что этот процесс относительно дешевый. Каждое уточнение стоит О (л2) флопов, для сравнения: исходный вклад разложения РА = LU составляет О (л3) флопов. Разумеется, результат не может быть улучшен, если матрица А достаточно плохо обусловлена относительно точности ЭВМ.
Основной недостаток итерационного уточнения со смешанной точностью состоит в том, что его выполнение в некоторой степени является машинно-зависимым. Это осложняет его использование в программном обеспечении, предназначенном для широкого распространения. Необходимость хранить исходную копию матрицы А является вторым недостатком, связанным с этим методом.
С другой стороны, итерационное уточнение со смешанной точностью обычно очень легко реализовать на данной ЭВМ, которая имеет возможность накапливать скалярные произведения, т. е. возможность для вычисления скалярных произведений для строк матрицы А и вектора х с двойной точностью. В условиях вычислений с короткой мантиссой наличие программы итерационного уточнения может существенно расширить класс разрешимых задач Ах = Ь.
Пример 3.5.2. Если алгоритм (3.5.5) применяется к системе
0.986 0.5790.409 0.2370.986 0.5790.409 0.2370.2350.1070.2350.107
0.986 0.579
0.409 0.237
0.986 0.579
0.409 0.237
0.235
0.107
0.235
0.107
причем Р = 10 и t = 3, то итерационное уточнение дает следующую последовательность вычисленных решений
2.113.172.113.171.99
2.11
3.17
2.11
3.17
- 2.99
Точное решение: х = (2, - 3).
Пример 3.5.3. Если алгоритм 3.5.1 применяется к матрице Вп, заданной соотношением (2.7.9), то у = (2й”1, 2"’2,..., 2, 1)ги Ily^HI^/L-
Оценка обусловленности
Предположим, что система Ах = b решена посредством разложения РА = LU и мы хотим установить количество правильных цифр в вычисленном решении х. Как следует из вывода 2, чтобы это сделать, нам надо оценить обусловленность х;0ДЛ) = || Л ||;ас|| Л ~1 ||;0С. Вычисление НЛП^ не вызывает проблем, когда мы просто используем формулу
IMIL = max |ау|.
1 ^ I^ И j = 1
Сложной задачей является только вычисление множителя || Л ~1Н^. Понятно, что мы можем оценить эту величину при помощи НхН^, где X = [хр ..., х„] и ^ является вычисленным решением системы Ах; = et. (См. § 3.4.9.) Сложности применения этого подхода вызваны его стоимостью: вычисление х^ = ||Л Ц^ П^П^ стоит почти в три раза дороже, чем вычисление х.
Главная проблема оценки обусловленности состоит в том, чтобы оценить обусловленность за О (л2) флопов, допуская наличие разложения РА = LU или других разложений, представленных в предыдущих главах. Подход, описанный в работе Forsythe и Moler (SLE, стр. 51), основан на итерационном уточнении и формуле и х^Л) « П^Поо/Н^Поо, гДе вектор z является первой поправкой к вектору х в алгоритме (3.5.5). Общее время такого способа оценки обусловленности есть О (л2), что получается из-за ошибок итерационного уточнения, т. е. машинно-зависимой величины.
Cline, Moler, Stewart и Wilkinson (1979) предложили очень удачный подход к задаче оценки обусловленности без этого недостатка. Он основан на использовании соотношения
Идея их способа оценки состоит в выборе вектора d таким, чтобы решение у являлось большим по норме, и потом положить
Успех этого метода зависит от того, как близко отношение П^Ноо/Н^Поо к своему максимальному значению ЦЛ-1!^.
Рассмотрим случай, когда матрица А = Т является верхней треугольной. Отношение между векторами d и у полностью описывается следующей столбцовой
версией алгоритма обратной подстановки
р(1:л) = 0
for к = п: — 1:1
Выбрать d^(3.5.6)
у^Ж», к) р(Г.к- 1)=РЖ~ 1) + у(к)Жк~ 1, к)
end
Обычно этот алгоритм используется для решения заданной треугольной системы Ту = d. Однако сейчас мы свободны выбирать правую часть d, исходя из того «ограничения», что вектор у велик относительно d.
Один способ поддержать рост в векторе у-это выбирать элементы d^ из множества {— 1, + 1} так, чтобы максимизировать у (к). Если р (к) ^ 0, то положим d(k) = — 1. Если р(к) < 0, то положим d(k) = + 1. Другими словами, алгоритм (3.5.6) работает с элементами d(к) = — sign (р (/с)). Так как d является вектором вида </(1:и) = (±1,±1)г, мы получаем оценку хф = || ГН^ ПуП^.
Более надежный способ оценки получается, если выбирать d^E^ — 1, +1} так, чтобы поддержать рост сразу и в у (ку и в изменении текущей суммы, заданной соотношением р(1:/с—1, к) + Т(1:к — 1, к)у(к\ В частности, на к-м шаге мы вычисляем
У^Г =(1 -Р(ЖЖ к),
sW+ = ЫкГи\\р(3-.к- D + Жк- I, к^кП^
у№" = (-1 -р^/ж, к^
з(к\ЖУ(кГ \ + \\рЖ ~ + Ж-к - 1, ЖкЖ
Потом полагаем у(к^ равным у(к) +, если s(/c| + ^ 5(к| ~, и у(к)~ в противном случае. Это дает
Алгоритм 3.5.1 (Метод оценки обусловленности). Пусть ТеКпхп является невырожденной верхней треугольной матрицей. Данный алгоритм вычисляет оо-норму вектора у и скаляр х, такие, что ПТуП^ « МНТ-1!^ и х^х^Т)
р (1: п) = О
for к = п: — 1:1
УЖ ЖрМШ к^
УЖ = Ж-р(кЖ(к, к)
р(кГ = рЖ- 1)+ Жк- 1, к)уЖ
рЖ = р(1:к — 1)+ Жк - 1, ЖкГ
yW = y(kV; р(1:к- l^=p(kV
У^ = У (к)"; р(1:к — I) = р (к) end
end
х = ||у||00||Т||=с
Алгоритм неоднократно использует обычную обратную подстановку.
Сейчас мы в состоянии описать процедуру оценки обусловленности квадратной невырожденной матрицы Л, для которой известно разложение РА = LU;
Применим нижнюю треугольную версию алгоритма 3.5.1 к матрице UT и получим большое по норме решение системы Щ = d.
Решим треугольные системы LTr = у, Lw = Рг и Uz = w.
^IMIIJIzIL/ihc
Отметим, что П^П^ ^ П^-1 Н^НгИ^ . Метод основан на нескольких эвристических соображениях. Первое, если матрица А является плохо обусловленной и РА = LU, то в этом случае обычно и матрица U является соответственно плохо обусловленной. Нижний треугольник L достаточно хорошо обусловлен. Таким образом, более целесообразно оценить обусловленность матрицы U, чем матрицы L. Вектор г, поскольку он разрешает систему ATPTr = d, сильно смещен в направлении левых сингулярных векторов, соответствующих Qmin (Л). Правые части, обладающие таким свойством, приводят к большим решениям задачи Az = г.
Практика показывает, что метод оценки обусловленности, который мы описали, дает хорошие приближенные оценки реальных чисел обусловленности. См. Linpack.
Задачи
Показать на примере, что существует более одного способа для уравновешивания матрицы.
Применяя арифметику с параметрами 0 = 10, t = 2, решить систему
7733И 15
7
7
3
3
5 7
при помощи исключения Гаусса с частичным выбором. Выполнить один шаг итерационного уточнения, применяя арифметику при Г = 4, вычислить невязку. (Не забудьте округлить вычисленную невязку до двух знаков.)
Пусть Р^А 3- Е) = L 0, где Р является перестановочной матрицей, L- нижней треугольной с элементами |^.|1 и U-верхней треугольной. Показать, что
ае^СО >,
где ц = тт|мп|. Сделайте вывод, что если при применении исключения Гаусса с частичным выбором в матрице А встречается малый ведущий элемент, то матрица А является плохо обусловленной. Обратное неверно. (Например А = Вп.)
(Kahan 1966). Система Ах = Ь, где
2
1
-1
10 -1°
1
10-1°
, b =
2(1 + 10 ~10) - 10 “10
1
10 "10
10-1°
10 -‘°
А =
имеет решение х = (10 ”10, — 1, 1). (а) Показать, что если (А 4- £)у = b и |£| 10 8 |^11, то l Y" 3’1 ^ Ю "7 |х|. То есть относительно малые изменения в элементах матрицы А не приводят к большим изменениям в векторе х, хотя х^А) = 10 10. (б) Обозначим D = diag (10 ~5, 10 -5, 10 5). Показать, что x^DAD) ^ 5. (с) Объяснить, что это означает в терминах теоремы 2.7.3.
Рассмотрите матрицу:
10 м - м
MeR.MeR.0 1-Мм
MeR.
MeR.
0 01о
0 001
Какая оценка числа х00(7) будет получена, если применяется алгоритм (3.5.6) с элементами d^k) = — sign(p(&))? Какую оценку дает алгоритм 3.5.1? Каково действительное число х00(7)?
Замечания и литература к § 3.5
Следующие работы имеют отношение к задачам масштабирования системы Ах = b
Bauer F. L. (1963). “Optimally Scaled Matrices”, Numer.Math, 5, 73-87.
Businger P.A. (1968). “Matrices Which Can be Optimally Scaled”, Numer.Math. 12, 346-48.
Fenner T. and Loizou G. (1974). “Some New Bounds on the Condition Numbers of Optimally Scaled Matrices”, J. ACM 21, 514-24.
Golub G. H. and Varah J.. M. (1974). “On a Characterization of the Best L2-Scaling of a Matrix”, SIAM J. Num.Ana. 11, 472-79.•
McCarthy C. and Strang G. (1973). “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). “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.
Moler С. B. (1967). “Iterative Refinement in Floating Point”, J. ACM 14, 316-71.
Skeel R.D. (1980). “Iterative Refinement Implies Numerical Stability for Gaussian Elimination”, Math. Comp. 35, 817-832.
Stewart G. W. (1981). “In the Imolicit Deflation of Nearly Singular Systems of Linear Equations”, SIAM J. Sci. and Stat. Comp. 2, 136-140.
Метод оценки обусловленности, который мы описали, дается в работе
Cline А. К., Moler С. В., 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). Другие ссылки связанные с задачей оценки обусловленности содержатся в работах
BroydenC. G. (1973). “Some Condition Number Bounds for the Gaussian Elimination Process”, J. Inst. Math. Applic. 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. Hennart, Lecture Notes in Mathematics no. 909, Springer-Verlag, New York.
Cline A. K. and RewR. 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. (1984). “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.
Lemeire F. (1973). “Bounds for Condition Numbers of Triangular Value of a Matrix”, Lin. Alg. and Its Applic. 11, 1-2.
O’Leary D. P. (1980). “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 IM-1H^”, Lin. Alg. and Its Applic. 14, 211-17.
Глава 4
Линейные системы специального вида
Основной принцип численного анализа состоит в том, что при решении задач всякий раз надо использовать их специфику. Можно надеяться, что в численных методах линейной алгебры алгоритмы решения задач с матрицами общего вида приспособлены к использованию таких свойств как симметричность, определенность, разреженность. Это и будет центральной темой данной главы, в которой наша главная цель - предложить специальные алгоритмы для вычисления специальных вариантов Ы7-разложения.
Мы начнем с установления зависимости между множителями L и U, когда матрица А является симметричной. Это достигается исследованием LDM^разложения в § 4.1. Потом мы займемся важным случаем, когда матрица А является одновременно симметричной и положительно определенной, и получим в § 4.2 устойчивое разложение Холецкого. В этом разделе мы также исследуем несимметричные положительно определенные системы. В § 4.3 обсуждается ленточный вариант исключения Гаусса и другие методы разложения. Потом будет исследована интересная ситуация, когда А симметричная, но неопределенная. Наша трактовка этой задачи в § 4.4 выявляет двойственность стоящей перед исследователем проблемы выбора ведущего элемента. Мы предпочитаем выбирать ведущий элемент так, чтобы добиться устойчивости, и не обращаем внимания, что при этом может быть нарушена специфика. К счастью, в задаче с симметричной неопределенной матрицей имеется удачный способ разрешения этого конфликта.
Любые блочные ленточные матрицы являются также просто ленточными, и поэтому к ним могут применяться методы из § 4.3. Однако бывают ситуации, когда такой подход неприемлем. Для иллюстрации мы рассмотрим в § 4.5 случай блочной трехдиагональной системы.
В последних параграфах мы исследуем несколько очень интересных О (и2) алгоритмов, которые могут быть использованы для решения систем Вандермонда и тёплицевых систем.
Разложения типа LDMT и LDLT
Мы хотим создать метод, использующий специфику при решении задачи Ах = Ь. Для этого установим возможность Ы7-разложения матрицы А в виде произведения трех матриц LDMr, где D- диагональная, a L и М- нижние унитреугольные. Когда такое разложение получено, решение Ах = b может быть найдено за О (и2) флопов посредством решения систем Ly = b (прямая подстановка), Dz = у и Мтх = z (обратная подстановка). Исследование ьЬмг-разложения позволяет для симметричного случая установить следующий факт: если А = Ат, то L = М и работа, связанная с разложением, составляет половину от того, что требуется для исключения Гаусса. Проблема выбора ведущего элемента поднимается в последующих разделах.
ЕВМт-разложение
Наш первый результат связывает ЕВМг-разложение и Ы7-разложение.
Теорема 4.1.1. Если все ведущие главные подматрицы AeRn х п невырожденны, тогда существуют единственные нижние унитреуголъные матрицы L и М, и единственная диагональная матрица D = diag (dv ..., dn\ такие, что А = LDMT.
Доказательство. Из теоремы 3.2.1 мы знаем, что для матрицы А существует Ы/-разложение А = LU. Пусть D = diag (dv ..., dn\ где di = uii, при i = 1 :п. Заметим, что матрица D является невырожденной, а матрица МТ = D"1U- верхней унитреугольной. Поэтому А = LU = LDtD^U) = LDMT. Единственность следует из единственности И7-разложения, как было показано в теореме 3.2.1. □
Доказательство показывает, что ЬВМт-разложение может быть найдено при помощи исключения Гаусса, вычисляющего А = LU, с последующим определением D и М из уравнения U = DMT. Тем не менее может быть установлен интересный альтернативный алгоритм для непосредственного вычисления L, D и М.
Допустим, что мы знаем первые j-1 столбцов матрицы L, диагональные элементы dv ..., dj_ v матрицы D и первые j- 1 строк матрицы М для некоторого у, 1 < j < п. Чтобы получить способ вычисления Е(у+1:и, у), М(у, 1:у— 1) и d? приравняем у-е столбцы в уравнении А = LDMT. В частности,
Л(1:л,у) = Lr,(4.1.1)
гдеv = DMTer
«Верхняя» половина в соотношении (4.1.1) определяет г(1 :у) как решение известной нижней треугольной системы:
Ц1:у, 1 :у) г(1 :у) = Л (1 :у, у).
Когда мы знаем г, мы вычисляем.
^(Л = ^U),
mU- h = 1>(0М0, z = 1 :у — 1.
«Нижняя» половина формулы (4.1.1) дает уравнение
LU + 1:и, 1 :у)г(1 :Й = A(j + 1 :njL
которое может быть преобразовано для получения способа вычисления у-го столбца матрицы L:
Uj* l:n,j)v(j) = A(j + 1:п, j) - Uj + 1:и, 1J- l)r(l :J — 1).
Таким образом, матрица L(j + 1 :n, у) задает скалярную gaxpy-операцию, и в целом мы получаем алгоритм
for у = 1: п
Решить L(1 :j, 1 :» у (1:» = А (1 :j, J) для и(1:]).
for i = 1: j — 1
М(У, /) = У(/)М/)(4.1.2)
end
<йй = v(y) lu* \-.п,й = UU+ Х:п,Й-Ьи+ 1:л, VJ - l)v(l :j - \))/v(j)-
end
Как и в случае L (/-разложения, возможно замещение матрицы А на множители L, D и М. Если для нахождения вектора г (1:у) используется столбцовая версия прямого исключения, то мы получаем следующую процедуру:
Алгоритм 4.1.1. (LDMr). Если для матрицы AeRn х п выполнено L (/-разложение, то данный алгоритм вычисляет нижние унитреугольные матрицы L и М и диагональную матрицу D = diag (^, .... dn), такие, что А = LDMT. Элемент ац замещается на 1ц при i > у, на db если i = j, и на тц, если i < j.
{Решить L(1 :j, 1 :jM1:;) = А(1:/ у).}
v(l:y) = Л(1:у,у)
for к = 1 :j — 1
Лк + 1 :у) = Лк + 1 :у) - Лк) А (к + 1:/ к) end
{Вычислить M(j, 1 :у — 1) и запомнить в А (1 :j — 1, у).} for z = 1 :у — 1
AU, Л = у(0/^(А О
end
{Запомнить d(у) в A(j, у).}
AU>h = и (у)
{Вычислить L(y + 1 :и, у) и запомнить в А (у + 1 :п, у).} for к = 1 :у — 1
А (у + 1: л) = Л (у + 1: п, у) — v (к) А (у + 1: п, к) end
AU^l:n,j^ = AU^V.nJ^v^
end
Алгоритм содержит такой же объем работ, как и L(/-разложение, около 2и3/3 флопов.
Можно показать, что вычисленное решение х системы Ах = Ь, полученное посредством алгоритма 4.1.1 и методами решения треугольных систем из § 3.1, удовлетворяет возмущенной системе (А + Е)х = Ь, где
(4.1.3)(4.1.3)\Е\ ^ ли(3|Л| + 5|L||D||MT|) + O(u2)
(4.1.3)
(4.1.3)
и матрицы L, D и М-это вычисленные версии матриц L, D и М соответственно.
Как и в случае L (/-разложения, рассмотренного в предыдущей главе, верхняя оценка в формуле (4.1.3) дается без ограничений на выбор ведущего элемента. Следовательно, чтобы алгоритм 4.1.1 был практической процедурой, он должен быть модифицирован под вычисление разложения вида РА = LDMT, где Р- матрица перестановок, выбираемая таким образом, что элементы матрицы L удовлетворяют условию \1ц\ < 1. Детали этой модификации мы здесь не приводим, так как они могут быть получены непосредственно, наша же главная цель введения LDMr-pa3- ложения-это описать специальные методы для симметричных систем.
Пример 4.1.1.
5 635 63А =А =10 10 2020 25 4010 10 2020 25 4040 50 6140 50 611 0 02 1 03 4 1.1 0 02 1 03 4 1.10 0 0 0 5 0 0 0 1.10 0 0 0 5 0 0 0 1.1 1 20 1 00 0 1_1 1 20 1 00 0 1_
5 63
5 63
А =
А =
10 10 20
20 25 40
10 10 20
20 25 40
40 50 61
40 50 61
1 0 0
2 1 0
3 4 1.
1 0 0
2 1 0
3 4 1.
10 0 0 0 5 0 0 0 1.
10 0 0 0 5 0 0 0 1.
1 1 2
0 1 0
0 0 1_
1 1 2
0 1 0
0 0 1_
и в завершение алгоритм 4.1.1 замещает матрицу А следующий матрицей:
А =А =10 1 22 5 010 1 22 5 0
А =
А =
10 1 2
2 5 0
10 1 2
2 5 0
3 4 1
Симметрия и ЬВЬг-разложение
Если матрица А симметричная, то в ЬВМг-разложении имеется избыточная информация.
Теорема 4.1.2. Если представление А = LDMT есть LDMT-разложение невырожденной симметричной матрицы А, то L = М.
Доказательство. Матрица М-1АМ~Т = M^LD является одновременно и симметричной, и нижней треугольной и поэтому диагональна. Так как D невырожденна, то отсюда вытекает, что M-iL тоже диагональна. Но M-iL является нижней унитре- угольной, поэтому М~ГЬ = I. □
Учитывая этот результат, можно наполовину уменьшить работу алгоритма 4.1.1, когда он применяется к симметричной матрице. На j-м шаге нам уже известна строка М О. 1 V — 1), так как М = L и мы предполагаем знание первых j- 1 столбцов матрицы L. Вспомним, что на j-м шаге алгоритма (4.1.2) вектор и определяется уравнением и = DMTej. Так как М = L, отсюда видно, что
dWLQ, 1)
do- \)LO,j- 1)
Следовательно, вектор г(1 :j — 1) может быть получен простым масштабированием j-й строки матрицы L. Формула для j-й компоненты вектора г получается из у'-го уравнения системы Ь(ДО 1:./) v = А (1 :j, j)
dU^auj^-lq. \-.j-\^oo- 1),
и поэтому мы имеем
for j = 1: n
for i = 1: j — 1
v(0 = LU, i)d(i)
end'
vU) = AU-j)-LU 17- l)v(l V- 1)
dU) = ^Ц)
LU + \:n,j) =
UU + L.n,j)-LU + l:n, 17- l)r(17- ОУгО) end
С учетом замещения получаем
Алгоритм 4.1.2 (LDLr). Если матрица A gR" х п симметричная и для нее существует LLZ-разложение, то данный алгоритм вычисляет нижнюю унитреугольную матрицу L и диагональную матрицу D = diag (di* • • •, dn\ такие, что А = LDLT. Элементы ац замещаются на 1и, если i > j, и на dis если i = j.
for j = 1: n
{Вычислить V (1 \j).}
for i = 1 \j — 1
r(0 = AU, i)A(i, 0
t)U) = AU,j)-LU, l:;-!)^!:;-!)
{Запомнить dU) и вычислить L(j + V.n.jY^
AU. ft = ^0)
A (/ + 1: n, j) =
(Л0 + 1:«, ft- AU A- 1:и, 1:j - 1)v(l :y — l^/^O) end
Этот алгоритм требует и3/3 флопов, около половины количества флопов, требуемых для исключения Гаусса.
В следующем разделе мы покажем, что если матрица А одновременно и симметричная, и положительно определенная, то алгоритм 4.1.2 не только работает, но также чрезвычайно устойчив. Если матрица А симметричная, но не является положительно определенной, то, возможно, есть необходимость применять выбор ведущего элемента и использовать методы из § 4.4.
Пример 4.1.2.
10
20
20
45
30
80
—
1 0 0
2 1 0
10 0 0 5
0
0
1 2
0 1
3
4
30
80
171
3
4
1
0
0
1
0
0
1
и, если применять алгоритм 4.1.2, матрица А замещается матрицей
1021023320 30
10
2
10
2
3
3
5 80
4 1
Задачи
Показать, что если ЕОМт-разложение невырожденной матрицы существует, то оно единственно.
Модифицировать алгоритм 4.1.1 так, чтобы он вычислял разложение вида РА = LDMT, где L и М-нижние унитреугольные матрицы, D-диагональная матрица, а Р-матрица перестановок, выбираемая таким образом, что |/у|1.
Пусть симметричная п х «-матрица А = (оц) хранится в векторе с следующим образом: c = (alban,...)anbaMv..,an2v.^^ Переписать алгоритм 4.1.2 для матрицы А, хранимой таким способом. Упростить индексацию в пределах внутреннего цикла, насколько это возможно.
Переписать алгоритм 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.
См. также
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.
Положительно определенные системы
Матрица AeRnxn является положительно определенной, если хТАх > 0 для всех ненулевых векторов xeR". Положительно определенные системы составляют один из наиболее важных классов задач Ах = b со спецификой. Рассмотрим 2 х 2-сим- метричный случай. Если
«11 «12
-«21 «22-
является положительно определенной, то
х = (1, 0)г => хтАх = aY1 > 0,
х = (0, 1)г=>хгЛх = #22 > 0,
х = (1, 1)г =>хгЛх = #и + 2#12 + #22 > 0,
х = (1, — 1)г =>хтАх = #и — 2#12 + #22 > 0.
Последние два уравнения приводят к неравенству |#121 ^ («п + «22)/^- Из этих результатов мы видим, что наибольший элемент матрицы А лежит на диагонали и он положителен. Это верно и в общем случае. Положительно определенная матрица имеет «весомую» диагональ. Масса диагонали не столь заметна, как в случае с диагональным доминированием (ср. § 3.4.9), но она дает аналогичный эффект - устраняет необходимость выбора ведущего элемента.
Мы начнем с нескольких замечаний о свойстве положительной определенности и о том, что она влечет за собой в несимметричном случае при выборе ведущего элемента. Потом мы остановимся на эффективной реализации процедуры Холец- кого, которая может быть использована для надежного разложения симметричной положительно определенной матрицы А. Исследуются gaxpy-версия, версия с внешним произведением и блочная версия. Раздел заканчивается несколькими замечаниями о неотрицательно определенном случае.
Положительная определенность
Пусть матрица А е R" х п является положительно определенной. Очевидно, что положительно определенная матрица невырожденна, так как в противном случае нашелся бы ненулевой вектор х, такой, что хтАх = 0. Однако, как показывают следующие результаты, из положительности квадратичной формы хтАх вытекают гораздо более сильные свойства.
Теорема 4.2.1. Если матрица AeRnxn является положительно определенной и матрица XeR” х k имеет ранг к, то матрица В = ХТАХ eRk х к также положительно определена.
Доказательство. Если вектор zeR^ удовлетворяет условию 0 > zTBz = (Xz)1 A(Xz), то Xz = 0. Но так как X- матрица полного ранга, отсюда следует, что z = 0. □
Следствие 4.2.2. Если А-положительно определенная матрица, то все ее главные подматрицы положительно определенные. В частности, все диагональные элементы положительны.
Доказательство. Если reR^^TO целочисленный вектор, причем 1 < vY < ... < vk <
п, то X = 1п (:, у) является матрицей ранга к, составленной из единичных столбцов с индексами и^ ..., ик. Как следует из теоремы 4.2.1, матрица A (v, v) = XTAX является положительно определенной. □
Следствие 4.2.3. Если матрица А положительно определенная, то разложение А = LDMT существует и матрица D = diag(6/1, ..., dn^ имеет положительные диагональные элементы.
Доказательство. Из следствия 4.2.2 следует, что подматрицы Л(1:/с, 1:/с) невы- рожденны для к = \;щ и поэтому согласно теореме 4.1.1 разложение А = LDMT существует. Если мы применим теорему 4.2.1 при X = L~\ то матрица В = = DMTL~T = L~1AL~T является положительно определенной. Так как MTL"T-это верхняя унитреугольная матрица, а матрицы В и D имеют одинаковую диагональ, то эта диагональ должна быть положительна. □
Существует несколько типичных ситуаций, которые на практике вызывают положительную определенность матрицы:
Квадратичная форма является энергетической функцией, положительность которой гарантирована ее физическим смыслом.
Матрица А является крест-произведением ХТХ , где X имеет полный столбцовый ранг. (Положительная определенность следует из теоремы 4.2.1, если положить А = 1п.)
Обе матрицы А и Ат диагонально доминирующие и все аЙ положительны.
Доказательство того, что третье условие влечет положительную определенность, оставляем читателю.
Несимметричные положительно определенные системы
Простое существование ЕОМг-разложения не означает, что оно вычисляется удовлетворительно, потому что результирующие множители могут иметь неприемлемо большие элементы. Например, если 8 > 0, то матрица
8 т8 тА =— т 8А =— т 8108 01 т/е
8 т
8 т
А =
— т 8
А =
— т 8
— т/8 1 J L0 8 + т2Д_ _0 1 _
является положительно определенной. Но если т(г »1, то рекомендуется применять выбор ведущего элемента.
Следующая теорема подсказывает, когда можно ожидать роста элементов при ЕПМг-разложении положительно определенной матрицы.
Теорема 4.2.4. Пусть AeRn х п-положительно определенная матрица, и пусть Т = = (А + Ат^1 и S = (А — Ат)/2. Если А = LDMT, mo
IIILIIM^III^^dlTlh + HST-^lh).(4.2.1)
Доказательство. См. Golub и Van Loan (1979). □
Теорема подсказывает, когда без всякого риска можно не делать выбора ведущего элемента. Допустим, что вычисленные множители L, D и М удовлетворяют условию
|||L||D||M’|||f <C|||L||£)|Mr|||f,(4.2.2)
где с-константа умеренной величины. Как следует из формулы (4.2.1) и из анализа в § 3.3, если эти множители использовать для вычисления решения системы Ах = Ь,
(4.2.3)(4.2.4)Другими(4.2.3)(4.2.4)Другимито вычисленное решение ^ удовлетворяет системе (А + Е^^ = Ь, где П^Пк < u(3«|M||F + 5cn2(||T||2 + IIST^SIh)) + O(u2).
(4.2.3)
(4.2.4)
Другими
(4.2.3)
(4.2.4)
Другими
Легко показать, что ||Т||2 ^ 1И||2, и тогда следует, что если ysrt^ 1М||2
не слишком велико, то можно не делать выбор ведущего элемента.
словами, норма кососимметричной части 5 умеренна относительно обусловленности симметричной части Т. Иногда в приложениях бывает возможно оценить Q. Тривиальный случай, когда А симметрична, тогда Q = 0.
Симметричные положительно определенные системы
Когда мы применяем полученные выше результаты к симметричной положительно определенной системе, мы знаем, что разложение А = LDLT существует и, более того, оно устойчиво к вычислениям. Тем не менее в этом случае используется другое разложение.
Теорема 4.2.5 (Разложение Холецкого). Если матрица А е R" х п является симметричной положительно определенной, то существует единственная нижняя треугольная матрица Ge¥lnxn с положительными диагональными элементами, такая, что А = GGT.
Доказательство. Согласно теореме 4.1.2 существует нижняя унитреугольная матрица L и диагональная матрица D = diag^, ..., dnY такие, что А = LDLT. Так как элементы dk положительны, то матрица G = Lgiag(x/d\, ..., V^U является вещественной нижней треугольной с положительными диагональными элементами. Также выполняется соотношение А = GGT. Единственность следует из единственности ЬОЬт-разложения. □
Разложение А = GGT известно как разложение Холецкого, а матрицы G называются треугольниками Холецкого. Заметим, что если мы вычислили разложение Холецкого и решаем треугольные системы Gy = b и GTx = у, то b = Gy = G (GTx) = = (GGT)x = Ах.
Наше доказательство существования разложения Холецкого в теореме 4.2.5 конструктивно. Тем не менее более эффективные методы для вычисления треугольника Холецкого могут быть получены преобразованием уравнения А = GGT. Как мы покажем в следующих нескольких разделах, это может быть достигнуто различными способами.
Gaxpy-версия метода Холецкого
Сначала мы получим реализацию метода Холецкого, богатую операциями типа gaxpy. Если мы сравним j-e столбцы в уравнении А = GGT, то мы получим
Ak;h = t G(j, k)G^ к).
к = 1
Отсюда следует, что
G U- Л G (:, у) = А (:, у) - У СЦ. к) G(:,k) = v.(4.2.5)
к = 1
Если мы знаем (/ — 1) первых столбцов матрицы G, то может быть вычислен вектор и. Отсюда через сравнение компонент в формуле (4.2.5) следует, что GVj*.n,ft = = v(j\n)/y/v(J). Это и есть скалярная операция gaxpy, и поэтому мы получаем следующий метод, основанный на gaxpy-операции для вычисления разложения Холецкого:
for j = 1: п
i>UM = AU:n,j)
for к = 1 ;j — 1
г(У:п) = p(j:h) - G(j, k)G(J:n, к)
end
GU-n,h = vU-^/xMh
end
Вычисления можно организовать так, что G замещает нижние треугольные матрицы А.
Алгоритм 4.2.1 (Метод Холецкого: Gaxpy-версия). При данной симметричной положительно определенной матрице Л е R" х" следующий алгоритм вычисляет нижнюю треугольную матрицу GeRnxn, такую, что А = GGT. Для всех i^j GU, ft замещает A ft, ft.
for j = 1: n
if V > 1
A U-n- j> = A U-n, h- A U:n, 1 :j - 1) A (j. 1 "J - 1)T
end
A (J:n, j) = A (j: n, Мх/АУ. f)
end
Алгоритм требует и3/3 флопов.
Пример 4.2.1. Матрица
2 -2
-2 5
является положительно определенной.
Метод Холецкого с внешним произведением
Альтернативная процедура Холецкого, основанная на модификации с внешним произведением, может быть получена из следующего разбиения:
"Р ^/Р' _0"Р ^/Р' _0(4.2.6)(4.2.6)л ут1ГР 0 1 о
"Р ^/Р' _0
"Р ^/Р' _0
(4.2.6)
(4.2.6)
_ v В __г/Р 1п _ ! _ _0 В — ггт/а
Здесь Р = ^/а" и мы знаем, что а > 0, потому что А положительно определена. Заметим, что В — ггт/а тоже положительно определена, потому что она является главной подматрицей матрицы ХТАХ, где
X =X =1О1О— ит/а— ит/а
X =
X =
1
О
1
О
— ит/а
— ит/а
Таким образом, если мы имеем разложение Холецкого GyGi = В — vvT/а, то из формулы (4.2.6) следует, что А = GGT, где
С = Г Р ° ].
Далее наша цель - многократно выполнить разбиение (4.2.6) до предельно маленьких подматриц, почти так же, как в /cyz-алгоритме исключения Гаусса. Если мы замещаем нижнюю треугольную часть матрицы А на матрицу G, то получается
Алгоритм 4.2.2 (Метод Холецкого: версия с внешним произведением). Дана симметричная положительно определенная матрица Л gR” х ”; следующий алгоритм вычисляет нижнюю треугольную матрицу GgR"*", такую, что А = GGT. Для всех i^j G (/, у) замещает А (i, у).
for к = 1: п
А (к, к) = УЛ (к, к)
А (к + 1: и, к) = А (к + 1: и, к)/А (к, к)
for j = к + 1: п
A(j\n,j) = A(j :п,^ - A(j:n, ЦА<Ь ^) end.
end
Алгоритм требует п3/3 флопов. Заметим, что /-цикл вычисляет нижнюю треугольную часть модификации с внешним произведением
А (к + 1: л, к + 1: п) = А (к + 1: п, к + 1: п) — А (к + 1 : п, k^A^k-V 1:п, к)Т.
Возвращаясь к нашим рассуждениям в § 1.4.8 о сравнении gaxpy-версии и модификации с внешним произведением, можно легко показать, что алгоритм 4.2.1 осуществляет в два раза меньший векторный обмен, чем алгоритм 4.2.2.
Блочный метод Холецкого со скалярным произведением
Пусть A g R"х п - симметричная положительно определенная матрица. Будем рассматривать матрицу А = (Аи) и ее множители Холецкого G = Gtj как блочные N х TV-матрицы с квадратными диагональными блоками. Приравнивая ЦлУе блоки из уравнения А = GG1 при i j, мы получаем, что ALj = ^7= t GikGjk. Обозначив
S =GikGjk,
к = 1
мы видим, что GjjGjj = S, если i = у, и GuGjj = S, если i > у. При правильном упорядочивании эти уравнения могут быть использованы для вычисления всех матриц G^.
Алгоритм 4.2.3 (Метод Холецкого: блочная версия со скалярным произведением). Дана симметричная положительно определенная матрица A gR" х п; следующий алгоритм вычисляет нижнюю треугольную матрицу CgR"^, такую, что A = GGT. Нижний треугольник матрицы А замещается на нижнюю треугольную часть матрицы G. Матрица А рассматривается как блочная N х A-матрица с квадратными диагональными блоками.
for j = 1: N for i =j;N
S = Ai} - \ GikGjk к - 1 if i = J
Вычислить разложение Холецкого S = GjjGjj.
else
Решить GtjGjj = S относительно Сц. end
Выполнить замещение Atj на Gir end end
Весь процесс включает и3/3 флопов, как и другие процедуры Холецкого, которые мы изучали. Процедура богата матричными умножениями, получаемыми при соответствующем блочном разбиении матрицы А. Например, если п = rN и каждая Аи-это г х r-матрица, тогда доля операций 3-го уровня аппроксимируется выражением 1 - (!/№)•
Алгоритм 4.2.3 не полон в том смысле, что мы не уточнили, как выполняется произведение матриц GikGjk или как вычисляется г х r-разложение Холецкого S = GjjGjj. Эти важные детали должны быть тщательно проработаны для того, чтобы добиться хороших характеристик.
Другая блочная процедура может быть получена из gaxpy-алгоритма Холецкого. Через г шагов алгоритма 4.2.1 нам известны матрицы 6неКгхг и 621 е R(” _ r) х г в разложении
^11 ^12_^21 ^22-^11 ^12_^21 ^22-^и О1^21 In^и О1^21 InIr 0 Glt ОО L^21 k-r.Ir 0 Glt ОО L^21 k-r.
^11 ^12_^21 ^22-
^11 ^12_^21 ^22-
^и О1^21 In
^и О1^21 In
Ir 0 Glt О
О L^21 k-r.
Ir 0 Glt О
О L^21 k-r.
После г шагов gaxpy-версии Холецкого мы преобразуем уже не матрицу А, а редуцированную матрицу А = Л22 — G1YGXx, которую получили явно с учетом симметрии. Продолжая этот подход, мы получим блочный алгоритм Холецкого, к-й шаг которого содержит г шагов gaxpy-версии Холецкого для матрицы порядка п — (к — 1)г, следовательно, вычисления 3-го уровня имеют порядок п — кг. Вклад операций 3-го уровня аппроксимируется соотношением 1 — 3/(2 А), если п « rN.
Устойчивость процесса Холецкого
Мы знаем, что в точной арифметике для симметричной положительно определенной матрицы существует разложение Холецкого. И, наоборот, если процесс Холецкого может быть реализован со строго положительными квадратными корнями, значит, матрица А положительно определена. Таким образом, чтобы выяснить, является ли матрица А положительно определенной, мы просто пытаемся вычислить ее разложение Холецкого, используя некоторые из методов, приведенных выше.
В условиях ошибок округления ситуация становится более интересной. Численная устойчивость алгоритма Холецкого следует из неравенства
9 ц < Е 9л = а» ■к = 1
Оно показывает, что элементы треугольника Холецкого хорошо ограничены. Аналогичный вывод может быть получен из уравнения ||6||2 = 1М||2.
Ошибки округления в разложении Холецкого были широко исследованы в классической работе Уилкинсона (1968). Используя результаты этой работы, можно показать, что вычисленное решение х системы Ах = Ь, полученное некоторой из наших процедур Холецкого, является решением возмущенной системы (А + £) х = Ь,
где ||Е||2 ^ с„и||Л ||2 и ^„-маленькая константа, зависящая от п. Более того, Уилкинсон показал, что если ^„их2(Л)< 1, где ^„-другая маленькая константа, тогда процесс Холецкого может быть выполнен, т. е. не возникает квадратных корней из отрицательных чисел.
Пример. 4.2.2. Если алгоритм 4.2.2 применяется к положительно определенной матрице
100
15
0.01
15
2.3
0.01
0.01
0.01
1.00
А =
и Р = 10, t = 2, причем используется приближенная арифметика, тогда §и = 10, д1х = 1.5, §31 = 0.001 и §22 = 000. Алгоритм обрывается при попытке вычислить §32.
Неотрицательно определенные матрицы
Мы говорим, что матрица A будет неотрицательно определенной, если хТАх ^ 0 для любого вектора х. Симметричные неотрицательно определенные матрицы (sps) представляют большой интерес, и мы кратко обсудим некоторые преобразования типа Холецкого, которые могут быть использованы для решения различных л/м-задач. Вначале необходимо получить результаты о свойствах диагональных элементов ^-матрицы.
Теорема 4.2.6. Если матрица А е R"х п является симметричной неотрицательно определенной, тогда
(4.2.7)(4.2.8)(4.2.9)(4.2.10)(4.2.7)(4.2.8)(4.2.9)(4.2.10)I ^i j I^и 4* «и У^ >
(4.2.7)
(4.2.8)
(4.2.9)
(4.2.10)
(4.2.7)
(4.2.8)
(4.2.9)
(4.2.10)
max|«l7| = max | аЙ |,
au = 0^>A(i, :) = 0, А(:, z) = 0.
Доказательство. Если вектор х = е{ + е^ тогда 0 ^ хТАх = ай + а^ + 2^., если же х = et — е? то получаем 0 ^ хтАх = аи + а- — 2^. Неравенство (4.2.7) следует из этих двух результатов. Равенство (4.2.9) очевидно следует из неравенства (4.2.7).
Для доказательства неравенства (4.2.8) допустим без ограничения общности, что i = 1 и j = 2, и рассмотрим неравенство
аи anаи an_1J L«2i аиА LL_1J L«2i аиА LL= а^х1 + 2я12х + а21.= а^х1 + 2я12х + а21.
аи an
аи an
_1J L«2i аиА LL
_1J L«2i аиА LL
= а^х1 + 2я12х + а21.
= а^х1 + 2я12х + а21.
которое справедливо, поскольку матрица Л (1:2, 1:2) является неотрицательно определенной. Чтобы это квадратное уравнение относительно х удовлетворяло неравенству, необходимо, чтобы дискриминант 4«f2 — 4^ ^22 был отрицательным. Справедливость (4.2.10) следует из (4.2.8). □
Рассмотрим, что произойдет, если метод Холецкого с внешним произведением применить к ^-матрице. Если нам встретится нулевой элемент А (к, к), тогда из (4.2.10) следует, что элементы А (к: п, к) нулевые, и «ничего не надо делать», поэтому мы получаем алгоритм
for к = 1: п
ИА(к, Ц>^
А (к, к) = V^^k. кУ,
А(к + \т, к) = А(к + 1:п, ку А (к, к)
for j = к + 1: п
AU'n,j) = AU-n,j) - А^:п, к)AU, к)
end end end
Таким образом, простое изменение делает алгоритм 4.2.2 применимым в неотрицательно определенном случае. Однако на практике ошибки округления делают невозможным появление точных нулей и может быть предпочтительнее ввести в алгоритм выбор ведущего элемента.
Симметричный выбор ведущего элемента
Для сохранения симметрии симметричной матрицы А мы рассмотрим только преобразования типа РАРТ, где Р- матрица перестановок. Использование только строчных перестановок (А <- РА) или столбцовых перестановок (А <- АР) нарушает симметрию. Перестановка вида А *- РАРТ называется симметричной перестановкой матрицы А. Заметим, что такая операция не переставляет внедиагональные элементы на диагональ. Диагональ матрицы РАРТ - это переупорядоченная диагональ матрицы А.
Пусть в начале /с-го шага алгоритма (4.2.11) мы симметрично переставили наибольший диагональный элемент матрицы А (к:п, к:п) в ведущую позицию. Если этот наибольший диагональный элемент нулевой, то А (к:п, к:п) = 0 в силу (4.2.10). В этом случае мы можем вычислить разложение РАРТ = GGT, где GeR(” х {к ~ 1Й- нижняя треугольная матрица.
Алгоритм 4.2.4. Пусть А е R” х п - симметричная неотрицательно определенная матрица и rank (Л) = г. Следующий алгоритм вычисляет матрицу перестановок Р, индекс г и нижнюю п х г треугольную матрицу G, такие, что РАРТ = GGT. Нижний треугольник А (:, 1: г) замещается на нижнюю треугольную часть матрицы G. Матрица Р = Py...Pv где Рк - тождественная матрица с переставленными к-й и piv^kyn строками.
г = 0 ‘
for к = 1: п
Найти q (к ^ q ^ п), такое, что A (q, q) = max {Л (к, к)... А (п, и)}.
if A (q, q) > 0
г = г + 1
pwW = q
А (к, :)^A(q, :)
Л(:, k)~AU q)
А (к, к) = Ул (/с, к)
А (к + 1: п, к) = А (к + 1: п, к)/А (к, к)
for j = к 4- 1: п
A U*п, j) = A U*.n, j) - A U:п, к) A U, к)
end
end
end
На практике для определения малости А (к, к) используется некоторый барьер. Тем не менее ситуация бывает крайне непростой, и читатель может проконсультироваться у Higham (1989). Добавим, что в § 5.5 обсуждается выбор барьера в случае задачи неполного ранга. В заключение отметим, что правильное эффективное использование алгоритма 4.2.4 возможно, лишь когда осуществляется доступ только к нижней треугольной части матрицы А.
Задачи
Предположим, что матрица А + IB эрмитова и положительно определенная, причем А, BeW'^". Это означает, что хТ Ах > 0 для любого вектора х ^ 0. (а) Показать, что матрица
А -В1
С =
L в A J
симметричная и положительно определенная. (Ь) Сформулировать алгоритм сложности 8д3/3 для решения системы (А + iB^x + iy) = b + ic, где b, с, x и у принадлежат R". Сколько памяти он требует?
Пусть матрица А е R"х п симметричная и положительно определенная. Построить алгоритм для вычисления верхней треугольной матрицы 7?eR"x", такой, что А = RRT.
Пусть матрица /leR"x" положительно определенная, и пусть Т= (А + Ат)12, а 5 = = (А — Ат)/2. (а) Показать, что || А '1||2 ^ || Т" 1||2 и хт А 1 х < хГ Т-1 х для всех xeR". (b) Показать, что если А = LDM1, тогда dk > 1/|| Т1||2 при к = \\п.
Найти вещественную 2 х 2-матрицу А, обладающую свойством, что хт Ах > 0 для всех вещественных ненулевых векторов длины 2, но которая не является положительно определенной для векторов из множества С2 х 2.
Пусть матрица /IeR"x". Показать, что если обе матрицы А и Ат - строго диагонально доминирующие, тогда А положительно определена. Диагональные элементы матрицы А положительны.
Показать, что функция Дх) = ^хт Ах^,2 является векторной нормой на R" в том и только том случае, когда А положительно определена.
Модифицировать алгоритм 4.2.1 так, что если встречается квадратный корень из отрицательного элемента, то алгоритм находит единичный вектор х, удовлетворяющий условию хт Ах < 0, и заканчивается.
Числовая сфера И7(А) комплексной матрицы А определяется как множество W(A) = = ^хн Ах:хн х = 1}. Показать, что если W(A) не содержит нуля, то для матрицы А существует ^/-разложение.
Используя SVD, показать, что если матрица А е Rm х", где m > п, тогда существуют матрицы QeR^^nPeR"^ , такие, что А = QP, где QT Q = 1п и Р симметричная и неотрицательно определенная. Это разложение иногда называется полярным разложением по аналогии с разложением комплексного числа z = е‘arg(z) | z |.
Пусть матрица А = I + иит, причем /leR"x" и ||к||2 = 1. Дать точное описание диагонального и поддиагонального множителей Холецкого матрицы А.
Замечания и литература к § 4.2
Определенность квадратичной формы хт А х часто может быть установлена при рассмотрении математических свойств исходной задачи. Например, дискретизация дифференциальных операторов частных производных дает возможность доказать положительную определенность матриц. Вопрос о необходимости выбора ведущего элемента при решении положительно определенных систем рассматривается в работе
Golub G. Н. and Van Loan С. (1979). “Unsymmetric Positive Definite Linear Systems”, Lin. Alg. and Its Applic. 28, 85- 98.
Результаты этой статьи были вызваны более ранней работой по линейным системам вида (/ + S.^x = Ь, где S- кососимметричная матрица:
Buckley А. (1974). “A Note on Matrices А = I + Н, Н Skew-Symmetric”, Z. Angew. Math. Meeh. 54, 125-126.
Buckley A. (1977). On the Solution of Certain Skew-Symmetric Linear Systems”, SIAM J. Num. Anal. 14, 566-570.
Симметричные положительно определенные системы составляют наиболее важный класс задач Ах- В со спецификой. Алгол-программы для GGT и LDLT разложений даются в работе
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.3 в связи с LC-разложением, также может применяться при GGT и ЬОЬт-разложениях. См.
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.
Анализ ошибок округления для разложения Холецкого обсуждается в работах
Higham N.J. (1989). “Analysis of the Cholesky Decomposition of a Semi-definite Matrix”, in Reliable Numerical Computation, eds. 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.
Вопрос об изменении треугольника Холецкого G при возмущении матрицы А = 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 HACLA, pp. 45-49.
Фортран-программы для решения симметричных положительно определенных систем имеются в LINPACK, гл. 3 и 8.
Ленточные системы
Во многих приложениях, в которых присутствуют линейные системы, матрица коэффициентов является ленточной. В этом случае уравнения всегда могут быть упорядочены так, что каждое неизвестное xi появляется только в нескольких уравнениях, «соседних» с z-м уравнением. Формально мы говорим, что матрица А = (ац) имеет верхнюю ширину ленты q, если а^ = 0 для всех j > i + q, и нижнюю ширину ленты р, если а^ = 0 для всех i > j + р. При решении ленточных систем можно добиться реальной экономии, так как треугольные множители LU, GG\ LDM Т и т. д., также являются ленточными.
Прежде чем продолжить, мы советуем читателю просмотреть §1.2, где обсуждаются некоторые аспекты преобразований с ленточными матрицами.
Ленточное £ (/-разложение
Наш первый результат показывает, что если матрица А является ленточной и А = LU, тогда Ьф) сохраняет нижнюю (верхнюю) ширину ленты матрицы А.
Теорема 4.3.1. Пусть для матрицы АеКпхп существует LU-разложение А = LU. Если А имеет верхнюю ширину ленты q и нижнюю ширину ленты р, тогда U имеет верхнюю ширину ленты q и L имеет нижнюю ширину ленты р.
Доказательство. Доказательство проведем по индукции относительно п. Выпишем разложение
а w1 v Ва w1 v ВА =FА =F1010a wT
а w1 v В
а w1 v В
А =F
А =F
и/а Lo B — \)wTla\ |_0 7„-iJ
Очевидно, что В — rwT/a имеет верхнюю ширину ленты q и нижнюю ширину ленты р, потому что только первые q компонент w и первые р компонент и являются ненулевыми. Пусть Ь^ будет L [/-разложением этой матрицы. Используя предположение индукции и разреженность w и и, получаем, что
L =L ="1 0"_r/a LY_"1 0"_r/a LY_a wTa wTи u Lo Ux_и u Lo Ux_
L =
L =
"1 0"
_r/a LY_
"1 0"
_r/a LY_
a wT
a wT
и u Lo Ux_
и u Lo Ux_
имеют необходимые размеры ширины ленты и удовлетворяют соотношению A = LU.
Модификация исключения Гаусса для ленточных матриц, имеющих L [/-разложение, получается непосредственно.
Алгоритм 4.3.1 (Ленточное исключение Гаусса: версия с внешним произведением). Дана матрица А е R” х п с верхней шириной ленты q и нижней шириной ленты р, следующий алгоритм вычисляет разложение А = LU при условии, что оно существует. Элементы A(i,j) замещаются на L(i,j), если i> j, и на U(i,j) в противном случае.
for к = Г. п — 1
for i = к + 1: min (к + р, п)
A (z, к) = A (f, к)/А (к, к) end for j = к 4- 1: min (к 4- q, п) for i = к 4- 1: min (к 4- p, n) AO = AO-A^ kWJ) end end end
Если n»p и n»qs то этот алгоритм содержит около Inpq флопов. Также существуют ленточные версии алгоритма 4.1.1 (LDMr) и всех процедур Холецкого, мы оставляем их формулировку как упражнения.
Решение треугольных ленточных систем
Аналогичная экономия может быть получена при решении треугольных ленточных систем.
Алгоритм 4.3.2 (Ленточная прямая подстановка: столбцовая версия). Пусть матрица LeR” х ” является нижней унитреугольной с нижней шириной ленты р. Для данного вектора b е R” следующий алгоритм замещает b на решение системы Lx = b.
for j = 1: п
for i = j 4- 1: min (/ + p, n) b^ = b^-m,j)bU) end end
Если n » p, тогда этот алгоритм требует около 2 пр флопов.
Алгоритм 4.3.3 (Ленточная обратная подстановка: столбцовая версия). Пусть U е R" х п является невырожденной треугольной матрицей с верхней шириной ленты q. Для данного вектора beRn следующий алгоритм замещает b на решение системы Ux = b.
for j = п: — 1:1 btiHUW for i = max (1, j — qYJ — 1 bw = bw-um) end end
Если n » q, то этот алгоритм требует около 2nq флопов.
Структура данных ленточной матрицы
Приведенные выше алгоритмы записаны так, словно матрица А хранится обычным образом в массиве п х п. На практике алгоритм решения ленточной линейной системы создается для структуры данных, которая имеет преимущества от наличия многих нулей в матрице А. Вспомним из § 1.2.6, что если матрица А имеет нижнюю ширину ленты р и верхнюю ширину ленты q, то она может быть представлена в массиве A. band размера (р 4- q 4- 1) х п, в котором ленточный элемент ац хранится в позиции A. band(i — j + q + 1,/). При таком размещении ненулевая часть z-ro столбца матрицы А содержится в у-м столбце массива A. band. Другая возможная структура данных для ленточной матрицы, которую обсуждали в § 1.2.8, осуществляет хранение матрицы А по диагонали в 1-мерном массиве A. diag.
Независимо от принятой структуры данных, организация вычислений с ленточным расположением памяти требует тщательности, чтобы уменьшить дополнительные затраты на вычисление индексных выражений. Для пояснения рассмотрим выполнение алгоритма 4.3.1 с заменой ссылок на массив А соответствующими ссылками на массив A. band.
for к = 1: п — 1
for i = к 4- 1: min (к 4- р, п)
A. bandit — к 4- q 4- 1, к) =
A.band(i — к 4- q 4- 1, k)/A.band(q 4- 1, /с) end for j = к 4- 1: min (к 4- q, n) for i = к 4- 1: min (k 4- p, n)
A. bandit — j 4- q 4- l,y) = A. bandit — j 4- q 4- 1, y)
— A. bandit — к 4- q 4- 1, k)A.band(k — j 4- q 4- 1, j) end end end
Хотя все сделано правильно, такой буквальный перевод алгоритма 4.3.1 не является оптимальным, потому что имеется излишек в индексной арифметике. Например, первый z-цикл лучше записать следующим образом:
8 = q + 1
for i = q -У 2:q -У р -У X
A. band(z, kX = A. band(z, kX(A^ k)
end
(Это сработает из-за «угловых нулей», наличие которых в массиве A.band мы допускаем, ср. § 1.2.6.) Создание эффективной ленточной процедуры требует преобразований такого рода. Умные компиляторы все сделают сами, но стремление к наибыстрейшей реализации может потребовать, чтобы программист полностью пересмотрел целочисленные вычисления. Это одна из причин, почему программы для ленточных матриц неудобны для чтения.
Ленточное исключение Гаусса с выбором ведущего элемента
Исключение Гаусса с частичным выбором тоже может быть приспособлено для использования ленточной структуры матрицы А. Тем не менее если РА = LU, то ленточные свойства матриц L и U не такие простые. Например, если А трехдиагональная матрица и ее первые две строки переставлялись на самом первом шаге алгоритма, то элемент z/13 ненулевой. Следовательно, перестановки строк увеличивают ширину ленты. Как именно увеличивается лента-это содержание следующей теоремы.
Теорема 4.3.2. Пусть матрица Л g RH х п невырожденна и имеет верхнюю и нижнюю ширину ленты q и р соответственно. Если используется исключение Гаусса с частичным выбором для вычисления матриц преобразования Гаусса
Mj = I — а0) е-\ j = Х:п — X
и матриц перестановок PY... Pn_Ys таких, что Мп-Y Рп_ Y... МY PY А = U будет верхняя треугольная матрица, тогда матрица U имеет верхнюю ширину ленты р 4- q и аР = 0 для всех i < j zz i > j 4- p.
Доказательство. Пусть разложение РА = LU выполнено исключением Гаусса с частичным выбором, напомним, что P=Pn_Y...PY. Представим матрицу РТ = E^s е ], где {519..., 5П} - перестановки набора {1, 2,..., nY Если st > i + р, из этого следует, что ведущая главная подматрица матрицы РА порядка z х z вырождена, так как
(РА)и = а8.? j = 1 :^ - р - 1
и st — р — 1 ^ i. Из этого вытекает, что матрицы U и А вырожденны, что противоречит условию. Таким образом, st < i 4- р для z = 1: п, и поэтому РА имеет ширину ленты р 4- q. Это следует из теоремы 4.3.1, согласно которой U имеет ширину ленты Р + Q- .
Утверждение относительно а(7) может быть установлено, если заметить, что матрица Mj должна обнулить только элементы (j-у X, Д..., (j-у р, JX частично уменьшенной матрицы PjMj-Y Pj-Y... PY А.П
Таким образом, выбор ведущего элемента нарушает структуру ленты в том смысле, что матрица U становится «толще», чем верхний треугольник матрицы Л, и пока мы ничего не можем сказать о ширине ленты матрицы L. Тем не менее, так
как у-й столбец матрицы L переставлялся с j-м вектором Гаусса а;, из этого следует, что матрица L имеет самое большее р 4- 1 ненулевых элементов в столбце.
£ (/-разложение матрицы Хессенберга
В качестве примера вычислений с несимметричной ленточной матрицей мы покажем, как исключение Гаусса с частичным выбором может быть применено для разложения верхней матрицы Хессенберга Н. (Напомним, что Н является верхней матрицей Хессенберга, если hvj = 0, i > j 4- 1.) После (/с — 1)-го шага исключения Гаусса с частичным выбором у нас останется верхняя матрица Хессенберга вида
XXXXXX
0XXXXX
00хххх
00хххх
000ххх
0000 хх
’к = 3, п = 6.
Благодаря специальной структуре этой матрицы мы видим, что следующая матрица перестановок Р3 или тождественная, или совпадает с матрицей перестановок 3-й и 4-й строк. Более того, следующая матрица преобразования Гаусса Мк имеет единственный ненулевой множитель в позиции (к + 1, /с). Это поясняет к-й шаг следующего алгоритма.
Алгоритм 4.3.4 (£ (/-разложение матрицы Хессенберга). Для данной верхней треугольной матрицы Хессенберга HeRn х п следующий алгоритм вычисляет верхнюю треугольную матрицу Mn_Y Pn_Y... МY PY А = I/, здесь каждая матрица Рк является перестановочной, а каждая матрица Мк~матрица преобразования Гаусса, элементы которой ограничены единицей. Элементы НЦ, к) замещаются элементами U (/, /с), если i< к, и элементами (М^+у,^ если i = к А- 1. Целочисленный вектор рй)(Д:п — 1) задает перестановки. Если Рк = I, то piv(k) = 0. Если Рк переставляет к-ю и (к 4- 1)-ю строки, то piv(k) = 1.
for к = 1: п — 1
if | ££(&, к)\ < \Щк, 4- 1, к)\
4 piv(k)=l; Н^к, к:п)^ Н^к 4- 1; к\п^ else pit) (к) = 0 end
if Н^к, к^^
1 = -Я(^ 4- 1, ЩН^к, к) for j = к 4- 1: п
Н(к 4- 1,» = Н^к 4- 1, 0 4- tH(k,j) end
Н^к 4-1, к) = 1 end end
Этот алгоритм требует п2 флопов.
Ленточный метод Холецкого
Остаток этого раздела посвящен ленточной задаче Ах = Ь, где матрица А является симметричной положительно определенной. Тот факт, что выбор ведущего элемента не нужен для таких матриц, приводит к некоторым очень компактным, элегантным алгоритмам. В частности, как следует из теоремы 4.3.1, если A = GGT является разложением Холецкого матрицы А, то матрица G имеет такую же нижнюю ширину ленты, как и матрица А. Это приводит к следующей ленточной версии алгоритма 4.2.1 метода Холецкого, основанного на gaxpy- операции.
Алгоритм 4.3.5 (Ленточный метод Холецкого: Gaxpy-версия). Для данной симметричной положительно определенной матрицы А е R" х п с шириной ленты р следующей алгоритм вычисляет нижнюю треугольную матрицу G с нижней шириной ленты р, такую, что А = GGT. Для всех i > j матрица G (/, у) замещает элементы А (i, у).
for j = 1: п
for к = max (1, j — p):J — 1
X = min (к + p, n)
AU;M = A(j:X,j) - A^j, k)A(j:X, k) end
X = min (/ + p, n)
AM-X^ = AU-.KhijMTh
end
Если n »p, тогда алгоритм требует около п(р2 + Зр) флопов и п квадратных корней. Конечно, в серьезных приложениях должна быть использована соответствующая структура данных при задании матрицы А. Например, если мы храним только нижнюю треугольную часть, тогда будет достаточным массив размером (р + 1) х п. (См. § 1.2.6.)
Если наша ленточная процедура Холецкого сочетается с программами решения ленточных треугольных систем, тогда решение задачи Ах = b потребует приблизительно пр1 + Тпр + 2п флопов и п квадратных корней. Из этого следует, что для маленьких р квадратные корни представляют значительную часть вычислений и предпочтительнее использовать LDL-подход. Действительно, тщательный подсчет флопов на этапах А = LDlJ, Ly = b, Dz = у и iJx = z обнаруживает, что требуется пр2 + йпр + р флопов без квадратных корней.
Решение трехдиагональных систем
Как образец применения Е£)Ег-процедуры для решения системы с узкой лентой рассмотрим случай симметричных положительно определенных трехдиагональных систем. Пусть
ОО1... О
О
О
е„-\ 1
и D = diag^,..., dn\ тогда из уравнения А = LDIJ мы получаем, что
«и = dv
«к, к-1 = ^к-1 ^к-1>к = 2\П,
сц<к — dk-V ек_ Y dk-y — dk-V ек-iakik-1, к = 2;п.
Таким образом, d^ и et могут быть найдены из следующей процедуры:
di = «и for к = 2: п ек- 1 = «к, к- 1А4- 1» ^к = акк — ек- 1 «к, к- 1 end
Чтобы получить решение системы Ах = Ь, мы решаем системы Ly = b, Dz = у и Ux = z. С учетом замещения получаем
Алгоритм 4.3.6 (Решение симметричной трехдиагональной положительно определенной системы). Для данной п х п симметричной трехдиагональной положительно определенной матрицы А и вектора beRn следующий алгоритм замещает b на решение системы Ах = Ь. Предполагается, что диагональ матрицы А хранится в векторе J(1 \п\ а поддиагональ - в векторе е(1 \п — 1).
for к = 2: п
t = e<k- 1); е<к - 1) = t/d^k - 1); d^ = d^ - te<k - 1) end
for к = 2: n
b(k) = b(k)-e[k- \)b(k- 1) end b^ = b^d^ for к = n — 1: — 1:1
b(k) = b^/d^k) - e^bt.k 1) end
Алгоритм требует 8 л флопов.
Вопросы векторизации
Пример с трехдиагональной системой затрагивает болевую точку: задачи с узкой лентой и векторно-конвейерные архитектуры плохо совмещаются. Узкая лента приводит к коротким векторам. Тем не менее иногда бывает, что большой независймый поток таких задач может решаться в одно время. Давайте посмотрим, как могут быть организованы такие вычисления в свете вопросов, поднятых в § 1.4.
Для простоты предположим, что мы должны решать п х п нижние унитреуголь- ные двухдиагональные системы
А(к) х(к) = &к\ к = 1: т,
и что т » п. Допустим, у нас есть массивы 5(1 :л — 1, 1 :т) и 5(1 :п, 1 :т), такие, что 5(1:п — 1, к) содержит поддиагональ матрицы А(к), а 5(1: л, к) содержит к-ю правую часть bw. Мы можем выполнить замещение bw на решение xw следующим образом:
for к = 1: т for / = 2: л B(.i, к) = 5(/, к) - E(i - 1, к) B(i - 1, к) end end
Трудность, связанная с этим алгоритмом, который по очереди последовательно решает каждую двухдиагональную систему, состоит в том, что внутренний цикл не векторизуем. Это следствие того, что В У, к) зависит от В У — 1, к). Если мы переставим к-й и z-й циклы, получим
for i = 2: п
for к = 1: т
B(i, к) = В^ к) - E^i- 1, k)B^i- 1, к)(4.3.1)
end
end
Сейчас внутренний цикл хорошо векторизуется, так как он содержит векторное сложение и векторное умножение. К несчастью, алгоритм (4.3.1) является процедурой с шагом, не равным единице. Тем не менее эта трудность легко исправима, если хранить поддиагонали и правые части по строкам. То есть мы используем массивы Е^Х:т, 1 :п — 1) и 5(1 ;т, Х:п — 1) и храним поддиагональ матрицы А(к) в Е(к, Х:п — 1) и Ь^Т в 5(С Х;п\ Вычисления (4.3.1) могут быть преобразованы к виду
for i = 2: п
for к = 1: т
В(к, z) = В(к, /) - EV<, i - Х)В(к, i - 1)
end
end
который снова иллюстрирует влияние структур данных на производительность.
Задачи
Построить ленточную процедуру LDMT подобно алгоритму 4.3.1.
Показать, как результат алгоритма 4.3.4 может быть использован для решения верхней хессенберговой системы Нх = Ь.
Предложить алгоритм для решения несимметричной трехдиагональной системы Ах = Ь, который использует исключение Гаусса с частичным выбором и требует хранения только четырех векторов длины и, заданных в плавающей арифметике.
Для матрицы <7gR"x" определен индекс профиля т(С, i) = minУ:см 0}, где 1 = Х\п. Показать, что если А = GGT-это разложение Холецкого матрицы А, то т(А, i) = m(G, i) для i = Х\п. (Говорят, что G и А имеют одинаковый профиль))
Пусть матрица А е R" х п симметричная положительно определенная с индексами профиля т{ = т(А, f), где /=1:и. Допустим, что матрица А хранится в одномерном массиве и следующим образом: v = (аИ, а2,т2^-^ а22^ аз,т^ азз» апА Написать алгоритм, который замещает v на соответствующие элементы множителя Холецкого G и потом использует это разложение для решения системы Ах = Ь. Сколько требуется флопов?
Для матрицы CeR"x" задан индекс /?(С, z) = max {/: с/7-^ 0}. Предположим, что для матрицы ^eR”x” известно LC-разложение А = LU, а также
т(А, 1) ^ т(А, 2) ^ ... ^ т(А, п),р(А, 1) ^Р(А, 2) ^ ... ^р(А, п).
Показать, что т(А, i) = m(L, i) и р(А, i) = p(U, i) для i = \ ;n. Вспомнить определение m(A, i) из задачи 4.3.4.
Построить gaxpy-версию алгоритма 4.3.1.
Предложить векторизуемый алгоритм с единичным шагом для решения симметричных положительно определенных трехдиагональных систем А(к)х(к) = bw. Допускается, что диаго-
нали, поддиагонали и правые части хранятся по строкам в массивах D, Е и В, и что bw замещается на xw.
Предложить версию алгоритма 4.3.1, в которой матрица А хранится по диагоналям.
Построить пример симметричной положительно определенной 3 х 3-матрицы, трехдиагональная часть которой не является положительно определенной.
Замечания и литература к § 4.3
Мы хотим подчеркнуть, что наш подсчет флопов означает только оценку объема работы. Читатель не должен придавать большого значения их точному количеству, особенно в области ленточных матриц, где так много зависит от разумной модификации.
Фортран-программы для линейных ленточных систем можно найти в Unpack, гл. 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.A. (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”, tSI AM 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
содержится прекрасный обзор по ленточным методам для положительно определенных систем.
Добавления при переводе
В следующей работе установлен явный вид матриц, обратных к блочно-ленточной и блочно- хессенберговой:
Нечепуренко Ю. М. Об одной факторизации элементов обратной матрицы.-ЖВМ и МФ. 1984, Т. 24, № 4, с. 601-605.
Параллельный алгоритм для трехдиагональной системы порядка п, требующий 31og« тактов 4и-процессорной ЭВМ, описан в работе
Нечепуренко Ю. М. Полиномиально устойчивый быстрый параллельный алгоритм для трех
диагональных систем.-ЖВМ и МФ, 1986, Т. 26, № 7, с. 963-969.
Симметричные неопределенные системы
Симметричная матрица, квадратичная форма которой хТАх принимает и положительные, и отрицательные значения, называется неопределенной. Хотя неопределенная матрица может иметь ЬОЬт-разложение, элементы множителей могут быть произвольной величины:
е 1J 0_е 1J 0_"10"J/8 L"10"J/8 L80_0- 1/8_80_0- 1/8_10J/8 L10J/8 L
е 1
J 0_
е 1
J 0_
"10"
J/8 L
"10"
J/8 L
80
_0- 1/8_
80
_0- 1/8_
10
J/8 L
10
J/8 L
Конечно, можно призвать на помощь некоторые стратегии с выбором из § 3.4. Однако они теряют симметрию, и вместе с этим пропадает шанс для построения метода решения неопределенных систем «со скоростью Холецкого». Надо применить, согласно нашим рекомендациям из §4.2.9, симметричный выбор ведущего элемента, т. е. преобразование данных вида А <- РАРТ. К несчастью, симметричный выбор не всегда устойчив при вычислении ЬОЬт-разложения. Если 8t и е2 малы, то независимо от матрицы Р матрица
А = РА = Р£1 1£1 111e2Je2J
А = Р
А = Р
£1 1
£1 1
1
1
e2J
e2J
имеет маленькие элементы на диагонали и в процессе разложения появляются большие числа. При симметричном выборе ведущие элементы всегда выбираются из диагонали и получаются ужасные результаты, если эти числа малы относительно тех внедиагональных элементов, которые обнуляются. Таким образом, LDLT- разложение не может быть рекомендовано как надежный подход к решению симметричной неопределенной системы. По-видимому, это действительно очень сложная задача-включить внедиагональные элементы в процесс выбора ведущего элемента и при этом сохранить симметрию.
В данном разделе мы обсудим два способа, как это можно сделать. Первый метод предложен Aasen (1971), он вычисляет разложение
PAPT = LTU,(4.4.1)
где L =(/,;)-нижняя унитреугольная матрица, а Т-трех диагональная. Матрица Р является перестановочной и выбирается так, что 1^ | ^ 1. Метод с диагональным выбором вычисляет матрицу Р так, что
РАРТ = LDU, (4 А 2)
где матрица D состоит из блоков размеров 1x1 и 2 х 2. И снова матрица Р выбирается так, что элементы нижней унитреугольной марицы L удовлетворяют условию |/17-| ^ 1. Оба разложения требуют п3/3 флопов и после вычисления могут
использоваться для решения системы Ах = b с объемом работы О (п2): PAPt = LTLt,Lz = Pb, Tw = z, LTy = w, x = Py=>Ax = b,
PAPT = LDLT,Lz = Pb,Dw = z, LTy = w, x = Py=>Ax = b.
В этих процедурах имеется только одна «новая» тема, которую имеет смысл обсудить-это решение систем Tw = z и Dw = z.
В методе Аазена симметричная неопределенная трехдиагональная система решается за О (п) операций при помощи исключения Гаусса с выбором. Отметим, что на этом уровне вычислений не будет серьезной платы за невнимание к симметрии, поскольку общий объем вычислений О(п3\
В подходе с диагональным выбором система Dw = г составлена из множества симметричных неопределенных систем порядка 1 х 1 и 2 х 2. Задачи порядка 2x2 могут быть решены посредством исключения Гаусса с выбором. Опять же не будет вреда от пренебрежения симметрией на этой фазе вычислений сложности О (я).
Таким образом, центральный вопрос этого раздела-это эффективное вычисление разложений (4.4.1) и (4.4.2).
Алгоритм Парлетта-Рейда
Парлетт и Рейд (1970) показали, как, используя преобразования Гаусса, можно вычислить разложение (4.4.1). Их алгоритм достаточно хорошо просматривается на примере к = 2 шагов случая п = 5. На начальном шаге матрица А преобразована к виду
А(1) = MYPY A Pl Ml =А(1) = MYPY A Pl Ml =PiPiPiPi0 о о0 о оа2Уз у4 у5а2Уз у4 у5оу3оу3хххххх0^40^4ххххххо^5о^5х х хх х х
А(1) = MYPY A Pl Ml =
А(1) = MYPY A Pl Ml =
Pi
Pi
Pi
Pi
0 о о
0 о о
а2
Уз у4 у5
а2
Уз у4 у5
о
у3
о
у3
х
х
х
х
х
х
0
^4
0
^4
х
х
х
х
х
х
о
^5
о
^5
х х х
х х х
где перестановочная матрица Рх выбирается так, что элементы матрицы преобразования Гаусса Мх ограничены по модулю единицей. Изучая вектор (v3, v4, v5)r на предмет выбора максимального элемента, мы определим 3x3 перестановочную матрицу Р2, такую, что
"з"4у5"з"4у5"з_У5_"з_У5_=▻ IV31 = max {I г31, I г41, |v51}.=▻ IV31 = max {I г31, I г41, |v51}.
"з
"4
у5
"з
"4
у5
"з
_У5_
"з
_У5_
=▻ IV31 = max {I г31, I г41, |v51}.
=▻ IV31 = max {I г31, I г41, |v51}.
Если максимальный элемент нулевой, мы положим М2 = Р2 — I и перейдем к следующему шагу. В противном случае мы положим Р2 = diag(l2, Р2) и
М2 = I — а(2) ву где
а(2) = (0 0 0 и4/и3
и заметим, что
А^ = М2 Р2АтР^М^ =
«1 01
01 “2
0 V3
о
Уз
0
0
0
0
0
0
0 х
0 х
X
X
X
X
X
X
В общем случае процесс продолжается в течение п — 2 шагов, предоставляя нам трехдиагональную матрицу
Т= а^ = (м„_2рп_2... м1р1шмп_2рп_2...м1ру.
Можно показать, что формула (4.4.1) содержит матрицы Р = Рп_2... Рх и
L = (Mn_2Pn_2...MYP1 PTyY.
Анализируя матрицу L, обнаруживаем, что ее первый столбец-это вектор е1; а все ее поддиагональные элементы в к-м столбце при к > 1 «задаются» множителями матрицы Мк - 1.
Эффективная реализация метода Парлетта-Рейда требует аккуратности, когда вычисляется преобразование
Aw = Мк(РкА(к-1)Рк^Мк.(4.4.3)
Чтобы разобраться, в чем трудности при минимуме обозначений, предположим, что матрица В = Вт имеет порядок п — к, и пусть нам надо выполнить преобразование В+ = (I — wel)B(I — weY)T, где yeRn-k и с^-это первый столбец матрицы 1п_к. Такие вычисления совпадают с формулой (4.4.3). Если положить
то нижняя половина симметричной матрицы В+ = В — wuT — uwT может быть вычислена за 2 (п — к)2 флопов. Суммируя эту величину по переменной к от 1 до п — 2, получим, что процедура Парлетта-Рейда требует ЪтЧЗ флопов, что в два раза больше, чем хотелось бы.
Пример 4.4.1. Если алгоритм Парлетта-Рейда применяется к матрице
0 12 312 2 2
2 2 3 3
3 2 3 4.
то
Рх =[^4^2 1
Мх =/4-(0, 0, 2/3, 1/3)т^,
Р2 = [^1^2^463!
М2 = /4 - (0, 0, 0, 1/2)те[
и РАРТ = LTLT, где Р = [е15 е3, е4, е2 ],
Метод Аазена
Метод сложности п3/3, предложенный Аазеном (1971), может быть получен пересмотром некоторых вычислительных деталей метода Парлетта-Рейда. Введем
необходимые обозначения для трехдиагональной матрицы Т:
ai Pj .... О
Pi «2:
Т= •.
" Рп-1
о ...Р„-1 а„
Для ясности мы временно игнорируем выбор ведущего элемента и допускаем, что разложение A=LTLT существует, здесь L-нижняя унитреугольная матрица со столбцом L(l, 1) = еР Метод Аазена организован следующим образом:
for j = 1: п
(4.4.4)(4.4.4)Вычислить А (1:у), где h = TLTej = Нер Вычислить a (у).
(4.4.4)
(4.4.4)
if j ^ n - 1
Вычислить Р(Д
end
if j ^ n - 2
Вычислить L (/ + 2: n, j + 1). end end
Таким образом, работа у-го шага метода Аазена состоит в вычислении у-го столбца матрицы Т и (/ + 1)-го столбца матрицы L. Алгоритм использует тот факт, что матрица Н = TLT является верхней хессенберговой. Вектор А(1 :у) = Я(1 :у, у) содержит необходимую информацию для вычисления коэффициентов а (у), Р(у) и L(y + 2:zz,y + 1) по формуле (4.4.4). Давайте посмотрим почему.
Рассмотрим у-й столбец уравнения А = LH:
Л(:,у) = Т(:, 1:у+ l)/z(l:y+ 1).(4.4.5)
Соотношение (4.4.5) показывает, что вектор Л(:,у) является линейной комбинацией первых (у + 1) столбцов матрицы L. В частности,
AU^\-.n,^ = LU^\-.n, \^h(\:j^LU^\-.n,jA- l)/z(y + 1).
Отсюда следует, что если вычислить
г(/ + 1:л) = Л(у + 1 :п,^ - L У А- \\п, 1 :у)А(1 :у),
то
L(y + 1:л,у + l)/z(y + 1) = г(/ + 1:л).(4.4.6)
Таким образом, вектор L(y + 2:zz, у + 1) коллинеарен вектору г(у + 2:и). Так как матрица L нижняя унитреугольная, мы получаем из (4.4.6), что
v^j + 1) = h(j + 1),
и, следовательно, учитывая, что это одно и то же уравнение, мы получаем следующую формулу для (j + 1)-го столбца матрицы L;
L(j 4-2; nJ + 1) = v (у + 2: n)/v (у + 1).
Заметим, что L(j + 2\nJ + 1) задается скалярной операцией gaxpy.
Теперь получим формулы для а (у) и Р(у). Сравним UJY^ и U + MY^ элементы в уравнении H=TLT. С учетом условия р (0) = 0 мы находим, что h(j) — = Р(/ — V)Ly,j — 1) 4- а (/) и h(j 4- 1) = v>y 4- 1), следовательно,
^ = hy^y-^Lyj-\\P(/) = v(/+l).
С учетом этих формул мы можем полностью описать процедуру Аазена:
for j = 1: п■
Вычислить А (1 :Д где h = TLTe:.
if j= 1 VV=2
aV) = hU3
aU) = hU)-^U- V^LUJ- 1)
end. (4.4.7)
if j < и — 1
r(/+ 1:л) = Я(/+ \:n, j^ — Hj A- l:n, 1:»Л(1:у)
PW = v(/ + 1)
end
if j < и — 2
Hj + 2:n,j + 1) = vU + 2:«yv(j + 1) end end
Для полноты описания нам необходимо показать в деталях вычисление вектора A(l:j). Из (4.4.5) следует, что
A(Vjj) = L(VM:^(4.4.8)
Эта нижняя треугольная система может быть решена относительно А (1 \j\ так как мы знаем первые j столбцов матрицы L. Тем не менее значительно более эффективный способ для вычисления #(1 *.j, j) можно получить, используя у-й столбец уравнения Н = TLT. В частности, учитывая условие Р (0) L У, 0) = 0, мы имеем
h^ = Р(к - ^ЬУ, к - 1) + а^ЬУ, к) + £№ЬУ, к + 1)
для к = 1 :у. Эта формула срабатывает, за исключением случая к = у, поскольку у нас еще нет вычисленных коэффициентов а(/) и Р(/). Тем не менее, когда вектор Л(1:у—1) известен, мы можем получить НУ) из последней строки треугольной системы (4.4.8), а именно
h^ = AU,h-1Y LUAW\k= 1
Суммируя полученные результаты и используя рабочий массив /(1:л) для Ly, 1:у), мы видим, что вычисление вектора h (1 :у) из (4.4.7) может быть организовано следующим образом:
ify=l
А(1) = Л(1, 1)
elseif j = 2
А(1) = р(1); Л(2) = Л(2,2)
else(4.4.9)
/(0) = 0; /(1) = 0; /(2 -.j - 1) = L (j, 2 :j - 1); /(/) = 1
h^ = AU,h
for к = 1: j — 1
Л(к) = р(к - 1)/(к - 1) + а(к)/(к) + р(к)/(к + 1) hkh = hkh-i^h^ end end
Заметим, что с учетом О(/)-метода для вычисления А (1:у), gaxpy-вычисления вектора г(/ + 1 :и) являются доминирующей операцией в (4.4.7). В течение у-го шага данная gaxpy содержит около 2у(и — у) флопов. Суммируя по у = 1 :и, покажем, что метод Аазена требует и3/3 флопов. Таким образом, алгоритмы Аазена и Холецкого требуют одинаковое количество арифметических операций.
Выбор ведущего элемента в методе Аазена
Как было установлено, столбцы матрицы L являются масштабированными столбцами v-векторов из (4.4.7). Если некоторые из масштабированных коэффициентов велики, т. е. если некоторые из компонент v(/+ 1) малы, то ситуация крайне плохая. Чтобы выбраться из нее, нам необходимо переставить наибольшую компоненту вектора v(j-Vl:n) в верхнюю позицию. Конечно, подобные перестановки должны быть применимы как для неприведенной части матрицы А, так и для предварительно вычисленной части матрицы L.
Алгоритм 4.4.1 (Метод Аазена). Если матрица АеКпхп симметричная, то следующий алгоритм вычисляет матрицу перестановок Р, нижнюю унитреугольную матрицу L и трехдиагональную матрицу Г, такие, что РАРТ = LTLT, где \1ц\ ^ 1. Матрица перестановок Р задается целочисленным вектором pit). В частности, Р = PY... Рп_2, где Pj-это единичная матрица с переставленными (/ + 1)-й и рй)Ц)-й строками. Диагональ и поддиагональ матрицы Т хранятся в векторах а(1:и) и Р(1 :п — 1) соответственно. В матрице Ы1\п, 2:п) вычисляется только поддиагональная часть.
for у = 1: п
Вычислить Л(1:у) посредством (4.4.9).
if j= 1 VV = 2
«(/) = h^
«0) = Ц& -p(/-l)L(/, j -1) end if у ^ и — 1*
v(/+ l:n) = A(/ + l:n,j) - L(/ + 1 ;n, 1 :y) A(1 :j)
Найти q, такое, что I у(^)| = 11 v(/ + 1 :и)| I» при j + 1 ^ q < п.
pivV^ = q; v(j + l)^v(q);+ l,2:j)~L(q,2:j)
A^j + 1, j; 1: л) «-♦ A (q, j + 1: и)
A V + 1: n, j + 1) «-♦ A (/ + 1: n, q}
₽W = vU+ 1) end if j n — 2
L(J + 2:n,j + 1) = v(j + 2:n) if vU+ D^O
LU+2:n,j+ l) = LU+2:n,j + l)/v(/ + 1) end end end
Метод Аазена устойчив в том смысле, в каком устойчив метод исключения Гаусса, т. е. получается точное разложение матрицы, близкой к А, если выполнено условие 11 Т\ |2/| | А 1|2 % 1, где Т-вычисленный аналог трехдиагональной матрицы Т В общем случае это почти всегда имеет место.
При практической реализации алгоритма Аазена нижняя треугольная часть матрицы А замещается матрицами L и Т Возьмем случай п = 5
01^32^42^5201^32^42^52а2
01
^32
^42
^52
01
^32
^42
^52
Р2 аз
^43 * Рз а4
^53^54 Р4 а5
Заметим, что при таком расположении столбцы матрицы L сдвинуты влево.
Методы с диагональным выбором
Мы сейчас опишем вычисление блочного ЕПЕг-разложения по формуле (4.4.2). Мы следуем результатам работы Банча и Парлетта (1971). Пусть
РХАР\ =РХАР\ =Е_ СЕ_ С
РХАР\ =
РХАР\ =
Е
_ С
Е
_ С
где PY - перестановочная матрица и 5 = 1 или 2. Если матрица А ненулевая, то всегда можно сделать выбор этих парамеров таким, что Е будет невырожденной, поэтому мы можем записать
РуАР\ =РуАР\ =IsCE"VIsCE"VЕ 0"О B—CE-VCTЕ 0"О B—CE-VCTЕ "1 Ст~Е "1 Ст~
РуАР\ =
РуАР\ =
Is
CE"V
Is
CE"V
Е 0"
О B—CE-VCT
Е 0"
О B—CE-VCT
Е "1 Ст~
Е "1 Ст~
Для достижения устойчивости 5 х 5-ведущий «элемент» Е должен быть выбран так, что элементы матрицы
А = (а^ = В - СЕ"1 СтА = (а^ = В - СЕ"1 Ст(4.4.10)(4.4.10)
А = (а^ = В - СЕ"1 Ст
А = (а^ = В - СЕ"1 Ст
(4.4.10)
(4.4.10)
ограничены соответствующим образом. С этой целью зададим ае(0, 1) и введем следующие обозначения:
Но = шах | аи |, щ = max | аи |.
Стратегия Банча-Парлетта для выбора ведущего элемента имеет следующий вид if pii ^ сщ0 5 = 1
Выбираем матрицу Pv такую, что |ец | = цР
else
5 = 2
endendВыбираем матрицу Pv такую, что |e2i | = ц0.
end
end
Легко проверить из формулы (4.4.10), что если 5 = 1, то
если же 5 = 2, тоесли же 5 = 2, то|а0| ^(1 + а *)ц0,|а0| ^(1 + а *)ц0,|5у| <|5у| <3 — а3 — а(4.4.11)(4.4.12)(4.4.11)(4.4.12)
если же 5 = 2, то
если же 5 = 2, то
|а0| ^(1 + а *)ц0,
|а0| ^(1 + а *)ц0,
|5у| <
|5у| <
3 — а
3 — а
(4.4.11)
(4.4.12)
(4.4.11)
(4.4.12)
Сравнивая величину (1 + а х)2, фактор роста, связанный с двумя шагами метода при 5=1, и величину (3 — а)/(1 — а), соответствующий фактор при 5 = 2, Банч и Парлетт пришли к выводу, что а = (1 + ^/17)78 является оптимальным с точки зрения минимизации оценки роста элементов.
Указанное выше приведение потом повторяется для симметричной матрицы А порядка п — 5. Используя индукцию, устанавливаем, что разложение (4.4.2) существует и требует п3/3 флопов, если не учитывать работу, связанную с выбором ведущего блока.
Устойчивость и эффективность
Как показал Банч (1971а), рассмотренный выше метод со стратегией диагонального выбора так же устойчив, как и исключение Гаусса с полным выбором. К несчастью, в целом процесс требует между п3/\2 и п3/6 сравнений, так как ц0 включает двумерный поиск на каждой стадии приведения. Действительное количество сравнений зависит от общего числа 2x2 ведущих блоков, но, вообще, метод Банча-Парлетта для вычисления разложения (4.4.2) значительно более медленный, чем метод Аазена. Смотри Barwell и George (1976).
Метод Банча и Кауфмана (1977)-это не то же, что и диагональный выбор. В этой схеме на каждой стадии процесса приведения необходимо исследовать два столбца. Эта стратегия хорошо иллюстрируется рассмотрением самого первого шага приведения:
а = (1 + УГ7)/8; А. = |аг11 = тах{|а211,..., \ап11}
if X > О
if I йн | ^ аХ
5=1; PV = I
else
а = |tipr| = max{|tiir|,..., |tir_i,r|, Itir+i,rI,, |ti„J}
if a | tin | ^ aX2
5=1, P1=I
elseif | arr | ^ an
= 1 и выбрать PY так, что (Р^ЛРДц = arr.
else
= 2 и выбрать Pv так, что (Pf^P^i = arp. end
end end
В целом, алгоритм Банча-Кауфмана требует п3/3 флопов, О (л2) сравнений и, как и все методы этого раздела, п2/2 ячеек памяти.
Пример 4.4.2. Если алгоритм Банча-Кауфмана применить к матрице
А =А =11020
А =
А =
10130’
20301
то на первом шаге X = 20, г = 3, и = 1 и р = 3. Матрица перестановок Р = [et е3 е2] при применении дает
1 20 10
PAPT =
201 30
10 301
Потом используется 2Потом используется 2х 2-ведущий блок, с которым выполняется приведение
Потом используется 2
Потом используется 2
" 100PAPT =010590170399399" 100PAPT =0105901703993991200201000106013991200201000106013991000105401701 ,3993991000105401701 ,399399
" 1
0
0
PAPT =
0
1
0
590
170
399
399
" 1
0
0
PAPT =
0
1
0
590
170
399
399
1
20
0
20
1
0
0
0
10601
399
1
20
0
20
1
0
0
0
10601
399
1
0
0
0
1
0
540
170
1 ,
399
399
1
0
0
0
1
0
540
170
1 ,
399
399
Сравнение метода Аазена с диагональным выбором
Поскольку в процессе выбора ведущего элемента должны изучаться «будущие» столбцы, то это делает затруднительным (хотя и возможным) получение алгоритма диагонального выбора с большим содержанием gaxpy-операций. С другой стороны, метод Аазена по своей природе богат gaxpy-операциями и, возможно, предпочтительнее выбрать его для векторно-конвейерных реализаций. В конце отметим, что для обеих процедур возможны блочные варианты.
Задачи
Показать, что если все главные подматрицы порядков 1x1 и 2 х 2 симметричной матрицы А вырождены, то Л-нулевая матрица.
Показать, что если матрица А положительно определенная, то в алгоритме Банча-Кауфмана могут выбираться ведущие блоки порядка 2x2.
Реализовать алгоритм 4.4.1 так, что используется только нижняя треугольная часть матрицы А, и при этом а (У) замещает Л (У, у) для у = 1:и, р(У) замещает Л (у + 1, У) для У = 1:« — 1 и Цк j) замещает А (f, j — 1) для j = 2:м — 1 и / = у + 1 \п.
Пусть матрица ЛеР невырожденная и симметричная. Построить алгоритм, который вычисляет разложение
РАРТ =РАРТ =Г R о 1 Г RT ST1Г R о 1 Г RT ST1LS — МАLS — МА. 0Мт_Г. 0Мт_Г
РАРТ =
РАРТ =
Г R о 1 Г RT ST1
Г R о 1 Г RT ST1
LS — МА
LS — МА
. 0Мт_Г
. 0Мт_Г
где R e R* x k и M e R(n k) x (n k) - нижние треугольные и невырожденные матрицы и Р - матрица перестановок. Матрица Я-диагонально доминирующая.
Замечания и литература к § 4.4
Основные ссылки по вычислению разложения (4.4.1) следующие
Aasen J. О. (19 71). “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”, BIT 10, 386-397.
Литература по диагональному выбору содержит работы
Bunch J. R. (1971a). “Analysis of the Diagonal Pivoting Method”, SIAM J. Num. Anal. 8, 656-680.
Bunch J.R. (1974). “Partial Pivoting Strategies for Symmetric Matrices”, SIAM J. Num. Anal. 11, 521-528.
Bunch J. R. and Kaufman 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) сравнений.
Перед решением симметричной системы Ах = b возможна ситуация, когда матрицу А желательно уравновесить. Алгоритм сложности О^п2\ выполняющий эту задачу, дан в работе
Bunch J. R. (1971b). “Equilibration of Symmetric Matrices in the Max-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.
Блочные трехдиагональные системы
Во многих областях приложения возникают матрицы, имеющие блочную структуру, которую можно эффективно использовать. Например, в задачах оптимизации с ограничениями часто требуется решать линейные системы вида
А_ВТА_ВТВУ с0 _ _z__d_ ’ВУ с0 _ _z__d_ ’(4.5.1)(4.5.1)
А_ВТ
А_ВТ
ВУ с
0 _ _z__d_ ’
ВУ с
0 _ _z__d_ ’
(4.5.1)
(4.5.1)
где Л-симметричная положительно определенная матрица, а В-матрица полного столбцового ранга. В данной ситуации имеет смысл использовать структуру системы, а не трактовать (4.5.1) как «еще одну» симметричную неопределенную систему. Для ознакомления с деталями см. Heath (1978).
Чтобы изучить проблему, как именно можно использовать блочную структуру, выберем для рассмотрения решение блочных трехдиагональных систем вида
(4.5.2)(4.5.2)
(4.5.2)
(4.5.2)
Здесь мы считаем, что все блоки имеют размер q х q и что xt и Ь( принадлежат R9. В этом разделе мы рассмотрим два подхода к этой задаче - блочное L U-разложение и уступающую ему схему, известную как циклическая редукция. Другие аспекты, связанные с блочными трехдиагональными системами, обсуждаются в § 10.3.3.
Блочное £ (/-разложение
Мы начнем с рассмотрения блочного L [/-разложения для матрицы (4.5.2). Определим блочные трехдиагональные матрицы Ак следующим образом:
Dy Fv
Еу D2
(4.5.3)(4.5.3)к = 1: n.
(4.5.3)
(4.5.3)
^....0Л-1 и„^....0Л-1 и„Сравнивая блоки в представлении
^....0
Л-1 и„
^....0
Л-1 и„
(4.5.4)
мы формально получаем следующий алгоритм для вычислений Ь( и и(:
Uy=DY for i = 2: п
Решить Li-у Ui-у = Ei-у относительно Li-у.
Ui = Di-Li_yFi-y(4.5.5)
end
Процедура определена до тех пор, пока Ut невырожденны. Это гарантировано, если, например, матрицы Av..., Ап невырожденны.
Имея вычисленное разложение (4.5.4), мы можем получить вектор х из (4.5.2)
посредством блочной прямой и обратной подстановки:
У1 = bv
for z = 2: и
(4.5.6) end
Решить Unxn = уп относительно хп.
for i = п — 1: — 1:1
Решить Uixi = yt — F^i +: относительно xv
end
При выполнении алгоритмов (4.5.5) и (4.5.6), для каждого блока Ut требуется разложение, так как решаются линейные системы, содержащие эти подматрицы. Это может быть сделано при помощи исключения Гаусса с выбором. Однако это не гарантирует устойчивость процесса в целом. Чтобы понять это, рассмотрите случай, когда размер блока равен единице.
Блочное диагональное доминирование
Чтобы получить удовлетворительные границы для L, и Ub необходимо сделать дополнительные предположения о блочных матрицах, которые встречаются ниже. Например, если для i = 1: п у нас выполнено отношение диагонального блочного доминирования
Н^Г1 Hi + НДН1)< 1, E^F^O,(4.5.7)
то разложение (4.5.3) существует и можно показать, что матрицы L, и Ut удовлетворяют неравенствам
11^11^ 1,(4.5.8)
ll^lli ^IMIL(4.5.9)
Сравнение блочного и ленточного решений
Сейчас разумно спросить, почему мы не можем просто рассматривать матрицу А из (4.5.2) как матрицу qn х qn, имеющую скалярные элементы с шириной ленты 2^—1. Тогда можно было бы применить ленточное исключение Гаусса, описанное в § 4.3. Эффективность такого подхода зависит от таких вещей, как размеры блоков и структура разреженности каждого блока.
Чтобы проиллюстрировать это на очень простом примере, предположим, что мы хотим решить систему
где блоки Dv и D2-диагональные, a Fv и Ех-трехдиагональные. Допустим, что каждый из этих блоков размера п х п и что решать задачу (4.5.10) при помощи алгоритмов (4.5.4) и (4.5.6) «безопасно». Заметим, что
U Y = Dv(диагональная матрица)
Ly = Ev Uy\(трехдиагональная)
U2 = D2 — LYFY,(пяти диагональная)
У1 = bt,
y2=b2- E^Di ^^
U1 *2 = У 2.
^x, = У1 -F1X2-
Следовательно, некоторые очень простые п х п вычисления с исходными ленточными блоками дают решение.
С другой стороны, простое применение ленточного исключения Гаусса к системе (4.5.10) вызвало бы много необязательной работы и хранения, как для системы с шириной ленты и + 1. Тем не менее заметим, что переставляя строки и столбцы в системе, при помощи перестановок
P = Vev
^п + 1- ^2»'
(4.5.11)
(для случая п = 5) мы найдем, что
X
х 0
х 0
0000
о"
X
X X
00
0000
0
0
X X
х 0
X 000
0
X
0 х
X X
0000
0
РАРТ =
0
00
X X
х 0 х 0
0 ..
0
0 х
0 х
х х 00
0
0
00
00
х х х 0
X
0
00
0 х
0 х х х
0
0
00
00
00 х х
X
0
00
00
0 х 0 х
X
Эта матрица имеет ширину ленты три, и поэтому вполне приемлемая процедура решения для этой переставленной матрицы-это ленточное исключение Гаусса.
Тема перестановок для изменения ширины ленты является важной. См. George и Liu (1981, гл. 4). Мы отсылаем также читателя к работам Varah (1972) и George (1974) для дальнейшего детального изучения решения блочных трехдиагональных систем.
Блочная циклическая редукция
Теперь мы опишем метод блочной циклической редукции, который может быть использован для решения некоторых важных специальных видов блочной трехдиагональной системы (4.5.2). Для простоты допускаем, что матрица А имеет вид
D F...0
€ ^nq х nq^€ ^nq х nq^(4.5.12)(4.5.12)F D ..
€ ^nq х nq^
€ ^nq х nq^
(4.5.12)
(4.5.12)
’\\ F
0...F D
где F и D- матрицы q х q, удовлетворяющие условию DF = FD. Предположим также, что п = 2k — 1. Эти условия имеют место в некоторых важных приложениях, таких, как дискретизация уравнения Пуассона в прямоугольнике. В этом случае
4 -1... О
(4.5.13)(4.5.13)-!4
(4.5.13)
(4.5.13)
;\ \ -1
О ...-14
и F = — Iq. Целое число п определяется размером сетки и часто может быть выбрано таким, что л = 2* — 1. (Sweet (1977) показал, что делать, если размер не удовлетворяет такому условию.)
Основная идея циклической редукции-уменьшать вдвое размерность задачи, повторяя это неоднократно, пока у нас не останется простая q х q система относительно неизвестного подвектора x2*-i. Эта система потом решается стандартными способами. Ранее исключенные xf находятся в процессе обратной подстановки.
Для понимания общей процедуры достаточно рассмотреть случай п = 7:
bY = Dxy + Fx2,
bi = Fxx + Dx2 + Fx3,
b3 = Fx2 + Dx3 + Fx4,
b4 =Fx3 + Dx4 + Fx5,
b5 =Fx4 + Dx5 + Fx6,(4.5.14)
b6 =Fx5 + Dx6 + Fx7,
b-, =Fx6 + DxT
Для i = 2, 4 и б мы умножим уравнения i — 1, i и z + 1 на матрицы F, —D и F соответственно, и, складывая результат, получим
(2F2 - D2) х2 + F2 х4= F (b. + b3) - Db2,
F2 х2 + (2F2 - D2)x4 + F2x6 = F(b3 + b5) - Db4, F2x4 + (2F2 - D2)x6 = F(b5 + b^ - Db6.
Таким образом, следуя этой тактике, мы удалим все х с нечетными индексами и у нас останется уменьшенная блочная трехдиагональная система вида
D(1)x2 + F(1)x4= ЬЧ\
F^x2 + D(1)x4 + F(1)x6 = b^\
F^x4 + D(1)x6 = b^\
где матрицы D(1) = 2F2 — D2 и F(1) = F2 являются перестановочными. Применяя такую же стратегию исключения, как и выше, мы умножим эти три уравнения соответственно на F(1), — D(1) и F(1). Если эти преобразованные уравнения сложить вместе, мы получим простое уравнение
(2[F(1)]2 - D(1)2)x4 = F^Hb^ + Z)^) - D^b^\
которое запишем в виде
D^>x4 = bw.
Это полная циклическая редукция. Мы решим эту (маленькую) систему q х q относительно х4. Векторы х2 и х6 находятся потом решением систем
‘ D^x2 = b^ - №4, D^x6 = b^ - F^x4.
В заключение мы используем первое, третье, пятое и седьмое уравнения из (4.5.14) для вычисления xv х3, х5 и хч соответственно.
Для произвольного п вида п = 2к — 1 положим Dw = D, F{0) = F, b{0) = b и вычислим:
for p = 1: к — 1
D(p) = 2[F(P-1)]2 - [D^"1^2
p(p) _ y?<p- i)]2
r = 2P(4.5.15)
for j = \:2k~p- 1
b^ = F(P- u^jo, + ^;ry2) - D^" "b^T11 end
end
Элементы xt затем вычисляются следующим образом:
Решить D{k~ пх2к-1 = У?"п относительно x2k-i
for р = к — 2: — 1:0
г = 2Р(4.5.16)
for j= \;2k"p-Y
if J = 1
c = №Hlr-F%ir
elseif j=2k p+1
С = Ь^-1)г-Г^Х^-2>г
else
c = b^_ 1} r - F^ (x2jr + x(2/ - 2) r)
end
Решить D^x^j- i)r = с относительно x^2j_ 1)r.
end end
Объем работы, требуемой для реализации этих рекурсий, сильно зависит от разреженности блоков DVp) и FVp\ В худшем случае, когда эти матрицы полные, общий объем флопов имеет порядок log (и)#3. При выполнении необходимо быть внимательным, чтобы обеспечить устойчивость процесса. Для дальнейшего изучения см. Buneman (1969).
Пример 4.5.1. Пусть q = 1, D = (4) и F = (— 1) в (4.5.14), и мы хотим решить систему:
4
-1
0
0
0
0
0
•^i
2
-1
4 -
-1
0
0
0
0
4
0
-1
4 -
-1
0
0
0
•*з
6
0
0 -
-1
4
-1
0
0
=
8
0
0
0 -
-1
4
-1
0
10
0
0
0
0
-1
4
-1
Х6
12
0
0
0
0
0
-1
4
Х1
22
Выполняя (4.5.15), мы получим следующую редуцированную систему:
— 141
1 -14
0"
1
^2
^4
=
-24"
-48
, р= 1,
01
-14
Х6
-80
[—194] = [х4] [— 776], р = 2.
Элементы х1 потом получаются через (4.5.16):
р = 2: х4 = 4, р = 1:х2 = 1, хь = 6,
р = 0:^ = 1, х3 = 3, х5 = 5, х7 = 7.
Циклическая редукция является примером алгоритма типа разделяй и властвуй. Другие процедуры типа разделяй и властвуй обсуждаются в § 1.3.8 и § 8.6.
Задачи
Показать, что матрицы с блочным диагональным доминированием невырожденны.
Проверить, что из условия (4.5.7) вытекают соотношения (4.5.8) и (4.5.9).
Пусть применяется блочная циклическая редукция, причем D задается формулой (4.5.13), a F = — Iq. Что можно сказать о ленточной структуре вычисляемых матриц F(p) и D(p}?
Замечания и литература к § 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, 1-71.
George 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 Finite-Difference 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.
Ранние методы, которые содержат идею циклической редукции, описаны в статьях
BuzbeeB. L., Golub G.H., and Nielson С. W. (1970). “On Direct Methods for Solving Poisson’s Equations”, SIAM J. Numer. Anal. 7, 627-656.
Hockney R. W. (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.
Buzbee В. L., and Dorr F. W. (1974). “The Direct Solution of the Biharmonic Equation on Rectangular Regions and the Poisson Equation on Irregular Regions”, SIAM J. Num. Anal. 11, 753-763.
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. (1970). “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 (Цп2) 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 М.А. and Ferreira D. L. V. (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,
и задачи с периодическими условиями на концах:
Swarztrauber Р. N. and Sweet R.A. (1973). ’’The Direct Solution of the Discrete Poisson Equation on a Disk”, SIAM J. 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.
Системы Вандермонда
Пусть вектор х(0:и)еК” + *. Матрица KgR*" + ^ х *” + ^ вида
"1
1 .
1
V= Пх0>...
>*») =
*0
*0
Л1 .
х"
называется матрицей Вандермонда. В этом разделе мы покажем, как можно решить системы VTa =f=f(0'.n) и Vz = b = b(0;n) за О (и2) флопов. Для удобства нижний индекс элементов векторов и матриц начинается с 0.
Интерполяционный многочлен V Ta = f
Системы Вандермонда возникают во многих задачах аппроксимации и интерполяции. Действительно, ключом к получению быстрого метода решения системы Вандермонда является осознание того факта, что решение VTa=f эквивалентно построению интерполяционного многочлена. Это следует из того, что если Ута = /и
Р^ = £ а^,(4.6.1)
;=о
то р^ =fi для i = 0:л.
Напомним, что если компоненты х; различны, тогда существует единственный многочлен степени я, который интерполирует узлы (х0,/0),..., (хй,/й). Соответственно матрица Уневырожденна тогда и только тогда, когда х; различны. Считаем, что это условие выполнено на протяжении всего раздела.
Первый шаг для вычисления aj из (4.6.1) состоит в определении представления Ньютона интерполяционного многочлена р:
Р(х) = Е ^( П (х -(4.6.2)
к = 01 = 0
Константы q-это разделенные разности, они могут быть определены следующим образом:
с(0:«)=/(0:«)
for /с = 0: и — 1(4.6.3)
for / = п: — 1: к 4- 1
Ci = (Ct- Ci-vVtXi- Xi-k-^ end
end
См. Conte и de Booz (1980, гл. 2).
Сейчас рассмотрим задачу получения а(0:п) из с(0:л). Обозначим через рй(х),...,р0(х) многочлены, полученные при помощи итерационной формулы
P»W = сп
for к = п — 1: — 1:0
Pk W = С* + (х - -Шн (х) end
и отметим, что р0(х) = р(х). Выпишем
Ptto = а^ + 441 х + ... + а*^"к
и приравняем одинаковые степени х в уравнении рк = ск + (х - х^а+ь это дает следующую рекурсию для коэффициентов 4м:
for к = п — 1: — 1:0
4‘> = ск - хка^^
for i = к + 1: п — 1
end
end
Соответственно коэффициенты сц = а^ могут быть вычислены следующим образом:
а^\п^ = с (0: п)
for к = п- 1:-1:0(4.6.4)
for i = к: п — 1
di = <Г — xkai+i end
end
Комбинирование этого итерационного процесса с (4.6.3) приводит к следующему алгоритму:
Алгоритм 4.6.1. Для данных вектора х(0: n^eR”+ 1 с различными элементами и вектора Д0;п)еКп + 1 следующий алгоритм замещает / на решение а = аф:п) системы Вандермонда К(х0,..., х^а = /.
for к = 0: п — 1
for i = п: — 1: к + 1
/(О = Ш-Ri - \<х^ - хЦ - к - 1))’
end
end
for к = п — 1: — 1:0
for i = к: п — 1
f^=RiW^XW>
end end
Алгоритм требует 5и2/2 флопов.
Пример 4.6.1. Пусть алгоритм 4.6.1 используется для решения системы
1 1
1 1
Т
«0
Г10
1 2
4 8
_ 26
1 3
9 27
CZ2
-58
_! 4
16 64_
_я3_
L И2_
Первый /с-цикл вычисляет представление Ньютона для р^х\.
р(х) = 10+ 16 (х — 1) + 8 (х — 1) (х — 2) + (х — 1) (х — 2) (х — 3).
Второй /с-цикл вычисляет а = (4 3 2 1)г, исходя из вектора (10 16 8 1)г.
Система Vz = b
Сейчас рассмотрим систему Vz = Ь. Чтобы получить эффективный алгоритм для этой задачи, мы опишем что делает алгоритм 4.6.1 на матрично-векторном языке. Обозначим нижнюю двухдиагональную матрицу Lk^^^n ^ х ^ + ^ через
и диагональную матрицу Dk через
Dk = diag(l,..., 1, х*+1 - хп - xn-k-v\
к+1
С учетом этих обозначений легко убедиться исходя из (4.6.3), что если f = f(0.n) и с = с (0: и)-это вектор разделенных разностей, тогда с = U Tf, где U-это верхняя треугольная матрица вида
UT = D;_\Ln-vW...DoVLoW.
Аналогично из (4.6.4) мы имеем
а = IJ с,
где L-это нижняя унитреугольная матрица вида:
Lr = L0(x0)r...L„-1(x„-1)r.
Таким образом, а = iJ UTf, где V~T = lJUT. Другими словами, алгоритм 4.6.1 решает систему VTa = f при помощи неявного вычисления ”1/£”-разложения матрицы К-1.
Соответственно решение системы Vz = b задается соотношением
z = V"'b = U (Lb^ = (L0Uf D^1Ln-^lf П^^ЦЦ-^Хп-а.-Ь^х^Ь).
Это наблюдение вызывает следующий алгоритм:
Алгоритм 4.6.2. Для данных вектора х (0: п) е R" + 1 с различными элементами и вектора b = b (0: п) с R" + 1 следующий алгоритм замещает b на решение z = z (0: п) системы Вандермонда Т(х0,..., xn)z = b.
for к = 0: п — 1
for i = п: — 1: к 4- 1
b^ = b^-x№b(i- 1)
end
end
for к = n — 1: — 1:0
for i = к + 1: n b^W-x^-k-^ end
for i = к: n — 1
‘ b^ = b^ -b^ 1)
end
end
Алгоритм требует 5м2/2 флопов.
Пример 4.6.2. Пусть алгоритм 4.6.2 используется для решения системы
О-1335О-1335О-166О-166Первый /с-цикл вычисляет векторПервый /с-цикл вычисляет векторL3(3)L2(2)L1(1)L3(3)L2(2)L1(1)
О
-1
3
35
О
-1
3
35
О
-1
6
6
О
-1
6
6
Первый /с-цикл вычисляет вектор
Первый /с-цикл вычисляет вектор
L3(3)L2(2)L1(1)
L3(3)L2(2)L1(1)
Второй к-цикл потом вычисляет
Lo^fD^L^lfD^L^D^Lo^fD^L^lfD^L^D^
Lo^fD^L^lfD^L^D^
Lo^fD^L^lfD^L^D^
Устойчивость
Алгоритмы 4.6.1 и 4.6.2 рассмотрены и проанализированы в работе Bjorck и Регеуга (1970). Их вывод состоит в том, что эти алгоритмы часто получают удивительно точные решения, даже когда матрица V плохо обусловлена. Они также показали, как модифицировать решение, когда добавляется новая координатная пара (хй+1, /и+D к множеству узлов интерполяции, и как решать конфлюэнтные системы Вандермонда, т.е. системы с матрицами вида
1101
V= У(х0, хр х2, х3)V= У(х0, хр х2, х3)х0 Xi 1 х3
V= У(х0, хр х2, х3)
V= У(х0, хр х2, х3)
Хо Xi 2xi хз
Хо Xi 3X1 Хз
Задачи
Показать, что если V= F(x0, ..., х„), то
det(H= П (х,-х.).я > / >у > 0
(Gautschi (1975а)). Проверить следующее неравенство для случая п = 1:
,” 1 + М
^-‘L^ max П-L^.
0 ^/с ^ л 1 = 0 |Xk — Xj
Равенство достигается, если все xt лежат на одном луче комплексной плоскости.
Замечания и литература к § 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-Pereyra Algorithms for Solving Vandermonde Systems”, Numer. Math. 50, 613-632.
Higham N.J. (1988a). ’’Fast Solution of Vandermonde-like Systems Involving Orthogonal Polynomials”, IMA J. Numer. Anal. 8, 473-486.
См. также
Galimberti G. and Регеуга V. (1970). ’’Numerical Differentiation and the Solution of Multidimensional Vandermonde Systems”, Math. Comp. 24, 357-364.
Galimberti G. and Регеуга V. (1971). ’’Solving Confluent Vandermonde Systems of Hermitian Type”,
Numer. Math. 18, 44-60.
Van de Vel 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^kl И >i^kl И >и — 1к/ = Ои — 1к/ = О
ехр
ехр
i^kl И >
i^kl И >
и — 1
к/ = О
и — 1
к/ = О
(/-мнимая единица). К числу основополагающих работ по быстрым алгоритмам умножения 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.
Тёплицевы системы
Матрицы, элементы которых равны вдоль каждой диагонали, возникают во многих приложениях и называются тёплицевыми матрицами. Формально матрица TeR” х п является тёплицевой, если существуют скаляры г_п + 1,..., г0,..., гп_ь такие, что а^ = rj-i для всех i и j. Таким образом, матрица
ГоЧг2г3
г-1г0гхг2
Г-2r_Vгогх
Г-3Г — 2Г_хго
является тёп лицевой.
Тёплицевы матрицы относятся к обширному классу персимметричных матриц. Говорят, что матрица ВеКпх п является персимметричной, если она симметрична относительно северо-восточной - юго-западной диагонали, т.е. bij = bn-j+ i,n-i+i для всех i и j. Это эквивалентно требованию В = ЕВТ Е, где
£=[^...^1]=/й(:,л:-1:1)
является п х п-матрицей перестановок. Легко проверить, что (а) тёплицевы матрицы - персимметричные и (Ь) обратная к невырожденной тёплицевой матрице является персимметричной. В этом разделе мы покажем, как правильное использование свойства (Ь) поможет нам решать тёплицевы системы за время О (л2). Обсуждение ограничивается важным случаем, когда матрица Т симметричная и положительно определенная.'
Три задачи
Допустим, что у нас имеются скаляры г^..., г„, такие, что для k = 1 \п матрицы
1rY... гк_2 Гк-х
Гх1.
Гк-2
Гк-2\\ Г1
Гк-1 Гк_2 ... Гх 1
положительно определенные. (Мы не ограничиваем общности нормализацией диагонали.) В этом разделе описаны три алгоритма:
Алгоритм Дурбина для задачи Юла-Уолкера Т^ = — (r^..., r^7.
Алгоритм Левинсона для задачи с произвольной правой частью Тпх = Ь.
Алгоритм Тренча для вычисления В = T„Y.
При выводе этих методов обозначим через Ек перестановочную к х /с-матрицу, Ек = 1к^ /с:-1:1).
Решение уравнений Юла-Уолкера
Мы начнем с представления алгоритма Дурбина для уравнений Юла-Уолкера, которые возникают в связи с линейными задачами предсказания. Пусть для некоторого к, которое удовлетворяет условию 1 ^ к ^ п — 1, мы решили систему Юла-Уолкера Т^ = —г= — (г^..., гк)т порядка к. Покажем, как теперь можно
решить систему порядка к + 1
Тк Ekr Z _гт Ек 1 _ _аТк Ekr Z _гт Ек 1 _ _аГГUk+иUk+и
Тк Ekr Z _гт Ек 1 _ _а
Тк Ekr Z _гт Ек 1 _ _а
Г
Г
Uk+и
Uk+и
за О (к) флопов. Сначала заметим, что
z= ТкЦ-г - аЕкг) = у - аТк1 Екг
И
а = -r*+i - rTEkz.
Так как Ткх персимметричная, Тк1Ек = ЕкТк1, и поэтому z = y- aEkTklr = у + аЕку.
Подставляя это в верхнее выражение для а, находим
а = -гк+1 - гтЕк(у + аЕку) = - (г*+1 + гтЕку)/(1 + гту).
тк оО 1 + гт у_ *тк оО 1 + гт у_ *Знаменатель является положительным, поскольку 7^+1 положительно определена и, кроме того,
тк о
О 1 + гт у_ *
тк о
О 1 + гт у_ *
I ^TVr^ я» Я Г^ Еку о 1 J Ьг^ 1 J Lo i .
Мы продемонстрировали к-й шаг алгоритма, предложенного Дурбиным (1960). Он состоит в решении систем Юла-Уолкера
Тку№= ~^ = - (Г!,..., гк)т
для к = \ :п и может быть записан следующим образом:
У1* = -Г1
for к = 1: п — 1
(4.7.1)(4.7.1)Pt = 1 + [r*]7^»
(4.7.1)
(4.7.1)
ак = - (rk+i + rw TEkyw^k
zk=yw + akEkyw
y^ = Z
Lak J
end
Как теперь нами установлено, этот алгоритм требует Зп2 флопов для произвольного вектора у = yw. Возможно, однако, уменьшить общий объем работы, используя некоторые приведенные выше выражения:
Pk = 1 + [г^Уу^ =
= 1 + [r(k"1)Trk] [Ук-1) + ak-iEk_iy(k"Y^ =
= (1 + [Ик_1)]тук_1)) + ак-Д^"^]7 Efc-ty^"^ + rk) =
= Pk — 1 + ^к - 1 ( ~ Pk - 1 ^к - 1) =
= (1 - «к- 1) Pk- 1-
Применяя эту рекурсию, мы получаем следующий алгоритм:
Алгоритм 4.7.1 (Дурбин). Даны вещественные числа 1 = r0, rv..., гп, такие, что матрица T=^i_j^eRnxn является положительно определенной, следующий алгоритм вычисляет вектор yeR", такой, что Ту = — (г^..., г„)т.
y(l)=-r(D; р=1; а = —г(1) for к = 1: п — 1
р = (1-а2)р
а = — (r(k + 1) + г(к: - 1:1)гу(1 :к))/р for i = 1: к
z^ = У^ + ау(к +1-1) end ^(1 :к) = 2(1: к); у (к 4- 1) = а end
Алгоритм требует 1пг флопов. Мы включили вспомогательный вектор z для прозрачности алгоритма, но он может быть убран.
Пример 4.7.1. Пусть мы хотим решить систему Юла-Уолкера
ЛУ143JЛУ143J"0.5"0.2Lo.i J"0.5"0.2Lo.i J‘ 1 0.5 0.2"0.5 1 0.5
Л
У143J
Л
У143J
"0.5"0.2Lo.i J
"0.5"0.2Lo.i J
L 0.2 0.5 1 J
используя алгоритм 4.7.1. После первого прохождения через цикл мы получим
а =1/15, р = 3/4, у =
Потом вычислим величины
Р = (1 — а2)Р = 56/75,
а = - (г3 4- ггуг 4- г^у^ = -1/28, 21 = У1 4- ау2 = -225/420, 22 = ^2 4- аух = -36/420, дающие окончательное решение у = ( — 75,12, — 5)т/140.
Задача с произвольной правой частью
Если еще немножко потрудиться, можно решить симметричную положительно определенную тёплицеву систему, которая имеет произвольную правую часть. Предположим, что мы решили систему
Ткх = Ь = фъ._ bkf(4.7.2)
для некоторого к, удовлетворяющего условию 1 ^ к < п, и что сейчас мы хотим решить систему
Здесь, как и выше, г = (г1$..., гкУ*. Допустим также, что решение системы Юла-Уолкера к-ro порядка Тку = — г уже получено. Так как
г = Тк 1 (Ь — цЕкг) = х 4- рЕку,
то отсюда следует, что
\i = bk*x -rTEkv = bk + 1 - rTЕкх - \wTу = = №+i - гт£*х)/(1 + гту).
Следовательно, мы можем сделать переход от (4.7.2) к (4.7.3) за О (к) флопов.
В целом мы можем эффективно решить систему Тп х = Ь, решая системы
Tkxw = bw = Vbt,..., bk)T и Tkyw = — rw = (г^..., rkf «параллельно» для к = \ ;n. Это составляет содержание следующего алгоритма.
Алгоритм 4.7.2 (Левинсон). Даны вектор feeR” и вещественные числа 1 = r0, r^..., гп, такие, что матрица T^t_^еКп х п является положительно определенной; следующий алгоритм вычисляет вектор xeR", такой, что Тх = Ь.
^(1)=-г(1);х(1) = й(1);0=1;а=-г(1)
for к = 1: п — 1
0 = (1 — а)20; ц = 1НЫ- l)-r(l:k)rx(k:-l:l))/0
v(\:k) = х(1:/с) + цу(/с:-1:1)
х(1 :к^ = г(1 :к); х^к 4- 1) = р
if к < п — 1
а = -(r(k + l) + r(l:k)ry(/c:-l:l))ZP z(l :к) = у(1 :к) 4- ау^к; —1:1) у(Д:к) = z(l :/с); у (к 4- 1) = а end end
Алгоритм требует 4м2 флопов. Векторы z и v введены для ясности, и без них можно обойтись.
Пример 4.7.2. Пусть мы хотим решить симметричную положительно определенную тёплицеву систему
" 4"-1L з J" 4"-1L з J1 0.5 0.2*1 Г Xi
" 4"-1L з J
" 4"-1L з J
L 0.2 0.5 1 J L х3 JL 0.2 0.5 1 J L х3 J0.5 1 0.5 х2
L 0.2 0.5 1 J L х3 J
L 0.2 0.5 1 J L х3 J
используя приведенный выше алгоритм. После первого прохождения через цикл мы получим
а =1/15,3 = 3/4, у =а =1/15,3 = 3/4, у =-8/15 1/15J’-8/15 1/15J’
а =1/15,3 = 3/4, у =
а =1/15,3 = 3/4, у =
-8/15 1/15J’
-8/15 1/15J’
Потом вычислим величины
3 = (1 -а2) 0 = 56/75,ri = xi + НУг — 355/56,3 = (1 -а2) 0 = 56/75,ri = xi + НУг — 355/56,Ц = (^3 - rvx2 - r2Xi)/p = 285/56, v2 = х2 + p^i = —376/56,
3 = (1 -а2) 0 = 56/75,ri = xi + НУг — 355/56,
3 = (1 -а2) 0 = 56/75,ri = xi + НУг — 355/56,
дающие окончательное решение х = (355, —376, 285)т/56.
Вычисление обратной матрицы
Одно из наиболее удивительных свойств симметричной положительно определенной тёплицевой матрицы Тп состоит в том, что обратная к ней может быть вычислена полностью за О (и2) флопов. Чтобы получить алгоритм, реализующий эту процедуру, разобьем Г*1 следующим образом:
т;1 =т;1 =А ЕгУ Е 1 .А ЕгУ Е 1 .В vВ v_г У__г У_(4.7.4)(4.7.4)
т;1 =
т;1 =
А Ег
У Е 1 .
А Ег
У Е 1 .
В v
В v
_г У_
_г У_
(4.7.4)
(4.7.4)
где А = 7^-!, Е = Еп-Х и г = (гр..., гп-У. Из уравнения
A Er vУт Е 1 _ _у.A Er vУт Е 1 _ _у.0.1.0.1.
A Er v
Ут Е 1 _ _у.
A Er v
Ут Е 1 _ _у.
0
.1.
0
.1.
следует, что Av = —уЕг = — y£(r1,..., ^.J7 и у = 1 — rTEv. Если вектор у разрешает систему Юла-Уолкера (и — 1) порядка Ау = —г, тогда из этих выражений
вытекает, что
у = 1/(1 + гТу\
v = у Еу.
Таким образом, последние строку и столбец матрицы Тпх получить легко.
Нам осталось развить формулы для получения элементов подматрицы В из (4.7.4). Так как АВ 4- Егит = 1п-ь отсюда следует, что
В = А "1 — (А "1 Ег) пт = А "1 + —.
У
И так как А = Tn_Y является невырожденной и тёплицевой, обратная к ней персимметрична. Таким образом,
Ьц = <А"х\з^ — =.
У
n-i।
Это показывает, что, хотя В не является персимметричной, мы можем легко вычислить элемент Ьи, используя его отражение относительно северо-восточной - юго-западной диагонали. Это в сочетании с фактом, что А-1 персимметричная, приводит нас к определению В от «краев» к «середине».
Поскольку порядок операций правильно описать затруднительно, мы сначала покажем наглядно формальные детали алгоритма. С этой целью допустим, что известны последние строка и столбец матрицы А-1:
Л-1 =
и и и и и к и и и и и к и и и и и к и и и и и к и и и и и к к к к к к к
Здесь и и к обозначают неизвестные и известные элементы соответственно и п = 6. Поочередно используя персимметрию матрицы Л"1 и рекурсию (4.7.5), мы можем вычислить В следующим образом:
персимм.персимм.к к к к к кк к к к к кк и и и и кк и и и и кк к и и и и и и и ик кк к и и и и и и и ик кк и и и икк и и и икк к к к к кк к к к к к(4.7 5)(4.7 5)к к к к к кк к к к к кк к к к к и и и к к и и и к к и и и к к к к к к к к к к к кк к к к к и и и к к и и и к к и и и к к к к к к к к к к к к
персимм.
персимм.
к к к к к к
к к к к к к
к и и и и к
к и и и и к
к к и и и и и и и и
к к
к к и и и и и и и и
к к
к и и и и
к
к и и и и
к
к к к к к к
к к к к к к
(4.7 5)
(4.7 5)
к к к к к к
к к к к к к
к к к к к и и и к к и и и к к и и и к к к к к к к к к к к к
к к к к к и и и к к и и и к к и и и к к к к к к к к к к к к
Конечно, когда вычисляемая матрица одновременно и симметричная и персиммет- ричная, такая, как Л"1, то необходимо вычислять только «верхний клин» матрицы, например
х хххх х
хххх
х х
(п = 6).
С учетом последнего замечания, мы готовы представить алгоритм полностью.
Алгоритм 4.7.3 (Тренч). Даны вещественные числа 1 = г0, гр..., гп, такие, что матрица Т = (q (.|) е R" х п является положительно определенной, следующий алгоритм вычисляет матрицу В = Т~1. Вычисляются только те Ьц, для которых i ^ j и / + j ^п + 1.
Используя алгоритм 4.7.1, решить систему Tn_vy = — (r^..., гп_ху.
у=1/(г(1:л-1)гу(л:-1:1))
г(1 ;п — 1) = у у (и — 1: — 1:1)
5(1, 1) = у
5(1, 2:n) = v(n- 1: — 1:1)г
for г = 2: floor ((и — 1)/2) + 1
for j = i: п — i + 1
^во = вц- 1J+ i) +
Щп + 1 -J) v(п + 1 - /) - г(/- 1)у(/- 1))/у end end
Алгоритм требует 13и2/4 флопов.
Пример 4.7.3. Если приведенный выше алгоритм применяется для вычисления обратной матрицы В положительно определенной тёплицевой матрицы
" 1 0.5 0.2"
0.5 1 0.5 ,
-0.2 0.5 1-
то мы получим у = 75/56, Ьгг = 75/56, bV2 = -5/7, Ьгз = 5/56 и Ь22 = 12/7.
Вопросы устойчивости
Анализ ошибок упомянутых выше алгоритмов был проведен Cybenko (1978), и мы вкратце опишем некоторые из его результатов.
Оказывается, ключевыми величинами являются ак из (4.7.1). В точной арифметике эти скаляры удовлетворяют соотношению
|«*| < 1
и могут быть использованы для оценки || Т-1 Пр
f i111 + la I
max ^,^ ^ПТ,-1!^ П—L^.(4.7.7)
1П(1-а?)П(1-а/
Более того, решение системы Юла-Уолкера Тпу = — г(1:и) удовлетворяет соотношению
ll^ll^fn^l+a^-l(4.7.8)
4=1/
в том случае, если все ак неотрицательные.
Теперь если £-это вычисленное алгоритмом Дурбина решение уравнений Юла-Уолкера, то rD = Тп£ + г может быть оценено следующим образом:
||rD|| «и П (1 + |ak|),
к=1
где ^-вычисленный аналог ак. С помощью сравнения, так как каждый |rj ограничен единицей, получаем, что ||rc|| «u||y||i> гДе гс-невязка, соответствующая вычисленному решению, полученному алгоритмом Холецкого. Заметим, что невязки могут быть сравнены по величине в том случае, если справедлива формула (4.7.7). Эксперимент дает основания предположить, что это имеет место, даже если некоторые из ак отрицательные. Аналогичные объяснения применимы к численному поведению алгоритма Левинсона.
Для метода Тренча можно показать, что матрица В-вычисленный аналог обратной к Т"1, удовлетворяет условию
пт;1-sin. - i + iaj
НТ-ЧЬ ~
В свете формулы (4.7.7) видно, что правая часть является приближенной верхней оценкой для u|| Тл-111, которая аппроксимирует величину относительной ошибки, когда Т"1 вычислена при помощи разложения Холецкого.
Задачи
Для произвольного вектора veR” определим векторы г + = (г + Env)/2 и г_ = (г - Env)/2. Пусть матрица АеКпхп является симметричной и персимметричной. Показать, что если Ах = Ь, то Ах^ = Ь+ и Ах_ = Ь_ .
Пусть матрица U е R”х ” является верхней унитреугольной и обладает свойством: U (Д: к — 1, к) = Ек_ ху(к" п, где yw определен как в (4.7.1). Показать, что
UTTnU = dia^\, ^...^n-iV
Пусть вектор zeR", и пусть матрица SeR” х” ортогональна. Показать, что если
X = [z, Sz, ..., 5й" 4],
тогда ХТХ является тёплицевой.
Рассмотреть ЕОЕт-разложение п х п симметричной, трехдиагональной, положительно определенной тёплицевой матрицы. Показать, что dn и ln n _ t сходится при п -* оо.
Показать, что произведение двух нижних треугольных тёплицевых матриц является тёплицевым.
Дать алгоритм вычисления peR, такого, что
Т. + g(eX + ехе^
является вырожденной. Предположить, что Тп = (^|/-у|) является положительно определенной И ГО = 1.
Переписать алгоритм 4.7.2 таким образом, чтобы не требовались векторы z и v.
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). ’’The Fitting of Time Series Models”, Rev. Inst. Int. Stat. 28, 23 3-243.
Levinson N. (1947). ’’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 Stat. 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.
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-Hall, Englewood Cliffs.
Добавления при переводе к § 4.7
Отметим монографии, посвященные проблемам вычислений с матрицами типа тёплицевых:
Воеводин В. В., Тыртышников Е. Е. (1978). Вычислительные процессы с тёплицевыми матрицами.-М/. Наука.
Тыртышников Е. Е. (1989). Тёплицевы матрицы, некоторые их аналоги и приложения.- М.: ОВМ АН СССР.
Различные алгебраические вопросы, связанные с тёплицевыми матрицами и их обобщениями, рассматриваются в книгах
Heinig G., Rost К. (1984). ’’Algebraic Methods for Toeplitz-like Matrices and Operators”, Berlin, Akademie-Verlag.
Иохвидов И.С. (1974). Ганкелевы и тёплицевы матрицы и формы.-М.: Наука. '
Обширная библиография и сведения о приложениях имеются в следующих обзорных работах:
Воеводин В. В., Тыртышников Е. Е. (1983). Вычисления с тёплицевыми матрицами.-Вычислительные процессы и системы. Вып. 1.-М.: Наука, 124-266.
Лифанов И. К., Тыртышников Е. Е. (1990). Тёплицевы матрицы и сингулярные интегральные уравнения.-Вычислительные процессы и системы. Вып. 7-М.: Наука, 94-278.
Bultheel А. (1985). ’’Triangular Decomposition of Toeplitz and Related Matrices: A Guided Tour in Algorithmic Aspects”, Bull. Seto. Math. Beld., A 37, N 2, 101-141.
В последнее время появилось довольно много работ, посвященных «сверхбыстрым» алгоритмам, решающим тёплицевы системы порядка п за О /«log^M) операций. Отметим здесь лишь некоторые наиболее свежие из них:
de Hoog F. (1987). ”А New Algorithm for Solving Toeplitz Systems of Equations”, Lin. Alg. Appl. 88/89, 123-138.
Ammar 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/3n log2«- См. упоминавшуюся выше монографию (Е. Е. Тыртышников (1989)), а также
Tyrtyshnikov Е. Е. (1989). ’’Fast Algorithms for Toeplitz and Quasi-Toeplitz Systems”, Sov. J. Numer. Anal. Math. Modelling, 5, 138-160.
Глава 5
Ортогонализация и метод наименьших квадратов
В этой главе речь пойдет главным образом о решении переопределенных систем уравнений методом наименьших квадратов, т. е. о минимизации функционала 11 Ах — £>| |2, где A eRw х п, т^ и, beRm. Наиболее надежные методы решения этой задачи связаны с приведением матрицы А к разнообразным каноническим формам путем ортогональных преобразований. Центральную роль при этом играют отражения Хаусхолдера и вращения Гивенса, с рассмотрения которых мы и начинаем эту главу. В §5.2 обсуждается вычисление разложения А = QR, где Q - ортогональная, R- верхняя треугольная марица. Оно сводится к нахождению ортонормированного базиса в range (Л). В § 5.3 показано, что QR-разложение может быть применено для решения задачи минимальных квадратов с матрицей полного ранга. Этот метод мы затем сравниваем с методом нормальных уравнений, предварительно развив соответствующую теорию возмущений.
В § 5.4 и § 5.5 мы рассматриваем методы, пригодные в сложной ситуации, когда матрица А неполноранговая (или почти неполноранговая). Здесь представлены QR-разложение с выбором ведущего элемента по столбцу и SVD.
В § 5.6 мы обсуждаем некоторые шаги, которые могут быть предприняты для улучшения качества вычисленного решения задачи минимальных квадратов. §5.7 содержит несколько замечаний о недоопределенных системах.
Матрицы Хаусхолдера и Гивенса
Напомним, что и х «-матрица Q называется ортогональной, если QT Q = 1п. Ортогональные матрицы играют важную роль при решении задач на собственные значения и задач минимальных квадратов. В этом разделе мы вводим ключевые для эффективных вычислений с ортогональными матрицами преобразования: отражения Хаусхолдера и вращения Гивенса.
Двумерный случай
Полезно посмотреть, какой геометрический смысл имеют вращения и отражения в случае п = 2. Ортогональная 2 х 2-матрица Q называется матрицей вращения, если
cos (9) sin (0)_ — sin (6) cos (6)_ ’
Если у = QT x, то у получается поворотом х на угол 6 против часовой стрелки. Ортогональная 2 х 2-матрица Q называется матрицей отражения, если
cos (6) sin (6)
_sin(6) — cos(0)_
Если у = QT9 х = Qx9 то у получается отражением х относительно оси, определяемой как
$ = span$ = span"cos(0)/2"_sin(0)/2_"cos(0)/2"_sin(0)/2_
$ = span
$ = span
"cos(0)/2"
_sin(0)/2_
"cos(0)/2"
_sin(0)/2_
Вращения и отражения привлекательны с вычислительной точки зрения, так как они легко строятся и могут быть использованы для обнуления отдельных элементов векторов при надлежащем выборе угла поворота или плоскости отражения.
Пример 5.1.1. Пусть х = (1, >/3)Т. Положим
Г cos(—60°) sin(—60°)"| Г 1/2 -73/2"
Q — L—sin(—60°) cos(-60°)J “L -Д/21/2 _ ’
Тогда QT х = (2,0). Таким образом, поворот на (—60°) обнуляет вторую компоненту X- Если
е =е ="cos(30°) sin (30°) "I Г Тз/2 1/2 "
е =
е =
_ sin(30°) -cos(30°) J L 1/2 — Тз/2J *
то QTx = (2, Of. Таким образом, вторую компоненту х можно обнулить, отражая х относительно прямой с наклоном 30°.
Отражения Хаусхолдера
(5.1.1)(5.1.1)Пусть г е R” - ненулевой вектор, п х «-Матрица Р вида Р = I — 2vvT/vT v
(5.1.1)
(5.1.1)
называется отражением Хаусхолдера (матрицей Хаусхолдера, преобразованием Хаусхолдера). Вектор г называется вектором Хаусхолдера. При умножении матрицы Р на вектор х последний отражается относительно гиперплоскости span {г}1. Легко проверить, что матрицы Хаусхолдера симметричны и ортогональны.
Отражения Хаусхолдера похожи на введенные в § 3.2.1 преобразования Гаусса в двух отношениях: они являются одноранговыми модификациями единичной матрицы и они могут быть использованы для обнуления выбранных компонент вектора. В частности, предположим, что задан вектор 0 / xeR" и мы хотим, чтобы вектор Рх был кратен et первому столбцу 1п. Для любого хе R" имеем
Рх =Рх =r 2vvr\ 2vrx
Рх =
Рх =
/=г~ I X = X=— »
. V1 V /V V
и поэтому из Pxespan{eJ следует, что ге span {х, ej. Полагая v = х 4- аег получаем
ггх = хгх + ах!
и
vT v = хТ х 4- 2а Xi 4- а2,
так что
Рх = 1 - 2Рх = 1 - 2хт х 4- а Xiхт х 4- 2а хх 4- а2.хт х 4- а Xiхт х 4- 2а хх 4- а2.и х х — 2а —~—вл v1 vи х х — 2а —~—вл v1 v
Рх = 1 - 2
Рх = 1 - 2
хт х 4- а Xiхт х 4- 2а хх 4- а2.
хт х 4- а Xiхт х 4- 2а хх 4- а2.
и х х — 2а —~—вл v1 v
и х х — 2а —~—вл v1 v
Чтобы коэффициент при х оказался нулевым, достаточно положить а = ± ||х||2
Тогда
и = х ± 11 х 112х = + 11 xl la^i-(5.1.2)
\ г г/
Именно простота нахождения г делает отражения Хаусхолдера очень полезными.
Пример 5.1.2. Для х = (3, 1, 5, 1)г и v = (9, 1, 5, 1)г матрица
Г-27 -9 -45 — 9~
= 1"953"5-1
иТи 54-45-529-5
_9_1-553_
удовлетворяет Рх = ( — 6, 0, 0, 0)г.
Вычисление вектора Хаусхолдера
С нахождением матрицы Хаусхолдера (или, что то же самое, вектора Хаусхолдера) связан ряд важных на практике деталей. Одна из них-выбор знака при определении и по формуле (5.1.2). Если х почти коллинеарен е1? то вектор v = х — sign (xt) ||х|| 2 et имеет малую норму. Вследствие этого возможно появление большой относительной ошибки при вычислении множителя Р = 2/dtd. Эту трудность можно обойти, просто взяв а с тем же знаком, что и первая компонента вектора х:
v = х + sign(x1)||x||2e1.
Это обеспечивает выполнение неравенства ||v||2 > ||х||2 и гарантирует почти точную ортогональность вычисленной матрицы Р (см. ниже). Заметим также, что ЫИН!..
Менее критично, но полезно придерживаться в дальнейшем такой нормировки вектора г, что v(l)= 1. Это нестандартная нормировка, но она упрощает представление нескольких важных алгоритмов, в которых требуется хранить вектор Хаусхолдера. Мы будем называть v (2: п) существенной, или значимой, частью г. Заметим, что значимая часть г может быть записана на место обнуляемой части вектора х.
Следующая процедура вычисляет вектор Хаусхолдера:
Алгоритм 5.1.1 (Вычисление вектора Хаусхолдера). По и-вектору х данная функция вычисляет и-вектор г, такой, что v(l) = 1 и все компоненты вектора (1 — 2vvt/dt d)x, кроме первой, равны нулю.
function: v = house (х)
п= length(x); p = ||x||2;v = x
if ц / О
P = x(l) + sign(x(l))n
г(2:и) = и(2:л)/р
end
v(D = 1
end house
Этот алгоритм требует примерно Зп флопов.
Умножение на матрицы Хаусхолдера
Применяя преобразование Хаусхолдера к матрицам, очень важно учесть специальную структуру матрицы Хаусхолдера. Пусть Л-матрица, Р = I — 2vvT / vT d.
Тогда,
РА = 11 — 2) А = А + г wT,
\ V V /
где w = Р ATv, Р = — 2/vTv. Таким образом, хаусхолдерова модификация матрицы слагается из умножения матрицы на вектор и модификации внешним произведением векторов. Если бы мы не заметили этого и обращались бы с Р как с матрицей общего вида, то объем работы возрос бы на порядок. Преобразование Хаусхолдера никогда не требует явного формирования матрицы Хаусхолдера. Следующие две функции формально подтверждают это.
Алгоритм 5.1.2 (Умножение на матрицу Хаусхолдера слева). Для данной т х «-матрицы А и ненулевого m-вектора г, где г(1) = 1, следующий алгоритм строит на месте матрицы А матрицу РА, где Р = I — 2vvT (пТ v.
function: А = row.house(^, v)'
р = -2/vTv
w = P AT v
A = A + vwT
end row.house
Алгоритм 5.1.3 (Умножение на матрицу Хаусхолдера справа). Для данной т х «-матрицы А и ненулевого «i-вектора г, где г(1) = 1, следующий алгоритм строит на месте матрицы А матрицу АР, где Р = I — 2vvT / vTv.
function: A = coLhouse (Л, г)
P= — 2/vTv
w = P A v
A = A + wvT
end coLhouse
Каждая из вышеприведенных процедур преобразования Хаусхолдера требует около Дтп флопов. Заметим, что как в row.house, так и в coLhouse можно учесть наличие нормировки г(1) = 1. При малых т это может оказаться существенным для row.house, а при малых «-для coLhouse, поскольку экономит одно умножение.
В типичном случае функции house, coLhouse и row.house используются для обнуления заданной части строки или столбца матрицы. Пусть, к примеру, мы хотим записать на место матрицы AeRmxn (т > п) матрицу В = QT А, где Q-такая ортогональная матрица, что B^j 4 1 :m,j) = 0 для некоторого j, \ ^j ^п. Допустим еще, что A(J:m, 1 :j — 1) = 0 и мы хотим разместить значимую часть вектора Хаусхолдера на месте A(j 4 l:m,j\ Эта задача может быть решена следующим образом:
r(y:«i) = house (Л(у:т,у))
А (у: т, j*. п) = row.house (А (у: m,j:n), v(j\m))
С вычислительной точки зрения мы подействовали матрицей Хаусхолдера Р = 1 — — 2i)i)T / иТ и порядка т — j 4- 1 на нижние т— у+1 строк матрицы А. Однако математически мы при этом также действовали т хМ-матрицей Хаусхолдера
на всю матрицу А. Невзирая на это, нетривиальная часть вектора Хаусхолдера была записана на месте обнуляемых элементов массива А.
Ошибки округления
Матрицы Хаусхолдера обладают очень хорошими свойствами в отношении ошибок округления. Уилкинсон (АЕР, рр. 152-62) показывает, что вектор г, вычисляемый функцией house, очень близок к точному вектору г. Если Р = I — — 2г vT /vT v, то
||Р-Р||2 = О(и).
Далее, вычисленные преобразования с матрицей Р близки к точным преобразованиям с матрицей Р:
fRPA^PU^EV ||£||2 = О(и||Л||2),fRAP^A + £)Р,||£||2 = О(и||Л||2).
Факторизованное представление
Во многих из описываемых ниже алгоритмов разложения, основанных на преобразованиях отражения, вычисляется произведение матриц Хаусхолдера
6 =(5.1.3)
где г ^ и и каждое ги) имеет вид
г0) = (0, 0, ... , 0, г#!, ... , v^f.
Явное вычисление Q обычно не требуется, даже если Q используется в последующих вычислениях. Например, если CeRnxq и нам нужно вычислить QT С, мы просто выполняем цикл
for j = 1: г
С = Q^C end
Хранение хаусхолдеровых векторов г(1), ..., г(г) фактически равносильно факторизованному представлению матрицы Q. Для иллюстрации экономичности этого представления рассмотрим массив А, и пусть его элементы A(j + 1:«, у) содержат значимые компоненты vMRj + 1 :п)у-го хаусхолдерова вектора. Тогда запись матрицы QT С на место CeRnxq может быть реализована следующим образом:
for у = 1: г
vU) = 1; ^(7 + 1 •«) = AU -V 1 :и, у)(5.1.4)
С (у :«,:) = row.house (С(у:«,:), г(у:п))
end
Здесь используется около 2qr(2n — г) флопов. Если бы матрица Q была явно представлена как п х «-матрица, то вычисление QT С потребовало бы 2n1q флопов.
Конечно, в некоторых приложениях явное формирование матрицы Q или, возможно, некоторой ее части, все же необходимо. Для вычисления произведения Q хаусхолдеровых матриц из (5.1.3) возможны два алгоритма: прямое накопление
Q =
for у = 1: г
Q = QQj
end
и обратное накопление
for j = г: — 1:1
Q = QjQ end
Вспомним, что ведущая часть Qj размера (j — 1) х (у — 1) является единичной матрицей. Поэтому в начале обратного накопления матрица Q «почти единичная» и заполняется постепенно в процессе итераций. Это обстоятельство можно использовать для сокращения требуемого количества флопов. Напротив, при прямом накоплении матрица Q становится полной уже после первого шага.
Ввиду этого прямой порядок перемножения матрицы Q менее экономичен. Обратное накопление является наилучшей стратегией и может быть детализировано следующим образом:
Q = k’
for у = г: — 1:1
vU)” 1;!:«) = A(J + i:n,j)(5.1.5)
Q(j'.n,j:n) = rowJiouse (QU'.nJ'tO. "(У:«)) end
При этом требуется около 4(п2г — пг2 + г3 / 3) флопов.
Блочное представление
Пусть, как в (5.1.3), Q = QY ... Qy - произведение п х «-матриц Хаусхолдера. Так как каждая Qj является одноранговой модификацией единичной матрицы, из структуры хаусхолдеровых векторов следует, что матрица Q является г-ранговой модификацией единичной матрицы и может быть представлена в виде
Q = Z + WYT9 (5.1.6)
где Wh Y-n х r-матрицы. Для вычисления блочного представления (5.1.6) ключевой является следующая лемма:
Лемма 5.1.1. Пусть Q = I 4- WYT — ортогональная п х п-матрица, где W, YeR”^. Если Р = I — 2vvT / vTv9 где veR”, z = —2Qv/vTv, то
Q^. = QP = I W^Y\ 9•
где И^ = [W z], Y+ = [У v] — « x (y 4- \>матрицы.
Доказательство.
QP = (I + WYT) (/-2^-) = / + WYT-2^-
= l4-WYT4-zvT = l4-lW z] [У иУ. □
Многократно применяя эту лемму, мы можем получить блочное представление матрицы Q из (5.1.3) из факторизованного представления следующим образом:
Алгоритм 5.1.4. Пусть Q = Qv ... Qy- произведение п х «-матриц Хаусхолдера, как в (5.1.3). Алгоритм вычисляет матрицы W9 YeWy такие, что Q = I 4- WYT.
У= v(1)
W= -2v<1)/Ev(1)]Tv(1)
for j = 2: r
z = -2(1+ WYT)v^/^u4T^
W=[W z)
У=[У v^
end
Этот алгоритм требует около 2r2n — 2r3 /3 флопов, если учитывается наличие нулей в г0). Заметим, что У-просто матрица хаусхолдеровых векторов, являющаяся поэтому нижней треугольной с единичной диагональю. Ясно, что главной задачей в нахождении РУУ-представления (5.1.6) является вычисление матрицы W.
Блочное представление произведений хаусхолдеровых матриц привлекательно в тех случаях, когда требуется умножить Q на какую-либо матрицу. Пусть CeKnxq. Тогда преобразование
C^QrC = (I + WY^C- С+ Y^C)
содержит много операций уровня 3. В то же время при факторизованном представлении матрицы Q вычисление QTC использует лишь операции уровня 2, а именно, умножение матрицы на вектор и модификацию внешним произведением. Конечно, разница между уровнями 2 и 3 сглаживается по мере того, как матрица С становится более узкой.
Отметим, что РУУ-представление не является с геометрической точки зрения обобщением преобразования Хаусхолдера. Блочные отражения имеют вид Q = I — -2 VVT, где УеКлхг удовлетворяет VTV=Ir. См. Schreiber, Parlett (1987), Schreiber, Van Loan (1989).
-1
1.080
-0.6
-0.352
0
-0.800
-0.8
0.264
2^2 = I +2^2 = I +Пример 5.1.3. Если n = 4, г = 2, (1, .6, О, .8)г и (0, 1, .8, .6)г-хаусхолдеровы векторы, соответствующие матрицам Qi и Q2 соответственно, то
2^2 = I +
2^2 = I +
1 0.6 0 0.8"
0 1 0.8 0.6 _ '
Вращения Гивенса
Отражения Хаусхолдера чрезвычайно полезны для крупномасштабных обнулений, как, .например, аннулирование всех компонент вектора, кроме первой. Однако в тех случаях, когда необходимо избирательное зануление элементов, предпочтительнее использовать вращения Гивенса. Эти двухранговые модификации единичной
матрицы имеют вид
" 1 • •
. о
. о ■■
• 0
0 ••
•с • •
•8• 1
■■ 0
г
G (i,k,0) =
0 ••
•— 5• •
■ с • •
• 0
к
(5.1.7)
0 ••
•0 ••
■ 0 ••
• 1
1
к
где с = cos (0), s = sin (6) для некоторого 6. Ясно, что вращения Гивенса-ортогональные матрицы.
Умножение слева на G (/, к, 6)г равносильно повороту на 6 радиан против часовой стрелки в координатной плоскости (z, к). Действительно, если xeR” и у = = G (i, к, 6)тх, то
сх( — sxk, j = z, 5 Xi + c xk, j = k.
j #i,k.
Из этих соотношений ясно, что мы можем обратить ук в нуль, положив
(5.1.8)
Таким образом, обнуление заданного элемента вектора с использованием вращения Гивенса является делом очень простым.
На практике существуют лучшие способы вычисления с и s, чем (5.1.8). Например, следующий алгоритм включает защиту от переполнения.
Алгоритм 5.1.5. По скалярам а и b эта функция определяет с = cos (6) и 5 = sin (6) так, что
b J L О
function: [с, 5] = givens (я, Ь) if b = 0
с = 1; 5 = 0
else
if 1*1 >W
т = — a(b; s = 1 /^/1 + т2; с = st
else
end
т = — b/a; с = 1 /^1 + т2; s = ст
end end givens
Этот алгоритм использует 5 флопов и одно извлечение квадратного корня. Заметим, что он вычисляет 6, поэтому не приходится привлекать обратные тригонометрические функции.
Пример 5.1.4. Пусть х = (1, 2, 3, 4)г, cos(0) = 1 />/5, sin(0) = 2/^/5. Тогда G (2, 4, 0)г х = (1, ^/20, 3, 0)т.
5.1.9. Умножение на матрицы Гивенса
Простота строения G (z, к, 6), разумеется, должна быть использована при вычислении произведений матриц вида G (i, к, 6)тА и AG (i, к, 6). Заметим, что умножение справа затрагивает только строки i и к, а умножение слева-только столбцы ink. Эти вычисления реализуются следующими функциями.
Алгоритм 5.1.6. Пусть A eR2x^, с = cos (0), 5 = sin (6). Следующий алгоритм записы
вает на место А матрицу
function: А = row.rot (А, с, s) q = cols (Л) for j = 1: q
4 = A(ljy t2 = ^(2,7) ^(1J) = ct! - st2;
A(2J) = si^ + ct2 end
end row.rot
Этот алгоритм требует 6q флопов.
Алгоритм 5.1.7. Пусть A eR^x2, с = cos (0), 5 = sin (0). Следующий алгоритм записы
вает на место А матрицу
function: А = coLrot (А, с, s) q = rows (Л) for i = 1: q
Ti = Л (z, 1); т2 = Л (/, 2)
Л (z, 1) = cTi — 5Т2;
Л (/, 1) = 5^ + ct2 end
end coLrot
Этот алгоритм требует 6q флопов.
Вспоминая, что Л([/ к],:) означает строки z и к матрицы Л, мы видим, что
Л([/ к],:) = row.rot(Л ([z k],:), с, 5)
осуществляет преобразование A<-G(l, к, 0)г А. Аналогично
Л(:,[/ k]) = coLrot (Л(:,[/ к]), с, s)
осуществляет преобразование а <- A G (i, к, 0).
Для дальнейшей иллюстрации типичного применения процедур Гивенса допустим, что А-т х «-матрица, такая, что Л (/ — 1: z, 1 ;j’ — 1) = 0 и мы хотим обнулить A (i, j) вращением z-й и (z — 1)-й строк. Вот как этого можно достигнуть:
[с, s] = givens (Л (г - 1,у), А (Л Ж
A^i — 1: z, j'.n) = row.rot (A (z — 1: i,j'.n\ c, s).♦
Ошибки округления
Численные свойства вращений Гивенса не менее хороши, чем для отражений Хаусхолдера. Можно, в частности, показать, что вычисленные функцией givens с и s удовлетворяют
£с = О (и), £s = O(U).£с = О (и), £s = O(U).с = С (1 + £с),
£с = О (и), £s = O(U).
£с = О (и), £s = O(U).
5 = 5(1 +£s),
Если си5В дальнейшем используются для нахождения преобразования Гивенса, то
вычисленное преобразование является точным преобразованием близкой матрицы:ЛЮи, к, 6)ГЛ] = G(i, к, 9)ГЦ + Е),||£||2 « и ||Л||2,
Л [A6(i, к, в)] = U + Е) G 0, к, 6),||£||2 « и ||Л||2.
Детальный анализ ошибок для вращений Гивенса можно найти у Уилкинсона (АЕР, рр. 131-39).
Представление произведений матриц Гивенса
Пусть Q = GY ... Gt-произведение матриц вращения Гивенса. Так же как и в случае отражений Хаусхолдера, ортогональную матрицу Q экономичнее хранить в факторизованном виде, а не вычислять явно произведение вращений. Прием, предложенный Стьюартом (1976), позволяет очень компактно это осуществить. Идея состоит в том, чтобы связать с каждым вращением единственное число с плавающей точкой р. Именно, если '
то определим скаляр р следующим образом:
if с = 0
р= 1
elseif |^| < |с|
р = sign (с)5/2
else(5.1.9)
р = 2 sign ^)/с
end
По существу это означает, что мы храним s/2, если синус меньше косинуса, и 2 / с в противном случае. Восстановление матрицы + Z при этом производится следующим образом:
if р = 1
с = 0; 5=1
elseif |р| < 1
5 = 2 р; с = ^/1 — 52
else(5.1.10)
с = 2 / р; 5 =\ — с1
end
То что фактически может быть восстановлена матрица — Z (а не Z), обычно несущественно, поскольку если Z обнуляет в матрице какой-нибудь элемент, то и — Z делает то же самое. Хранение меньшего из чисел с и 5 обусловлено тем, что формула ^/1 — х2 работает с плохой точностью, если х близок к единице. Другие детали см. Stewart (1976). Конечно, для воспроизведения G (i, к, 0) нам необходимо знать i и к, помимо р. Это обычно не вызывает затруднений, как мы покажем в § 5.2.3.
Распространение ошибок
Здесь мы сделаем несколько замечаний о распространении ошибок округления в алгоритмах, использующих последовательности преобразований Хаусхолдера или Гивенса. Более точно, пусть дана матрица А = AoeRmxn и матрицы At,..., Ар = В
вычисляются по формуле
(5.1.11)(5.1.11)Ак=Л^Ак_х2к\ к=1:р.
(5.1.11)
(5.1.11)
Предположим, что описанные выше алгоритмы Хаусхолдера и Гивенса используются как для получения, так и для применения матриц £к и £к. Пусть Qk
и Zk-ортогональные матрицы, которые были бы получены в отсутствие ошибок округления. Можно показать, что
B = (Qp...Q1HA + E)(Z1...Zp),(5.1.12)
где П^Пз^сиПЛПз, причем константа с не очень сильно зависит от п, т и р. Иными словами, В-результат точного ортогонального преобразования матрицы, близкой к А.
Быстрые вращения
Способность вращений Гивенса обнулять элементы матриц избирательно делает их важным инструментом в задачах с определенной структурой. Это стимулировало разработку процедур быстрых вращений. Идея быстрых вращений сводится к хитроумному представлению матрицы Q, являющейся произведением вращений Гивенса. Именно, Q представляется парой матриц (М, D), где МТ М = D = diag(^) и все dt положительны. Матрицы Q, М и D связаны формулой
(5.1.13)(5.1.13)Q = MD~1/2 = Mdiag (1/У^).
(5.1.13)
(5.1.13)
Обратим внимание, что (MD~1/2)T (MD~1/2) = D"1/2DD"1/2 = I, так что матрица MD"1/2 ортогональна.
Для разъяснения деталей лучше всего спуститься на уровень 2 х 2-матриц. Пусть заданы х = (х1х2)т и D = diag(^, d2\ Допустим, что dY и d2 положительны. Положим по определению
(5.1.14)
и заметим, что
Р1 *1 + ^2_хх + ахх2 _
и
М kDMxМ kDMx</2 + Pi^i- ^iPi +^«1</2 + Pi^i- ^iPi +^«1</iPi + d2ax dx + axd2 _</iPi + d2ax dx + axd2 _
М kDMx
М kDMx
</2 + Pi^i
- ^iPi +^«1
</2 + Pi^i
- ^iPi +^«1
</iPi + d2ax dx + axd2 _
</iPi + d2ax dx + axd2 _
Если х2 ^ О, ах = —хх(х2, Р; = —axd2ldx, то
М х х =М х х =х2(1 + 71)0х2(1 + 71)0MXDMX =MXDMX =d2^ +Yi)0d2^ +Yi)00<М1 +71) Г0<М1 +71) Г
М х х =
М х х =
х2(1 + 71)0
х2(1 + 71)0
MXDMX =
MXDMX =
d2^ +Yi)0
d2^ +Yi)0
0
<М1 +71) Г
0
<М1 +71) Г
где 7j = —ах Pj = <d2fdx^ ЛЛх^2.
Аналогично, предположив хх ^ 0 и определив М2 как
(5.1.15)(5.1.15)1«2
(5.1.15)
(5.1.15)
L Р2 и
где а2 = — x2lxv и Р2 = — (^1/^2)а2, получим
М 2 X =М 2 X =%1(1 + у2)о%1(1 + у2)о
М 2 X =
М 2 X =
%1(1 + у2)о
%1(1 + у2)о
m^dm2 =m^dm2 =<Л(1 + т2) Оо </2(1 + У2)
m^dm2 =
m^dm2 =
где у2 = -а2₽2 =(^/</2) (Xj/xJ2. _
Легко показать, что для / = 1,2 матрица j = D12 M^i 1/2 ортогональна, причем вторая компонента вектора JT(D~1/2 х) равна нулю. (Фактически J может оказаться отражением, так что популярный термин «быстрые вращения» верен лишь отчасти.)
Заметим, что у, удовлетворяет соотношению yty2 = 1. Поэтому в вышеприведенных формулах всегда можно выбрать Mt таким образом, что «коэффициент роста» (1 + yj будет ограничен числом 2. Матрицы вида
удовлетворяющие — 1 ^ af 0f ^ О, суть быстрые преобразования Гивенса размера 2x2. Обратим внимание, что умножение справа на матрицу быстрого вращения требует только половину того количества умножений, которое необходимо для осуществления обычного преобразования Гивенса. Кроме того, обнуление выполняется без явного вычисления квадратного корня, что может оказаться существенным при проектировании СБИС.
В и х «-случае требуемые изменения почти такие же, как для обычных вращений Гивенса. Преобразования первого типа имеют вид
" 1000
о ... 3 ••• 1 ••• о
г
F(i,k,a, 3) =
0 ••• 1 ••• a ••• 0
к ’(5.1.16)
0 ••• 0 ••• 0 ••• 1
гк
а структура преобразований второго типа такова:
" 1 ... о ... о ... 0
0■•• 1 ••• а ••• 0
г
F(i,k,a,3) =
.(5.1.17)
о ••• 3 ••• 1 ••• 0
к
0 ••■ 0 ••• 0 ••• 1
гк
Таким образом, если МeRnxn и D = diag (^) удовлетворяют соотношению МТ М = = D и F-n х «-матрица быстрого вращения, где FT D F = Dnew диагональна, то M„ew Mnew = Dnew, где Mnew = М F. Тем самым представление (М, D) для быстрого вращения можно модифицировать, получив (Mnew, Dnew).
Функции givens будет соответствовать
Алгоритм 5.1.8. По xeR2 и положительному t/eR2 следующий алгоритм вычисляет 2 х 2-матрицу быстрого вращения М, такую, что вторая компонента вектора Мт х нулевая и матрица Мт DM = Dv диагональна, где D = diag^ , d2). Если type = 1, то М имеет вид (5.1.14), а при type = 2-вид (5.1.15). Диагональные элементы матрицы Dv записываются на место вектора d.
function: [а, Р, type^ = fast.givens (x,d) if x(2)/0 а = —x(l)/x(2); p = -a^(2)/^(l); у = -ap if у 1 type = 1 t = ^(1); ./(1) = (1 + y)^(2);
^(2) = (1 +y>T.
elze
type = 2
a = 1 /а; P = 1 / P; у = 1 / у
./(1) = (1+у)^(1); ^(2) = (1 4-у) ^(2) end
else
type = 2 a = 0; p = 0 end
end fast.givens
Алгоритм применения быстрого преобразования Гивенса схож с row.rot и col.rot. Для преобразования строк мы имеем:
Алгоритм 5.1.9. По ^eR2x^ и матрице быстрого вращения М типа 1 или 2, следующий алгоритм записывает Мт А на место А.
function: А = row.fast.rot (А, а, Р, type) if type = 1 for j = 1: q
-r1=^(l,7); t2 = 4(2,7)
^4(1,» = pTj + t2 4(2,7) = Tj + ат2 end else
for j = 1: q
т1 = Л(1,/); т2 = 4(2,7)
4(1,7) = т, + Рт2
4(2,7) = “Tj + т2 end end
end row.fast.rot
Этот алгоритм требует 4q флопов. Заметим, что формула
^(U /с],:) = row.fast.rot (Л([/ /с],:), а, Р, type)
осуществляет преобразование А *- F (/, к, а, £,)ТА соответствующего типа.
Хотя fastgivens и выбирает подходящий тип преобразования, коэффициент роста 1 4- у все же может достигать двух. Тем самым после 5 преобразований элементы матриц D и М могут увеличиться в 2s раз. Это означает, что по ходу процедуры быстрых вращений необходимо все время отслеживать значения диагональных элементов D, чтобы избежать переполнения. Такие нетривиальные дополнительные расходы способны ухудшить производительность. Тем не менее рост элементов М и D не является неуправляемым, поскольку всегда матрица MD~1/2 ортогональна. Свойства быстрых вращений по отношению к ошибкам округления соответствуют нашим ожиданиям от использования матриц Гивенса. Например, если вычислить Q = f l^M D"Y*2\ где М и D- вычисленные М и D, то Q ортогональна с рабочей точностью: HQTQ — I ||2 ~ u-
Задачи,
Выполните house для х = (1, 7, 2, 3, — I)7.
Пусть х и у-ненулевые векторы из R”. Дайте алгоритм нахождения такой матрицы Хаусхолдера Р, что вектор Рх кратен у.
Пусть хе(? и хх = |xj|е'°, 9gR. Предположим, что х / 0, и определим и = х 4- е'в ||х||2 ех. Покажите, что матрица Р — I — 2иин!ин и унитарна и Рх = — ^Hxl^^^
Используя матрицы Хаусхолдера, покажите, что det (/ 4- хут) = 1 4- хту, где х и ^-заданные и-векторы.
Пусть хе С2. Дайте алгоритм нахождения унитарной матрицы вида
Q =Q =eR,5 СeR,5 Сс2 4- |s|2 = 1,с2 4- |s|2 = 1,
Q =
Q =
eR,
5 С
eR,
5 С
с2 4- |s|2 = 1,
с2 4- |s|2 = 1,
такой, что вторая компонента вектора QH х нулевая.
Пусть х и у-единичные векторы в R”. Используя преобразования Гивенса, постройте алгоритм, вычисляющий такую ортогональную матрицу Q, что QT х = у.
Найдите с = cos(O) и s = sin (9), такие, что
5]ТГ 5" cj L12_5]ТГ 5" cj L12_130_ ’130_ ’
5]ТГ 5" cj L12_
5]ТГ 5" cj L12_
13
0_ ’
13
0_ ’
Допустим, что матрица Q = I 4- YTYT ортогональна, где YeRnxj; ТеRv ^-верхняя треугольная матрица. Покажите, что если Q+ = QP, где R = I — 2vvT/vr г-матрица Хаусхолдера, то Q+ может быть представлена в виде Q^ = I 4- У+ Т+ Y+, где У+ g R” х ^ + !); Т+ е R^ + 0 х (/ +0_ верхняя треугольная.
Опишите детальную реализацию алгоритма 5.1.4, предположив, что значимая часть у-го хаусхолдерова вектора, и0) (/ 4- 1: п\ хранится В А (у 4* 1: п, у). Поскольку У эффективно представляется в А, ваша процедура должна лишь построить матрицу W
Покажите, что если матрица S кососимметрична (ST = —5), то Q = (Z 4- S)(I — S)~1 ортогональна. (Q называется преобразованием Кэли матрицы 5.) Постройте такую матрицу 5 ранга 2, что для любого вектора х лишь первая компонента QTx будет, возможно, отлична от нуля.
Замечания и литература к § 5.1
Описанные в этом разделе преобразования широко используются как блоки, из которых собираются более сложные алгоритмы. Поэтому важно, чтобы на этом элементарном уровне вычисления выполнялись аккуратно. См. статью
Lawson С. 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.
Элементарные процедуры линейной алгебры (BLAS) детально описаны в пакете Linpack.
Хаусхолдеровы матрицы названы так в честь А. Хаусхолдера, который первым стал широко использовать их в численном анализе. Однако свойства этих матриц были известны достаточно давно. См.
Turnbull Н. W. and Aitken А. С. (1961). An 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.
Мы хотим еще раз повторить, что успешная реализация быстрых вращений требует нетривиальных затрат на контроль за процессом.
QR-разложение
В этом разделе мы покажем, как применить преобразования Гивенса и Хаусхолдера для получения различных разложений матрицы. Мы начинаем с QR-разложе-
ния, которое для т х «-матрицы А выглядит так:
A = QRS
где Q 6 Rmxm- ортогональная, R е Rm х п- верхняя треугольная матрица. В этом разделе мы предполагаем т ^ п. Если А имеет полный столбцовый ранг, то первые п столбцов матрицы Q образуют ортонормированный базис подпространства range (Л). Тем самым QR-разложение дает один из способов получения ортонор- мированного базиса для набора векторов. Существует несколько путей вычисления QR-разложения. Мы изложим методы, основанные на преобразованиях Хаусхолдера и Гивенса, а также на быстрых вращениях и блочных отражениях. Кроме того, мы обсуждаем процесс ортогонализации Грама-Шмидта и его модификацию, отличающуюся большей численной устойчивостью.
QR-разложение: преобразования Хаусхолдера
Мы начинаем с метода, использующего для получения QR-разложения преобразования Хаусхолдера. Суть алгоритма может быть пояснена на простом примере. Пусть т = 6, п = 5 и матрицы Хаусхолдера Нх и Я2 таковы, что
Н2НХА =X00000Н2НХА =X00000XXXXXXXXОXXхОXXхОхххОXххXXXXXXXXОXXхОXXхОхххОXхх
Н2НХА =
X
0
0
0
0
0
Н2НХА =
X
0
0
0
0
0
XXXX
XXXX
ОXXх
ОXXх
Оххх
ОXхх
XXXX
XXXX
ОXXх
ОXXх
Оххх
ОXхх
Займемся теперь элементами, выделенными жирным шрифтом. Найдем хаусхолде- рову матрицу Я3еК4х4, такую, что
Если Н3 = diag(/2, Н3\ то
" XXXXX
0хххх
н3н2нха =
00ххх
000хх
000хх
000хх
Выполнив п таких шагов, мы получаем верхнюю треугольную матрицу НпНп_х ... Hv А = R, так что, положив Q = Hx...Hn, имеем A = QR. Запишем изложенное формально.
Алгоритм 5.2.1 (QR-разложение: преобразования Хаусхолдера). По матрице Л е Rm х ”, т > п, следующий алгоритм находит хаусхолдеровы матрицы Нх, ... , Нп, такие, что при Q = Нх ... Нп матрица QТ А = R верхняя треугольная. При этом верхний треугольник матрицы R записывается на место верхнего треуголь-
ника матрицы А, а компоненты j-V 1:т /-го хаусхолдерова вектора хранятся в A (J + 1: т, j), j < т.
for j = 1: п
v^j'.m) = house (A (j:m, j))
A(J:m,j:n) = row.house (A (j:m,j:n), v(J:m)) if j < m
A(j 4- 1 :m,j) = v(j 4- 1 :m)
end end
Этот алгоритм требует In2^ — n/3) флопов.
Покажем наглядно, что именно записывается на место матрицы А. Если
v(j) = [0,, 0, 1, v^i, , ^^]г
есть у-й Хаусхолдеров вектор, то по завершении алгоритма
~ Гц
Г12
Пз
Г14
7*15
г22
^23
7*24
7*25
Гзз
7*34
7*35
А =
«г*
(3)
7*44
7*45
(2)
(3) ^5
(4)
Т55
Д2)
V6
,0)
Д4)
V6
45)
Если необходимо явно получить матрицу Q = Нх ... Нп, то это можно делать по ходу алгоритма, используя (5.1.5). Дополнительные затраты составляют 4(ш2« — — тп2 4- и3/3) флопов. и
Вычисленная верхняя треугольная матрица R есть точная R для некоторой близкой к А матрицы, в том смысле что ZT(А 4- Е) = R, где Z-некоторая ортогональная (точно) матрица, и \\Е ||2 ~ И ||2и.
QR-разложение: метод блочных отражений
В алгоритме 5.2.1 много операций уровня 2: умножений матриц на векторы и модификаций внешним произведением. Реорганизация вычислений с использованием введенного в §5.1.7 блочного представления произведений хаусхолдеровых матриц позволяет получить процедуру уровня 3. Идея состоит в применении преобразований Хаусхолдера группами, или кластерами, представленными в И^У-форме (см. § 5.1.7).
Для иллюстрации этой основной идеи рассмотрим маленький пример. Пусть п = 12 и «блочный параметр» г = 3. На первом шаге генерируются матрицы Хаусхолдера Ян Я2 и Я3, как в алгоритме 5.2.1. Но в отличие от алгоритма 5.2.1, где ЕЦ применяются сразу ко всей матрице А, мы применим Нх, Н2 и Н3 лишь к А (:, 1:3). После этого мы строим блочное представление НХН2Н3 = I 4- Wx Yx и осуществляем модификацию уровня 3:
Л(:,4:12) = (I 4- Wx У[) Л(:,4:12).
Далее генерируем, как в алгоритме 5.2.1, Н4, Н5 и Н6. Однако эти преобразования применяются к Л(:,7:12) лишь после нахождения блочного представления
Н4 Н5 Н6 = 1 + W2 Y J. Общая схема выглядит так:
X = 1; /с = О
while X ^ л
т = min(X 4- г — 1, п\. к = к + 1
Используя алгоритм 5.2.1, привести к верхнему треугольному виду
А(Х:т, Х;п\ построив хаусхолдеровы матрицы НК, ... , НТ. (5.2.1) Используя алгоритм 5.1.4, получить блочное представление I + Wk Yk =
= НХ ... Нт
А(Х:т, т 4- !:«) = (/ + И^ Yk)T А(Х:т, т 4- 1 :я)
X = т 4- 1
end‘
Структура нулей хаусхолдеровых векторов, задающих матрицы Нх, ... , Ht, влечет за собой равенство нулю первых X — 1 строк матриц Wk и Yk. Этот факт следует использовать в практической реализации.*
Запись (5.2.1) естественно рассматривать, разбив матрицу А на блочные столбцы
А = \_Аг, ... , An3, N = ceil (п / г),
где блочный столбец Ак обрабатывается на к-м шагу. На к-м шагу (5.2.1) строится блочное преобразование Хаусхолдера, обнуляющее поддиагональную часть Ак. После этого модифицируются остающиеся блочные столбцы.
Свойства (5.2.1) по отношению к ошибкам округления по существу те же, что и для алгоритма 5.2.1. Требуемое количество флопов несколько увеличивается вследствие необходимости вычислять матрицу W. Однако в результате нашей группировки почти все флопы связаны с перемножением матриц. Именно, доля операций уровня 3 в (5.2.1) составляет примерно 1 — 2/ N. Другие детали см. Bischof, Van Loan (1987).
QR-разложение: преобразования Гивенса
Вращения Гивенса также могут быть использованы для вычисления QR-разложения. Проиллюстрируем общую идею на примере 4 х 3-матриц:
X
X
X
' X
X
X
X
X
X
X
X
X
(3,4)
X
X
X
(2,3)
X
X
X
(1,2)
X
X
X
X
X
X
0
X
X
X
X
X
_ 0
X
X
_ 0
X
X
X
X
X "
’ X
X
X "
" X
X
X "
0
X
X
(3,4)
0
X
X
(2,3)
0
X
X
<^R
0
X
X
0
X
X
0
0
X
0
X
X
0
0
X
0
0
X
Здесь мы показали 2-векторы, определяющие соответствующие вращения Гивенса. Ясно, что если обозначить Gj j-e вращение в этом приведении, то матрица Q Т А = R будет верхней треугольной, где Q = Gx ... Gt и г-общее количество вращений. Для произвольных т и и имеем:
Алгоритм 5.2.2 (QR-разложение: преобразования Гивенса). По матрице AeRmxn, т^ и, следующий алгоритм записывает на место А верхнюю треугольную матрицу R = QT А, где Q ортогональна.
for у = 1: n
for z = m: — 1 ;j 4- 1
[G 5] = givens(^(z - l,y), AU,j1)
A(i — 1: i, j:n) = row.rot (A (z — 1: i, j:n), c, s) end
end
Этот алгоритм требует 3n2(m — n/3) флопов. Заметим, что пару (с, 5) можно, согласно (5.1.9), закодировать одним числом р, которое может быть сохранено на месте обнуляемого элемента A(i, j\ Операция типа x*-QT х может тогда быть реализована с использованием (5.1.10)-нужно только позаботиться о соблюдении надлежащего порядка следования вращений.
Для приведения А к верхнему треугольному виду годятся и другие последовательности вращений. Например, заменив операторы for в алгоритме 5.2.2 на
for i = т: — 1:2
for j = 1 :min{z — 1, n^
мы придем к построчному порядку появления нулей в матрице А.
Еще один изменяемый параметр нашей процедуры связан с плоскостями, в которых происходят обнуляющие каждый из элементов а^ вращения. Например, вместо поворота строки z — 1 и z для обнуления а- в алгоритме 5.2.2 мы могли бы использовать строки у и z, т. е.
for j = 1: п
for i = т: — 1 :у 4- 1
[с, 5] = givens (AU, у), A U, у))
A(\J Л, у: и) = row.rot(^([у z], j:n\ с, s) end end
QR-разложение хессенберговой матрицы с использованием вращений
Как пример использования вращений Гивенса для матриц с определенной структурой мы рассмотрим их применение к вычислению QR-разложения верхней хессенберговой матрицы. Общую идею мы снова иллюстрируем на маленьком примере. Предположим, что п = 6 и после двух шагов мы вычислили
<7(2, 3, 62)т <7(1, 2, 01)ГЯ =
XXXXXX
0XXXXX
00хххх
00хххх’
000ххх
0000хх
Тогда для обнуления элемента (4, 3) мы вычисляем G (3, 4, 03). Имеем
В целом мы имеем
Алгоритм 5.2.3 (QR-разложение хессенберговой матрицы). Если А е R" х п - верхняя хессенбергова матрица, то следующий алгоритм записывает на место А матрицу QT А = R, где Q - ортогональная, R -верхняя треугольная матрица. Q = Gx ... Gn-t есть произведение вращений Гивенса, причем Gj имеет вид Gj = G(j,j 4- 1, 67).
for j = 1: п — 1
[с, s] = givens (Л (j, j>, A(j+ l,j)
AU-j + h j:«) = row.rot ^AU'-j + 1, ЙЙ, c, s)
end
Алгоритм требует около Зи2 флопов.
QR-разложение: быстрые вращения
Описанные в § 5.1.13 быстрые вращения могут быть использованы для вычисления (М, ^-представления матрицы Q. Именно, если М - невырожденная, D- диагональная матрица, причем матрица МТ А = Т-верхняя треугольная, МтМ = = D-диагональная, то матрица Q = MD"Yf2 ортогональная, a QT А = D12 Т= R верхняя треугольная. Вспоминая выписанные в §5.1.13 функции fastgivens и fast.row.rot, получаем следующий аналог QR-разложения методом вращений:
Алгоритм 5.2.4 (QR-разложение: быстрые вращения). По матрице AeRmxn, m> п, следующий алгоритм вычисляет невырожденную матрицу М е Rm х m и положительный вектор d(l:mY такие, что матрица МТА = Т верхняя треугольная и МТМ = = diag^, ... , dm). Матрица Т записывается на место матрицы А.
for i = 1: п
d(i) = 1
end
for j= 1: n
for i = m: — 1 : j 4- 1
[a, p, type^ = fastgivens (A (z — 1: z, j). d(i — 1: z))
А (i — 1: z, j: n) = fastrow.rot (A (z — 1: z, j: nY a, p, type) end'
end
Этот алгоритм требует In2 (m — n/3) флопов. Как отмечалось в предыдущем разделе, в алгоритмах быстрых вращений (подобных вышеприведенному) необходимо принимать меры предосторожности против переполнения. Это означает, что если элементы матриц М, D и А становятся большими, необходимо периодически проводить перемасштабирование.
Применение быстрых вращений является привлекательным, если необходимо получить QR-разложение ленточной матрицы с узкой лентой, ввиду отсутствия необходимости вычисления квадратных корней. (По этой же причине в §4.3.7 мы предпочли LDLF разложению Холецкого в случае матриц с узкой лентой.) Более конкретно, если А е Rm х п имеет верхнюю ширину ленты q и нижнюю ширину ленты р, то Q т А = R имеет верхнюю ширину ленты р 4- q. В этом случае метод вращений для QR-разложения требует около О(пр(р 4- q)) флопов и О (пр) вычислений квадратных корней. Таким образом, если р, q « п, на вычисление квадратных корней приходится значительная доля общего количества вычислений.
Свойства QR-разложения
Описанные выше алгоритмы «доказывают» существование QR-разложения. Здесь мы выявим связь между столбцами матрицы Q и подпространствами range (Л), range (Л)1 и рассмотрим вопрос о единственности.
Теорема 5.2.1. Если A = QR есть QR-разложение матрицы АеКтхИ, имеющей полный столбцовый ранг, и А = \_ах, •• , an^Q = E^i» ••• » qml-разбиения на блочные столбцы, то
span ^aY, ... , ак} = span {qx, ... , qk}, к = 1: n.
В частности, если QY = Q(1: т, 1 :п) и Q2 = 2(1 ’.т, и + 1: т\ то range(Л) = range(2i), range(Я J1 = range (Q2)
и A = Qv Ry , где Rr = R(l:n, 1:n\
Доказательство. Сравнивая k-e столбцы в A = Q R, находим, что к
«к= r,k g,espan {^qkY(5.2.2)
i= 1
Тем самым span ^aY, ... , ak} ^ span ^qY, ... , qk}. Однако из гапк(Л) = n следует, что span {£4,... , ак^ имеет размерность к, и поэтому должно совпадать с span ^qY, ... , qk}. Доказательство остающейся части теоремы тривиально. Матрицы QY = Q (1 :т, 1 -.п) и Q2 = Q (1 :т, п + 1 :т) легко вычисляются по факторизованному представлению Q.
Теорема 5.2.2. Пусть AERmxn имеет полный столбцовый ранг. Тогда «усеченное» QR-разложение
A = QYRYs
где QiGRmx" имеет ортонор мированные столбцы, a Rx верхняя треугольная матрица с положительными диагональными элементами, будет единственным. Далее Rv = GT, где G - нижнетреугольный множитель в разложении Холецкого матрицы АТА.
Доказательство. Так как А Т А = (QY Rt )г (QY RY) = R? RY, мы видим, что G = Ri является'множителем Холецкого матрицы Ат А. По теореме 4.2.5 этот множитель единствен. Поскольку Qx = A Ri1, QY также единствен. Во всех случаях, когда нам необходимо обратиться к «усеченному» QR-разложению какой-нибудь матрицы Л, как в теореме 5.2.2, мы будем записывать А = QYRY.
Классический метод Грама-Шмидта
Мы переходим к обсуждению двух альтернативных методов прямого вычисления разложения A = Q1R1. Если гапк(Л) = л, то уравнение (5.2.2) может быть разрешено относительно qk\ / к- 1\
Qk = I «к - Z rik Qi )/гкк-
Таким образом, qk можно рассматривать как единичный в 2-норме вектор, направ-
ленный вдоль
к-1
Zk = ak~ £ Гхк Qi»
i=l
где для обеспечения zkespan {^t,... , qk-^1 мы выбираем
Ч = чТак> /=1:к —1.
Это приводит к классическому алгоритму Грама-Шмидта (CGS) для вычисления ^ = Qi^.
for к = 1: п
Л(1 :Л — 1, fc) = Q(1 :m, 1:fc — 1)г А(1:т, к)
z = A(l:m, k) — Q(l:m, 1:к — 1) R(l:k- 1, к)(5.2.3)
R(k, к) = ||z||2
Q(\;m, k) = z/R(k, к).
end
На к-м шаге CGS генерируются k-e столбцы матриц Q и R.
Модифицированный метод Грама-Шмидта
К несчастью, классический метод Грама-Шмидта отличается крайне плохими численными свойствами. В типичном случае происходит сильная потеря ортогональности вычисленных векторов q{. Любопытно, что другая организация этого же вычисления, известная под названием модифицированный метод Грама-Шмидта (MGS), дает куда лучшую с вычислительной точки зрения процедуру. На к-м шаге MGS находятся к-й столбец матрицы Q (обозначаемый qk) и к-я строка матрицы R (обозначаемая гк\ Для вывода метода MGS определим матрицы Awe eKmxtn-k^ как
А — £ qt r{ = £ qt г{ = [0 Л***].(5.2.4)
1=1i = k
Отсюда следует, что если
Aw = [2 в ]
1 п — к ’
то rkk = \\z II2 у Qk = z / гкк и (^k+i ••• rkn) = ql В. Затем вычисляем внешнее произведение А(к + 1) = В — qk (гкЛ+1 ... гкп) и переходим к следующему шагу. Этим к-й шаг MGS полностью описан.
Алгоритм 5.2.5 (Модифицированный метод Грама-Шмидта). По матрице AERmxn, rank (Л) = п, следующий алгоритм вычисляет разложение А = Qi Ri> где столбцы матрицы QYERmxn ортонормированы, а матрица RYERnxn верхняя треугольная.
for к = 1: п
R(k, А) = ||Л(1 :m, k)||2
Q(l;m, к) = А(\:т, k)/R(k, к)
for j = к + 1: n
R(k, j) = kV A(l :m,j)
A(l :m, j) = A(l :m, j) - 0(1 :m, k) R(k, j) end
end
Алгоритм требует 2т п2 флопов. Записать и Qx, и Rx на место матрицы А невозможно; как правило, вычисления организуют таким образом, что на место А записывается бх, а матрица Rx хранится в отдельном массиве.
Вычислительные затраты и точность
Если необходимо построить в range (А) ортонормированный базис, то при использовании метода Хаусхолдера требуется 2т п2 — 2п3 /3 флопов для получения Q в факторизованном виде, и еще 2т п2 — 2п3 /3 флопов для вычисления первых п столбцов Q. Таким образом, для задачи нахождения ортонормированного базиса в range (Л) MGS примерно в два раза эффективнее, чем ортогонализация по Хаусхолдеру. Однако было показано (Bjorck 1967b), что вычисленная методом MGS матрица Qx = [^ , ... , #„] удовлетворяет
Q1Q1 = I + EmGS 1 II^MGS 111 ~ НХ2(Л),
в то время как в методе Хаусхолдера соответствующий результат имеет вид
QXQx = I^EH, ||£н||2^и.
Поэтому если для нас критична ортонормированность, метод MGS следует применять для вычисления ортонормированного базиса лишь в тех случаях, когда исходные векторы достаточно независимы.
Пример 5.2.1. Применение модифицированного метода Грама-Шмидта к матрице
х2(/4)« 1.4 103,
с 6-разрядной десятичной арифметикой дает
1.00000 о
1^1^] =1^1^] =0.001 -707107
1^1^] =
1^1^] =
0 0.707100 _
Задачи
Адаптируйте алгоритм QR-разложения методов Хаусхолдера на случай ленточной матрицы А е Rm х п с нижней шириной ленты р и верхней шириной ленты q.
Модифицируйте алгоритм QR-разложения методом Хаусхолдера так, чтобы он вычислял разложение А = QL, где L нижняя треугольная, a Q ортогональная матрица. Считайте, что матрица А квадратная. Функция вычисления хаусхолдерова вектора г = house (х) должна быть при этом переписана так, чтобы все компоненты вектора (/ — 2vvT/vTv) х, кроме последней, равнялись нулю.
Модифицируйте алгоритм QR-разложения методом Гивенса так, чтобы нули вносились в матрицу по диагоналям. То есть элементы обнуляются в порядке (т, 1), (т — 1, 1), (т, 2), (т — 2, 1), (т — 1, 2), (т, 3) и т. д.
Адаптируйте алгоритм QR-разложения методом быстрых вращений для случая трехдиагональной п х и-матрицы А. Считайте, что поддиагональ, диагональ и наддиагональ матрицы А хранятся в с(1 :п — 1), я(1:/?),/(!:п — 1), соответственно. Организуйте вычисления таким образом, чтобы на место этих векторов записалась бы ненулевая часть матрицы Т.
Пусть LeRmxn, т^ /?,-нижняя треугольная матрица. Покажите, как можно использовать матрицы Хаусхолдера Hv ..., Нп для нахождения такой нижней треугольной матрицы LxeRnx\ что
L
Н ...HXL =1
L о J
Подсказка: Для случая 6x3 второй шаг связан с нахождением такой матрицы Я2, что
х 0 0
"х 0 (Г
х х 0
х х 0
X X X
X X X
2 х х 0
=
х 0 0
х х 0
х 0 0
_х х 0_
_х 0 0_
при условии, что строки 1 и 3 не изменяются.
5.2.6. Покажите, что если
R и* 1 к
к
А =,
Ь =
_ 0 v J т к
_ dj т — к
к п — к
и матрица А имеет полный ранг, то min ||^jc — />||2 = Н^Нг-(У^/П^Пг)2-
Пусть AeRn х ”, D = diag (dv, .... dJeR” х ”. Укажите, как построить такую ортогональную матрицу Q, что матрица Q1 А — DQT = R является верхней треугольной. Не заботьтесь об эффективности-это просто упражнение на манипуляцию с QR-разложением.
Замечания и литература к § 5.2
Идея использования преобразований Хаусхолдера для решения задачи наименьших квадратов была предложена в
Householder A. S. (1958). “Unitary Triangularization of a Nonsymmetric Matrix”, J. ACM 5, 339-342.
Проработка практических деталей была проведена в
Businger Р. and Golub G.H. (1965). “Linear Least Squares Solutions by Householder Transformations”, Numer. Math. 7, 269-76. См. также HACLA, pp. 111-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.H. (1969). “Matrix Decompositions and Statistical Computation”, in Statistical Computation, 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. (1971). “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. Р., and de Hoog F. R. (1986). “QR Factorization of Toeplitz Matrices”, Numer. Math. 49, 81 -94.
Задача наименьших квадратов: случай полного ранга
Рассмотрим задачу нахождения вектора х, удовлетворяющего уравнению Ах = = Ь, где матрица данных А еRmхп и вектор наблюдений bERm заданы, причем т > п. Когда уравнений больше, чем неизвестных, мы говорим, что система Ах = b переопределена. Обычно переопределенная система не имеет точного решения, поскольку b должен принадлежать range (Л), являющемуся собственным подпространством Rm.
Чтобы все же как-то решить задачу, попытаемся минимизировать || Ах — 6||р для некоторого подходящего р. Оптимальные решения будут различными в разных нормах. Например, если Л = [1 1 1]г, b = (Ьг Ь2 Ь3 ) Т, где Ьх Ь2 > Ь3 > 0, то можно проверить, что
р = 1 xopt = b2,
р = 2 xopt = (bt + Ь2 + Ь3)/ 3, р = оо ^xopt = (br + b3^2.
Минимизация в 1-норме и в оо-норме затруднена тем, что функция/(х) = || Лх — 6||р не дифференцируема для этих значений р. Несмотря на это, в этой области был достигнут существенный прогресс, и для минимизации в 1-норме и в оо-норме имеется несколько хороших методик. См. Bartels, Conn, Sinclair (1978), Bartels, Conn, Charalambous (1978).
В отличие от минимизации в произвольной /7-норме, задача наименьших квадратов (задача LS)
(5.3.1)(5.3.1)min ||Ах — /?||2 vgR”
(5.3.1)
(5.3.1)
лучше поддается решению по двум причинам:
\|/(х) = -||Ах — b||2-дифференцируемая функция х, поэтому значение х в точ
ке минимума удовлетворяет градиентному уравнению V \р (.v) = 0. Это уравнение оказывается легко строящейся симметричной линейной системой, положительно определенной, если А имеет полный столбцовый ранг.
2-норма сохраняется ортогональными преобразованиями. Это означает, что мы имеем право искать такую ортогональную матрицу Q, что эквивалентная задача минимизации ||(QTА)х— (Qr/>)||2 решается «легко».
В этом разделе мы проследим эти два подхода к решению для случая, когда А имеет полный столбцовый ранг. Будут подробно рассмотрены и сопоставлены методы, основанные на нормальных уравнениях и QR-разложении.
Следствия полноты ранга
Пусть xgR", zeR\ aeR. Рассмотрим равенство
||Л(х + az) — ЬЦ2 = ЦАх — ЬЦ2 Ч- 2аzTАТ(Ах — b) + а2ЦАгЦ2,
где AERmx”, bERm. Если х является решением задачи LS (5.3.1), то должно выполняться Ат (Ах — Ь^ = 0. В противном случае, взяв z = — Ат(Ах — Ь) и сделав а достаточно малым, мы сможем получить противоречащее неравенство ||Л(х + + az) — /?||2 < || Ах — 6||2 . Можно также заключить, что если х и х + az являются решениями задачи LS, то ze null (Л).
Таким образом, если А имеет полный столбцовый ранг, задача LS имеет
единственное решение xLS, удовлетворяющее симметричной положительно определенной линейной системе
АТ AxLS = АТЬ.
Составляющие ее уравнения называются нормальными уравнениями. Поскольку V \|/(-х) = А т(Ах — Ь), где \|/(х) = ^1МХ ~ ^112, мы видим, что решение нормальных уравнений эквивалентно решению градиентного уравнения V у = 0.
Назовем
rLS — b — AxLs
минимальной невязкой и будем использовать обозначение
Pls = II AxLs ~ ^II2,
для ее величины. Заметим, что если pLS мало, мы можем «предсказать» b по столбцам А.
До сих пор мы предполагали, что А е Rm х п имеет полный столбцовый ранг. Это предположение будет отброшено в § 5.5. Однако даже если гапк(Л) = п, мы можем ожидать неприятностей в наших процедурах в случае, когда А почти неполноранговая.
Оценивая качество вычисленного решения задачи LS, следует иметь в виду два важных вопроса:
Насколько близко xLS к xLS7
Насколько мало fLS = b — A $LS по сравнению с rLS = b — A xLS ?
Относительная важность этих двух критериев меняется от приложения к приложению. Во всяком случае, важно понимать, как возмущения А и b воздействуют на xLS и rLs • Интуиция подсказывает нам, что если столбцы А почти линейно зависимы, эти величины могут оказаться весьма чувствительными к возмущениям. Чтобы внести ясность в эти вопросы, нам нужно распространить понятие обусловленности на прямоугольные матрицы.
Обусловленность прямоугольных матриц
При анализе задачи наименьших квадратов естественно работать в 2-норме. Напомним (см. § 2.7.3), что в 2-норме обусловленность квадратной невырожденной матрицы равна отношению наибольшего сингулярного числа к наименьшему. Для прямоугольных матриц с полным столбцовым рангом мы примем это свойство за определение:
АЕКтхп,АЕКтхп,rank (Л) = п=>к2(А) =rank (Л) = п=>к2(А) =^тах (^ )^min^) '^тах (^ )^min^) '
АЕКтхп,
АЕКтхп,
rank (Л) = п=>к2(А) =
rank (Л) = п=>к2(А) =
^тах (^ )
^min^) '
^тах (^ )
^min^) '
Если столбцы А почти линейно зависимы, то и2(А) велико. Следующий пример дает понять, что для плохо обусловленных задач LS их решения и минимальные невязки весьма чувствительны к возмущениям.
Пример 5.3.1. Пусть
А =10110"6, 5 Л =0000, Ь =1000010"81А =10110"6, 5 Л =0000, Ь =1000010"81&Ь =&Ь =о о оо о о
А =
1
0
1
10"6
, 5 Л =
0
0
0
0
, Ь =
1
0
0
0
0
10"8
1
А =
1
0
1
10"6
, 5 Л =
0
0
0
0
, Ь =
1
0
0
0
0
10"8
1
&Ь =
&Ь =
о о о
о о о
и пусть xLS и xLS минимизируют || Ах — b||2 и || (А + 8 А)х — (Ь + 8Ь)Ц2 соответственно. Тогда
xls —xls —00xls =xls =0-0.9999-10"20.9999-10°0-0.9999-10"20.9999-10°0.9999-104 ’ rLS0.9999-104 ’ rLS
xls —
xls —
0
0
xls =
xls =
0
-0.9999-10"2
0.9999-10°
0
-0.9999-10"2
0.9999-10°
0.9999-104 ’ rLS
0.9999-104 ’ rLS
Поскольку х2(Л) = Ю6, мы имеем
II Xls ~ Xls IIll-visll2II Xls ~ Xls IIll-visll20.9999- 104 <х2 (А)20.9999- 104 <х2 (А)2Il S Л ||2Mll2Il S Л ||2Mll21012-10"81012-10"8
II Xls ~ Xls IIll-visll2
II Xls ~ Xls IIll-visll2
0.9999- 104 <х2 (А)2
0.9999- 104 <х2 (А)2
Il S Л ||2Mll2
Il S Л ||2Mll2
1012-10"8
1012-10"8
и
Ikis -^Ц;^1|5ЛЦ2 = 10б.10-8
ИИ22М112
На примере 5.3.1 мы наблюдаем, что чувствительность xLS к возмущениям зависит, видимо, от и2(Л)2. В конце этого раздела мы разовьем теорию возмущений для задачи LS и применим ее к оценке процедур решения, основанных на нормальных уравнениях и QR-разложении. К описанию этих процедур мы сейчас переходим.
Метод нормальных уравнений
Для решения задачи LS полного ранга наиболее часто используемая процедура- это метод нормальных уравнений.
Алгоритм 5.3.1 (Нормальные уравнения). По матрице A eR”1^, такой, что rank (Л) = = «, и вектору beRm алгоритм вычисляет решение xLS задачи LS min ||Ах — Z>||2, где bERm.
Вычислить нижний треугольник матрицы С = АТ А.
d = Ат b
Вычислить разложение Холецкого С = GGT.
Решить систему Gy = d и Gт xLS = у.
Алгоритм требует (т + «/3)«2 флопов. Подход с использованием нормальных уравнений удобен тем, что он опирается на стандартные алгоритмы: разложение Холецкого, перемножение матриц, умножение матрицы на вектор. В случае m » п привлекательно также ужимание m х «-матрицы данных А в существенно меньшую п х «-матрицу С = Ат А.
Займемся вопросом о точности вычисленного методом нормальных уравнений решения £IS. Для ясности предположим, что ошибки округления отсутствуют при формировании с = АтА и d = Ат Ь. (В типичном случае используемые в этих вычислениях скалярные произведения вычисляются в режиме накопления, так что наше допущение не является резким отклонением от истины.) Из уже известных нам сведений о численных свойствах разложения Холецкого (ср. § 4.2.7) следует, что
(АТА + E)xLS = ATb,
где ||£||2 ® и||Лт||2 |М||2 ~ u П^г^112, так что мы можем ожидать
х LS 2/ аТ ах/ аС О
—« их2(Я’ А) = их2(Л)2.(5.3.2)
ll*isll2
Другими словами, точность вычисленного методом нормальных уравнений решения зависит от квадрата числа обусловленности. Это, как видно, согласуется с примером 5.3.1. Дальнейшие уточнения см § 5.3.9.
Пример 5.3.2. Следует иметь в виду, что формирование АТ А может повлечь за собой серьезные потери информации. Пусть
А =А =110"30110"3012
А =
А =
1
10"3
0
1
10"3
0
О , Ь = 10 3
Ю"3Ю"3
Тогда х2 (А) % 1.4- 103, xLS = (1 1)т, pLS = 0. Выполнение метода нормальных уравнений в десятичной арифметике с усечением (/ = 6) вызывает ошибку при делении во время процесса, так как матрица
ЩАТ Л) = ' '
является вырожденной. С другой стороны, в семиразрядной арифметике с усечением .vzx = = (2.000001, 0)т и PLS-xU2/^d2*ux2(>l)2.
Решение задачи LS через QR-разложение
Пусть задана матрица А е Rm х п, m х п, и вектор b е Rm. Предположим, что вычислена такая ортогональная матрица QeRmxm, что матрица
(5.3.3)
является верхней треугольной. Если
6THJ6THJпm — п’
6THJ
6THJ
то
П^* - А||^ - 110т^* - 0т*1Н - ЦК, * - rlli + 11<Д11
для любого xgR”. Ясно, что если rank (Л) = rank(R1) = п, то xLS определяется из верхней треугольной системы RY xLS = с. Заметим, что
PbS = ||^||2 -
Мы делаем вывод, что задача LS полного ранга может быть легко решена, если мы вычислили QR-разложение матрицы А. Детали зависят от того, какая именно процедура QR-разложения была использована. Если используются матрицы Хаусхолдера и QT применяется к b в факторизованном виде, то мы получаем
Алгоритм 5.3.2 (Решение задачи LS преобразованиями Хаусхолдера). По матрице AeRmxn полного столбцового ранга и вектору beRm следующий алгоритм вычисляет вектор xLSeR", такой, что ||ЛхЛ5 — ^||2 достигает минимума.
Применив алгоритм 5.2.1, записать на место А ее QR-разложение.
for / = 1:п
{Применить j-e преобразование Хаусхолдера.}
<0 = 1; vU + 1:^1) = AU -V \:mj)
bU-^ = row.house(Z>(7:^), r(7;m)) end
Решить систему Щ;гц 1 *^xLS = b(l:n) обратной подстановкой.
Этот метод решения задачи LS полного ранга требует 2/72 (т — п/3) флопов. При этом 0(тп) флопов на модификацию b и О (л2) флопов на обратную подстановку несущественны по сравнению с объемом работы, требующимся для факторизации матрицы А.
Можно показать, что вычисленное xLs является точным решением задачи
min ||(Л + 5Л)^-(/? + 5^)||2,(5.3.4)
где
||8Л||г ^ (6m - Зп + 41) пи |MIIf + O(u2)(5.3.5)
и
||8Z?||2 ^ (6т - Зп + 40) пи \\b\\2 + О(и2).(5.3.6)
Эти неравенства устанавливаются в книге Лоусона и Хенсона (SLS, рр. 90 и далее). Они показывают, что xLS удовлетворяет «близкой» задаче LS. (Мы не можем обратиться к относительной ошибке в xLS, не имея теории возмущений для задачи LS, о которой (теории) мы будем говорить ниже.) Отметим, что аналогичные результаты имеют место при использовании преобразований Гивенса для QR-разложения матрицы.
Срыв в случае «почти неполноранговости»
Так же как и метод нормальных уравнений, метод Хаусхолдера решения задачи LS аварийно обрывается на стадии обратной подстановки, если гапк(Л)<«. С численной точки зрения, неприятностей можно ожидать при х2 (А) = х2 (R) « 1 / и. Напомним, что в методе нормальных уравнений завершение факторизации Холец- кого проблематично уже при х2(Л) порядка l/Vu. (См. пример 5.3.2.) Отсюда вывод у Лоусона и Хенсона (SLS, рр 126-127), что при фиксированной машинной точности ортогонализация Хаусхолдера позволяет решать более широкий класс задач LS.
О методе MGS
Обратим внимание на то, что в отличие от ортогонализации Хаусхолдера метод MGS не строит ортонормированный базис для range (Л). Тем не менее добываемой в нем информации достаточно для решения задачи LS. Именно, MGS вычисляет разложение A = QtRt, где QteRmxn имеет ортонормированные столбцы, а RYERnx>I верхняя треугольная. Тем самым система нормальных уравнений (АТА)х = Атb приводится к верхнетреугольному виду Rxx = Q\b.
Метод MGS может быть легко приспособлен к решению задачи LS и так же устойчив, как и метод Хаусхолдера. См. Bjorck (1967b). Однако затраты в MGS чуть выше, поскольку он все время работает с m-векторами, в то время как в QR-разложении Хаусхолдера длина вектора уменьшается по ходу процесса.
Решение задачи LS методом быстрых вращений
Быстрые вращения также могут быть использованы для решения задачи LS. Допустим, что матрица Мт М = D диагональная, а
Мт А =Мт А =ппm — пm — п
Мт А =
Мт А =
п
п
m — п
m — п
верхняя треугольная. Есливерхняя треугольная. ЕслиМТЬ =МТЬ =пт — п'пт — п'тотоЦАх-ЬЩ = ||£>"1/2 Мг Лх — D"1/2 МТЬЩ =ЦАх-ЬЩ = ||£>"1/2 Мг Лх — D"1/2 МТЬЩ =
верхняя треугольная. Если
верхняя треугольная. Если
МТЬ =
МТЬ =
п
т — п'
п
т — п'
то
то
ЦАх-ЬЩ = ||£>"1/2 Мг Лх — D"1/2 МТЬЩ =
ЦАх-ЬЩ = ||£>"1/2 Мг Лх — D"1/2 МТЬЩ =
для любого xeR". Ясно, что xls получается решением невырожденной верхней треугольной системы ^ х = с.
Можно показать, что вычисленное таким путем решение xLS является точным решением близкой задачи LS в смысле (5.3.4)-(5.3.6). Это может показаться удивительным, поскольку по ходу вычислений могут появиться большие числа. Элемент масштабирующей матрицы D может удваиваться после каждого шага метода быстрых вращений. Однако увеличение элементов D должно быть точно скомпенсировано увеличением элементов М, так как матрица D "1/2 М ортогональна на протяжении всего вычисления. Именно этот феномен позволяет благополучно провести анализ ошибок.
Однако, как обсуждалось в §5.1.13, возможность роста элементов требует постоянного контроля за матрицей D для избежания переполнения. Ввиду нетривиальных издержек такого контроля итоговый алгоритм будет, вероятно, медленнее, чем подход Хаусхолдера, и, безусловно, более сложен в реализации.
Чувствительность задачи LS к возмущениям
Здесь мы построим теорию возмущений, которая поможет нам провести сравнение метода нормальных уравнений и QR-разложения для решения задачи LS. Нижеследующая теорема изучает воздействие изменений в А и b на решение задачи LS и соответствующую невязку. Тем самым выявляется обусловленность задачи LS.
В ходе анализа нам понадобятся два легко устанавливаемых факта.
|М||2||(ЛгЛ)-1Лг||2 = х2(Л),(5.3.7)
1М||Ц|(ЛгЛ)-1||2 = х2(Л)2.
Эти равенства можно проверить, воспользовавшись сингулярным разложением.
Теорема 5.3.1. Пусть х, г, х, г удовлетворяют
||Лх — Z>||2 = min,г = b — Ах,
||(Л + 8 А)^ — (Ь + 8 6)|| 2 = min,г = (Ь + 8b) — (А + 8 А)^,
где А и 8 А принадлежат Rw хп, т> п, 0 b и 8 b принадлежат Rm. Если
J ||6Л||2||66||2)о„(Л)
I 1И1211^112 J аДЛ)
S^ = W/X’
где pLS = PxLS-Z>||2, то
l^xllzМ2l^xllzМ22X2JM) cos(0)2X2JM) cos(0)+ tg(0)x2(^)2 У + 0(е2),+ tg(0)x2(^)2 У + 0(е2),(5.3.8)(5.3.8)
l^xllzМ2
l^xllzМ2
2X2JM) cos(0)
2X2JM) cos(0)
+ tg(0)x2(^)2 У + 0(е2),
+ tg(0)x2(^)2 У + 0(е2),
(5.3.8)
(5.3.8)
(5.3.9)(5.3.9)II 11
(5.3.9)
(5.3.9)
———^ < е(1 + 2х2(Л)) min(l,m - п) + 0(е2).
Доказательство. Определим Е и/равенствами Е =§ А/е, f = Ъb/в. По предположению ||5Л||2 < оДА), так что по теореме 2.5.2 имеем гапк(Л + tE) = п для всех Ze [О, е]. Отсюда следует, что решение x(t) уравнения
(А + tEf^A + z£) x(z) = (А + tEY (b + Z/) (5.3.10)
непрерывно дифференцируемо для всех Ze[O, е]. Поскольку x = x(0), 5t = х(е), имеем
х = х + ех(0) + О^в2).
Предположения b ф 0 и sin (6) ^ 1 гарантируют, что х отличен от нуля, так что
(5.3.11)(5.3.11)11^-^112 _ Н*(0)Н2М2 6 ||Х||2
(5.3.11)
(5.3.11)
Чтобы оценить ||х(0)||2, продифференцируем (5.3.10) и положим Z = 0. Это дает ЕТ Ах + Ат Ex + АтАх(0) = ATf + Ет Ь,
т. е.
х(0) = (АТА)'1 AT(f— Ex) + (АТА)~1 Ет г.(5.3.12)
Подставив это в (5.3.11), беря соответствующие нормы и используя легко проверяемые неравенства ||/||2 ^ ||£||2, ||£||21МН2, получаем
11^<2Цх||211^<2Цх||2<е { ||Л||2 щл^л)-1 лт||2 (<е { ||Л||2 щл^л)-1 лт||2 (1И12 №1И12 №
11^<2Цх||2
11^<2Цх||2
<е { ||Л||2 щл^л)-1 лт||2 (
<е { ||Л||2 щл^л)-1 лт||2 (
1И12 №
1И12 №
IMII1 ||x||22>||6||!-pis,(5.3.7),<е f х2(^) ( —^— + 1 ) + х2(Л)2 Sm^ } + О(е2).t \ cos(6)/cos(6) Jдоказано.IMII1 ||x||22>||6||!-pis,(5.3.7),<е f х2(^) ( —^— + 1 ) + х2(Л)2 Sm^ } + О(е2).t \ cos(6)/cos(6) Jдоказано.
IMII1 ||x||22>||6||!-pis,
(5.3.7),
<е f х2(^) ( —^— + 1 ) + х2(Л)2 Sm^ } + О(е2).
t \ cos(6)/cos(6) J
доказано.
IMII1 ||x||22>||6||!-pis,
(5.3.7),
<е f х2(^) ( —^— + 1 ) + х2(Л)2 Sm^ } + О(е2).
t \ cos(6)/cos(6) J
доказано.
+ „^ II 1М1122Н(^г^)-1112} +О(е2).IMII2IWI2J
Так как Ат(Ах — Ь) = 0, Ах ортогонален к Ах — Ь, поэтому .l|Z’-^x||UlMx|li = ll^ll22.
Таким образом, откуда, используя Н^-х||2 Цх||2
Тем самым (5.3.8)
Чтобы доказать (5.3.9), введем дифференцируемую вектор-функцию г(0:rW^b + tn-U + tE^f)
и заметим, что г = г(0) и г = г(е). Используя (5.3.12), можно показать, что г(0) = (/-т4(ЛгЛ)'1Лг) (/-Ех)-А(.АТАГ1ЕТГ.
Поскольку ||г - г|| 2 = е ||г(0)||2 + 0(е2), имеем
E^ = ElMh + 0(E2^HL Н/’Ь
<е( ||/-Л(^гЛ)-1Лг||2(1 + ^кг^2) +
+ M^^)-1^ ML лтг Г +0(е2).
Неравенство (5.3.9) следует теперь из того, что
М112 1М2 = МН2 1М + £||2 х2(Л)||£||2,
PlsH^-^^)"1^)^^ 11(/^ИИ2 '
и
||(/ — (АТ А)'1 :АТ ||2 = min(m — п, 1).
Интересной отличительной чертой оценки (5.3.8) является множитель
tg(9)x2(^)2 = —^====х2(Я)2.Vll^Hi-Pls
Таким образом, в задачах с ненулевой невязкой мерой чувствительности xLS к возмущениям служит квадрат числа обусловленности. По контрасту с этим чувствительность самой невязки зависит от х2(Л) только лишь линейно. Все это подтверждается примером 5.3.1.
Сравнение метода нормальных уравнений и QR-разложения
Поучительно провести сравнение метода нормальных уравнений и QR-разложения для решения задачи LS. Вспомним ряд важных моментов проведенного обсуждения:
Чувствительность решения задачи LS к возмущениям примерно пропорциональна величине х2(Л) + рЬ5х2(Л)2.
Метод нормальных уравнений дает xLS, относительная ошибка которого зависит от квадрата числа обусловленности.
Подход, использующий QR-разложение преобразованиями Хаусхолдера, решает близкую задачу LS и поэтому дает решение, относительная ошибка которого примерно равна и(х2(Я) + Рь5х2(Л)2).
Таким образом, мы можем заключить, что если pLS мало, а х2(Я) велико, метод нормальных уравнений не решает близкую задачу и поэтому полученное им решение будет, как правило, менее точным, чем при хаусхолдеровом подходе. Напротив, оба метода дадут примерно в одинаковой степени неточные результаты при применении к плохо обусловленным задачам с большими невязками.
Упомянем напоследок два других фактора, играющих роль в споре QR против нормальных уравнений:
Арифметические затраты на решение нормальных уравнений при m»п примерно вдвое меньше; слабее также и требования к объему памяти.
Хаусхолдерово QR-разложение применимо к более широкому классу матриц, потому что процесс Холецкого для Аг А срывается еще до начала обратной подстановки для QTА = R.
Уж по крайней мере это обсуждение должно вас убедить, как труден бывает выбор «верного» алгоритма!
Задачи
Пусть АТ Ах = АТ Ь, (Ат А 4-F)x = Атд, 2 || F || 2ап(А)2. Покажите, что если г =
= b — А х, г = b — А х, то г — г = Ц — А(АТ А + F)-1 Ат)Ах, и, как следствие этого,
||r - r|| 2 < 2х2(^)|И|2.
И II 2
Пусть А е Rmxn, m > п, yeR". Построим матрицу А = [Л у] е Rmx,”+Ч Покажите, что ох(А) ^ ох(А) и а«+1 (^) ^ оп(А). Тем самым число обусловленности разве что возрастает при добавлении к матрице еще одного столбца.
Пусть AeRmxn, weR". Определим
Покажите, что сп(В)^ on( J) и с^ (В) ^ VIM II 2 + II VI 2 • Таким образом, при добавлении еще одной строки число обусловленности матрицы может как увеличиться, так и уменьшиться.
Постройте алгоритм решения задачи LS, использующий метод MGS. Дополнительных двумерных массивов не потребуется, если записывать г^ на место а^ при i ^ j и вычислять ql b по мере построения ортонормированных qt.
(Cline 1973). Пусть AeRmxn имеет ранг п, и гауссово исключение с частичным выбором ведущего элемента используется для вычисления разложения РА = LU^ где LeRmxn нижняя треугольная матрица с единичной диагональю, UeRnxn верхняя треугольная матрица, FeRmxm матрица перестановок. Объясните, как можно использовать разложение из 5.2.5 для нахождения вектора zeR", минимизирующего \\Lz — РЬ\\2. Покажите, что если Ux = z, то || Ах — Z>||2 достигает минимума. Покажите, что этот метод решения задачи LS с точки зрения количества операций лучше, чем хаусхолдерово QR-разложение, если m ^ 5/3 п.
Матрица С = (Ат А)'\ где rank(J) = », часто возникает во многих статистических приложениях и известна под названием ковариационной матрицы. Допустим, что получено разложение А = QR. (а) Докажите C = (RTRyx. (b) Дайте алгоритм вычисления.диагонали матрицы С, требующий п3 J3 флопов, (с) Покажите, что
^C = (RT РГХ =^C = (RT РГХ =— vT CJaCx— vT CJaCx(1 + vT Сх v)/a— Сх v/ci
^C = (RT РГХ =
^C = (RT РГХ =
— vT CJaCx
— vT CJaCx
где Cx = (ST S)-1. (d) Используя (с), постройте алгоритм, записывающий верхнюю треугольную часть С на место верхней треугольной части R. Ваш алгоритм должен требовать 2п3 /3 флопов.
Замечания и литература к § 5.3
Мы ограничились аппроксимацией наименьшими квадратами, но это не значит, что мы против минимизации в других нормах. Бывают случаи, когда целесообразно минимизировать НАх — />||р для р = 1 и оо. Некоторые алгоритмы для этого описаны в
Barrodale I. and Roberts F. D. К. (1973). “An Improved Algorithm for Discrete Lx Linear Approximation”, 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 Diffe-
rentiable Functions: The Lx Solution of an Overdetermined Linear System”, SIAM J. Num. Anal. 15, 224-241.
Bartels R.H., Conn A. R. and Charalambous C. (1978). “On Cline’s Direct Method for Solving Overdetermined Linear Systems in the L^ 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 R* 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 = ATb, где 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 следует с осторожностью, не допуская чрезмерного заполнения. Литература на эту тему включает
Duffl.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.
Хотя отражения Хаусхолдера более эффективны для вычисления 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.
Другие ортогональные разложения
Если матрица А неполного ранга, то QR-разложение необязательно дает базис подпространства range (Л). Эта проблема может быть решена, если перед QR-разложением переставить столбцы матрицы А, т. е. А П = QR, где П-матрица перестановок.
Данные в матрице А могут быть сконцентрированы еще больше, если разрешить умножение справа на подходящую ортогональную матрицу Z:QTAZ = Т Для выбора Q и Z имеются интересные возможности, которые, наряду с QR-разложением с выбором ведущего столбца, будут рассмотрены в этом разделе.
Случай неполного ранга: QR с выбором ведущего столбца
Если AeRmxn и гапк(Л)<«, то QR-разложение необязательно строит орто- нормированный базис подпространства range (Л). Например, если А состоит из трех столбцов и
1 1 1
А = [64 а2 я3] = VQi Яг 9зЗА = [64 а2 я3] = VQi Яг 9зЗ0 0 1
А = [64 а2 я3] = VQi Яг 9зЗ
А = [64 а2 я3] = VQi Яг 9зЗ
0 0 1
-ее QR-разложение, то гапк(Л) = 2, но ranged) не совпадает ни с одним из подпространств span {44, q2}, span {44, q^, span {^2, q3Y
К счастью, существует простая модификация хаусхолдеровой процедуры QR- разложения (алгоритм 5.2.1), дающая ортонормированный базис подпространства range (Л). Модифицированный алгоритм вычисляет разложение
QTAT\ =QTAT\ =^11^12о ог п — г^11^12о ог п — ггт — г ,гт — г ,(5.4.1)(5.4.1)
QTAT\ =
QTAT\ =
^11^12
о о
г п — г
^11^12
о о
г п — г
г
т — г ,
г
т — г ,
(5.4.1)
(5.4.1)
где г = rank (Л), Q ортогональна, Л1Г -верхняя треугольная невырожденная матрица, П-матрица перестановок. Если ввести разбиения по столбцам ЛП = = [яС1, ... , ас„] и Q = [qlf ... , qmY то для к = \\п имеем:
min ^г,Ц
аск= £ ra ^espant^,...,^} ,
откуда range (Л) = span {qY, ... , qr}.
Матрицы Q и П являются соответственно произведениями матриц Хаусхолдера и матриц элементарных перестановок. Допустим, что для некоторого к мы уже вычислили матрицы Хаусхолдера Нх, ... , Hk_Y и матрицы перестановок П1, ... ,
Пк _!, такие, чтоПк _!, такие, что
Пк _!, такие, что
Пк _!, такие, что
(5.4.2)(5.4.2)kHk_x ...Hx)A{nx ...Пц_1) =
(5.4.2)
(5.4.2)
R*K" R^"1 k-1
ОR^"J m-k+i
к — 1 n — к + 1
где Я1711 ~ невырожденная верхняя треугольная матрица. Пусть теперь Т?^2-1,= = [z^-1)z^"1*]-разбиение по столбцам, и пусть ^-наименьший индекс,
удовлетворяющий к ^ р ^ п, такой, что
Н^^-^Пг = max {Н^-^Ь 11И2 }•(5-4.3)
Заметим, что если к — 1 = rank (А), то этот максимум равен нулю, и процесс закончен. В противном случае пусть Пк-единичная п х «-матрица с переставленными р-м и к-м столбцами, и найдем такую хаусхолдерову матрицу Нк, что из Rw = HkRvk-nHk следует R{k)(k + \:т, к) = 0. Иными словами, Пк переставляет наибольший столбец из R^£n в ведущую позицию, а Нк обнуляет все его поддиагональные компоненты.
Нормы столбцов не нужно будет вычислять заново на каждом шагу, если воспользоваться свойством
QTz =QTz =а 1WJ 5-а 1WJ 5-t =Hw|l2 = IN2 - а2,t =Hw|l2 = IN2 - а2,
QTz =
QTz =
а 1
WJ 5-
а 1
WJ 5-
t =Hw|l2 = IN2 - а2,
t =Hw|l2 = IN2 - а2,
выполняющимся для любой ортогональной матрицы QgR5X5. Это уменьшает накладные расходы, связанные с выбором ведущего столбца, с О^тп2) до О^тп) флопов, так как мы сможем вычислять новые нормы столбцов через старые, например, ||г<л ||i = Hz0'*1’ |Ц - г^.
Собирая вместе полученные результаты, мы приходим к следующему алгоритму (Businger, Golub (1965)):
Алгоритм 5.4.1 (Хаусхолдерово QR-разложение с выбором ведущего столбца). По матрице A eRmxn, т ^ «, следующий алгоритм вычисляет г = rank (Л) и разложение (5.4.1), где Q =Нг ... Нг, П = Щ ... Пг. На место верхнего треугольника матрицы А записывается верхний треугольник матрицы R; компоненты j + 1: т у-го хаус- холдерова вектора хранятся в А (у + 1 *.m,j). Матрица перестановок П закодирована в целочисленном векторе pw таким образом, что П; есть единичная матрица с переставленными строками j и pw^j\
for j = 1:«
c(j) = Л(1 :m, jV A(l:m, j) end r = 0; т = max {c(y), ... , c(«)} Найти наименьшее к, 1 < к < «, такое, что с (к) = т while т > 0 г = г + 1
pw^ = к; А(1:т, г)^А(\:т, к); с(г)^с(к) v(r:т) =Ьои$е(Л(г:т, г))
А(г:т, г:«) = гоw.house(Л(г:«2, r;n^ v(r:m))
А (г + 1: т, г) = v(r + 1: т) for i = г + 1:« с^ = c(f) — А (г, z)2
end
if г < п
т = max {c(r+1),..., ф)}
Найти наименьшее к, г + 1 < к < п, такое, что с (к) = т. else т = О end end
Этот алгоритм требует 4т п г — 2г2 (т + и) + 4г3 /3 флопов, где г = rank (Л). Как и в процедуре без выбора ведущего столбца, т. е. в алгоритме 5.2.1, ортогональная матрица Q хранится в факторизованном виде в поддиагональной части А.
Пример 5.4.1. Если алгоритм 5.4.1 применить к
123
1 5 6 >
189
1 11 12
то П = [е3 е2 ej, и с точностью до трех значащих цифр мы получаем
-0.182
-0.816
0.514
0.191
-16.4
-14.600
-1.820
-0.365
0.408
-0.827
0.129
АП = QR =
0.548
0.000
0.113
-0.829
0.0
0.816
— 0.816
0.0
0.000
0.000
-0.730
0.408
0.200
0.510 _
Полные ортогональные разложения
Вычисленная алгоритмом 5.4.1 матрица R может подвергнуться дальнейшему приведению, если на нее умножить подходящую последовательность матриц Хаусхолдера. В частности, можно использовать алгоритм 5.2.1 для вычисления
ZT...ZX =ZT...ZX =" Rh "-Rh-" Rh "-Rh-тт1 иОтт1 иОгп — г’гп — г’(5.4.4)(5.4.4)
ZT...ZX =
ZT...ZX =
" Rh "
-Rh-
" Rh "
-Rh-
тт
1 и
О
тт
1 и
О
г
п — г’
г
п — г’
(5.4.4)
(5.4.4)
где Zx преобразования Хаусхолдера, Th -верхняя треугольная матрица. Отсюда следует; что
QTAZ = Т=QTAZ = Т=Тн ОО О г п — гТн ОО О г п — ггm — г ’гm — г ’(5.4.5)(5.4.5)
QTAZ = Т=
QTAZ = Т=
Тн О
О О г п — г
Тн О
О О г п — г
г
m — г ’
г
m — г ’
(5.4.5)
(5.4.5)
где Z = ПZx ... Zr. Всякие разложения такого рода мы будем называть полными ортогональными разложениями. Заметим, что пп11(Л) = range(Z(l ;п, г + 1:«)). См. задачу Р5.2.5 по поводу деталей учета структуры в (5.4.4).
Двухдиагонализация
Пусть AeRmxn, т^п. Мы покажем, как вычислить такие ортогональные
матрицы U(т х ш) и V^n х п), что
~ dx/i000^2/20UT A V=0dn-1Л-i00d„~ dx/i000^2/20UT A V=0dn-1Л-i00d„и„ ии„ и(5.4.6)(5.4.6)Каждая из матриц U = Ux дение матриц Хаусхолдера:Каждая из матриц U = Ux дение матриц Хаусхолдера:У= Ух .. Vn-2 может быть найдена как произве-У= Ух .. Vn-2 может быть найдена как произве-х х х х хх х х х хх х х х хх х х х хх хXXXх хXXXXXXXXXXXXXU1U1х О о о ох О о о оXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXViViх О о о ох О о о ох х х х хх х х х хо х х х хо х х х хО х X X XО х X X Xи2и2х О о о ох О о о ох X О О Ох X О О ООXXXXОXXXXО х X X XО х X X XVaVaх О О о ох О О о оX X о оОX X о оООXXXXОXXXXО о х х хО о х х хизизх О о о ох О о о оXX о о оXX о о оО X X О ОО X X О ОО О х X XО О х X Xи^и^XОО ООXОО ООхX О О ОхX О О ОО X X О ОО X X О ОО О х X ОО О х X О
~ dx
/i
0
0
0
^2
/2
0
UT A V=
0
dn-1
Л-i
0
0
d„
~ dx
/i
0
0
0
^2
/2
0
UT A V=
0
dn-1
Л-i
0
0
d„
и„ и
и„ и
(5.4.6)
(5.4.6)
Каждая из матриц U = Ux дение матриц Хаусхолдера:
Каждая из матриц U = Ux дение матриц Хаусхолдера:
У= Ух .. Vn-2 может быть найдена как произве-
У= Ух .. Vn-2 может быть найдена как произве-
х х х х х
х х х х х
х х х х х
х х х х х
х х
X
X
X
х х
X
X
X
X
X
X
X
X
X
X
X
X
X
U1
U1
х О о о о
х О о о о
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
Vi
Vi
х О о о о
х О о о о
х х х х х
х х х х х
о х х х х
о х х х х
О х X X X
О х X X X
и2
и2
х О о о о
х О о о о
х X О О О
х X О О О
О
X
X
X
X
О
X
X
X
X
О х X X X
О х X X X
Va
Va
х О О о о
х О О о о
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 О
В общем, Uk вносит нули в к-й столбец, a Vk обнуляет нужные элементы /с-й строки. В итоге мы имеем
Алгоритм 5.4.2 (Двухдиагонализация Хаусхолдера). По матрице AeRm4"n, т^п, следующий алгоритм переписывает две верхние диагонали А двумя диагоналями матрицы иТАУ=В, где В -верхняя двухдиагональная матрица, U=UX.. Un, К= Ух ... Уп-2- Значимая часть хаусхолдерова вектора матрицы Uj хранится в А (у + 1 \т, j\ а матрицы 1<-в Л (У, j + 2:п).
for у = 1: п
г(1 :т) = house(A(j:т, J))
AU*m> j-n) = row.house (А (У: т, j: п\ v (j: т^
AU + 1 :m, У) = dU + 1 :т) if j ^ n — 2 dU 4- 1: л) = house (A (j, j 4- 1 :«)T) А (У:m, j + 1:/7) = coLhouse (A (У:m, j 4- 1:n\ v(J + 1:n^ AU J + 2:и) = vU + 2;nf end
end
Этот алгоритм требует 4т п2 — 4п3 /3 флопов. Впервые двухдиагонализация была описана в Golub, Kahan (1965) с использованием именно этой методики. Если желательно получить матрицы U^ и V^ в явном виде, то их можно накопить, затратив соответственно 4т2 п — 4«3/3 и 4«3/3 флопов (ср. § 5.1.6). Упомянем еще, что двухдиагонализация матрицы А имеет отношение к трехдиагонализации матрицы АТА. См. § 8.2.1.
Пример 5.4.2. Применение алгоритма 5.4.2 к матрице
123
456
789
101112
дает с точностью до трех
значащих цифр
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
U в
=
0.5430
-0.069
0.701
-0.457
0.7760
0.312
0.547
0.037
R-двухдиагонализация
При т » п более быстрый метод двухдиагонализации получится, если перед применением алгоритма 5.4.2 привести матрицу А к верхнетреугольному виду. Конкретно, допустим, что мы вычислили такую ортогональную матрицу Q eRm х т, что матрица
QT АQT А00
QT А
QT А
0
0
верхняя треугольная. Мы двухдиагонализуем квадратную матрицу Rx, UrRxV=Bx.
Здесь UR и 7-ортогональные п х «-матрицы, Вх -верхняя двухдиагональная п х «-матрица. Обозначив U = QdiagtC^, 1т-п), получим, что
UTAV=UTAV=Bi0Bi0= В= В
UTAV=
UTAV=
Bi
0
Bi
0
= В
= В
есть двухдиагонализация матрицы А.
Идея этого метода двухдиагонализации упомянута у Лоусона и Хенсона (SLS, р. 119) и проанализирована более детально в Chan (1982а). Мы будем именовать этот метод Л-двухдиагонализацией. Сравнивая его затраты флопов (2тп2 + 2«3)с затратами алгоритма 5.4.2, мы видим, что при т > 5«/3 он требует меньшего (приблизительно) количества вычислений.
Сингулярное разложение и его вычисление
Следующий за двухдиагонализацией матрицы А шаг алгоритма Г о луба - Райнша вычисления SVD заключается в аннулировании наддиагональных элементов матрицы В. Это итерационный процесс, осуществляемый алгоритмом, описанным в Golub, Kahan (1965). К сожалению, мы должны отложить обсуждение этой итерации до §8.3, так как оно требует понимания симметричной проблемы собственных значений. Здесь достаточно сказать, что этот итерационный процесс вычисляет ортогональные матрицы UL и Р^, такие, что
UiBV^ = Е = diag(a19 ... ,
Положив U = UBUL и У=УВУ^ мы видим, что UTAV=^ есть сингулярное разложение матрицы А. Объем вычислений, связанных с этой частью алгоритма, зависит от того, насколько много мы хотим знать о SVD. Например, при решении задачи LS никогда не требуется явно формировать UT; достаточно лишь умножать ее на b по ходу процесса. Для других приложений требуется только матрица Uv = (/(:, 1 :лг). Всего возможно шесть вариантов; суммарные затраты SVD-алгоритма для каждого случая приведены в таблице ниже. Поскольку возможны две схемы двухдиагонализации, мы приводим подсчет числа операций в двух столбцах. При двухдиагонализации по алгоритму 5.4.2 получается SVD-алгоритм из Golub, Reinsch (1970), а при использовании R-двухдиагонализации мы получаем алгоритм А-SVD, детально описанный в Chan (1982а). Сравнивая столбцы нашей таблицы, содержащие приближенные оценки объема работы, мы заключаем, что подход R-SVD более эффективен, кроме случая т п.
Требуется
SKD Голуба -Реймча
/?-SVD
Е
^тп? — 4п3/3
2mn2 4- 2n3
Е, V
4тп2 4- 8п3
2mn2 4- lh3
D,U
4m2n — 8mn2
4m2n 4- 13n3
E,(/i
14mn2 — 2n3
6mn2 4- lln3
^СЛУ
4m2n 4- 8mn2 4- 9n3
4?7i2n 4- 22n3
ЕД/^У
14mn2 4- 8n3
6mn2 4- 20n3
Задачи
5.4.1. Пусть AeRmx\ где т < п. Приведите алгоритм вычисления разложения
UTAV=V.B 0],
где В- верхняя двухдиагональная т х «-матрица, дера, приведите А к виду
(Подсказка: используя матрицы Хаусхол-
х х 00
00
0 х х 0
00
00 х х
00’
000 х
х 0
а затем вытесните элемент (т, т 4- 1) вверх по (т 4- 1) = у столбцу, действуя справа вращениями Гивенса.)
Найдите эффективный способ двухдиагонализации верхней треугольной п х «-матрицы с использованием вращений Гивенса.
Покажите, как привести к верхнему двухдиагональному виду трехдиагональную матрицу TeRnxn, используя вращения Гивенса.
Пусть AeRmxn, и пусть 0 / г удовлетворяет ||Ли||2 = 5п(Л)||г||2 • Пусть П-матрица перестановок, такая, что из Пт v = w следует |и>и| = Н^Ноо- Покажите, что если АП = QR- Q R-разложение матрицы А П, то |гии | < у/й(зп(А). Таким образом, всегда существует такая перестановка П, что QR-разложение матрицы А П «проявляет» близость к неполноте ранга.
Пусть даны х, jpeRm и QERmxm, причем Q ортогональна. Покажите, что если
_ Ы 1 Гр1 1
Q х =, Q у =,
L и J m — 1L и J m — \
то ит v = хт у — ар.
Пусть даны А = [аи. . ., tin ] е Rw х и и Ье Rm. Для любого подмножества столбцов А {ас^, ... , аСк} определим
res [я , ... , а ] = min ||[яс1, ... , а ] х - b || 2 .
к veRк
Опишите альтернативную процедуру выбора ведущего столбца для алгоритма 5.4.1, такую, что если в окончательном разложении QR = АП = £а ,, аСпД, то для k = 1 :п
res\аг . ... . а(. Д = min res Г аГ , ... s аг , аг Д.L СГ ’L СГ ck-l ci
i^k
Замечания и литература к § 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 Р. 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.
Задача LS неполного ранга
Если матрица А неполного ранга, то задача LS имеет бесконечное множество решений, и мы вынуждены прибегать к специальным приемам, направленным на решение трудной задачи численного определения ранга.
После некоторых предварительных замечаний, связанных с SVD, мы показываем, как можно использовать QR-разложение с выбором ведущего столбца для
нахождения решения хв с тем свойством, что Ахв есть линейная комбинация г = rank (Л) столбцов. Затем мы обсуждаем решение С минимальной 2-нормой, которое может быть получено через SVD.
Решение с минимальной нормой
Пусть aeRmxn и rank (Л) = г < п. Задача LS неполного ранга имеет бесконечное множество решений, так как если х- решение и ze null (А), то х 4- z- также решение. Множество всех решений
Х = {xgR”: ||Лх - 6||2 = min}
выпукло, так как если х1# x2gx, Xg[0, 1], то
II A (Xxt + (1 — Х)х2) — 6||2 ^ X II Лхх — £|| 2 + (1 — М 1М*2 “ ^ II 2 = mm — ^L •
Тем самым Xxv + (1 — Х)х2ех- Отсюда следует, что х имеет единственный.элемент с минимальной 2-нормой, который мы обозначим xLS. (Заметим, что в случае полного ранга решение задачи LS единственно, поэтому его 2-норма, естественно, минимальна. Поэтому наши нынешние обозначения согласуются с введенными в § 5.3.)
Полное ортогональное разложение и xLs
Для вычисления xLS годится любое полное ортогональное разложение. Действительно, если Q и Z-ортогональные матрицы, такие, что
то
где
ZT х =ZT х =w- У -w- У -гп — г’гп — г’е'4-ше'4-шгт — ггт — г
ZT х =
ZT х =
w
- У -
w
- У -
г
п — г’
г
п — г’
е'4-ш
е'4-ш
г
т — г
г
т — г
Если мы хотим, чтобы х минимизировало сумму квадратов, то ясно, что мы должны иметь w = Ti^c. Чтобы 2-норма х была минимальна, у должен быть нулевым, так что
xLS — ZxLS — ZТ^сОТ^сО
xLS — Z
xLS — Z
Т^сО
Т^сО
Сингулярное разложение и задача LS
Среди всех полных ортогональных разложений SVD, безусловно, дает особенно много информации. Оно доставляет удобное выражение как для xLS, так и для нормы минимальной невязки pL$ = || A xLS — х || 2.
Теорема 5.5.1. Пусть UTAV=H есть сингулярное разложение матрицы АеКтхп, г = гапк(Л). Если U = [ut, ... , ит3 и И= [г^ ... , и„]-разбиения по столбцам и
beRm, то
xts=IL^"ci(5.5.1)
доставляет минимум функционалу ||Ях —/>||2 и имеет наименьшую 2-норму среди всех таких х. Кроме того,
Pls = Мх^-Иг = Е иТЬУ-(5.5.2)
i = r + 1
Доказательство. Для любого xgR" имеем:
Mx-Z>l|^ = ||({7тЛП(^гх)-1/т6|Ц = ||Еа|Ц =
= Е (»<«,.-м,тб)2+ Е к«1ьу,i=li = r+l
где a = УТх. Ясно, что если х-решение задачи LS, то a, = (uf b/oi) для i = 1: г. Если мы положим а (г + 1 :и) = О, то получившееся х будет, очевидно, иметь минимальную 2-норму.
Псевдообратная матрица
Заметим, что если определить матрицу Л+ gR"xw соотношением Л + = УТЛ UT, где
S+ =diag ( —О,..., o)eR”xm,
\ Ci cr/
то xLS = A + b и pLS = ||(1 — A A + )Z>||2 • Матрица Л + называется псевдообратной к А.
Она является единственным минимальным в F-норме решением задачи
min \\АХ — Im\\F.(5.5.3)
XeRnxm
Если гапк(Л) = и, то А+ = (АТА)-1 Ат, а если m = n = rank(A\ то А+= А-1. Обычно А+ определяют как единственную матрицу XeRnxm, удовлетворяющую четырем условиям Мура-Пенроуза:
АХА = А,(iii) (АХ)Т = АХ,
'(ii) ХАХ = X,(iv) (ХА)Т = ХА.
Эти условия сводятся к требованию, чтобы А А+ и А+ А были ортогональными проекторами на range (А) и range (Ат) соответственно. Действительно, АА^ = = UtUL где U, = U(\:m, 1:г), и А+ А = У. У?, где У, = У(1:п, 1: г).
Некоторые вопросы чувствительности к возмущениям
В § 5.3 мы исследовали чувствительность к возмущениям задачи LS полного ранга. Поведение xLS в этой ситуации описано в теореме 5.3.1. Если отбросить предположение о полноте ранга, то. х не является даже непрерывной функцией данных и малые изменения в А и b могут вызвать произвольно большие изменения в хь$ = А"^Ь. Проще всего это можно увидеть, изучив поведение псевдообратной матрицы. Если А и 8А принадлежат Rmxn, то показано (Wedin (1973), Stewart
(1975а)), что
II (Л - 5Л) + - /Г ||f ^ 2 ||8 Л ||F max { || Л + Щ, ||(Л + 5Л) + Щ }
Это неравенство обобщает теорему 2.3.4, в которой оцениваются возмущения в обратной матрице. Однако в отличие от случая квадратных невырожденных матриц верхняя граница необязательно стремится к нулю при стремлении к нулю 5 А. Если
тото1 О ОООО1 О ОООО(А + дА) +(А + дА) +1 О О1 1/8 О1 О О1 1/8 О
то
то
1 О О
ООО
1 О О
ООО
(А + дА) +
(А + дА) +
1 О О
1 1/8 О
1 О О
1 1/8 О
и || Л + — (А + 5Л) + ||2 = 1 /е. Численное нахождение решения задачи LS в присутствии подобных нарушений непрерывности является серьезным испытанием.
QR с выбором ведущего столбца и основные решения
Пусть AeRmxn имеет ранг г. QR-разложение с выбором ведущего столбца (алгоритм 5.4.1) дает разложение АП = QR, где
^11^12Г .
О О J т — г
г п — г
С помощью этого приведения легко получить решение задачи LS. Действительно, для любого xeR" имеем:
Мх-6||^ = ||(егЛП) (Пгх) -<QTb) 111
= „Яцу - (с-/?12z)||^ + Mi,
где
Так что если х доставляет минимум задаче LS, должно быть
(c-/?12z)'
Положив в этом выражении z равным нулю, получим основное решение
хв = Пхв = ПRxi сОRxi сО
хв = П
хв = П
Rxi с
О
Rxi с
О
Заметим, что хв содержит максимум г ненулевых компонент, так что в Ахв участвует только подмножество столбцов А.
Основное решение не является минимальным в 2-норме, если только блок Т?12 не
равен нулю, поскольку
II *ls II2 = min zeRn"rII *ls II2 = min zeRn"r^Г? Ri 2^Г? Ri 222(5.5.4)(5.5.4)
II *ls II2 = min zeRn"r
II *ls II2 = min zeRn"r
^Г? Ri 2
^Г? Ri 2
2
2
(5.5.4)
(5.5.4)
В самом деле, с помощью этой характеристики ||xLS||2 можно показать, что
1 ^1 ^II ХВ II 2II XLS II 2II ХВ II 2II XLS II 21 + Н^П1 7^12 112 -1 + Н^П1 7^12 112 -(5.5.5)(5.5.5)
1 ^
1 ^
II ХВ II 2
II XLS II 2
II ХВ II 2
II XLS II 2
1 + Н^П1 7^12 112 -
1 + Н^П1 7^12 112 -
(5.5.5)
(5.5.5)
Детали см. в Golub, Pereyra (1976).
Численное нахождение ранга с помощью а П = QR
R^Y R^2 1 к_ О R^\ т — кR^Y R^2 1 к_ О R^\ т — кЕсли для вычисления хв используется алгоритм 5.4.1, то необходимо проявлять внимание при определении rank (Л). Чтобы почувствовать трудность этой задачи, допустим, что
R^Y R^2 1 к
_ О R^\ т — к
R^Y R^2 1 к
_ О R^\ т — к
jlkHk...HxAT\x ...nj=^w =
к п — к
есть матрица, вычисленная после к шагов алгоритма, выполненных в режиме с плавающей точкой. Предположим, что гапк(Л) = /с. Ввиду наличия ошибок округления R^2 не будет в точности нулевой. Однако если К^\ достаточно мала по норме, разумно завершить приведение и объявить, что ранг А равен к. Типичный критерий остановки мог бы выглядеть так:
ИЙ^М^(5.5.6)
для некоторого малого машинно-зависимого параметра 8^ Из свойств матриц Хаусхолдера по отношению к ошибкам округления (ср. § 5.1.12) мы знаем, что R^ есть точный треугольный множитель для матрицы А + Ек, где
l|£J2<e2M||2, е2 = О(и).
Используя теорему 2.5.2, имеем:
ck+1(/l + £J = Gk+1(^K^
Так как <зк +1 (Л) ок+1 (А + Е^ + || Ек ||2, отсюда следует, что
^к+1(^)^(^! + е2)МИ2-
Иными словами, относительное возмущение порядка О^ + е2) в матрице А может дать матрицу ранга к. С этим критерием остановки мы заключаем, что QR с выбором ведущего столбца обнаруживает неполноту ранга, если по ходу приведения R^2 оказывается мала для некоторого к < и.
К сожалению, это происходит не всегда. Матрица А может быть очень близка к неполноранговой, и ни один из блоков R^ не будет маленьким. Таким образом, QR с выбором ведущего столбца сам по себе не является вполне надежным методом обнаружения неполноты ранга. Однако если получить хорошую оценку обусловленности R, то практически невозможно, чтобы близость к неполноте ранга осталась незамеченной.
Пример 5.5.1. Пусть Тп (с) имеет вид
1
0
— с
1
— с ..
— с . .
. —с
. —с
T„k) = diag(l,5,
0
1
. —с
1
где с2 Vs2 = 1, с, s > 0. (См. Лоусон и Хенсон [SLS, р. 31].) Эти матрицы не изменяются алгоритмом 5.4.1, поэтому || Я22 II 2 ^ а”-1 для к = 1 ;п — 1. Это неравенство означает, в частности, что матрица Т1Оо (0.2) не имеет особенно малых главных подматриц, так как s" «0.13. Однако можно показать, чго а„ = О(Ю-8).
Численный ранг и SVD
Мы сосредоточиваем наше внимание на SVD, которое способно управиться с проблемой неполного ранга в условиях влияния ошибок округления. Это относится как к версии Голуба -Райнша, так и к версии Чана. Вспомним, что если А = UНУ7 есть сингулярное разложение матрицы А, то
г b
xLs = £ ~(5.5.7)
i = 1
где г=гапк(Л). Обозначим реально вычисленные U, V и Z = diag(c/) через U, Г и £ = diag(cl). Допустим, что обе последовательности сингулярных чисел изменяются от наибольшего к наименьшему. Можно показать, что
U=W-vAU; WTW=Im; ||AL4|2^s,(5.5.8)
V=Z-vAV; ZTZ = In; ||АИ||2^8,(5.5.9)
z = WT(A + AA)Z; НАЛ ||2 ^8||Л||2,(5.5.10)
где 8-малое кратное машинной точности и. Другими словами, алгоритм SVD вычисляет сингулярные числа «близкой» матрицы А + А А.
Заметим, что 0 и V необязательно близки к соответствующим точным матрицам. Однако мы можем показать, что ск несильно отличается от ск. Используя (5.5.10) и теорему 2.5.2, имеем
<зк= min ||Л-5||2 =
rank (В) = к — 1
= min ||(£-В)- 1Уг(ДЛ)г||2.
rank (В) — к — 1
Поскольку || И^Д Л)2||2 < £ || А ||2 = £О] и
min || £ - В||2 = дк
rank (В) = к — 1
мы получаем, что 1^ — <rj ^ 8 с^ для к = \:п. Тем самым, если ранг матрицы А равен г, мы можем ожидать, что п — г из вычисленных сингулярных чисел будут малы. Близость матрицы А к неполноранговой не может остаться незамеченной, если вычислить SVD матрицы А.
Пример 5.5.2. Применение алгоритма SVD из пакета Linpack к матрица Т100 (0.2) из примера 5.5.1 дает при машинной точности 10 17
о„ = 0.367805646308792467- 10" 8.
Один из возможных путей оценки г = rank (Л) исходя из вычисленных сингулярных чисел - завести некий допуск 8>0 и условиться, что численный ранг матрицы А равен г, если сингулярные числа (^ удовлетворяют
Q1 ^ . . . ^ Qr > 8 ^ Qr + : ^ . . . ^Qn.
Допуск 5 должен быть увязан с машинной точностью, например 5 = и || А || . Однако если общий уровень относительных ошибок в данных превышает и, 8 должен быть соответственно больше, например 8= 10"2||Л||ОС, если элементы матрицы верны с точностью до двух значащих цифр.
Если принять г за численный ранг, то можно рассматривать
как приближение к xLS. Такие как ||хА ||2 ~ 1 / и» ^ 1/8, 8 можно выбирать также из соображений получения приближенного решения задачи LS с разумно малой нормой. Более тонкие методы этого будут обсуждаться в § 12.1.
Если а, » 8, у нас есть основания быть довольными найденным х., так как тогда А может с надежностью рассматриваться как матрица ранга г.
С другой стороны, множество {с1, ... , оп} может и не разбиться на четко определенные подмножества больших и малых сингулярных чисел, что делает определение г описанным методом отчасти произвольным. Это ведет к более сложным методам оценки ранга, которые мы здесь обсудим в контексте задачи LS.
Допустим, например, что г = п, и предположим на время, что в (5.5.10) А А = 0. Тогда с^ = af для i = 1: п. Обозначим z-e столбцы матриц U, W, Ии Z соответственно u^ wt, vit z^. Вычитая х> из xLS и переходя к нормам, получаем
„ и / v WbvTb)zt-(.ufbH'iWi , I v (wTbY
Используя (5.5.8), (5.5.9), легко проверить, что
||(и-?’й)7,.-(МГЛ)р1.||2<2(1 +е)еП||2(5.5.11)
и поэтому
11^- xLS ||2 < — 2(1 +е)е||/>||2 +£ (^И •
Параметр г можно найти как целое число, минимизирующее эту оценку сверху. Обратим внимание, что первый член оценки возрастает с г, а второй убывает.
В тех случаях, когда важнее минимизировать невязку, чем получить точное решение, мы можем определить f, основываясь на предположительной степени близости \\Ь — ^%, ||2 к истинному минимуму. По аналогии с проведенным выше анализом можно показать, что
\\Ь - Лх.||2 - ||6 - A.xLS ||2 < (и - О Ш2 +е||А||2( г + ^ (1 + е)).
\На/
К*
Снова можно выбрать г так, чтобы оно минимизировало верхнюю оценку.
Описанные приемы могут быть включены в компьютерную программу, где в качестве приближений с^ и wt берутся соответственно с( и ut. Проведенный анализ может быть распространен на случай АЛ Г 0. Детали см. в Varah (1973).
Некоторые сравнения
Как уже упоминалось, при решении задачи LS посредством SVD достаточно вычислить только Е и И Следующая таблица сравнивает эффективность этого подхода с другими рассмотренными алгоритмами.
Z S-Алгоритлг
Число срлопов
Нормальные уравнения
тпг + п3 (3
Ортогонализация Хаусхолдера
2тпг -2п3/з
Модифицированный Грама-Шмидта
2тпг
Ортогонализация Гивенса
Зтп2-пъ
Бидаагонализация Хаусхолдера
Утп2-^пъ/2
R - бидиагонализация
2тп2^ 2л3
SVD Голуба-Реиниа
^тп2* 8п3
SVD Шана
2тп2^ 11 п3
Задачи
Покажите, что если
Т S г
00 J т - г ’
г п — г
где г = rank(^) и Т невырожденна, то матрица
Т"1000Т"1000г п — гг п — г
Т"10
00
Т"10
00
г п — г
г п — г
г m — г
удовлетворяет соотношениям АХ А = А и (АХ)Т = АХ. В этом случае будем называть X (\^)-псевдообратной к матрице А. Покажите, что для матрицы А общего вида Хв = Хб где X- (1,3)-псевдообратная к А.
XXИ(Х)-^+ц2И(Х)-^+ц2Определим B(X)eR"xm как S(X) = (Ат А + X/) 1 Ат, где X > 0. Покажите, что
X
X
И(Х)-^+ц2
И(Х)-^+ц2
, г = rank (А) , аг(Л)[сгг(Л)2 + X]
так что 5(Х) -> А + при X -> 0.
Рассмотрим задачу LS неполного ранга
min ueRr zeR"min ueRr zeR"R_ 0R_ 05Oj _5Oj _Vd JVd J22
min ueRr zeR"
min ueRr zeR"
R
_ 0
R
_ 0
5
Oj _
5
Oj _
Vd J
Vd J
2
2
где ReWx*\ 5eRrx^ r\ yeRr, zeR" r. Предположим, что R-невырожденная верхняя тре-
угольная матрица. Покажите, как найти для этой задачи решение минимальной нормы, вычисляя подходящее QR-разложение без выбора ведущего столбца и решая систему для подходящих у и z.
Покажите, что если Ак-^а и Ак ->А\ то существует такое целое к0, что гапк(Л^) постоянен для всех к к0.
Покажите, что если AeRmxn имеет ранг п, то такой же ранг имеет и матрица А + Е, если зыполнено неравенство || Е\\ 2 || А + || 2 < 1.
Замечания и литература к § 5.5
Фортранную процедуру решения задачи LS посредством SVD или QR-разложения с выбором ведущего столбца можно найти в пакете Linpack.
Литература по псевдообратным матрицам весьма обширна, как свидетельствуют 1775 ссылок, приведенных в
Nashed M.Z. (1976). Generalized Inverses and Applications, Academic Press, New York.
Дальнейшее обсуждение дифференцирования псевдообратной матрицы см. в
Lawson С. L. and Hanson R.J. (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-Inverses 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. (1977a). “On the Perturbation of Pseudo-Inverses, Projections, and Linear Least Squares”, SIAM Review 19, 634-662.
QR-разложение с выбором ведущего столбца было впервые рассмотрено в
Businger Р. and Golub G. Н. (1965). “Linear Least Squares Solutions by Householder Transformations”, 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 трудно, но важно. В проблеме неполного ранга бывает полезно получить информацию о наименьшем сингулярном числе верхней треугольной матрицы R. Это можно сделать, применив приемы из § 3.5.4 или из статей Anderson N. and Karasalo I. (1975). “On Computing Bounds for the Least Singular Value of a Triangular Matrix”, BIT 15, 1-4.
Karasalo I. (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-71.
Hansen P. C. (1987). “The Truncated SVD as a Method for Regularization”, BIT 27, 534-553.
Stewart G.W. (1984). “Rank Degeneracy”, SIAM J. Sci. and Stat. 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 Ill-Posed Problems”, SIAM J. Num. Anal. 10, 257-267.
Мы еще вернемся к этим вопросам в § 12.1 и § 12.2.
Взвешивание и итерационное уточнение
В §3.5 в контексте квадратных линейных систем были введены понятия масштабирования и итерационного уточнения. Здесь мы обобщаем эти идеи на случай задачи наименьших квадратов.
Взвешивание по столбцам
Пусть Ge R" х п - невырожденная матрица. Решение задачи LS
min Mx - b ||2, AeRmx\ ЬеКш(5.6.1)
может быть получено, если найти минимальное в 2-норме решение yLS задачи
min ||(AG)y-b ||2,(5.6.2)
а затем положить xG = GyLS. Если rank (А) = п, то xG = xLS. В противном случае xG есть решение задачи (5.6.1), минимальное в G-норме, которая определяется как ||z||G= ||СГМ2.
Выбор матрицы G важен. Иногда он может быть сделан на основе априорной информации о неопределенностях в матрице А. См. Лоусон и Хенсон (SLS, рр. 185-188). В других случаях может оказаться желательным нормировать столбцы А, положив
G = Go = diag(l/|| Л (:, 1) ||2, ..., 1/|| А (:, п) ||2).
Показано, что (Van der Sluis (1969))
ц = min х2 (A G) => ц < х2 (A Go) ^/п ц.
G диагональна
Поскольку реально достигнутая в dls точность зависит от х2 (A G), постольку это довод в пользу того, чтобы положить G = Go.
Заметим, что взвешивание по столбцам воздействует на сингулярные числа. Вследствие этого методы определения численного ранга, будучи примененными к Л и AG, могут возвращать различные оценки. См. Stewart (1984b).
Взвешивание по строкам
Пусть Z^diagfa^, ..., dm) - невырожденная матрица. Рассмотрим взвешенную задачу наименьших квадратов
min || D(Ах -Ь)Ц2, AeRmx п, bERm.(5.6.3)
Допустим, что гапк(Л) = « и xD есть решение задачи (5.6.3). Тогда решение xLS задачи (5.6.1) удовлетворяет
xD - *ls = (АтО2АГ' At(D2 - П(Ь - AxLS).(5.6.4)
Это показывает, что взвешивание по строкам в задаче LS изменяет ее решение. (Важное исключение - случай derange (Л), так как тогда xD = xLS.)
Один из способов определения D- положить dk равным некоторой мере неопределенности в bk, например, обратному к стандартному отклонению bk. Значения rk = е{ (b — Axd) имеют тенденцию быть маленькими при больших dk. Более точно воздействие dk на rk можно прояснить следующим образом. Определим
0(5) = diag^L dk_k, dk^\ +5, dk+ „ dm),где 5 > — 1. Если x(8) минимизирует || £>(§)(Лх — 6) ||2 и гк(^) есть к-я компонента
b — Лх(8), то можно показать, что
1 + bdlelA^ATD2AYxATek1 + bdlelA^ATD2AYxATek(5.6.5)(5.6.5)
1 + bdlelA^ATD2AYxATek
1 + bdlelA^ATD2AYxATek
(5.6.5)
(5.6.5)
Это явное выражение показывает, что гк (8) - монотонно убывающая функция 8. Конечно, при вариации всех весов гк изменяется значительно более сложным образом.
Дальнейшее обсуждение взвешивания по строкам можно найти у Лоусона и Хенсона (SLS, рр. 183- 185).
Пример 5.6.1. Пусть
Если D = /4, то xD = (—l,O.85)T nr = b — AxD = (0.3, —0.4, —0.1, 0.2)т. С другой стороны, если D = diag (1 000, 1, 1, 1), то мы имеем ad^(—1.43, 1.21)т и г = b — AxD = [0.000428, -0.571428, - 0.142853, 0.285714]7’.
Обобщенные наименьшие квадраты
Во многих задачах на оценивание вектор наблюдений b связан с х уравнением b = Ax-Vws(5.6.6)
где вектор шума w имеет нулевое среднее значение и симметричную положительно определенную ковариационную матрицу о2 И< Предположим, что W известна и W— ВВТ для некоторого ВеКтхт. Матрица В может быть задана или она может вычисляться как треугольный множитель Холецкого матрицы И< Для того чтобы все уравнения (5.6.6) в равной степени влияли на определение х, статистики часто решают задачу наименьших квадратов
min || ^"ЧЛх-^Цз.(5.6.7)
Очевидный подход к численному решению этой задачи-сформировать А = В-1 А и Б = В~1 Ь, а затем применить любую из описанных выше методик к минимизации II Ах — ?||2. К сожалению, результат будет неважным, в случае если матрица В плохо обусловлена.
Гораздо более надежный метод решения (5.6.7) с использованием ортогональных преобразований был предложен в Paige (1979а, 1979b). Он основан на той идее, что (5.6.7) эквивалентно обобщенной задаче наименьших квадратов
min гти.(5.6.8)
b = Ах + Ви
Обратим внимание, что эта задача определена, даже если обе матрицы А и В неполного ранга. Хотя техника Пейджа проходит и в этом случае, мы ее изложим в предположении, что обе эти матрицы имеют полный ранг.
егя= о* , Q =егя= о* , Q =Первый шаг заключается в вычислении QR-разложения матрицы А:
егя= о* , Q =
егя= о* , Q =
61 бз ■п т — п
Затем определяется ортогональная матрица ZeRmxn, такая, что
q2 bz = о
- п
S т — п~
^1^2
Ln т — пЗ
где матрица 5 верхняя треугольная. С использованием этих ортогональных матриц условие из (5.6.8) трансформируется в
"QI Ь"-QX ь_"QI Ь"-QX ь_er bz2 1 г zr
"QI Ь"
-QX ь_
"QI Ь"
-QX ь_
S J L Z? '
Заметим, что «нижняя половина» этого уравнения определяет г,
Su = Q2b, v = Z2u,(5.6.9)
а «верхняя половина» отвечает за х:
(5.6.10)(5.6.10)R1x = QT1b- (Q[ BZX Z\ + QI BZ2 Z2^v = Qxb — Qi BZ2 и.
(5.6.10)
(5.6.10)
Привлекательность этого метода в том, что вся потенциально плохая обусловленность собрана в треугольных системах (5.6.9) и (5.6.10). Более того, Paige (1979b) показал, что описанная процедура численно устойчива, чего нельзя сказать ни об одном из методов, явно формирующих В-1 А.
5.6.4. Итерационное уточнениеОдин из приемов уточнения приближенного решения задачи LS проанализирован в Bjorck (1967, 1968). Он основан на той идее, что еслиb 1о , AeRmx\ beRm,(5.6.11)того, что из г + Ах = b и А1 г = 0 следует юширенная система невырожденна, если5.6.4. Итерационное уточнениеОдин из приемов уточнения приближенного решения задачи LS проанализирован в Bjorck (1967, 1968). Он основан на той идее, что еслиb 1о , AeRmx\ beRm,(5.6.11)того, что из г + Ах = b и А1 г = 0 следует юширенная система невырожденна, если1т А_ АТ 01т А_ АТ 0то || b — Ах || 2 = min. Это следует Ат Ах = Ат Ь. Выписанная вышето || b — Ах || 2 = min. Это следует Ат Ах = Ат Ь. Выписанная вышеизиз
5.6.4. Итерационное уточнение
Один из приемов уточнения приближенного решения задачи LS проанализирован в Bjorck (1967, 1968). Он основан на той идее, что если
b 1
о , AeRmx\ beRm,(5.6.11)
того, что из г + Ах = b и А1 г = 0 следует юширенная система невырожденна, если
5.6.4. Итерационное уточнение
Один из приемов уточнения приближенного решения задачи LS проанализирован в Bjorck (1967, 1968). Он основан на той идее, что если
b 1
о , AeRmx\ beRm,(5.6.11)
того, что из г + Ах = b и А1 г = 0 следует юширенная система невырожденна, если
1т А
_ АТ 0
1т А
_ АТ 0
то || b — Ах || 2 = min. Это следует Ат Ах = Ат Ь. Выписанная выше
то || b — Ах || 2 = min. Это следует Ат Ах = Ат Ь. Выписанная выше
из
из
rank (Л) = п, что мы и будем в дальнейшем предполагать.
Эта формулировка задачи LS через квадратную линейную систему дает возможность применить схему итерационного уточнения (3.5.5):
г(0) = 0; х(0) = 0
for к = 0, 1, ...
ь
I
А ~
rw
_ gw _
—
0
А
т
0 _
" i
А "
р
(к) -
рю -
_ Ат
0 _
z{
к)
gw_
" r* +
1) "
/к)
_ х(к +'
1)
Х^
+
_ Z(M
end
Невязки fw и gw должны вычисляться в режиме с повышенной точностью, и для этой цели надо сохранять исходную матрицу А.
Если имеется QR-разложение матрицы А, то найти решение расширенной системы достаточно легко. Именно, если А = QR и Rv= R(l:n, 1 ;п\ то система вида
I А рАт 0 _ _ zI А рАт 0 _ _ z- 9 _- 9 _
I А р
Ат 0 _ _ z
I А р
Ат 0 _ _ z
- 9 _
- 9 _
преобразуется кпреобразуется кгдегдепт — 1Vпт — 1VQTp =QTp =hhИт — пИт — п
преобразуется к
преобразуется к
где
где
п
т — 1V
п
т — 1V
QTp =
QTp =
h
h
И
т — п
И
т — п
hhТаким образом, р и z могут быть найдены решением треугольных систем R\h = д
h
h
В предположении что Q хранитсяВ предположении что Q хранитсяи Rxz = j\ — h и вычислейием р = Q
В предположении что Q хранится
В предположении что Q хранится
в факторизованном виде, каждая итерация требует ^тп — 2 п2 флопов.
Ключом к успеху итерационного процесса является уточнение как невязки задачи LS, так и ее решения (а не только решения). Bjorck (1968) показал, что если х2 (Л) « Р9 и используется ^-разрядная арифметика по основанию р, то xw имеет примерно к (t — q) верных цифр по основанию р, при условии что невязки вычисляются с двойной точностью. Заметим, что в этой оценке фигурирует х2(Л), а не х2(Л)2.
Задачи
Проверьте (5.6.4).
Пусть AeRmxn имеет полный ранг. Определим диагональную матрицу А = diag (1, ..., 1, (1 +5), 1, ..., 1),
к — 1т — к
где 5 > -1. Обозначим решение задачи LS min || А (Ах — Z>)||2 через х(5), а его невязку через r(8) = b — Ах(6).
Покажите, что
Г(^= /_§Г(^= /_§г(0).г(0).АСА^Г1 АТекек
Г(^= /_§
Г(^= /_§
г(0).
г(0).
1 + 6ек А (АТ А)”1 Ат ек
Пусть гк(6)-к-я компонента г(6\ Покажите, что
rkW =rkW =1 + 6ек А (Ат А)~1 Атек1 + 6ек А (Ат А)~1 Атек
rkW =
rkW =
1 + 6ек А (Ат А)~1 Атек
1 + 6ек А (Ат А)~1 Атек
Используя (Ь), докажите (5.6.5).
Покажите, как использовать SVD для решения обобщенной задачи LS в случае, когда матрицы А и В (5.6.8) неполного ранга.
Пусть AeRmxn имеет ранг п. Для а ^ О определим
М(а)= АТ” 0.
Покажите, что
8„+„(М(а)) = min8„+„(М(а)) = min
8„+„(М(а)) = min
8„+„(М(а)) = min
и найдите значение а, минимизирующее х2(М(а)).
Еще один метод итерационного уточнения для задачи LS заключается в следующем: х(0) = О
for к = 0, 1, ...
rw = Ь — Axw (с двойной точностью)
^Az^ — r(k)||2 = min
х(к+ 1) __|_ „(*)
end
(а) Предполагая, что имеется QR-разложение матрицы А, дайте оценку требуемого количества флопов на итерацию. (Ь) Покажите, что приведенный выше итерационный процесс получится, если положить gw = 0 в схеме итерационного уточнения из § 5.6.4.
Замечания и литература к § 5.6
Взвешивание по строкам и столбцам для задачи LS обсуждается у Лоусона и Хенсона (SLS, рр. 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 Decompositions”, Math. Comp. 43, 483-490.
Теоретические и вычислительные аспекты обобщенной задачи наименьших квадратов представлены в
Kourouklis S. and Paige С. С. (1981). “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”, BIT1, 321-УМ.
Golub G. H. and Wilkinson J. H. (1966). “Note on Iterative Refinement of Least Squares Solutions”, Numer. Math. 9, 139-148.
5.7. Квадратные и недоопределенные системы
Развитые в этой главе методы ортогонализации могут быть применены к решению квадратных систем, а также систем, в которых уравнений меньше, чем неизвестных. В этом коротком разделе мы обсудим некоторые из возможностей.
Использование QR и SVD для решения квадратных систем
Основанные на QR-разложении либо на SVD методы решения задачи наименьших квадратов могут быть применены для решения квадратных линейных систем: достаточно положить т = п. Однако с точки зрения количества операций гауссово исключение остается самым дешевым способом решения квадратной линейной системы, как свидетельствует следующая таблица:
Таблица 5.7.1
Метод
Флопы
Гауссово исключение Ортогонализация Хаусхолдера Модифицированный Г рама - Шмидта Двухдиагонализация SVD
2и3/3
4п3/3
2л3 8л3/3 12л3
Тем не менее методы ортогонализации заслуживают внимания по целым трем причинам:
При подсчете количества флопов наблюдается тенденция к преувеличению преимущества гауссова исключения. С учетом издержек векторизации и обменов с памятью QR-подход сравним по эффективности.
Гарантирована устойчивость методов ортогонализации; в отличие от гауссова исключения, нет нужды беспокоиться о «коэффициенте роста».
В случаях плохой обусловленности ортогональные методы особенно ясно демонстрируют свою надежность. Очень хорошо ведет себя QR с оценкой обусловленности, и, конечно, непревзойденным методом получения осмысленного решения почти вырожденной системы является SVD.
Мы не заявляем о категорическом предпочтении ортогональных методов, мы только предлагаем конкурентоспособные альтернативы гауссову исключению.
Заметим еще, что число операций для SVD в табл. 5.7.1 предполагает, что вектор b известен во время разложения. В противном случае требуемое число операций возрастает до 20 п3, так как становится необходимым явное формирование матрицы U.
Недоопределенные системы
Будем называть линейную систему
(5.7.1)(5.7.1)Ах = Ь, AERmx\ ЬеК\
(5.7.1)
(5.7.1)
недоопределенной, если т < п. Отметим, что такая система либо не имеет решений, либо имеет бесконечное множество решений. Во втором случае важно различать алгоритмы, находящие минимальное в 2-норме решение и не находящие. Первый из представляемых нами алгоритмов относится к этой последней категории.
Алгоритм 5.7.1. По матрице AeRmxn, гапк(Л) = т и вектору bERm следующий алгоритм находит xeR", такое, что Ах = Ь.
QTАП = R (QR с выбором ведущего столбца)
Решить систему R(1 :т, \:m)z = QT Ь.
Положить х = ППоложить х = П_ 0 _ *_ 0 _ *
Положить х = П
Положить х = П
_ 0 _ *
_ 0 _ *
Этот алгоритм требует 2т2п — т3/3 флопов.
Если мы будем работать с АТ, мы сможем найти решение минимальной нормы.
Алгоритм 5.7.1. По матрице AERmxn, гапк(Л) = т, и вектору bERm следующий алгоритм находит минимальное в 2-норме решение системы Ах = Ь.
АТ = QR (QR-разложение)
Решить систему R (1: т, 1: тД z = b.
х = Q (:, 1: т) z
Алгоритм требует максимум 2 т2 п — 2 т3/3 флопов.
Для вычисления решения минимальной нормы недоопределенной системы можно также использовать SVD. Если.
А = £ cz щ vf г = rank (Л)
i - 1
сингулярное разложение матрицы А, то
' и[ЬX = ) I): .
Как и в задаче наименьших квадратов, использование SVD желательно во всех случаях, когда А почти неполного ранга.
Возмущенные недоопределенные системы
В заключение мы приводим теорему о возмущениях для недоопределенных систем полного ранга.
Теорема 5.7.1. Пусть rank (Л) = т < п и AeRmxn, ^AeRmxn Q^beRm и SbeRm удовлетворяют
£ = тах{ел, е6} <от(Л),
где £л = || 8Л ||2/|| А ||2 и £b = || Sb ||2/|| b ||2. Если х и х-решения с минимальной нормой, удовлетворяющие
Ах = b(A + SA)x = b + Sb, то
^—^ < х2(Л)(ел min {2, п - т + 1} + £6) + O(s2).
Доказательство. Определим Е и / как §Л/е и ЬЬ(г. Заметим, что rank (Л + tE) = т для всех 0 < t < £ и что
x(t) = (И + tEf^A + tE)(A + tEfY1 (b + </) удовлетворяет (А + tE) х (t) = b + tf. Дифференцируя это выражение по t и полагая t = 0, получаем
х(0) = (/ - АТ(ААТ)~1 A)ET(AATY1b + AT(AATY4j-Ex).
Так как .
||х||2= II ИГ(ЛЛГ)-1М|2^ om(A) II (ААТ1 b ||2,
|| / — АТ(ААТ)-1 А ||2 = min(l, п — т)
№ < II/II2IMII2
Цх||2-||/>||2’
то мы имеем
откуда следует утверждение теоремы. □
Обратим внимание на отсутствие множителя х2(Л)2 по сравнению со случаем переопределенных систем.
Задачи
Выведите выписанное выше выражение для х(0).
Найдите решение минимальной нормы для системы Ах = Ь, где А = [1 2 3] и b = 1.
Замечания и литература к § 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.
Вот несколько статей по недоопределенным системам:
Arioli М. and Laratta А. (1985). “Error Analysis of an Algorithm for Solving an Underdetermined System”, Numer. Math. 46, 255-268.
Cline R. E. and Flemmons 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-разложений.
Операция gaxpy на распределенной памяти
В этом разделе разрабатываются средства записи алгоритмов для распределенной памяти. Чтобы проиллюстрировать их и выявить ключевые положения, рассматривается операция gaxpy:
г = у + Ах, АеВпхп, x,y,zeRn.(6.1.1)
Более сложные вычислительные процессы будут рассмотрены в § 6.3-6.5.
Системы с распределенной памятью
В мультипроцессоре с распределенной памятью имеется сеть процессоров, и в каждом из них есть локальная память и своя программа. Процессоры общаются один с другим, посылая и принимая сообщения. К числу важных факторов при разработке эффективных алгоритмов в случае распределенной памяти относятся: а) число процессоров и размер локальной памяти; б) организация связи между процессорами; в) соотношение скорости вычислений и скорости межпроцессорного взаимодействия. Наша цель - показать совершенно неформально, как эти факторы взаимосвязаны и как они влияют на разработку алгоритма.
В рамках концепции распределенной памяти рассматриваются две модели вычислений: полностью синхронная «систолическая» модель и асинхронная модель
передачи сообщений. В систолической1} модели процессоры отмеряют порции вычислительной и коммуникационной работы в соответствии с отсчетом времени по глобальным часам. Абсолютно синхронная, пошаговая природа систолических вычислений в какой-то степени облегчает показ потока вычислений. По этой причине они являются превосходной моделью для того, чтобы начать знакомство с параллельными матричными вычислениями.
После того как мы расскажем о систолическом решении задачи (6.1.1), она же будет рассмотрена в контексте модели с обменом сообщениями. Этот стиль работы с распределенной памятью предполагает, что процессоры координируют свою деятельность на основе принимаемых сообщений. Глобальных часов здесь нет.
Сети процессоров
В мультипроцессоре с распределенной памятью каждый процессор имеет локальную память и выполняет свою собственную локальную программу, изменяющую значения локальных переменных. В этой главе мы будем постоянно обозначать через р число процессоров, а о типе связей между ними будем говорить как о сетевой топологии. К числу популярных топологий относятся кольцо, сетка и тор, изображенные на рис. 6.1.1 -6.1.3. Каждый из алгоритмов для распределенной памяти в этой главе будет приспосабливаться к одной из этих трех топологий. Однако имеется несколько других очень важных коммуникационных схем, в том числе гиперкуб (интересен общностью, оптимальностью и коммерческой доступностью) и дерево (для реализации процедур, построенных по принципу «разделяй и властвуй»). См. Ortega, Voigt (1985)-там обсуждаются различные возможности.
Рис. 6.1.1. 4-процессорное кольцо.
Рис. 6.1.2. Сетка 4x4.
п Мы употребляем слово «систолический», говоря об использующем распределенную память вычислительном процессе, в высокой степени сегментированном и синхронном. Из сформулированных Кунгом [Kung, 1982] свойств вычислений на систолических массивах мы оставляем здесь некоторые, но не все.
Заметим, что в торе каждый столбец и каждая строка процессоров образуют кольцо.
Имена для соседей
В мультипроцессоре каждый процессор имеет числовую метку id. Чтобы указать на ц-й процессор в кольце, мы используем обозначение Ргос(ц). В двумерных сетях используем двойную индексацию: Ргос(/,Д.
Будем говорить, что Ргос(Х) является соседом для Ргос(ц), если между ними существует прямое физическое соединение. Так, в 4-процессорном кольце Proc (2) и Proc(4)-соседи для Ргос(З). Для тора размером 4x4 соседями для Ргос(1, 3) являются Ргос(1, 2), Ргос(1, 4), Proc (2, 3) и Proc (4, 3).
Соседи процессора обычно играют довольно заметную роль в его локальной программе, и поэтому для ссылки на них мы договоримся об удобном нечисловом обозначении. Говоря об индексах левого и правого соседей в кольце, будем писать left и right. Так, в 4-процессорном кольце Proc (4) имеет локальные переменные left и right, значения которых соответственно равны 3 и 1.
В двумерных сетях каждый отдельный процессор Proc (zj) имеет локальные переменные north, east, south и west, содержащие метки четырех его соседей, т. е. (/ — 1, j), (i, j + 1), (/ + 1, j) и (i, j — 1) соответственно. Для сетки может произойти ссылка на несуществующие процессоры, если Proc (z, у) находится на границе, но мы не будем останавливаться на этой детали. Для определения соседей для тора должна использоваться «круговая» арифметика.
Инициализация и окончание
Подобно программам, написанным для единственного процессора, локальные программы начинаются с инициализаций. Например, перед началом собственно вычислений должны быть заданы матрица, ее размеры, множество блочных параметров. Однако в случае мультипроцессора с распределенной памятью также должна быть доступной информация о процессорной сети. В самом деле интересующая нас часть локальной программы может ссылаться на:
Общее число процессоров р в сети.
Метку id, т. е. индекс или индексы, определяющие исполняющий процессор.
Подходящие значения для left и right, если процессор входит в кольцо, и подходящие значения для north, east, south и west, если процессор является частью тора или сетки.
В интересах нашего изложения мы соберем все эти инициализации в одну команду locanit (local initalization - локальная инициализация). Пусть для иллюстрации ц-й процессор в ^-процессорном кольце должен разместить подматрицу Л (1 :т, ц:р:п) в локальном массиве А1ос. Тогда локальная программа будет начинаться с предложения вида
loc. init [р, ц = ту.id, left, right, т, п, A.loc = А (ц;р: л)] .
В такой манере будут начинаться все наши локальные программы. Выражение “ц = ту. id”-это просто способ сказать о том, что локальная переменная ц содержит числовую метку процессора. Как мы видели в случае сетки и тора, id может быть двумерной меткой: (а, р) = ту. id.
Оператор loc.init-это удобное средство сгруппировать в одном месте все отвлекающие аспекты локальной программы, и тем самым оно позволяет нам сосредоточиться на алгоритмических проблемах более высокого уровня.
Все локальные программы заканчиваются оператором quit. Это обозначение подчеркивает тот факт, что процессор становится бездействующим после того, как завершено выполнение его собственной локальной программы. Другие процессоры могут оставаться работающими.
Связь между процессорами
В условиях распределенной памяти процессоры должны общаться между собой. Нам нужен язык для описания этого действия, и для этой цели мы примем простые отображения «отправить» (send) и «принять» (receive):
swift ({матрица}, {куда})recv ({матрица}, {откуда}).
Таким образом, если Proc (i, j) выполняет инструкцию send (Л, south), то процессору Proc(z + 1,У) посылается копия локально хранимой матрицы А. Конечно, размер матрицы может быть 1 х 1 или и х 1,-в этих случаях посылается скаляр или вектор. Будем считать, что всякий раз, когда в операторах send или recv дается имя какой-либо матрицы, ее элементы располагаются в локальной памяти слитно. На практике, возможно, в этом не будет необходимости, но это требование заставляет нас думать в правильном направлении о структуре данных. Итак, запись send (Л, (z:), left) незаконна, если Л-локальная матрица, хранимая по столбцам.
Локальные программы, совокупность которых определяет распределенное вычисление, выглядят так же, как обычные последовательные программы, за исключением того, что они включают коммуникационные примитивы типа send и recv, семантику которых мы сейчас обсуждаем. Если Ргос(ц) выполняет инструкцию send (У, X), то процессору Ргос(Х) отсылается копия локальной матрицы V. Выполнение локальной программы в Ргос(ц) возобновляется немедленно. Мы полагаем (как отмечалось выше), что элементы матрицы V расположены слитно в локальной памяти в Ргос(ц). Мы также полагаем, что процессор имеет право посылать сообщение самому себе.
Если Ргос(ц) выполняет инструкцию recv(И, X), то выполнение локальной программы приостанавливается до тех пор, пока от Ргос(Х) не поступит сообщение.
Как только сообщение получено, оно помещается в локальную матрицу V, а процессор Proc (ц) возобновляет выполнение своей локальной программы. Предполагается, что полученное V имеет ту же структуру данных, что и в Ргос(Х).
При разработке программы для распределенной памяти мы должны позаботиться о том, чтобы гарантировать, что требуемое сообщение будет действительно отправлено. В противном случае локальная программа может «зависнуть», ожидая несуществующего сообщения.
Хотя наши обозначения «отправить» и «принять» совершенно достаточны для записи алгоритмов, они в действительности скрывают некоторые важные детали, связанные с реализацией:
Длина сообщения в байтах или каких-то других единицах. Обработка более длинных сообщений требует больше времени. Наше обозначение не отражает этой важной стороны вычислений с распределенной памятью.
Путь сообщения по процессорной сети. Отправленное сообщение может следовать от одного процессора к другому по окружному пути, если системное обеспечение выбора маршрута сочтет это подходящим. Тем самым затрудняется предсказание коммуникационных издержек.
Буферизация принимаемых сообщений. Поскольку процессоры имеют ограниченную память, локального пространства может быть недостаточно для того, чтобы разместить в нем лавину принимаемых сообщений. Эту возможность мы игнорируем.
Некоторые распределенные структуры данных
Предположим, что х е R" и требуется распределить х по локальным запоминающим устройствам ^-процессорной сети. Имеется два «канонических» подхода к этой проблеме - строчная и столбцовая схемы хранения. Будем считать на данный момент, что п — гр. В столбцовой схеме хранения мы рассматриваем х как г х ^-матрицу
xrxp = [^(l:r)x(r + 1:2г)...%((/> - l)r + 1 :и)]
и храним каждый столбец в одном процессоре, т. е. х((ц — l)r + 1: цг)еРгос(ц). (Здесь «е» означает «хранится в».) Заметим, что каждый процессор берет на хранение порцию соседних компонент вектора х.
В строчной схеме хранения мы рассматриваем х как р х г-матрицу
xpxr = lx(\:p)x(p + 1:2р)... х ((г — V)p + 1:^)]
и храним каждую строку в одном процессоре, т. е. х (ц:р: п) е Proc (ц). О схеме хранения по строкам иногда говорят как о круговом методе распределения вектора х, потому что его компоненты напоминают карты в колоде, которые «сдаются» процессорам по кругу.
Если п не является точным кратным для р, то эти идеи работают после незначительной модификации. Рассмотрим столбцовую схему хранения при п = 14 и р = 4:
хТ = lxtx2x3x4 | х5х6х7х8 | х9х10хх 11 х12х13х14Д.
Proc(l) Proc (2) Proc(3) Proc (4)
В общем случае, если n=pr + qc0^q<p,TO процессоры Ргос(1),..., Ргос(^) могут взять себе по г + 1 компонент каждый, а процессоры Ргос(# + 1), ..., Ргос(р) могут взять на хранение по г компонент. В строчной схеме хранения мы просто полагаем, что в Ргос(ц) размещается х(^;р:п).
Далее рассмотрим распределение п х ^-матрицы А на кольцевой сети процессоров. Снова предположим для ясности, что п = гр. Есть четыре очевидных возможности:
Способ задания матрицы
Схемы хранения
Что помещается в Proc (ц)
По столбцам
Подряд
Д(:, (ц- 1)г+ 1:ц)
По столбцам
По кругу
ц:р:п)
По строкам
Подряд
^«Ц - 1)г + 1 :рг,:)
По строкам
По кругу
Л(ц:р:п,:)
Распределение матрицы на сетке или торе может быть осуществлено несколькими способами. В случае рх х ^2-сети простейшую распределенную структуру данных получаем, рассматривая А = A (ij) как блочную pY х р2-матрицу и помещая Atj в Proc (/,/). Возможны также двумерные круговые отображения.
Систолическая модель
Теперь мы рассмотрим систолические вычисления. В систолической сети процессоры работают абсолютно синхронно. В течение одного «отсчета времени» по глобальным часам каждый процессор обменивается информацией со своими соседями и затем выполняет некоторое локальное вычисление.
Предполагается, что в этой простой высокоструктурированной модели вычислений с распределенной памятью каждый процессор выполняет локальную программу следующего вида:
forz = l:z/iBa(
Послать данные соседям (если необходимо).
Получить данные от соседей (если необходимо).(6.1.2)
Выполнить вычисления над локальными данными (если необходимо).
end
quit
Здесь / играет роль глобального счетчика, задающего темп вычислений в этой сети. Сначала все процессоры выполняют свои предписания для / = 1. Затем все процессоры выполняют свои предписания для / = 2, и т. д. Все организовано таким образом, что сначала посылаются все сообщения, затем все они принимаются, и после этого выполняются все локальные вычисления. Такого рода систематизация упрощает строгое доказательство корректности распределенных вычислений, но в действительности она может затруднить разработку алгоритма. Это будет показано в § 6.5.
Чтобы проиллюстрировать наше обозначение, рассмотрим операцию gaxpy (6.1.1) на /^-процессорном систолическом кольце. Для ясности будем считать, что п = гр, и разобьем задачу на блоки:
Здесь A^eW х г и xb yh z^W. Предположим, что в начале вычислений Ргос(ц) берет на хранение ц-ю блочную строку из А, хи и уц, а возложенная на него задача состоит в получении z^ на месте уц. Заметим, что в вычислении
р
zp ~ Ур А" ^ АцТ хтг - 1
участвуют локальные данные (Лцт, уц, хц) и нелокальные данные (другие хт). Чтобы сделать х доступным для всего кольца процессоров, нужно заставить хт перемещаться по кругу наподобие карусели. Для иллюстрации возьмем р = 3 и покажем, «где» находится хт на каждом шаге этой процедуры:
Шаг
Proc (1)
Proc (2)
Proc (3)
1
*3
^1
^2
2
^2
*3
*1
3
^1
^2
^3
Для кольца этот метод, в котором хт ходит по кругу, особенно привлекателен, так как обмен сообщениями всегда происходит между соседями. Ниже-точная формулировка процедуры.
Алгоритм 6.1.1. Предположим, что заданы А е R" х п, хе R" и ye R", и пусть z = у + Ах. Если каждый процессор в /^-процессорном систолическом кольце исполняет следующую локальную программу и п = гр, то после окончания работы Ргос(ц) содержит z(l + (ц - 1)г:цг) в у1ос.
loc. init [р, Ц = my. id, left, right, п, г = п/р, row = 1 + (ц — 1) г: ц г,
А1ос = А (row,}, х1ос = x(row), у1ос = j(rcw)]
for t = 1: р'
send (xj0<?, righ}; recvU^, left) т = ц — t ifi < 0
T = T + p end {xZoc = x(l + (t - l)r:ir)} У Юс = У loc + Аюс(^ 1 + (T - 1)г:тг)х,ос end quit
Целочисленная арифметика в этой процедуре типична для матричных вычислений на распределенной памяти. Индекс т помечает текущую доступную часть вектора х. Если т известно, то можно вычислить поправку к локально хранимой порции вектора у. Заметим, что A l0(fi,f) не содержит A(i,j).
Атрибуты параллельного алгоритма
Каким образом мы можем добиваться нужной нам производительности для параллельной процедуры типа алгоритма 6.1.1? Сейчас мы находимся в положении, сравнимом с тем, когда мы обсуждали векторные вычисления в § 1.4. В тот раз мы ограничились довольно неформальным обсуждением - «о чем нужно думать» при разработке процедуры для векторного компьютера.
Здесь наша философия будет сходной. Мы не собираемся строить детализированную модель параллельных вычислений, которая позволяла бы предсказывать время выполнения алгоритма. Вместо этого мы отметим несколько ключевых
положений, которые должны учитываться при конструировании параллельных матричных вычислений. Наша задача не так уж непохожа на то, чем занимается администратор, руководящий работой приемной канцелярии университета. Распределена ли работа равномерно среди сотрудников? Есть ли узкие места, ведущие к бездеятельности? Не тратится ли больше времени на перекладывание бумаг со стола на стол, вместо того чтобы прочесть их? Насколько эффективно работает канцелярия? Что дало бы увеличение штата?
Равномерная загруженность
Мы начнем со свойства равномерной загруженности. Будем говорить, что параллельное вычисление дает равномерную загруженность, если каждому процессору приходится выполнять примерно одинаковое количество полезной вычислительной и коммуникационной работы на каждом временном шаге. Алгоритм 6.1.1 обеспечивает идеальную равномерную загруженность в том смысле, что на каждом временном шаге каждый процессор имеет в точности один и тот же объем вычислений и обменов.
На примере алгоритма 6.1.1 можно проиллюстрировать и неравномерную загруженность; для этого предположим, что матрица А - блочная нижняя треугольная с р х ^-блоками и г = р. Тогда разумно перевычислять у1ос, лишь когда блок Л/ос(:, 1 + (т — ^Р;ТР) не равен нулю:
if т ^ ц
У Юс = У Юс + АосС: 1 + (Т - 1)р:тр)х,ос
end
При таком использовании структуры матрицы в итоге получается процедура, не дающая равномерной загруженности, потому что (например) при t = р — 1 только Ргос(р) имеет что перевычислять. К выводу о неравномерной загруженности можно прийти и с другой стороны,-заметив, что для получения z^ требуется 2р.р2 флопов, и, таким образом, Ргос(р) должен выполнить в р раз больше флопов, чем Ргос(1).
Однако чтобы получить процедуру с равномерной загруженностью, мы просто прибегнем к круговому отображению данных.
Алгоритм 6.1.2. Предположим, что заданы A eR" х п, xeR" и yeR" и что z = г + Ах. Пусть п = гр и Л-блочная нижняя треугольная матрица с г х r-блоками. Если каждый процессор в ^-процессорном систолическом кольце выполняет следующую локальную программу, то в конце процесса в у1ос для Ргос(ц) будет содержаться
loc. init [р, ц = ту. id, left, right, n,r = n/p,
Аюс = А1у:р;пДх1ос = x^\p\n\yloc = y^\p\nf\
for t = 1: p
send (xloc, right); recv (xloc, left)
T = ц — t
ifi^O
T = T + p
end
U/oc = х^'.р-.п^
for/ = 1: r
УюДГ-Л = УюАГ-Л + АЮс U-r, т + (/ - D^Xj ос^
end
end
quit
Каждый процессор должен выполнить на каждом шаге некоторое множество операций gaxpy одинаковых размеров, и, таким образом, эта процедура дает равномерную загруженность.
В алгоритме 6.1.2 труднее всего понять индексирование. Мы работаем мысленно с АЦ^ х^ и ^(0, но они не соответствуют Aloc(ij), xl0C(J) и у/ос(0- Таким образом, с этим алгоритмом связан большой труд по «обдумыванию индексов», и это, к несчастью, типично для матричных вычислений на распределенной памяти-до тех пор, пока у нас нет хорошего компилятора.
Стоимость обмена информацией
Накладные расходы на обмен информацией можно оценить количественно, если мы сформируем модель оценки стоимости передачи сообщения. Для того чтобы это сделать, будем полагать, что передача т чисел с плавающей точкой от одного процессора к другому требует '
comm (т) = ad + ^dm (6.1.4)
секунд. Здесь ad - время, необходимое для инициализации сообщения, и Pd - скорость передачи сообщения. В алгоритме 6.1.1 на каждом временном шаге посылается и принимается r-вектор и выполняется 2 г2 флопов. Если вычисления производятся со скоростью R флопов в секунду и нет никаких задержек, связанных с recv, то каждый временной шаг требует (2 г2/R) + 2 (ad + Pd г) секунд.
Более информативной величиной является отношение вычислительных затрат к коммуникационным. Для алгоритма 6.1.1 оно имеет вид
Время, занимаемое вычислениями 2 г2/R
Время, занимаемое обменами 2 (ad + pd г)
Эта дробь дает количественное выражение коммуникационным издержкам по отношению к объему вычислений. Очевидно, если г = п[р возрастает, то увеличивается и часть времени, занимаемого вычислениями.
Эффективность и ускорение
Эффективность ^-процессорного параллельного алгоритма определяется
рТ(рУ
где Т(к)~ время, требуемое для выполнения программ на к процессорах. Если вычисления происходят со скоростью R флопов в секунду, а коммуникации моделируются формулой (6.1.4), то в алгоритме 6.1.1 разумная оценка для Т(к) дается формулой
*2 и2
Т^ = £ 1WIR + 2(ad + pd W = — + 2adk + 2pdn.
Предполагается, что процессоры не простаивают. Тогда мы находим
, ,, Pd^
п2 п
I I Pd^p
п2 п
Заметим, что эффективность улучшается с ростом п при фиксированном р и ухудшается с ростом р при фиксированном и. Полезное наблюдение такого рода-вот практически и все, что удается извлечь из нашей грубой модели вычислений и обменов. На практике единственным заслуживающим доверия способом приобретения интуиции насчет матричных вычислений на какой-либо конкретной системе с распределенной памятью являются тестовые замеры производительности.
С эффективностью связано понятие ускорения. Мы говорим, что параллельный алгоритм для конкретной задачи достигает ускорения 5, если
5=^/7^,
где Траг-время выполнения параллельного алгоритма и Tseq-время реализации на одном процессоре - при условии, что используется наилучшая однопроцессорная процедура. Для многих задач самый быстрый последовательный алгоритм не распараллеливается и, следовательно, для оценки ускорения привлекаются два различных алгоритма.
Дробление вычислений
Еще одной важной характеристикой параллельного алгоритма является принятое в нем дробление вычислений. Это - качественная характеристика, относящаяся к объему вычислительной работы, выполняемой между точками синхронизации. В систолическом алгоритме процессоры синхронизируются на каждом временном шаге, и, значит, в этой модели показателем дробления вычислений служит просто их количество на каждом шаге. Например, каждый временной шаг в алгоритме 6.1.1 содержит г х r-операцию gaxpy. Более мелкое дробление получается, когда объем сообщений ограничен одним числом с плавающей точкой. Вот процедура, возникающая при этом
loc. init \j), ц = ту. id, left, right, n,r = nip, row = 1 + (p — 1) r: p r,
Au,c = A(row,fxloc = x)row),yloc = у (row)]
for t = 1: n
send LxU)C (ceil (t/p), right)); recv (л^ (ceil(t/p), left))
p = ceil(t/p);tx = t-(p-\)p
т = p — tY(6.1.5)
ifi ^ 0
т = т + p end
Уюс = Уloc + ^locU^ - l)r + p)x,oc(p)
end quit
Вместо одного оборота карусели, как в алгоритме 6.1.1, здесь делается г оборотов. При р-м обороте х(р:р:п) обходит круг. В момент перевычисления у1ос в х/ос(р) помещается х(р + (т — 1)г).
Заметим, что (6.1.5) имеет временных шагов в г = п/р раз больше, чем алгоритм 6.1.1. Однако на каждом шаге выполняется меньшая работа, так как вместо gaxpy выполняется saxpy. Итак, дробление вычислений в (6.1.5) более мелкое, чем в алгоритме 6.1.1.
Важно понимать, что вместе с дроблением вычислений изменяются и коммуникационные издержки. В алгоритме 6.1.1 процессор тратит на обмены 2(pad + Р^и) секунд, а в (6.1.5) -2 (л ad + Pd«) секунд. Таким образом, для системы, поддерживающей мелко-дробный параллелизм, важнейшее значение имеет малость стартового времени ad сообщения.
Параллелизм мелкого дробления часто облегчает получение равномерной загруженности. Однако если в системе с высокопроизводительными процессорами вычисления дробятся слишком мелко, то локальные программы не могут работать со скоростью 2-го или 3-го уровня просто из-за того, что именно им и недостаточно локальных линейно-алгебраических операций.
На дробление вычислений может влиять также выбор структуры распределенных данных. Ниже-реорганизация алгоритма 6.1.1 в предположении, что Ргос(ц) содержит ц-й блочный столбец (вместо ц-й блочной строки) матрицы А из (6.1.1).
Алгоритм 6.1.3. Предположим, что заданы AeRnxn, xeR" и что z = у А- Ах. Если в /^-процессорном кольце каждый процессор исполняет следующую локальную программу и п = гр, то после окончания процесса Ргос(ц) содержит z(l+(p — - 1)г:цг в у1ос.
loc. init [р, ц = ту. id, left, right, n,r = nip, col = 1 + (p — 1) r: p r, Aioc = A (:>соГу xioc = x (co/), Уloc = У (co/)]
for t = 0: p
if z = 0
W = AlocXloc
else
send (w, right)', recv (w, left)
т = p — t
if т < 0
T = T + p end {и- = AxxT] Уик = Уюс + w0 + (т~ 1)г:тг) end end quit
Заметим, что в этой процедуре циркулируют векторы w, а не векторы х1ос, как в алгоритме 6.1.1. Поскольку векторы w имеют длину п, а х1ос-длину г = п/р, мы видим, что алгоритму 6.1.3 сопутствуют большие коммуникационные издержки.
По отношению к дроблению вычислений вместо Ъ3 флопов между точками коммуникации, как в алгоритме 6.1.1, теперь мы имеем только г флопов. Изменение в степени дробления вызвано массивным вычислением, имеющим место на шаге z = 0.
Модель передачи сообщений
Теперь обсудим вычисления на распределенной памяти в отсутствие глобальных часов. Координация процессоров здесь достигается с помощью посылки и приема сообщения. В отличие от систолической модели процессор может отправить сообщение в любое время и не обязан ожидать следующего отсчета глобальных часов.
Наш язык передачи сообщений «не заботится» о том, как связаны процессоры. Любой процессор может отправить сообщение любому процессору. Однако на практике распределенные вычисления стоит организовывать таким образом, чтобы сообщения посылались «соседним» процессорам в сети. Так и будет в большинстве наших примеров.
Мы начнем с основанной на передаче сообщений версии алгоритма 6.1.3.
Алгоритм 6.1.4. Предположим, что заданы Л eR” х ”, xeR" и yeR" и что z = у + Ах. Если в ^-процессорном кольце каждый процессор исполняет следующую локальную программу и и = гр, то по окончании процесса Ргос(ц) содержит z(l + (ц — 1)г.цг)
loc. init [р, ц = ту. id., left, right, п, г = п/р, col = 1 + (ц — 1)г:цг
АХос = А (:, col), xloc = x(col), уХос = у (со/)]
w = Al0Cxt0C
к = 1
while к ^ р
send(и, right)', recv(w, left)
т = т — к
if т ^ О
т = т + р
end
{w = Атхт}
Уюс = Уюс+ w(l +(т- 1)г:тг)
к = к + 1
end
quit
Хотя выглядит это очень похожим на свой систолический аналог-алгоритм 6.1.3, лежащая в основе логика здесь совершенно другая. Именно, Ргос(ц) узнает, что делать по индексу к, который отслеживает число принятых сообщений.
Дальнейшие примеры передачи сообщений
Поучительно рассмотреть некоторые вариации алгоритма 6.1.4, для того чтобы продолжить иллюстрацию парадигмы передачи сообщений.
В качестве первого примера предположим, чго х и у целиком размещены в Ргос(1) и что Ргос(1) должен на месте у получить z = у + Ах. (Мы продолжаем считать, что А распределена по блочным столбцам.) Один из подходов к этой задаче - заставить Ргос(1) передать копию хт для Ргос(т). После этого Ргос(т) вычисляет Атхт и возвращает результат в Ргос(1), где он используется для перевычисления у. Вот один из способов сделать это:
{Распределить х по процессорной сети.}
ifp = 1
for т = 1: р
send(x(l + (т — 1)г:тг),т)
end end
{Принять Хц, вычислить и’ = АцХц, послать w в Ргос(1).}
recv (xloc, 1); w = Alocxloc; send(w, 1)
{Ргос(1) собирает векторы w и перевычисляет yf
ifp = 1
for т = 1: р
recv(w, т) у = у + w end
quit
Заметим, что Ргос(1) посылает сообщение сам себе-вещь совершенно легальная в нашей модели. Скажем также о том, что предсказать коммуникационные издерж-
ки здесь труднее, чем для алгоритма 6.1.1,-из-за того, что обмениваются не соседи. При оценке производительности весьма важную роль играло бы системное обеспечение маршрутизации сообщений.
Теперь предположим, что Ргос(ц) содержит x(col) и Л(:, col), где col = 1 4+ (ц — 1)г:цг, и что мы хотим на месте у получить z = у + Ах. Будем считать, что у помещается в Ргос(1) в начале и в конце вычисления. Кажется разумным действовать следующим образом:
ifp = 1
У = У-V Alocxloc
send (у, right)’, recv(y, left)(6.1.6)
else
recv(y, lefty, у = y + AlMxloc; send O’, right}
end
quit
Логика этого подхода состоит в том, что у движется по кругу, вбирая в себя А1осх1ос на каждой остановке. Проблема заключается в том, что здесь нет одновременно выполняемых вычислений. В любой момент только один процессор занят арифметической работой.
Чтобы это исправить, мы просто сделаем так, чтобы Proc (ц) выполнял вычисления, прежде чем он будет ждать прибытия циркулирующего у.
if р. = 1
У — У + А1осх1ос
send (у, righty recv(y, left)
else
^’Aloe ^loc
recv(y, lefty у = у + w; send (у, right)
end
quit
Теперь уровень простаивания намного сокращается в сравнении с (6.1.6).
Задачи
Модифицировать алгоритм 6.1.1 так, чтобы п не обязательно было целым кратным р.
Модифицировать алгоритм 6.1.1 так, чтобы он эффективно работал в случае трехдиагональной А.
Модифицировать алгоритм 6.1.2 так, чтобы он мог работать в случае, когда матрица А является: а) нижней треугольной; б) блочной верхней треугольной.
Модифицировать алгоритмы 6.1.3 и 6.1.4 так, чтобы они на месте у получали z = у 4- Ат х для заданного положительного целого т, доступного каждому процессору.
Модифицировать алгоритмы 6.1.3 и 6.1.4 так, чтобы у замещалось вектором z = у 44- А Т А х.
Модифицировать алгоритм 6.1.3 так, чтобы по окончании локальный массив А1ос в Ргос(р) содержал р-й блочный столбец для А 4- хут.
Замечания и литература к § 6.1
К числу общих ссылок на параллельные матричные вычисления относятся
Dongarra J.J. and Sorensen D. С. (1986). "‘Linear Algebra on High Performance Computers”, Appl. Math, and Comp., 20, 57-88.
Heller D. (1978). “A Survey of Parallel Algorithms in Numerical Linear Algebra”, SIAM Review 20, 740-777.
Фаддеева В. H., Фаддеев Д. К. Параллельные вычисления в линейной алгебре.-Кибернетика, 1977, № 6, 28-40.
Хокни Р., Джесхоуп К. Параллельные ЭВМ.-М.: Радио и связь, 1986.
Hockney R. W. and Jesshope С. R. (1988). Parallel Computers 2, Adam Hilger, Bristol and Philadelphia.
Modi J. J. (1988). Parallel Algorithms and Matrix Computations, Oxford University Press, Oxford.
Ortega J. M. and Voigt R. G. (1985). “Solution of Partial Differential Equations on Vector and parallel Computers”, SIAM Review 27, 149-240.
Важной и трудной проблемой является оценка производительности на системах с распределенной памятью. См.
Adams L. and 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 on the Design of Parallel Numerical Algorithms”, IEEE Trans. Comp. C-33, 1180-1194.
Johnsson S. L. (1987). “Communication Efficient Basic Linear Algebra Computations on Hypercube Multiprocessors”, J. Parallel and Distributed Computing, No. 4, 133-172.
Saad Y. and Schultz M. 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 Programs”, Parallel Computing 5, 175- 186.
O’Leary D. P. and Stewart G. W. (1986). “Assignment and Scheduling in Parallel Matrix Factorization”, Lin. Alg. and Its Applic. 77, 275-300.
Матричные вычисления на 2-мерных массивах обсуждаются в
Kung Н.Т. (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 Stat. Comp. 8, 227-287.
Moler С. 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.
Хороший материал по матричным вычислениям на распределенной памяти содержится в трудах конференции, посвященной гиперкубу. См.
Heath M.T. (ed.) (1986). Proceedings of First SIAM Conference on Hypercube Multiprocessors, SIAM Publications, Philadelphia, Pa.
Heath M.T. (ed.) (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.
Добавления при переводе
Свежим обзором по параллельным вычислениям с плотными матрицами является
Gallivan К. A., Flemmons R.T., Sameh А. Н. (1990). “Parallel algorithms for dense linear algebra computations”, SIAM Review, 32, No. 1, 54 135.
Общий взгляд на параллельные вычислительные системы и процессы с точки зрения математика представлен в
Воеводин В. В. Математические модели и методы в параллельных процессах. М.: Наука, 1977.
Операция gaxpy на общей памяти
Теперь мы обсудим операцию gaxpy на многопроцессорных системах с общей памятью. В такой системе каждый процессор имеет доступ к общей, разделенной с другими памяти, как показано на следующем рисунке:,
|^^д7] \Proc (2) | \Proc (3) | \Proc (4) |
Разделенная память
Рис. 6.2.1. 4-процессорная система с общей памятью.
Связь между процессорами достигается с помощью считывания и записи общих переменных, размещаемых в общей памяти. Каждый процессор выполняет свою локальную программу и имеет свою локальную память. В ходе вычислений данные текут туда и обратно из общей памяти. Например, для операции gaxpy(z = y + + Ах^х, у и А могут располагаться в общей памяти. Процессор, участвующий в обработке, может: а) скопировать х, z-ю блочную строку Л- и f-й подвектор у( из общей памяти в свою память; Ь) вычислить г^у^А^; с) скопировать zt из локальной памяти в общую память.
В модифицированной форме здесь присутствует все то, чем мы интересовались в случае вычислений на распределенной памяти. Как обсуждалось в предыдущем параграфе, вся процедура должна обеспечивать равномерную загруженность. Вычисления следует организовывать таким образом, чтобы отдельным процессорам приходилось как можно меньше простаивать в ожидании какой-нибудь полезной работы. Потоки данных между общей памятью и локальными должны управляться с особой аккуратностью, так как они, по нашему мнению, являются значительным накладным расходом. (Это соответствует межпроцессорным коммуникациям в случае распределенной памяти.) Природа физического соединения между процессорами и общей памятью очень важна и может влиять на разработку алгоритмов. Например, если в любой заданный момент времени доступ к общей памяти может получить только один процессор, то следует позаботиться о том, чтобы свести к минимуму возможность конфликтов, связанных с одновременным обращением к общей памяти. Большей частью мы стараемся не опускаться до столь подробной детализации, предпочитая рассматривать этот аспект системы как черный ящик, изображенный на рис. 6.2.1.
Все локальные вычисления подчинены традиционным требованиям эффективности. Если отдельные процессоры являются векторными/конвейерными процессорами, то, как обсуждалось в § 1.4, могут быть важными такие вещи, как шаг и длина вектора, число обращений к локальной памяти повторного использования данных.
Чтобы познакомиться с матричными вычислениями на общей памяти, полезно еще раз рассмотреть параллельную реализацию для gaxpy. Сначала мы изложим такой алгоритм для gaxpy, в котором задача каждому процессору ставится заранее. Для менее регулярных вычислений необходимо назначать задачи процессорам по ходу вычислений. Динамическое назначение задач требует специальных средств синхронизации, и для этого мы вводим понятие монитора. Используя мониторы, мы можем найти элегантные решения для широкого класса проблем планирования вычислений.
Статическое планирование операции gaxpy
Всюду далее будем считать, что наш модельный компьютер с общей памятью имеет р процессоров и ц-й процессор обозначается Ргос(ц). Как и в предыдущем параграфе, рассмотрим следующее блочное разбиение п х и-задачи (gaxpy) z = = у + Ах:
Здесь мы полагаем, что п = гр и AueRrxn, ^eR'', ^eRr. Наши обозначения, связанные с общей памятью, мы введем, формируя следующий алгоритм, в котором в Ргос(ц) на месте ^ц получается z^ = у^ + А^х.
Алгоритм 6.2.1. Предположим, что /leR” х ”, xeR" nyeR" располагаются в общей памяти, к которой имеют доступ р процессоров. Если п = гр и каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у получается z = у + Ах.
shared variables [ А (1: п, 1: п\ х (1: п\ у (1: и)]
glob, init [Л, х, у7]
loc. init \р, ц = ту. id, п\
г = nip; row = 1 + (ц — 1) г: ц г
get(x, x,J; get (у (row), _>-,J
fory = 1: п
, get (Л (row, у), й,ос); Лос = у1ос + а/осх(/)
end
put 0 (ос, J’(row))
end quit
Мы предполагаем, что в каждом процессоре находится копия этой программы. Все переменные являются локальными, за исключением тех, которые описаны оператором shared variables. Чтобы подчеркнуть локальность переменной, мы часто используем нижний индекс loc. Оператор glob, init указывает, какие общие переменные должны инициализироваться. В операторе loc. init указываются локальные переменные, которые должны инициализироваться, в их числе и обозначение процессора ц. Мы не будем думать ни о том, каким образом осуществляются эти инициализации, ни о том, как загружаются локальные программы или как организуется их параллельное выполнение. Это-важные детали, связанные с реализацией, но они выходят за рамки нашего уровня изложения. Оператор quit напоминает нам, что
окончание программы на одном процессоре не означает, что все вычисления закончены.
Исполняемая часть локальной программы следует за определением общих переменных и локальными и глобальными инициализациями. В общую память и обратно данные пересылаются с помощью операторов get и put. Например, get (Л (row, у), а1ос^ копирует часть столбца A (row, j) из общей памяти в локальное рабочее пространство а1ос. Аналогично, после того как Proc (ц) завершает вычисление вектора ^ + А^х, он возвращает его в общую память с помощью предложения put(y(oc, y(row)\
Заметим, что в алгоритме 6.2.1 только один процессор делает записи в заданном месте общей памяти, отведенной для у. Таким образом, в синхронизации здесь нет необходимости. Каждый процессор имеет совершенно независимую часть всех вычислений, связанных с gaxpy, и ему не нужно следить за тем, что делают другие процессоры. Мы говорим, что алгоритм допускает статическое планирование работы, потому что ее распределение осуществляется перед выполнением. *
Обмен данными с общей памятью
Важно учитывать накладные расходы, связанные с операторами get и put. Они соответствуют издержкам, связанным с send и recv для вычислений на распределенной памяти. Будем считать, что в общем случае put и get имеют вид
get ({матрица в общей памяти}, {матрица в локальной памяти})put ({матрица в локальной памяти}, {матрица в общей памяти})
Полагаем, что размеры общих и локальных матриц одинаковы, а их элементы в соответствующей памяти располагаются без пропусков. В алгоритме 6.2.1 предполагается, что А хранится в общей памяти по столбцам. Таким образом, Ац не занимает в памяти участка без пропусков и, значит, должна копироваться в локальную память столбец за столбцом.
Если get или put относятся к т числам с плавающей точкой, то мы определяем время передачи как
trans (т) = пч + ^sm.(6.2.2)
Здесь as представляет собой стартовое время, a Ps - соответствующую скорость передачи. Отметим сходство этих затрат с нашей моделью в § 1.4.3 для времени выполнения векторной операции и с нашей моделью (6.1.4) для обменов в системе с распределенной памятью.
Учитывая все операторы get и put в алгоритме 6.2.1, мы видим, что время, которое каждый процессор тратит на обмен с общей памятью, оценивается как
Тб.гл = (” + 3)«, + (и + 2г + иг)05.(6.2.3)
Однако могут быть и скрытые задержки, связанные с каждым get и put, потому что процессоры могут вступить в конфликт при одновременном обращении к общей памяти. Таким образом, важно помнить, что для алгоритма 6.2.1 (6.2.3) является оценкой накладных расходов на обмен с общей памятью.
Равномерная загруженность
Алгоритм 6.2.1 дает прекрасную равномерную загруженность. Однако если А нижняя треугольная матрица, то необходимо перераспределить загрузку процессоров таким образом, чтобы обеспечить каждому из них примерно одинаковое
количество полезной работы. Один из способов добиться этого - сделать так, чтобы Proc (ц) вычислял z (ц: р: и) = у (ц: р: и) + А (ц: р: л) х. Детали мы оставляем читателю, поскольку искомая процедура очень близка к алгоритму 6.1.2.
Синхронизация с помощью барьеров
Предположим, что мы хотим на месте у получить единичный вектор, направленный так же, как вектор z = у + Ах, который мы считаем ненулевым. Наш подход к этой задаче состоит в том, чтобы вычислить z, используя параллелизм алгоритма 6.2.1, а затем заставить какой-либо один процессор, скажем Ргос(1), выполнить нормировку z/||z||2. На первый взгляд, для этой задачи gaxpy с нормировкой вполне разумным кажется следующий подход:
shared variables [Л (1: п, 1: и), х (1: п\ у (1: и), л]
glob, init [Л, х, г]
loc. init [/?, Ц = ту. id, ri]
г = п(р; row = 1 + (ц — 1) г: ц г
get k xlo^; get (у (row), у^)
for j = 1: п
get (Л (row, у), а^; уХос = у1ос + аХосх(/)
end
PUt(yZoc, ^(row))
if ц = 1
get (у, uloc); Sioc = || иХос ||2; put (sZw, 5)
end
get(s, slocy, yloc = yXoJs; put (yZoc, у (row))
quit
Однако в этом подходе есть два серьезных изъяна. У нас нет никакой гарантии, что у содержит z, когда Ргос(1) начинает вычисление 2-нормы, и нет гарантии, что 5= || z ||2, когда Proc(2), ..., Ргос(р) начинают нормирование.
Чтобы исправить эти недостатки, нам нужно какое-то средство для синхронизации, которое может задержать вычисление 2-нормы до тех пор, пока все процессоры не вычислят и не запомнят свою порцию вектора z, и которое может задержать нормирование до тех пор, пока не будет получено s. Для этой цели мы вводим конструкцию барьера:
Алгоритм 6.2.2. Предположим, что A eR" х п, xeR" и yeR” размещаются в общей памяти,* доступной для р процессоров. Если п = гр и каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у получается z/|| z ||2, где вектор z = у + Ах предполагается ненулевым.
shared variables [А (1: п, 1: п), х (1: п), у (1: п), л*]
glob, ink [Л, х, г]
loc. init \р, ц = ту. id, ri]
г = п(р; row = 1 + (ц — 1)г:цг
get(x, ^loc); get (у (row), yl0^
for у = 1: n
get M (row, y), aloc); yloc = yloc + alocx(jl
end
put (yZoc, (row))
barrier
ifp = 1
get(y, ulocy, sloc = || uloc || 2; put(sZoc, s)
end
Earner
get (5, s/(M.); ylec = ytJs; put(y/oc, у (row))
quit
Чтобы понять, что делает barrier, удобно считать, что процессор либо блокирован, либо свободен. Процессор блокирован и откладывает выполнение программ, если он выполняет barrier. После блокировки р-го процессора все остальные процессоры находятся в «свободном состоянии» и продолжают работу. Проще говоря, barrier это препятствие. Все р процессоров собираются возле препятствия, и после этого они все вместе перепрыгивают через него.
В алгоритме 6.2.2 Ргос(ц) вычисляет z^ и немедленно блокируется. Нельзя предсказать порядок, в котором блокируются процессоры. Мы знаем лишь, что работа возобновляется в каждом процессоре, как только последний процессор достигнет барьера. Тогда Ргос(1) продолжает работу, вычисляя №||z||2, но остальные процессоры немедленно блокируются снова. Наконец, когда получено s, каждый процессор освобождается и может продолжить работу, выполняя свою порцию нормирования.
Парадигма динамического резерва задач
Оператор barrier является полезной конструкцией для крупноблочных вычислений с равномерной загруженностью. Однако злоупотреблять им не следует, так как это увеличивает всеобщее простаивание. В тех случаях, когда равномерное распределение работы трудно организовать заранее, нужен какой-то более гибкий подход к синхронизации.
Чтобы мотивировать ключевые идеи, мы изложим параллельный алгоритм для п х и-операции gaxpy (z = j + Ах), основанный на общем блочном построчном разбиении, т. е. на разбиении вида
где yb Zi6Rni и A1eRH1XH, i=l:N. Полагаем, что элементы матрицы Ак располагаются в общей памяти без пропусков. Определим целочисленные векторы first (\ ;N) и last(\ :N) как
first (z) = 1 + пх + ... + п{_ i,last^ = nx + ... + nl.
Вот последовательный алгоритм, основанный на блочном разбиении (6.2.4) и получающий z = у + Ах на месте у.
for / = 1: и
row = first (z): last (z)
у (raw) = у (raw) + A (row, :)x(6.2.5)
end
Заметим, что цикл определяет N независимых вычислений, и поэтому при разработке параллельного алгоритма нет каких-либо проблем. Вычисление zb i = = p:p:N, можно было бы назначить процессору Ргос(ц). Однако итоговая процедура может не давать равномерной загруженности, если строчные размеры блоков А( разные.
Это подталкивает нас к разработке какого-либо динамического метода распределения работы. До сих пор мы рассматривали лишь «хорошие» блочные разбиения для вычисления gaxpy, которые позволяли нам заранее предложить удовлетворительное распределение работы. Такое распределение называется статическим планированием. Наш подход к динамическому планированию основывается на идее общего резерва 1} задач. Чтобы проиллюстрировать этот подход, будем рассматривать вычисления, относящиеся к f-му проходу цикла в (6.2.5), как /-ю задачу. В подходе, связанном с резервом задач, поддерживается список остающихся задач. Когда процессор завершает задачу, он сверяется со списком. Если список пуст, то нет никакой работы, которую можно было бы назначить этому процессору. Если список не пуст, то процессор выбирает задачу из «общего котла» остающихся задач. После этого выбранная задача убирается из резерва.
Чтобы применить эту идею к (6.2.5), разумно завести глобальную переменную count, сохраняющую номер последней выбранной задачи. Это может быть сделано (или кажется, что это так), если инициализировать count нулем и затем увеличивать ее значение каждый раз, когда процессор берется за новую задачу:
shared variables [Л (1: п, 1:и), х(1:и), ^(1:и), соишЗ
glob.init[^, х, у, count = 1]
loc. init [р, р = ту. id, п, N, first (1: N), last (1: N)]
get(x, xloc)
get (count, i); i = i + 1; put(/, count)
while i < N
row = first (/): last (/)
get (Л (row, :), Л^); get (у (row), yltK)
У loc Уlocloc loc
PUtO^ У (TOW))
get (count, i); i = i + 1; put(/‘, count)
end
Неприятность, связанная с этим подходом к динамическому планированию, заключается в том, что увеличение переменной count не контролируется. Два различных процессора могут «захватить» одно и то же значение переменной count, если соответствующие им операции
get (count, i); i = i + 1; put(z, count)(6.2.6)
перекрываются во времени. Таким образом, нам нужен какой-либо способ, гарантирующий, что увеличением счетчика согласно (6.2.6) в любой момент занимается не более чем один процессор. Будем говорить, что (6.2.6) является критическим разделом алгоритма.
Мониторы
В решении проблемы критических разделов могут использоваться мониторы. Проиллюстрируем эту концепцию на примере идеи резерва задач. Ключом к решению является разработка специальной процедуры
nexti. index (р, N, more, i),которая имеет на входе р (число процессоров, назначенных на параллельноевыполнение цикла) и N (число задач). На выходе процедуры - логическое значение
п В отечественной литературе по программированию такой динамический резерв задач иногда называют пулом; в оригинале-pool.-Прим, перев.
в тоге и индекс в i, обладающие следующим свойством:
more = true =▻ назначается /-я задача;
more = false =▻ нет оставшихся задач.
Если мы можем гарантировать, что в любой момент только один процессор исполняет nexti. index, то программа
call nexti. index (р, N, more, /)
while more = true(6.2.7)
На месте yt получить Zi = y^ Atx
call nexti. index (p, N, more, i)
end
выполняет вычисления корректно. Чтобы определить вычисление этого типа, мы расположим nexti. index внутри монитора:
monitor: nexti
protected variables '.flag, count, idle, proc
condition variables: waiti
initializations: flag = 0
procedure nexti. index (p, N, more, i)
if flag = 0
count = 0; flag = 1; idle, proc = 0 end
count = count + 1 if count < N more = true; i = count else
more = false; idle, proc = idle, proc + 1 if idle, proc ^ p — 1 delay (waiti)
else
flag = о end
continue (waiti)
end
' end nexti. index end nexti
Из этого примера видно, что монитор имеет имя и в его состав входят операторы protected variables (защищенные переменные), condition variables (переменные условия), initializations (инициализации) и одна или несколько процедур для мониторинга; в нашем случае монитор имеет одну процедуру: nexti. index. Главная задача, возложенная на монитор, состоит в том, чтобы аккуратно поддерживать значение счетчика count, изменяющееся от 1 до N, т. е. число задач, которые должны обрабатываться на р процессорах. Когда уже не остается задач, монитор инициализирует процесс «перематывания назад». Переменная idle.proc отслеживает число процессоров, которым не удалось заполучить новую задачу. Когда этот счетчик достигает р, работа монитора заканчивается и он возвращается к своему начальному состоянию. Механику этого процесса лучше всего описать после того, как мы увидим монитор в действии.
Алгоритм 6.2.3. Предположим, что Л eR" х ", xeR" hjgR" располагаются в общей памяти, доступной для р процессоров. Предположим, что А хранится по блочным
строкам и /-я блочная строка записывается как A first (/): last $,:). Если каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у получается z = у + Ах.
shared variables [Л (1: п, 1: п), х (1: п\ у (1: и)]
glob, init [^, х, р]
loc. ink [р, ц = ту. id, N, first (1: N), last (1: N)]
get(x, x/oc)
call nexti. index (p, N, more, i)
while more = true
row = first (/): last (i)
get (Л (row, :), Л1ос); get (у (row), yloc)
Vloc У loc ^ ^loc^loc put(yJoc, у (row)) call nexti. index (p, N, more, i) end quit
Этот пример мы используем для того, чтобы объяснить основные особенности использования мониторов.
Процессор пытается «войти» в монитор с помощью вызова своих процедур. Таким образом, оператор «call nexti. index (р, N, more, i)» представляет собой попытку исполняющего процессора войти в nexti.
Внутри монитора процессор является либо активным, либо ожидающим. В любой момент времени в мониторе может быть не более одного активного процессора. Значит, если Ргос(1) находится в nexti и Proc (2) вызывает nexti. index, то в момент вызова в своей локальной программе Proc (2) становится ожидающим.
Процессор становится ожидающим внутри монитора, когда он встречает оператор вида delay ({переменная условия}). Смысл переменной условия в том, что она указывает очередь, и когда процессор становится ожидающим, его id помещается в очередь. Если процессор является ожидающим, то монитор становится свободным, и если какие-либо процессоры стремятся войти в монитор, то в точности один получит разрешение на вход. Пусть Ргос(ц) входит в монитор nexti и count имеет значение N, т. е. нет задач для выбора. Тогда Ргос(ц) становится ожидающим. Заметим, что прежде чем стать ожидающим, Proc (ц) полагает more = false и увеличивает значение idle proc. Таким образом, когда управление передается назад в локальную программу, которая вызывала nexti. index, будет «известно», что задач больше нет. Именно это дает возможность работать циклу while в алгоритме 6.2.3.
Когда текущий активный процессор выполняет оператор вида continue ({переменная условия}), он немедленно покидает монитор с несколькими вариантами продолжения. Если очередь, указанная в continue, непуста, то в точности один из ожидающих процессоров становится следующим активным процессором. Если бы указанная очередь была пустой, то монитор был бы открыт для входа. Если при этом процессоры ждут допуска в монитор, то ровно одному из них будет разрешено войти. Если в nexti. index защищенная переменная idle, proc имеет значение р, то все вычислительные задачи завершены. Тот процессор, который первым обнаружит, что задач больше нет, устанавливает fag на нуль и дает старт процессу активизации р — 1 ожидающих процессоров посредством выполнения оператора continue\waitif После «пробуждения» процессор возобновляет работу. В nexti. index «разбуженный» процессор не-
медленно выполняет continue и тем самым активизирует еще один ожидающий процессор. Этот процесс активизации продолжается до тех пор, пока все р процессоров не уйдут из монитора.
Значение защищенной переменной в мониторе может быть изменено только процедурой в мониторе. Заметим, что вызывающие программы не могут испортить flag, count или idle.proc.
Защищенные переменные инициализируются только один раз-до каких-либо обращений к монитору. В nexti переменная flag инициализируется нулем. В то время когда nexti следит за распределением задач, flag имеет значение 1. Он устанавливается на нуль первым процессором, который обнаружит, что задач больше нет.
Имеет смысл затратить немного времени и разобраться шаг за шагом с этой довольно сложной логикой, для того чтобы понять соображения, лежащие в основе динамически планируемых матричных вычислений.
Столбцовая реализация операции gaxpy
В качестве второй иллюстрации использования монитора и идеи резерва задач мы изложим параллельную реализацию для gaxpy, основанную на следующем блочном столбцовом разбиении для z = у + Ах:
у + А^у + ... + Anxn.(6.2.8)
Мы не делаем никаких предположений относительно ширины блочных столбцов. В параллельном алгоритме, основанном на этом блочном разбиении, разумно поручить Proc (ц) вычисление wk = Ак хк, где к = ц :р: N. Чтобы завершить gaxpy, нужно просуммировать частичные векторные суммы. На первый взгляд корректное решение вроде бы дается следующей процедурой:
shared variables [А (Г. п, Г. п), х(Г.п), у(Г.п)]
glob, ink [Л, х, у]
loc. ink [р, ц = ту. id, ^]
for к = ц: р: N
get(xk, xIoc); get (Ак, А1ос)
^1ос ^ locloc
get О, yloc); yloc = yloc + wloc; put (у1ос, у) end quit
Однако возникают проблемы, если выполнение модификации
get (у, у1о<); У10с = У1ОС + wloc; put (у 1ос, у)(6.2.9)
не управляется должным образом. Например, может быть потеряно то, что вычислит Ргос(1), если Proc (2) читает у в то время, когда Ргос(1) находится на полпути при выполнении (6.2.9). Все будет работать, если процессоры не смешивают свое обращение к у. Ситуация требует монитора, управляющего вычислением суммы векторов, получаемых несколькими процессорами:
monitor: gax
procedure gax. add (м, v)
get(v, v,oc); d1oc = dUc + и; put(v,ot„ 0
end gax. add
end gax
Этот простой монитор не имеет защищенных переменных или переменных условия. В процедуре gax. add два аргумента. Первый-это локальный вектор, и вызывающий процессор хочет включить его в общую накапливаемую сумму, обозначенную вторым аргументом. Используя этот монитор, мы можем вести безопасное накапливание суммы в течение вычисления gaxpy.
Алгоритм 6.2.4. Предположим, что АеКпх п, х g R" и уеR" размещаются в общей памяти, доступной для р процессоров, и пусть мы имеем блочное разбиение (6.2.8). Если каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте у будет z = у + Ах.
shared variables [Л (1: и, 1: п\ х (1: п), у (1: л)]
glob, init [Л, х, у]
loc. init [р, ц = ту. id, ^]
call nexti. index (р, N, more, к)
while more = true
get^v Л,ос); get(xt, xlocY wloc = Alocxloc
call gax. add (wloc, y)
call nexti. index (p, n, more, k)
end
quit
Итак, когда Proc(p) вызывает gax. add, к у прибавляется еще один вектор. Свойства монитора гарантируют, что в любой заданный момент только один процессор модифицирует у. Заметим, что динамический резерв задач в алгоритме 6.2.4 управляется процедурой мониторинга nexti. index, разработанной в § 6.2.6.
Алгоритм 6.2.4 выявляет некоторые взаимосвязи между степенью дробления вычислений, равномерной загруженностью и уровнем производительности. При возрастании N объем вычислений, связанных с одной задачей, уменьшается. Это влечет за собой более равномерную загруженность, поскольку уменьшается простаивание процессоров в конце вычислений, когда они ожидают, пока обнаружится, что задач больше нет. С другой стороны, с ростом N локальное вычисление wloc = А1ос х1ос все меньше и меньше напоминает операцию 2-го уровня, так как уменьшается ширина блочных столбцов в А1ос. Таким образом, в этой задаче есть некоторое несоответствие между равномерной загруженностью и крупноблочной линейной алгеброй. Разрешение этого противоречия, возможно, потребует хитрого блочного разбиения (6.2.8) с переменной шириной, например, чтобы блочные столбцы сужались по направлению к правому краю матрицы.
Задачи
Модифицировать алгоритм 6.2.2 и 6.2.3 так, чтобы на месте А получалась ее малоранговая модификация А 4- хуТ.
Модифицировать алгоритм 6.2.2 так, чтобы на месте у получалось А2 х.
Модифицировать алгоритм 6.2.2 так, чтобы на месте у получался вектор с единичной 2-нормой, направленный как у У Ак х.
Модифицировать алгоритм 6.2.1 так, чтобы он эффективно работал в случае нижней треугольной А. См. § 6.2.3.
В этой задаче изучается что будет, если изменить определение «следующей задачи» для алгоритма 6.2.4. Рассмотрим п х «-задачу gaxpy (у *- у + А х\ и пусть задано т ^ п. Предположим, что какому-то процессору уже назначено вычисление А(:, 1: last)х(\:last), где 1 ^ last ^ п. В качестве «следующей задачи» возьмем присоединение А (:, last 4- 1: last + 4- к)х(last 4- V.last 4- /с) к накапливаемой векторной сумме у, где к = min(m, max(l, ceil((« — — last)/p))). Модифицируйте монитор nexti и алгоритм 6.2.4 так, чтобы реализовывалось это новое определение следующей задачи. Подсказка: Вам нужна защищенная переменная last и процедура мониторинга вида nexti, indices (р, п, more, i, j), возвращающая индексы i и j, определяющие у <- у 4- А (:, г. j)x(k j) как новую назначаемую задачу.
Замечания и литература к § 6.2
Хорошее обсуждение мониторов и смежных понятий можно найти в любой из следующих работ:
Andrews G. and Schneider F. В. (1983). “Concepts and Notations for Concurrent Programming”, Computing Surveys 15, 1-43.
Boyle J., Butler R., Disz T., Glickfield B., Lusk E., Overbeek R., Patterson J., and Stevens R. (1987). Portable Programs for Parallel Processors, Holt, Rinehart and Winston.
Параллельное умножение матриц
В этом параграфе рассматривается задача умножения матрицы на матрицу D = С 4- АВ для многопроцессорных систем с распределенной и общей памятью. Рассматриваются процедуры для блочной операции gaxpy и для блочного скалярного произведения.
Процедуры для блочной операции
Предположим, что А, В и С-это п х «-матрицы, и мы хотим вычислить '
D = С 4- АВ.
Для ясности будем считать, что п = гр, где р- число процессоров, и пусть имеет место блочное разбиение
U\, ..., Dp3 = [С1? ..., Ср] 4- [А,, ..., Ар][Вь ..., Вр],(6.3.1)
где каждый блочный столбец имеет ширину г. Если
то один из способов распределения работы - поручить Ргос(ц) вычисление
р
т = I
Сначала мы опишем реализацию на распределенной памяти в предположении, что Proc (ц) размещает Ац, В^ и Ср и по окончании процесса на месте Ср получается D^. Заметим, что вычисление D^ включает локальные данные (А^, В^ и С^) и нелокальные данные (остальные АТ). Таким образом, по ходу вычислений каждый процессор должен иметь доступ к каждому столбцу матрицы А.
Простой способ сделать это состоит в том, чтобы заставить Ах двигаться по кругу наподобие «карусели» так же, как мы вращали подвекторы для х в нашей процедуре gaxpy на распределенной памяти. Вот что получается:
Алгоритм 6.3.1. Предположим, что А, В и С суть п х «-матрицы и D = С 4- АВ. Если в ^-процессорном кольце каждый процессор исполняет следующую программу и п = гр, то по окончании процесса Proc (р) содержит D^ в локальном массиве С1ос.
loc. init Q?, р = ту. id, left, right, п, г = п/р, col = 1 + (р — 1)г:рг,
Aloc = А(:, col), Bloc = В(:, col), Ccol = С(:, col)3
for к = 1: р
send (Aloc, right); recv (A Ioc, left)
т = р — к
if т ^ О
т = т + р
end
^А1ос = Ах = А (:, 1 +(т- 1)г:тг)}
Сюс = С1ос + А1осВ1ос(1 + (т - 1)г:тг, :)
end
quit
Эта процедура дает равномерную загруженность. Если считать, что нет простаивания и нет перекрытия во времени вычислений и обменов, то каждый процессор тратит на обмены время
Т6.зл = 2p(ad + Pdn2/p) = 2pad + 2£dn2,(6.3.2)
поскольку здесь р операторов send, р операторов recv, а каждый из них имеет дело с сообщением длины пг = vPfp.
Теперь построим процедуру для общей памяти на базе того же самого блочного разбиения 6.3.1. Следуя алгоритму 6.3.1, мы устроим все таким образом, что Ргос(р) будет вычислять D^ с помощью суммирования
D^ = ^ц + Ац_! Вц_г + ... + AY Ву^ + ApBpVL + ... + АцВцц. (6.3.3)
«Неровный» доступ к А имеет целью сокращение возможности одновременного обращения двух процессоров к одному и тому же блоку А?
Вот детали:
Алгоритм 6.3.2. Предположим, что А, В и С суть п х «-матрицы, располагающиеся в общей памяти, доступной для р процессоров. Пусть п = рг. Если каждый процессор исполняет следующий алгоритм, то по окончании работы на месте С получается D = С + АВ.
shared variables [Л (1:«, 1:«), 5(1:«, 1:«), С(1:«, 1:«)]
glob, init [Л, В, С]
loc. init [р, ц = ту. id, п, г = п/рЗ
get(S(:, 1 +(ц- 1)г:цг), Btoc)
get(C(:, 1 +(ц- 1)г:цг),С(ос)
for к = 1: р
i = ц — к if/^0 т = т + р end
get(^(:, 1 + (т - 1)г:тг), Л1ос)
Ui« = А =1 + (т - 1)г:тг)}
Cioc = С1ос + А1осВ1ос0 + (т - 1)г:тг, :)
end
put(CZoc, С(:, 1 +(р- l)r:pr))
quit
Заметим, что в этой дающей равномерную загруженность процедуре каждое Сц связано с р + 2 предложениями get и одним предложением put. Следовательно, время, которое каждый процессор тратит на обмены с общей памятью, приблизительно равно
^.3.2 = (P + 3)(as + ps^).(63.4)
Ширина г блочных столбцов в (6.3.1) полностью определяется размером задачи и числом процессоров: г = п)р. Важно понимать, что это строгое соотношение не является ни необходимым, ни желательным. Например, пт может превышать допустимую длину сообщения в системе с распределенной памятью. В системе с общей памятью может так случиться, что три п х r-массива, требуемых в алгоритме 6.3.2, не помещаются в локальной памяти. Чтобы обойти эти возможные ограничения, мы покажем в общих чертах, как приспособить наши два алгоритма к произвольному блочному разбиению
Ц\, ..., DN3 = [С1? ..., CN3 + [Л1? ..., ^]№, ..., BN3,(6.3.5)
где каждый блок имеет ширину г = n/N. Параметр N можно взять достаточно большим для того, чтобы сообщения или локальные буферы были достаточно малыми.
Модифицируя алгоритм 6.3.1 при упрощающем допущении N = qp, мы предположим, что Proc (ц) хранит у себя блочные столбцы Ар Bj и Ср j = ц: р: N. Снова At ходят по кругу по принципу карусели, только требуется q оборотов. На к-м обороте по кругу перемещаются блочные столбцы Ai + (k_1)p, 1= \ .р. Коммуникационные издержки, связанные с этой процедурой, имеют вид
^6.3.1 = 2 ЗР («d + pd nr).(6.3.6)
Для модификации алгоритма 6.3.2, чтобы требовались только три локальных буфера размера п х г, мы поручим Ргос(ц) задачу вычисления Dj для j = [i:p:N. Каждое вычисление Dj процессор начинает с загрузки Bj и Ср При этом все Aj должны поступить по ходу модификации Ср После полного перевычисления блока Cj он возвращается в общую память. Издержки на обмен с общей памятью даются формулой
^.з.2 = ^(3 + А)(а5 + Р5«г).(6.3.7)
Проблема равномерной загруженности
Предположим, что матрица В в (6.3.1) нижняя треугольная. Поскольку DY требует немного большей работы, чем Dp, очевидна необходимость перераспределения работы для того, чтобы алгоритмы 6.3.1 и 6.3.2 давали равномерную загруженность.
Эта проблема решается круговым отображением данных. Именно, Ргос(ц) назначается на вычисление
р
D(;, ц:р:п) = С(:, ц\р: и) + AB^.S \i.p\n) = £ А (:, т ;р:п) В(х :р: п, ц:р:п).
1 = 1(6.3.8)
Некоторые вопросы, связанные с дроблением вычислений
Алгоритмы 6.3.1 и 6.3.2, очевидно, показывают, что дробление вычислений может задаваться подходящим блочным разбиением. Чтобы проиллюстрировать некоторые дополнительные аспекты, связанные с дроблением вычислений, рассмотрим новую версию алгоритма 6.3.1, в которой эффективно реализуется вычисление
С + АВ вида_
5И ООВ14
Vcxc2c3c4aa-\.ava2a3a4-\ ^ ^ ^ °.
Оов43 в44
Заметим, что Proc (pi) нуждается в единственном нелокальном Лт, которое хранится у его правого соседа. Таким образом, это специальное вычисление С + АВ может выполняться следующим образом:
send (A loc, left)
recv(B< right)(6.3.9)
С ioc = Cloc + А1осВ^ + И^ц+1 ц.
Здесь принято соглашение о том, что Bp+1 р = BYp. Как видим, для W требуется 2-мерное рабочее пространство.
Размер рабочего пространства можно уменьшить, если вычислять WBVLA.YVL = = Ац + 1 ,цВц+1 ц как сумму внешних произведений. В этом способе Ргос(ц) довольствуется тем, что запрашивает Ац+1 от своего правого соседа по одному столбцу в каждый момент времени:
с1м = с,ос + А1осВ1м0 + (ц - 1)г:цг)
for t = Г. г
send (A toc(:, t), left) recv(w, right)
Ир <P
i= t + pi r
else
i = t end Vw = A(:, i)^ Cioc = Cloc + wBtJix :) end
Эта процедура отличается более мелким дроблением вычислений по сравнению с (6.3.9); тем самым это показывает, что дробление вычислений может быть связано с ограничениями на буфер.
Систолическое умножение 3 х 3-матриц
Теперь мы покажем, как реализуется умножение N х TV-матриц D = С + АВ на систолическом N х TV-торе. (См. рис. 6.1.3.) Могут использоваться и другие топологии процессорной сети, но мы выбрали тор из педагогических соображений.
Начнем с TV = 3. Предположим, что у нас имеется систолический 3 х 3-тор, который изображается по ячейкам следующим образом:
Ргос(1 Д)
Ргос(1,2)
Ргос(1,3)
Ргос(2,1)
Ргос(2,2)
Ргос(2,3)
Ргос(3,1)
Ргос(3,2)
Ргос(3,3)
Мы покажем, как на этой систолической сети организовать умножение 3 х 3-матриц D = С + АВ. На Proc(z, у) возлагается задача получения dy на месте с у. На каждом временном шаге Proc(z, у) добавляет одно из произведений alkbkj к локальной накапливаемой сумме с, которая после временных шагов будет содержать dy.
Сначала мы заострим внимание на Proc(l, 1) и вычислении величины
^11 = С11 + «11 ^11 + «12^21 + «13^31 •
Предположим, что шесть входов, определяющих это скалярное произведение, размещаются внутри тора следующим образом:
«н 6ц
«12*
«13•
•621
••
•631
(Не обращайте внимание на точки. Позже они будут замещены различными ау и by.)
В нашей систолической модели сейчас каждый процессор исполняет программу вида (6.1.1). Значит, мы можем «прокрутить» через Proc(l, 1) первую строку для А и первый столбец для В таким образом, что на каждом шаге по времени к текущей сумме с, аккумулирующей сп, будет прибавляться новая пара ^aYk) bkY}. Для этой отдельной порции всех вычислений поток данных представляется следующим образом:
«12^21«13•«11•1^31• 6ц«12^21«13•«11•1^31• 6цt = 1с = С -Н <^12^21t = 1с = С -Н <^12^21«13631«И'«121• in1^21«13631«И'«121• in1^21t = 2С = С + «13^31t = 2С = С + «13^31«И ^11«121«1311^211^31«И ^11«121«1311^211^31t = 3с = с + «ц6цt = 3с = с + «ц6ц
«12^21
«13•
«11•
1^31
• 6ц
«12^21
«13•
«11•
1^31
• 6ц
t = 1
с = С -Н <^12^21
t = 1
с = С -Н <^12^21
«13631
«И'
«121
• in
1^21
«13631
«И'
«121
• in
1^21
t = 2
С = С + «13^31
t = 2
С = С + «13^31
«И ^11
«121
«131
1^21
1^31
«И ^11
«121
«131
1^21
1^31
t = 3
с = с + «ц6ц
t = 3
с = с + «ц6ц
Итак, после трех шагов локальная переменная с в Proc(l, 1) содержит dYV
Мы организовали поток данных так, что по тору aYj перемещаются в западном, а biY-B северном направлении. Таким образом, ясно, что Proc(l, 1) должен
выполнять локальную программу следующего вида:
for t = 1:3
send (a, west); send (5, north) recv(o, east); recv(6, south) с = c + ab
end
Далее, посмотрим, что делается в Ргос(1, 2), Ргос(1, 3), Proc (2, 1) и в Proc(3,1). На данном этапе изложения эти процессоры просто помогают двигать по кругу элементы Л(1, 1:3) и В(1:3, 1). Они способны на большее. Возьмем Ргос(1, 2), в моменты t = 1:3 он хранит у себя соответственно а13, аы и а12. Если бы в эти моменты времени через Ргос(1, 2) проходили Ьг2, Ь12 и Ь22, то можно было бы сформировать dY2 = с12 + а13Ь32 + оы612 + а12622. Аналогично Ргос(1, 3) мог бы вычислить t/13 = с13 + аы613 + а12523 + ^Лз, если бы в моменты t = 1:3 были доступны 613, Ь2г и Ьгг. Для этого мы инициализируем тор следующим образом:
«п
Ьц
012
622
013
Ьзз
•^21
• Ьзг
*^13
*631
*^12
•^23
Учитывая поток Ьц в северном направлении, получаем:
013631011612012623• Ьц•^22*633•621•632*613013631011612012623• Ьц•^22*633•621•632*613t = 2t = 2
013631
011612
012623
• Ьц
•^22
*633
•621
•632
*613
013631
011612
012623
• Ьц
•^22
*633
•621
•632
*613
t = 2
t = 2
012
^21
013
^32
Оц
613
•^31
'^12
•^23
• ьп
*^22
•Ьзз
Оц
Ьц
012
622
013
633
•621
'6з2
•613
'631
*6i2
•62з
Итак, если В отображается на тор с «косой линией старта», мы можем сделать так, чтобы первая строка процессоров вычисляла первую строку для С.
Если мы скосили вторую и третью строки для А в такой же манере, то сможем заставить все девять процессоров выполнять умножение-сложение на каждом шаге. Именно, при расположении
«И
Ьц
«12
622
«13
6зЗ
«22
621
«23
^32
«21
613
«33
^31
«31
612
«32
^23
поток а^ на запад и поток Ьц на север дают нам следующее:
«13631«11612«1262З«21611«22622«2363З«32621«33632«31613«13631«11612«1262З«21611«22622«2363З«32621«33632«31613t = 2t = 2
«13
631
«11
612
«12
62З
«21
611
«22
622
«23
63З
«32
621
«33
632
«31
613
«13
631
«11
612
«12
62З
«21
611
«22
622
«23
63З
«32
621
«33
632
«31
613
t = 2
t = 2
«12
^21
«13
^32
«11
&13
«23
^31
«21
612
«22
^23
«31
Ьи
«32
622
«33
бзз
«11
6ц
«12
622
«13
63З
«22
621
«23
632
«21
613
«33
631
«31
612
«32
62З
После этого примера мы готовы к тому, чтобы сформулировать алгоритм для произвольного N.
Общий случай
Чтобы описать распределение N х TV-матриц А и В в общем случае, удобно определить целочисленную функцию (.)N по следующему правилу:
а = aN + Р }Г Р, Р Ф О,
О Р < N J <'a'N ~ Ы Р = 0.
Алгоритм 6.3.3. Предположим, что заданы AeRNxN, BeRNxN, CeRNxN и D = С + АВ. Если в систолическом N х TV-торе каждый процессор исполняет следующий алгоритм, то по окончании процесса Proc(f,j) в локальной переменной с содержит d^.
loc.init[N, (i, у) = ту. id, а = а ,. , b = b, . ]
forz=l^‘,<l+j >N 0+7 >N'j
send (a, west); send(&, north)
тесч(а, east); recv(Z>, south) с = c + ab end quit
Нетрудно доказать, что этот алгоритм будет работать. Сначала заметим, что в момент t Proc (7, у) хранит у себя а. +у_! + ^ и Ь^._ t +. По окончании
С = CiJ + (?i ai-<i+j - I + <>n ^(i+J- । + Onj = Cy + ^ а‘кЬк3 = d‘j-
Одно из приятных свойств систолической модели заключается в том, что строгая регламентация делает проверку локальной программы относительно простым делом.
Блочный аналог
Предположим, что А, В и С суть блочные N х TV-матрицы с г х г-блоками. Алгоритм 6.3.3 легко модифицируется так, чтобы вычислять
Си
CYN
-^1N
"sn
-IN
D =
+
_ ^ i •
cnn _
_ ^N 1•
.. Ann _
^ 1
BNN _
Все, что нам нужно сделать,-это заменить обращения к аи, Ьи и си на обращения к Ац, В- и Ci?
Асинхронная тороидальная процедура
Мы построим ниже асинхронный аналог алгоритма 6.3.3 для вычисления D = С + А В. Пусть A gR^ х n и SgR^ х ^ и будем считать, что Ргос(/, у) имеет своей задачей вычислить d^. Предположим ради любопытства, что Proc (z, у) вначале хранит у себя a^, Ь^ и с^. Чтобы получить скошенность данных, которая оказалась существенной для алгоритма 6.3.3, строки матрицы А будут циркулировать вдоль строк тора в западном направлении, в то время как столбцы матрицы В циркулируют вверх по столбцам тора в северном направлении.
Алгоритм 6.3.4. Предположим, что заданы A gR^ х n, BeRN х N и CeRn х n и что D = С + АВ. Если каждый процессор в N х А-торе исполняет следующий алгоритм, то по окончании процесса Proc (/, у) хранит у себя d^ в локальной переменной с.
loc.init [А, (р, X) = ту. id, а = а^ъ b = Ь^ с = сцх]
for к = 1: ц — 1
send (a, west); recv(«, east)
end
for к = 1: X — 1
send(Z), north); recv(Z>, south)
for к = 1: п с = с + ab send (a, west); recv(a, east) send(£, north); recv(/>, south)
end
for к = 1: ц — 1
send (a, east); recv(a, west)
end
for к = 1:X - 1
send(£, south); recv(Z), north)
end quit
Использование блочного скалярного произведения в режиме резерва задач
Теперь разберемся с вычислением п х «-матрицы D = С 4- А В на общей памяти, когда за основу берутся блочные скалярные произведения. Будем считать, что п = Nr и А = (Ау), В = (By), С = (Су) и D = фу) суть блочные N х N-матрицы с г х r-блоками. Итак,N
Dij = Су 4- £ Aik Bkj.
к = 1
Вычисление Dy мы рассматриваем как задачу с меткой (/, j). Будем строить параллельный алгоритм, в основе которого режим резерва задач. Чтобы задача не казалась слишком легкой, будем считать, что D нужно получить на месте В.
Мы организуем вычисления таким образом, чтобы D вычислялась блок за блоком в порядке возрастания столбцов. После вычисления /-го блочного столбца матрицы D можно без опасений изменить содержимое /-го блочного столбца в В. Таким образом, мы хотим иметь процедуру следующего вида:
Повторять до тех пор, пока не останется задач:
Получить следующую задачу, назвать ее задачей (/, /).
Вычислить Dy.
Если это безопасно, на месте By записать Dy.
end
Как и в наших gaxpy-процедурах с резервом задач, нам нужен монитор, на который возлагается назначение задач. Теперь ситуация двумерная-в том смысле, что задачи с наибольшим удобством помечаются парой индексов, указывающих на подлежащее вычислению Dy.
(1, 1), ..., (N, 1), (1, 2), ..., (N, 2), ..., (1, N), ..., (N, N).
Поэтому по аналогии с nexti мы получаем
monitor: nextij
protected variables '.flag, row, col, idle, proc
condition variables: waiti
initializations: flag = 0
procedure nextij. index (N, p, more, i, j)
if Лад = 0'
row = 0; col = 1; idle, proc = 0; flag = 1 end
if row ^ N — 1
row = row 4- 1•
else
row = 1; col = col 4- 1 end if col ^ N
i = row; j = col; more = true else
more = false; idle, proc = idle, proc 4- 1 if idle, proc ^p — 1
delay (waiti^
else
flag = 0
end
continue (waiti) end
end nextij
Безопасное замещение данных может управляться другим монитором с процедурой prod, canwrite. Именно, если prod, can write (Щ Д Mi г, N) безопасно замещает блоки В^ г х r-матрицей W, то мы получаем
Алгоритм 6.3.5. Предположим, что п = Nr и А = (Аи), В = (Вм) и С = (Си) суть блочные N х N-матрицы с г х r-блоками. Если эти матрицы хранятся в общей памяти по блокам и каждый процессор исполняет следующий алгоритм, то по окончании процесса на месте В^ получается Си 4- ^к = i ^ik^kp i = V.N, j = 1:N. Предполагается, что p> N.
call nextij. index (N, p, more, i, j).
while more = true
get(Cy, CJoc) for k = l:N getUik, ti get(Bt? Blw); C,oc = Cloc + Л,0СВ,0С end
call prod, canwrite (CZoc, 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, can write (W, i, j, N) if flag = 0
flag = 1; col. done if : N) = 0
end
col. done (/) = col. done (j) 4- 1
if col. done (/) < N delay (waitq (f)) end
put(W B^
continue (waitq (/))"
end conwrite
end prod
Защищенный вектор col. done используется для подсчета числа блоков, уже извлеченных из каждого блочного столбца матрицы D. Когда процессор вызывает prod, canwrite с помещенным в С1ос блоком D^ переменная col. done (/) увеличивается на единицу. Если после этого ее значение меньше N, то замещать В^ небезопасно, так как этот блок может еще потребоваться другой задаче. В этом случае вызывающий процессор ставится в очередь, управляемую переменной условия wailqljY После того как в j-м блочном столбце получен N-й блок, он хранится в соответствующем Вф а процессоры, в соответствии с waltq^jY освобождаются для того, чтобы возобновить запись своих Пф
Предположение о том, что Л, В и С хранятся по столбцам (см. § 1.3), для А- и В- влечет за собой возможность считывания их с помощью одного оператора get и записи с помощью одного оператора put
Если в алгоритме 6.3.5 опустить предположение р ^ N, то процессоры могут все оказаться ожидающими из-за wailq^XY поскольку возможно, что N-й блок в первом блочном столбце никогда не будет вычислен.'
В предположении, что нет простаивания и каждый процессор обрабатывает примерно N2/p задач, на обмены с общей памятью каждый процессор тратит
N2
Т6.з.з= — (2^ + 2)(as + f3sr2)(6.3.9)
Р
секунд.
Этот подход к задаче D = С + АВ связан с меньшим числом обменов с памятью, чем блочный saxpy-алгоритм на базе (6.3.5). Обоснование имеет много общего с нашим обсуждением переиспользования данных в § 1.4.9. Это обсуждение в нашем случае относится к локальной памяти и общей памяти, которые соответствуют кеш-памяти и основной памяти. Конечно, локальные запоминающие устройства в системе с общей памятью могут иметь свою собственную иерархию.
Задачи
Расширить алгоритмы 6.3.1 и 6.3.2 таким образом, чтобы С заменялось на С + АВАТ.
Разработать детальные версии алгоритмов 6.3.1 и 6.3.2, основанные на (6.3.5).
Дать детальный, использующий структурные особенности алгоритм для вычисления С1осА А1осВ1оДт\р;п^ в алгоритме 6.3.3.
В режиме резерва задач разработать алгоритм, в котором на месте А получается D = С + АВ, где В-нижняя треугольная. В качестве у-й задачи взять вычисление D^.,jY
Модифицировать алгоритм 6.3.4 так, чтобы на месте С получалось D = С + Ак В.
Разработать версию алгоритма 6.3.1, дающую равномерную загруженность при обработке нижней треугольной В.
63Л. Приспособить алгоритм 6.3.1 для обработки трехдиагональной В. Пусть е(1:л), d(\;n) и /(!:«) обозначают поддиагональную, диагональную и наддиагональную части, причем е^п) =/(1) = 0. Считайте, что Ргос(р) хранит у себя e^col), d(col) и f(col), где col = 1 + + (Ц - 1) г: цг.
На месте верхней треугольной матрицы можно получить ее квадрат без какого-либо дополнительного рабочего пространства. Напишите для этого процедуру, использующую динамическое планирование.
Замечания и литература к § 6.3
Различные аспекты параллельных матричных вычислений обсуждаются в
Cheng К. Н. and SahniS. (1987). “VLSI Systems for Band Matrix Multiplication”, Parallel Computing 4, 239-258.
Elster A. and Reeves А. Р. (1988). “Block Matrix Operations Using Orthogonal Trees”, in G. Fox (ed.), The Third Conference on Hypercube Concurrent Computers and Applications, Vol. II - Applications, ACM Press, New York, pp. 1554-1561.
Fox G., Johnson M., Lyzenga G., Otto S., Salmon J., and Walker D. (1988). On Concurrent Processors Vol I: General Techniques and Regular Problems. Prentice-Hall, Englewood Cliffs, NJ.
Fox G., Otto S. W. and Hey A. J. (1987). “Matrix Algorithms on a Hypercube I: Matrix Multiplication”, 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.
Кольцевые процедуры разложения
В этом параграфе мы обсудим, как можно организовать различные матричные разложения на кольце. Представив параллельную реализацию основанного на gaxpy Холецкого, мы покажем затем, как работает та же самая логика планирования для разложений РА = LU и А = QR. В конце обсуждается параллельное решение треугольных систем.
Кольцевой алгоритм Холецкого: случай п = р
Посмотрим, как процедура разложения Холецкого может распределяться по кольцу из р процессоров Ргос(1), ..., Ргос(р). Отправной точкой является уравнение
GOGM:n^ = AU'.n,j) - У Gy,k)Gy:n,k) = Щ'.пУ
к = 1
Это уравнение получается приравниванием j-x столбцов в п х «-уравнении А = G GT. После того как найден вектор и (/':«), Gij'.nJ) получается с помощью простого нормирования: GO': л,j) = г (/: л)/v/v(/). Для ясности предположим сначала, что п = р и Ргос(ц) в начальный момент хранит у себя А(ц:п, ц). По окончании процесса каждый процессор замещает свой Л-столбец на соответствующий G-столбец. Для Proc (ц) этот процесс включает ц — 1 saxpy-модификаций вида Л (ц: л, ц) *- <- А (ц: л, ц) — G (ц,у) G (ц: л,у), вслед за которыми выполняются извлечение квадратного корня и нормирование. Поэтому общая структура локальной программы для Ргос(ц) имеет следующий вид:
for у = 1 :ц - 1
‘ Получить G-столбец от соседа слева.
Послать копию полученного G-столбца соседу справа. Модифицировать А (ц: л, ц).
end
Сформулировать С(ц :л,ц) и послать соседу справа.
Таким образом, Ргос(1) сразу же вычисляет G(1: л, 1) = А (1: л, ly^MO, 1) и отсылает его Proc (2). Как только Proc (2) получит этот столбец, он может сформировать С(2:л,2) и передать его для Proc (2) и т.д. Устроив такой конвейер, мы можем утверждать, что процессор может быть свободным, как только он вычислит свой G-столбец. Отсюда также вытекает, что каждый процессор получает G-столбцы в порядке возрастания, т.е. G(:, 1), G(:,2) и т.д. Основываясь на этих наблюдениях, мы получаем
Алгоритм 6.4.1. Предположим, что матрица AeRnxn симметричная и положительно определенная и A = GGT-ee разложение Холецкого. Если в л-процессорном
кольце каждый процессор исполняет следующую программу, то по окончании процесса Ргос(ц) содержит С(ц:л, ц) в локальном массиве Л,ос(ц:л).
loc.init [л, ц = ту. id, left, right, ХХос (р: п) = Л (р: п, р)] 7=1 while У < р гесу(^(/:л), left) if р < п send (g(j;n), right) end АХос (И: и) = Aloc (g: л) - д (ц) д (ц: л) 7=7+1 end
АХос (И: л) = А Хм (ц: 4Ч/4йЙ) if ц < л■
send (Л|М(ц: л), right) end quit
Заметим, что число полученных G-столбцов должно быть j — 1. Если j = р, то наступает время, когда Ргос(р) формирует и отсылает G(p :w, р).
Кольцевой метод Холецкого: общий случай
Теперь обобщим алгоритм 6.4.1 на случай произвольного п. Для распределения вычислений есть два очевидных способа. Можно потребовать, чтобы каждый процессор вычислял множество идущих подряд G-столбцов. Например, если п = 11, р = 3 и А = [аь ..., аи], то мы могли бы распределить А следующим образом:
[ Qi 02 Оз 04 | 0s Об О? Og | Од Ою Оц ] .
Proc (1) Proc (2) Proc (3)
Тогда каждый процессор мог бы заниматься отысканием соответствующих столбцов матрицы G. Неприятность, связанная с этим подходом, состоит, например, в том, что Ргос(1) простаивает после того, как будет найден четвертый столбец для G, хотя еще остается много работы.
Более равномерная загруженность получается, если вычислительные задачи распределить с использованием кругового отображения, т. е.
[ а\ а^ ау аю | аг а5 а8 ^ii | аз а б 09 ] .
Proc (1)Proc (2) Proc (з)
В этой схеме Ргос(ц) получает G(:, ц:/?:л). Когда любой заданный процессор заканчивает вычисление своих G-столбцов, у каждого из остальных процессоров будет по крайней мере один столбец из G, который нужно вычислить. Итак, если п(р » 1, то все процессоры загружены большую часть времени.
Давайте разберемся с деталями процедуры Холецкого с круговым распределением. Каждый процессор поддерживает пару счетчиков. Счетчик у-это индекс следующего G-столбца, который поступит в Proc (ц). Процессору также нужно знать индекс следующего G-столбца, который он должен найти. Заметим, что если col = ц:/>: п, то Ргос(ц) отвечает за G(:, col), a L= length(col)-3jo число G-столбцов,
которые он должен вычислить. Будем использовать q для того, чтобы обозначить состояние процесса получения (7-столбцов. В любой момент col(q)- это индекс следующего подлежащего вычислению (7-столбца.
Алгоритм 6.4.2. Предположим, что матрица Л е R” х ” симметричная и положительно определенная и А = GGT-ее разложение Холецкого. Если в р-процессорном кольце каждый процессор исполняет следующую программу, то по окончании процесса Ргос(ц) хранит у себя G(k:n, к) для к = \г.р\п в локальном массиве Aloc(l:n, L), где L —length (col) и col = \v.p\n. В частности, G (col (q)): п, col(q) содержится в AXoc(col(qY.n,q) при q- 1:L.
loc.init[p, ц = pidQY left, right, n, Aloc = Л(1 :n, ц:р:п)3
j = 1; q = 1; col = \v.p\n\ L = length(col)
while q ^ L
\tj = col(q)
{Сформировать G(j\n,jY^ Al0CM'.n, q) = Aloc(j:n, q^V^Mq^ if J < n
send (Л|ос (/:/1, q\ righty end
j =j + 1
{Модифицировать локальные столбцы.}
for к = q + 1: L r = col(k) А^Дг.п, k) = Aloc(r:n, k) - Aloc(r,q)Aloc(r:n, q) end
4 = 4 + i else
recN (g (j nY left)
Вычислить а, для которого Proc (a) - поставщик полученного (7-столбца. Вычислить 0- индекс последнего столбца для Proc (right).
if right Ф a Kj < 0 send (g(j\ n), right) end
{Модифицировать локальные столбцы.}
for к = q: L
r = col(k); A.loc(r:n, k) = Aloc(r:n, k) - g(r)g(r:n)
' end j=j + 1 end
end quit
Чтобы проиллюстрировать логику системы указателей, мы рассмотрим выборочную 3-процессорную ситуацию с п = 10. Допустим, что три локальных значения q равны 3, 2 и 2 и три соответствующих значения col(q) суть 7, 5 и 6:
ri।
[ Qi 04 07 Oxo I Д2 a5 a8 all | Q3 a6 a9 J
Proc (1)Proc (2)Proc (3)
Сейчас Proc (2) вырабатывает пятый (7-столбец и увеличивает свое q до 3.
Нуждается в объяснении логика, связанная с решением передать полученный
(7-столбец соседу справа. Должны выполняться два условия:
Сосед справа не должен быть процессором, породившим (7-столбец. В этом случае циркуляция полученного (7-столбца должным образом заканчивается.
У соседа справа должно быть еще больше (7-столбцов для вычисления. Иначе (7-столбец будет отправлен какому-нибудь неактивному процессору.
Соображения такого рода весьма типичны для матричных вычислений на распределенной памяти.
Проследим за поведением алгоритма 6.4.2 в предположении, что п » р. Нетрудно показать, что Ргос(ц) выполняет
/(Ю = Y 2 (« — (И + (^ — 1)Р))(Ц + (^ - 1)Р) ~ «3/Р к = 1
флопов. Заметим, что fW/fQ^ = 1 + О^р2/п2У и, значит, с точки зрения флопов мы имеем процедуру с приблизительно равномерной загруженностью.
Каждый процессор получает и отсылает почти что каждый (7-столбец. Используя нашу модель (6.1.4) для расходов на коммуникацию, мы видим, что каждый процессор тратит на обмены время
£ 2(ad + РДи-у)) % 2ааи + pdn2.j= i
Если предположить, что вычисления идут со скоростью R флопов в секунду, то отношение вычисления/обмены для алгоритма 6.4.2 приблизительно равно (п/р) (2/3R$d). Таким образом, значения коммуникационных издержек снижаются с ростом п/р.
Кольцевые процедуры для других разложений
Алгоритм 6.4.2 легко модифицируется для вычисления других разложений, таких, как РА = LU и А = QR. Это вызвано тем, что в случае п х «-матриц алгоритмы для этих разложений можно разбить на следующие этапы:
for у = 1: и — 1
Вычислить преобразование 7} по текущему А (:, У).
Модифицировать AVj.nJ.ny
end
Типичные 7} включают преобразования Гаусса и Хаусхолдера, а типичные модификации включают операцию saxpy.
Чтобы подчеркнуть то общее, что есть у различных процедур разложения, мы представим «шаблон» процедуры, основанный на алгоритме 6.4.2:
loc. init \_р, ц = ту. id, left, right, п, Aloc = А(1 :п, ц \р: и)]
j = 1; q = 1; col = р,:р:п; L= length(col}
while q ^ L
if J = col (q)
Вычислить преобразование Tj.(6.4.1)
ify<M
Послать Tj ближайшему соседу, end
Применить Tj к локальным столбцам.
Сохранить Tj.
j=j + 1 q = q+ else
Получить Tj от соседа слева.
Послать Tj соседу справа (если необходимо).
Применить Tj к локальным столбцам.
7=7 + 1
end end quit
Важно подчеркнуть, что на практике все время работа идет с подходящим представлением для Tj. Например, в разложении Холецкого Tj закодировано в векторе GijxnJY В LU оно задается j-м вектором Гаусса. В QR оно задается у-м вектором Холецкого и т. д. По кольцу передаются именно эти векторные представления преобразований, а не сами они в явном виде.
Параллельное решение треугольных систем
Обычно после получения разложения матрицы оно используется для того, чтобы решать линейные системы. При решении треугольных систем возникают некоторые интересные моменты, о которых было рассказано в § 3.1. Но они никогда не были «злобой дня», потому что стоимость разложений-О (л3), а стоимость обратной подстановки или прямого исключения-О (л2). Однако для многопроцессорной системы с распределенной памятью не очевидно, что в стоимости параллельного решения системы Ах = b будет доминировать параллельная факторизация. По сравнению, скажем, с разложением Холецкого при распараллеливании прямой или обратной подстановки «простора» намного меньше. В этом разделе мы должны разобраться с особенностями одного специального подхода к решению треугольных систем на кольце, отличающегося высокой эффективностью. Используя его вместе с рассмотренными выше параллельными схемами факторизации, мы можем сохранить старую точку зрения на решение треугольных систем, как на дешевый «постскриптум» к вычислению разложения.
Для простоты мы сосредоточимся на решении нижней треугольной п х «-задачи Lx = b. Будем считать, что у нас есть /^-процессорное кольцо и п-целое кратное р, п = рг. Предположим также, что для L и b используется круговое отображение, т. е. Ргос(ц) хранит у себя L(:, ц ;р: п) и /?(ц ;р: п). Как действовать без этих предположений-эта тема развивается в упражнениях и в работе Li, Coleman (1988), на которой основано наше обсуждение.
Исходным пунктом будет запись основанной на saxpy прямой подстановки в следующем виде:
7 = 0; z(l:«) = 0
while j < п
1; b^ = b^-z^(6.4.2)
z(/+ l:«) = z(/ + 1:«) + L(/ + 1:и, j)b{j)
end
В искомой кольцевой процедуре на Proc (ц) возлагается получение х (ц: р: п) на месте 6(ц\p\nY Чтобы это сделать, мы прокрутим вектор z из (6.4.2) по кругу г раз, начиная с Ргос(1). Этим вращениям вектора z присвоим номера от 0 до г — 1. Когда вектор z «посещает» Ргос(ц) во время /с-го оборота, он используется, чтобы
вычислить х(ц + кр). Формально получаем следующее:
loc.inlt[p, ц = ту. id, left, right, Цос = Ц\:п, vi;p:n\
Ьюс = Ь^:р:п)1
г = п/р; col = р:р:п; к = 0; z(1:п) = 0
while к < г — 1
{Ргос(1) не получает ничего в начале оборота 0.}
if к * 0 V р > 1(6.4.3)
recv(z, left)
end
к = к + 1; j = col (к)
{Вычислить Xj и, если необходимо, модифицировать z и отослать направо.} blocw = blocW-zW
if к^ г — 1 V ц < р zU-Vi-.n^zU-V 1:п) + Ц0ДН 1:”> к)Ь1оДк)*
send(z, right)
end
end
quit
Несмотря на распределенность вычислений в этом алгоритме, он обладает тем свойством, что в любой заданный момент работает только один процессор. Чтобы подступиться к распараллеливанию, заметим, что вычисление следующей переменной процессором справа может начинаться до того, как будет полностью закончено перевычисление вектора z. Например, Proc (2) может приступить к работе над х(2) сразу же по получении х(1) от Ргос(1). Таким образом, Ргос(1) должен был бы передать х(1) и после этого модифицировать zfl;n). Однако для Ргос(З), который будет вычислять х(3) = Ь^З) — L(3, 1)х(1) — L(3, 2)х(2), нужно, чтобы Ргос(1) выполнил также модификацию компоненты z(3). В общем случае, после того как Ргос(ц) вычислит x(jf Для процессоров ц + 1, .... р, 1, ..., ц — 1 должны быть доступны величины Uj + 1 :j + р — 1)х(/).
Это подводит нас к мысли, что по кольцу должно бы прокручиваться нечто меньшее, чем весь вектор z. Давайте обозначим это «нечто» через «w» и попытаемся выяснить, что же это должно быть. Предположим, что когда w попадает в Ргос(ц) на /с-м обороте, вычисляется х(ц 4- кр). Предположим также, что после к-го оборота Ргос(Х) хранит у себя вектор z^} = L(:, X :р: X + кр) х(Х .р: X + кр). Теперь посмотрим более внимательно, в чем нуждается Ргос(ц) для того, чтобы вычислить х(ц + кр) по z^. Для j = ц + кр получаем
J - 1min(pj-l)
хЦ) = ЬЦ) - Е Uh i^x^ = b^ - Е Ш i-P'j-^x(i:p:j- 1).
i = 1i = 1
В тот момент, когда в Ргос(ц) должно выполняться это вычисление,
m,i:p;j — \V<i-P"jm,i:p;j — \V<i-P"jf z^ (/), г = 1: ц — 1, ^Q), 1=ц:р,f z^ (/), г = 1: ц — 1, ^Q), 1=ц:р,
m,i:p;j — \V<i-P"j
m,i:p;j — \V<i-P"j
f z^ (/), г = 1: ц — 1, ^Q), 1=ц:р,
f z^ (/), г = 1: ц — 1, ^Q), 1=ц:р,
и поэтому ц - 1Р
хЦ) = ьц)- Е^ц"1)(/)- Е
i=lИi=n+l
Это подсказывает нам, что в качестве циркулирующего вектора w нужно взять р-вектор, обладающий тем свойством, что по прибытии в Ргос(ц) на к-м обороте
Н - 1р
1-11-Ц+1
Заметим, что значения, формирующие эту сумму, могут быть «подобраны» на тех остановках (их р — 1), которые циркулирующий вектор w делает перед прибытием в Ргос(ц). Вот как можно реализовать эти идеи:
Алгоритм 6.4.3. Предположим, что матрица LgR” х ” нижняя унитреугольная и xeR" есть решение системы Lx = b, гд^ beW. Если п = рт и в ^-процессорном кольце каждый процессор исполняет следующую программу, то по окончании процесса Ргос(ц) хранит у себя х(ц:р:л) в 61ос(1 :г).
loc. init [р, ц = my. id, left, right, Цос = L(1 :п, ц:^:л), bloc = b^:p:n)l
г = п/р; col = ц\р'.п; к = 0; z(l : л) = 0; w(l :р) = 0
while к < г — 1
if к + 0 V ц > 1 recv(w, left) end к = к + 1; j = col(k) bioc № = Ь1оДк) -zU)~w^) if к / r - 1 V ц < p
{Модифицировать ту часть z, которая нужна прямо сейчас.} q = rmn^ j + р- 1)
zU + 1 :q) = zU + 1 ;q) + Ll0CU + 1 :q, к)Ь1оДк) {Модифицировать циркулирующий вектор wf if к < г — 1
w(l :p - 1) = w(l :ц - 1) + z(j + p - ц + 1 :j + p - 1)
w(p) = 0 end w(p + 1 :p) = w(p + 1 ;p) + z(j + 1 :j + p - p) send (и, right) {Модифицировать остальную часть z.} if q < n
zkq^\*.n) = z(q + 1 ;n) + L^q + 1: л, к)Ь1оДк) end end
end
quit
За доказательством того, что в данном алгоритме достигается ускорение, близкое к линейному, мы отсылаем читателя к Li, Coleman (1988).
Задачи
Заполнить шаблон (6.4.1) таким образом, чтобы он вычислял QR-разложение. По окончании процесса Proc (р) должен хранить у себя как векторы Хаусхолдера, так и полученные им R-столбцы.
Заполнить шаблон (6.4.1) таким образом, чтобы он вычислял разложение РА = LU. По окончании процесса Proc (ц) должен хранить у себя в удобной форме информацию о Р и полученные им части матриц Ln U.
В алгоритме 6.4.2 сообщения (G-векторы) можно сделать более короткими. Объясните, почему?
Модифицировать алгоритм 6.4.3 так, чтобы он мог обрабатывать линейные треугольные системы произвольного порядка.
Модифицировать алгоритм 6.4.3 так, чтобы он решал верхнюю унитреугольную систему Ux = b порядка п = рг. *
Модифицировать алгоритм 6.4.3 так, чтобы он решал систему II х = Ь.
Замечания и литература к § 6.4
Общие соображения относительно процедур факторизации на распределенной памяти можно найти в
Geist G. A. and Heath М.Т. (1986). “Matrix Factorization on a Hypercube”, in M.T. Heath (ed.) (1986). Proceedings of First SIAM Conference on Hypercube Multiprocessors, SIAM Publications, Philadelphia, Pa.
Ipsen I. C. F., Saad Y. and Schultz M. (1986). “Dense Linear Systems on a Ring of Processors”, Lin.
Alg. and Its Applic. 77, 205-239.'
O’Leary D. P. and Stewart G. W. (1986). “Assignment and Scheduling in Parallel Matrix Factorization”, Lin. Alg. and Its Applic. 77, 275-300.
Работы, посвященные специально LU, Холецкому и QR, включают
Bischof С. Н. (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.
Delosme 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.
Geist G. A. and Heath M.T. (1985). “Parallel Cholesky Factorization on a Hypercube Multiprocessor”, Report ORNL 6190, Oak Ridge Laboratory, Oak Ridge, TN.
Geist G. A. and Romine C.H. (1988). “LU Factorization Algorithms on Distributed Memory Multiprocessor Architectures”, SIAM J. Sci. and Stat. Comp. 9, 639-649.
Kapur R.N. and Browne J. C. (1984). “Techniques for Solving Block Tridiagonal Systems on Reconfigurable Array Computers”, SIAM J. Sci. and Stat. Comp. 5, 701-719.
Ortega J. M. and Romine С. H. (1988). “The ijk Forms of factorization Methods II: 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., Aidcroft T., 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.
Параллельные решатели треугольных систем обсуждаются в
Romine С. Н. and Ortega J.M. (1988). “Parallel Solution on Triangular Systems of Equations”, Parallel Computing 6, 109-114.
Heath M.T. and Romine C.H. (1988). “Parallel Solution of Tridiagonal Systems on Distributed Memory Multiprocessors”, SIAM J. Sci. and Stat. Comp. 9, 558-588.
Li G. and Coleman T. (1988). “A Parallel Triangular Solver for a Distributed-Memory Multiprocessor”, SIAM J. Sci. and Stat. Comp. 9, 485-502.
Eisenstat S.C, Heath M.T., Henkel C.S., and Romine C.H. (1988). “Modified Cyclic Algorithms for Solving Triangular Systems on Distributed Memory Multiprocessors”, SIAM J. Sci. and Stat. 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-31, 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. Sci., Yale University, New Haven, CT.
Сеточные процедуры разложения
В этом параграфе обсуждаются различные алгоритмы для разложений Хо- лецкого и QR. Для разложения Холецкого приводятся синхронные и асинхронные процедуры, позволяющие нам сравнить особенности рассуждений, связанных с этими двумя способами вычислений на распределенных системах. Параграф заканчивается кратким обсуждением систолической сеточной процедуры для QR-разложения.
Сеточная систолическая процедура Холецкого
Напомним, что версия разложения Холецкого с использованием внешних произведений связана с повторяющимся применением следующей редукции:
Здесь Р = ^/а, w = г/Р и С = В — wwT. Для записи ку = алгоритма^ Холецкого с внешними произведениями воспользуемся верхними индексами, чтобы проследить этапы преобразований, которым подвергается матрица А;
А^ = А
for к = 1 :п
а^ = а^"и for all (zj) with i < к or j > к
akk — x/akk
for i = к + 1: n
a$ = at~l} / at?', at? =! at?
end
for j = к + 1: n
for i = к + 1: n
at? = af" - at? at?
end end end
Для того чтобы вывести систолическую версию этой процедуры, предположим для ясности, что у нас есть систолическая п х и-сетка и AeRnxn. Proc(z,j) будет отвечать за формирование элементов а^ при к = 1 :п. Чтобы упростить изложение, симметрия игнорируется.
Предположим, что для хранения а$ в Proc(z'J) используется переменная а^. Заметим, что с переходом от А(к-1) к А(к) связаны четыре типа вычислений:
вычислений нет
:а
квадратный корень
: а <- ^/a
деление
:а^ а/d
модификация
: а а — be
Вспоминая нашу модель систолических вычислений (см. § 6.1.5), мы попытаемся
п Имеется в виду запись с помощью циклов с параметрами к, j, i.-Прим. перев.
разработать локальную программу вида
for / = 1: 1Лпа1
Послать локальные данные соседям.
Получить данные от соседей.(6.5.1)
Выполнить извлечение квадратного корня, деление, модификацию или бездействовать, end
Происходящее в момент t в Proc (z, 7) есть функция от t, i и j. Заметим, что при t = 1 только Proc (1,1) может сделать что-нибудь полезное, и это есть вычисление >/Л (1,1). Потом эта величина потребуется первой строке и первому столбцу процессоров, вычисляющих соответственно А (2: п, 1) <- А (2: п, 1) / А (1,1) и А (1,2: п) *- А (Д,2;п)/А (1,1). Теперь полагаем, что в нашей систолической модели на каждом шаге данные могут передвигаться только к соседнему процессору. Значит, эти шаги с делением могут иметь место в следующие моменты времени: .
’ 12345”
хххх
'3 х х х х •
хххх
хххх_
Приступив к формированию множителей в строке и столбце, мы можем начать выполнение модификации А (2: п, 2: п) А (2: п, 2: 4 — А (2: п, 1) А (1,2: п\ Заметим, что Proc (z,7) нуждается в множителях, размещенных в Proc(z, 1) и Proc (1,7). Можно так устроить, что эти две величины доберутся до Proc (z,7) в одно и то же время, если сразу же по мере готовности Proc(z, 1) отправит свой множитель вдоль строки z, a Proc (1,7) пошлет свой множитель вниз по столбцу j. Если мы определим массив
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 _
то Т^Ц’Й-зто временной шаг, на котором находится а$\ Заметим, что на временном шаге г = 4 мы можем вычислить а^Р и по аналогии с предыдущим рассуждением положим
yW =yW =4567
yW =
yW =
5678
789
78910
Здесь Tw(i,J) при i > 2 и / > 2 обозначает временной шаг, на котором вычисляется 4р. Позиции с «.» не связаны с какой-либо работой или обменами, и поэтому они не играют роли, когда обсуждается планирование вычислений.
Время вычисления «интересных» элементов для А(3\ А(4) и А(5) в сходной манере
задается с помощью
78989109 10 1178989109 10 1110 1111 1210 1111 12^(5) _^(5) _
789
8910
9 10 11
789
8910
9 10 11
10 11
11 12
10 11
11 12
^(5) _
^(5) _
13
Из этого примера для п = 5 мы извлечем три вывода:
Proc (z,у) не имеет для себя вычислений до момента t = i + j — 1.
Если a^ определено при t = т, то а^ может быть вычислено при t = т + (z — к) + (/ — к) для всех z^ к и j ^ к.
Если а^ определено при t = т, то a^i\ +1 может быть определено при t = т + 3.
Эти наблюдения позволяют нам вывести несколько важных фактов относительно планирования. Например, диагональному процессору Proc (z, z) нечего делать при t = 1: 2z — 2. При Z = 2z — 2:3/ — 3 ему приходится выполнять модификации, а вслед за ними, в момент t = 3/ — 2, извлечение квадратного корня. При Z ^ 3z — 1 ему снова нечего делать. К подобным заключениям можно прийти и в отношении внедиагональных процессоров, и в целом для Proc (z j) мы получаем следующее расписание:
for t = 1: Зи — 2
if i=j
if Z 2z — 1 A Z < 3z — 2 модификация
elseif Z = 3z — 2
квадратный корень end
elseif z > j
if Z ^ i + j — 1 A Z < i + 2y — 2 модификация
elseif Z = z + 2y — 2деление
end
elseif z < j
ifZ ^ z + j — 1 A Z < j + 2z — 2
модификация
elseif Z = у + 2z — 2 деление
end end
end
Всего требуется Зи — 2 шагов, потому что Proc (и, и) вычисляет свой квадратный корень, т. е. дпт при Z = Зп — 2.
Нам остается решать задачу организации обменов, отвечающих этим вычислительным действиям. Нужно сделать два наблюдения:
На временном шаге после того, как Proc(zj) вычислит ди, т.е. после t = i -V j + min {Zj} — 1, все, что он должен сделать,-это послать д^ на восток, если i > j и j < п, на юг, если j > i и i < п, и на восток и юг, если i =j < п.
е На временных шагах t = i + j — 1: i + j + min ^i,j^ — 3 Proc(Z,/) выполняет модификацию, т.е. вычисление вида а ^ а — anorthawest, где anorth поступает с севера, a awest-c запада. Чтобы эти данные продолжили свое собственное передвижение, Proc (i,j) должен отправить текущее anorth на юг и текущее awest на восток.
В целом мы получаем следующую процедуру.
Алгоритм 6.5.1. Предположим, что матрица А е R"х п симметричная и положительно определенная и А = GGT-ее разложение Холецкого. Если в систолическом п х п- массиве с соединениями в виде сетки каждый процессор исполняет следующую программу, то по окончании процесса в Proc (jj^ локальная переменная а содержит 9 и при Z > j и дл при j i.
loc. init [(Zj) = ту. id, north, east, south, west, n, a = A (Z,j)]
for t = 1:3n — 2
if i = j
{Вычисления диагональных процессоров.}
if z = 2 Z — 1 A Z = 1
recv (anorth, north) recv (awest, west) ^^ Onorth ^west
elseif 2Z — 1 < t < 3Z — 2 if i ^ n send(a„or(h, south) send (a H,esl, east) end recv (a north, north) recv (a west, west) О ^ О north О west elseif Z = 3 Z — 2
a = >Ja
elseif z = 3 z — 1 A i / n
send (я, south) send (я, east) end elseif i > j
{Вычисления поддиагональных процессоров.}
if t = i + j — 1 A j ^ 1
recv (anorth, north); recv {a west, west)
^^ ^north O-west
elseif i + j — 1 < t < i + Ij — 2
if Z / я
send (anorth, south)
end
send(swesb east)
recv (anorth, north); recv (awest, west)
a a anorth awest
elseif t = i + 2/ — 2
recv (алопл, north); a = a/anorth
elseif t = i + 2j — 1 if i / n
send (anorth, south)
end send (a, east) end
elseif i < J
{Вычисления наддиагональных процессоров.} if t = i + j — 1 A i Ф 1 recv (anorth, north); recv (awest, west) a ci cinorth awest
elseif i + j — 1 < t < 2z + j — 2 if j* n
send (awes„ east)
end
send (anorlh, south)
recv(anorlh, north); recv (awest, west) Cl ClCl north Cl west
elseif Z = 2z +y — 2
recv (awest, west); a = a/awest
elseif Z = 2z + у — 1 if j^n send (яwes„ east) end send (a, east)
end
end
end
quit
Можно было бы сжать этот алгоритм (его представил С. Paige), но его настоящая форма точнее отражает его вывод.
Отметим, что алгоритм 6.5.1 является процедурой с линейным временем. Конечно, в каждый момент времени занят работой не каждый процессор, и, следовательно, здесь есть некоторая неэффективность. А именно, среднее число активных процессоров на любом заданном временном шаге определяется как (п3 / 3) / ((3 п — 2)п2) ^ \/9.
Для алгоритма 6.5.1 легко формулируется блочная версия. Она представляет интерес, когда порядок матрицы больше, чем размер сетки. Если размеры сетки N х N, то мы рассматриваем А как блочную N х A-матрицу. Если связи тороидальные, то для них подходящими могут быть другие отображения кругового типа. Можно сформулировать также версию алгоритма, в которой учитывается симметричность, а для реализации берется нижняя треугольная систолическая сеть процессоров.
Асинхронная сеточная процедура Холецкого
При выводе асинхронной, основанной на передаче сообщений процедуры Холецкого для сетки процессоров, в отличие от систолического случая мы не спрашиваем, «когда» вычисляется а^>. Вместо этого у нас Proc (z, У) «дает старт»
вычислениям в зависимости от локального счетчика, отмечающего число завершенных шагов модификации a<r- а — awestanorth. В следующем массиве указывается число модификаций, в которых участвует Proc (Z, у) до того, как он будет выполнять деление (если i / у) или извлечение квадратного корня (если i = 1):
‘ о о о о о "
0 1111
0 1 2 2 2•
0 12 3 3
.01234
Экстраполируя этот пример, заключаем, что вход (Z,y) определяется как min(Z,y) — 1, и мы получаем:
Алгоритм 6.5.2. Предположим, что матрица Л е R”х ” симметричная и положительно определенная и Л = GGT-ee разложение Холецкого. Если в и х «-массиве соединенных в сетку процессоров каждый из них исполняет следующую программу; то по окончании процесса локальная переменная а в Proc (Z, у) содержит ди для i^j и дм для j и
loc. init [(Z,y) = ту. id, north, east, south, west, n, a = Л(^у)] {Модифицировать фазу.} k = 1
while, к < min(Z.y)
recv(a„ortA, north); recv(a„,e$l, west)
^# ^west^north
if Z < n send («north» south) end if у <n send(a„,eM, east) end
k = k-V 1 end
{Свернуть по кругу фазу.}
if i =j _
a = J a if Z < n send (a, east); send (a, south) end
elseif Z > j
recv («попк» north) if i <n
send south) end #^ / ^north
send (a, east)
elseif i < j
recv (a west, west)
if У < «
send(awes„ east) end у a / a west send (я, asouth) end quit
Заметим, что вывод алгоритма 6.5.2 не содержит детального анализа синхронизации, как в его систолическом аналоге - алгоритме 6.5.1. Для того чтобы установить корректность процедуры, еще требуется доказать несколько фактов, относящихся к планированию вычислений. Например, если к <J < i, то можно показать, что к-м сообщением, прибывающим в Proc(Z,j) с запада, будет gik. Аналогично gkj является к-м сообщением, прибывающим с севера. Результаты, подобные этим, можно затем использовать для строгого доказательства того, что по окончании процесса Proc(Z,j) хранит у себя gir
Сеточная систолическая процедура QR-разложения
Частичный выбор ведущего элемента не очень хорошо отображается на двумерные массивы процессоров, потому что перестановка строк может быть связана с обменом данными между отдаленными процессорами. По этой причине QR-разложение оказалось довольно привлекательным методом решения линейных уравнений, особенно на систолических массивах. Напомним, что согласно § 5.2.3 для вычисления QR-разложения матрицы ЛеКтхл можно использовать вращения Гивенса, причем это можно сделать многими способами. Мы остановимся на алгоритме 5.2.2, в котором используются вращения Гивенса для соседних строк:
for j = 1: п
for i = т: — 1 ;j + 1
[с, 5] = givens (Л (Z — 1: Z,/))
Л (Z — 1: ij: n) = row. rot (Л (Z — 1: Z, j: n\ c, s) end end
Формирование Q не будем рассматривать, так как это только затруднит обсуждение распараллеливания.
Чтобы построить параллельную версию для (6.5.1), посмотрим на некоторые промежуточные этапы редукции. Предположим, что (т, п) = (6, 3) и уже аннулированы а61 и а51:
XXX XXX XXX XXX О х х О х X
Следующий шаг алгоритма-аннулировать а41. Но заметим, что мы готовы также к тому, чтобы аннулировать я62. Поэтому давайте то и другое сделаем одновременно:
X X X
XXX
XXX
XXX
XXX
(3,4),(5,6)
XXX
XXX
0 х х
0 х х
0 х х
О х х
_ 0 0 х
На следующем «временном шаге» можно ввести еще одну пару нулей:
X
X
X
X
X
X
X
X
X
(2,3),(4,5)
0
X
X
0
X
X
0
0
X
XXX XXX О х х О х х О О х О О х
На этом этапе можно одновременно провести аннулирование я21, я42 и я61
" X X X "
X X X
XXX
0 х х
0 х х
(1,2),(3,4),(5,6)
0 х х
0 х х
0 0 х
0 0 х
0 0 х
0 0 х
ООО
Как видим, на языке шагов по времени в случае 6x3 нули могут вводиться
в следующие моменты:
ххх
5хх
46х
357
246
135
(6.5.2)(6.5.2)Вообще, поддиагональный матричный элемент а^ может быть обнулен в момент
(6.5.2)
(6.5.2)
zy = (2/ - 1) + т - i = т + 2/ - z - 1.
Значит, компонента z = т + lj — z столбца j может быть аннулирована в момент z, при условии что т ^ i^ j + 1. Таким образом, мы получаем следующий пересмотренный вариант для (6.5.1):
for t = 1: т + п — 2
for j = 1: п
i = т — t + 2j — 1
if i < m A i ^ j + 1(6.5.3)
{Сформировать и применить G^
[с 5] = givens (Л (z — 1: ij))
A(i — 1: i, j: ri) = row. rot (A (z — 1: z, j: ri), c, s) end end end
Общее число требуемых временных шагов равно т + п — 2, потому что последним обнуляется элемент ял+1 л и это происходит при Z = т + п — 2.
С точки зрения параллельных вычислений ключевое наблюдение относительно (6.5.3) состоит в том, что все вращения, связанные с каким-либо заданным «временным шагом» Z, являются «свободными от конфликтов» и могут выполняться одновременно. В течение стабильного периода (2и — 1 ^ Z ^ т — 1) обнуляется по одному элементу на столбец.
Если у нас есть систолическая сетка такого же размера, как и Л, то возможна реализация с линейным временем:
Proc (z, у) хранит у себя текущее аи.
Proc (/, у) генерирует гивенсово вращение G-.
После генерации вращения G- оно передвигается на восток вдоль процессорных строк / — 1 И L
В такой схеме г^ появляется в Proc (z, 7). Если проследить за деятельностью Proc (z, 7), то обнаружится, что на начальном периоде он простаивает. Затем он занимается получением вращений, связанных с аннулированием в строках z + 1 и L В течение этого периода он модифицирует хранимые у него а^ и передает полученные вращения на запад. Наконец, он вырабатывает G^ и после этого простаивает. Мы видели такой образец занятости в алгоритме 6.5.1. Как и в той постановке, в любой момент времени активной является значительная часть процессоров, а поскольку всего их п2, получается процедура с линейным временем. Детали см. в Heller, Ipsen (1983) и Gentleman, Kung (1982).
Задачи
Модифицировать алгоритм 6.5.1 и 6.5.2 так, чтобы они вычисляли: a) LD £т-разложение; в) L [/-разложение. Позаботьтесь о том, чтобы указать распределение множителей на входе.
Замечания и литература к § 6.5
Работы по параллельному вычислению разложений LU и Холецкого включают
Brent R. Р. and Luk F. Т. (1982). “Computing the Cholesky Factorization Using a Systolic Architecture”, Proc. 6th Australian Computer Science Conf. 295-302.
Costnard M., Marrakchi M. and Robert Y. (1988). “Parallel Gaussian Elimination on an MI MD Computer”, Parallel Computing 6, 275-296.
Delosme 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.
Funderlic R. E. 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, University 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.
JohnssonS. L. and HoC. 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.
Elden 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 Ill-Posed Problems”, SIAM J. Sci. and Stat. Comp. 7, 892-903.
Gentlman W. М. and Kung Н. Т. (1982). “Matrix Triangularization 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. Методы разложения на общей памяти
В этом параграфе мы посмотрим на различные реализации разложения Холецкого на общей памяти. Каждая реализация обладает своим собственным образцом синхронизации, а вместе они дают представление о том, как разложение типа Холецкого может организовываться на системе с общей памятью. Мы выбрали разложение Холецкого ради удобства изложения, но большей частью то, о чем мы говорим для него, переносится и на другие разложения из нашего репертуара.
Статическое планирование для Холецкого с внешними произведениями
Начнем с распараллеливания алгоритма Холецкого с внешними произведениями:
for к = 1: п
А(к:п) = Акк:п^АМ
for j = к + 1: п
A {j: nj^ = A^j: n,j> - A(j: n, k) A (/, k^ end end
Цикл no j отвечает за модификацию с использованием внешнего произведения. Его тело образуют п — к операций saxpy, которые независимы и легко распределяются.
Алгоритм 6.6.1. Предположим, что симметричная положительно определенная матрица A gR" х п хранится в общей памяти, к которой имеют доступ р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А заменяется ее множителем Холецкого.
shared variables [А(1:п, Г. и)]
glob, init [Л]
loc. init [p, pi = my. id, n\
for к = 1: n
if pi = 1
get (А (к: и), v (к: и)), v (k: n) = v (k: n) / ^/v (k)
put (r (k: ri), A(k:n, k))
end
barrier
get (A (k + 1: n, k), v(k + 1: и))
for у = (к + \^*.p:n
get(^(j:«, j), wU*.n^; w(J:n) = w(j:n) - vU^U'.n)
put(wU;n\ AU* nJ))
end
barrier
end
quit
Нормирование перед /-циклом представляет собой очень малый объем работы по сравнению с модификацией, использующей внешние произведения. Поэтому эту порцию вычислений разумно поручить какому-то одному процессору. Отметим, что требуются два предложения barrier. Первое гарантирует, что процессор не начнет работу по прибавлению к-го внешнего произведения до тех пор, пока у Ргос(1) не будет доступа к к-му столбцу из G. Второе предложение barrier не дает начать выполнение к 4- 1-го шага до полного завершения к-го шага.
Можно сформулировать и блочную версию алгоритма 6.6.1. Пусть и = rN. При к = 1 :N мы (а) поручаем Ргос(1) сформировать G(:, 1 + (к — 1)г:кг) и (Ь) заставляем все процессоры участвовать в модификации ранга г для остающейся подматрицы А(кг-У1:п, krA-i:n\ См. §4.2.6. Если по отдельности процессоры хорошо воспринимают операции 3-го уровня, то производительность можно улучшить за счет укрупнения вычислительных блоков.
Статическое планирование для других разложений
Логика, связанная с алгоритмом 6.6.1, распространяется и на другие схемы разложений,. такие, как LU и QR. Точно так же, как было сделано в § 6.4.3 для кольцевых разложений, мы можем предъявить «шаблон», в котором отражается образец синхронизации для реализуемых на общей памяти разложений с внешними произведениями:
shared variables [Л, ... ]
glob, init [Л, ... ]
loc. init [p, pi = my. id, ... ]
for к = 1: n
if pi = 1(6.6.1)
get (A(k\ n), v(k;n^ {Сформировать k-e преобразование Tk.^ {Записать Tk в общую память.} end
barrier
{Скопировать Tk в локальную память.} for j = к + pi: р: п
{Применить Тк к А (к:nJ).} end barrier end '
Конечно, ссылки на Тк являются ссылками на некоторое подходящее представление для него, например на к-и вектор Хаусхолдера.
Две параллельные реализации для Холецкого с gaxpy
Теперь мы сконструируем пару параллельных процедур для разложения Холецкого на базе gaxpy-версии, т. е. на базе алгоритма 4.2.1:
for j = 1: п
for к = 1:/ — 1
A U-n. j) = А U'n-Л - A U, Ц A U:n, к)
end
A U: п, j) = A(J:n,J)/у/А (/,»
end
ю*
Обсудим два подхода к распараллеливанию. В первом из них каждый процессор участвует в каждой операции gaxpy. Вклад каждого процессора можно накапливать с помощью мониторинговой процедуры gax.sum из § 6.2.7. Тогда мы получим
Алгоритм 6.6.2. Предположим, что симметричная положительно определенная п х «-матрица А хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А замещается ее множителем Холецкого.
shared variables [А(1:п, 1:«)]
glob, init [Л]
loc. init [p, p = my. id, «]
for j = 1:«
и (у:«) = О
for к = p, : p :j — 1
get(A(j:n, k), al0CU:n^
uU'») = u(j:n) - alockj>alockj-.n^
end
call gax.sum(u(j:n\ AU-nJ))
barrier
if p = 1
«loc (M = aIoc U-n)/V «iOc U)
Put(dioeU-nV AU:n,j^
end barrier end
Первое предложение barrier гарантирует, что нормирование, приводящее к G(j\n,j), не будет начато до окончания gaxpy. Второе предложение barrier дает уверенность в том, что ни один из процессоров не перейдет к j + 1-му шагу прежде, чем завершится у-й шаг.
Второй подход к распараллеливанию основанной на gaxpy процедуры Холецкого состоит в применении идеи резерва задач, где у-й задачей является вычисление GU*.nJ\ Поскольку этот подстолбец множителя Холецкого получается нормированием из
j - i v(j:n) = A(j:n,j) - £ G(j, k)G(J:n, к),(6.6.2)
к = 1
мы видим, что у-я задача не может завершиться прежде, чем будут окончены задачи от 1-й до у — 1-й. Итак, мы добиваемся процедуры следующего вида:
Повторять до тех пор, пока есть задачи.
Получить следующую задачу, присвоить ей номер у.
Построить вектор vij-^ вида (6.6.2) наискорейшим образом.
Вычислить G(j\n,j) и сохранить в общей памяти.
Проинформировать все процессоры, ожидающие G(j\nJY что он доступен.
Конец
Для назначения задач мы можем использовать разработанный в § 6.2.6 монитор nexti. Чтобы осуществить построение G-столбцов и замещение элементов в А, нужен еще один монитор chol с двумя процедурами canread и write.
monitor: chol protected variables: cols, done condition variables: waitq (•) initializations: cols, done = 0 procedure chol. conread (z, k, j, n) if cols, done < к
delay (waitq (k)) end
^t(A(j\n, k), z(j:n)) continue (waitq (k)) end chol. canread procedure chol. write (r, j, ri)
put (v(j:n), A(j:n,j))
cols, done = cols, done + 1 if cols, done = n
cols, done = 0'
else
continue (waitq (j)) end
end chol. write end chol
Этот монитор обладает некоторым числом новых свойств по сравнению с nexti и gax. Для начала он содержит две процедуры. Обращение либо к chol. canread, либо к chol. write представляет собой попытку вызывающей программы войти в монитор. Однако в любой момент в мониторе по-прежнему может быть не более одного активного процесса. На эти две процедуры возлагаются следующие задачи:
chol. canread (z, к, j, ri) возвращает G(j\n,k) в z(j\n\ если оно готово. Если G(/.n,k) не готово, то вызывающий процессор становится ожидающим.
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.6.3. Предположим, что симметричная положительно определенная п х «-матрица А хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то по окончании процесса нижняя треугольная часть матрицы А замещается нижней треугольной частью ее множителя Холецкого.
shared variables [А (1: п, 1:«)]
glob, init [Л]
loc. init [р, ц = ту. id, л] call nexti.index(p, n, more,/)
while more-true
get (Atj:n,j\ v(j:n))
for к = 1: j — 1
call chol. canread (z, k, j)
vU-n) = vU-n) - zUWj"-^
end
p(j:«) = vU^Mx/v^
call chol. write (r, j, w)
call nexti. index (p, n, morej^
end
quit
Напомним, что процедура nexti. index сконструирована так, что ни один процессор не может выйти из цикла while до полного завершения всех задач.
Алгоритм 6.6.3 схож с нашими кольцевыми процедурами Холецкого цз § 6.4. Именно, каждый процессор испытывает период простаивания как в начале, так и в конце всего комплекса вычислений.
Можно сформулировать и блочную столбцовую версию алгоритма 6.6.3, основанную на разбиении
G = №,_.., GJ.(6.6.3)
Теперь z-й задачей является вычисление блочного столбца G^ Вследствие более крупного дробления вычисления процессоры, возможно, в состоянии извлечь пользу из линейной алгебры более высокого уровня, навеянной блочным разбиением.
Замечания об обменах с общей памятью
В алгоритмах 6.6.1-6.6.3 интересно оценить время, которое каждый процессор тратит на обмены. При больших nip эти методы дают равномерную загруженность, и в этой ситуации разумно предположить, что на обмены с общей памятью каждый процессор тратит Т/р секунд, где Т есть сумма всех издержек, связанных с get и put. Используя нашу модель обменов (6.2.2), находим, что в алгоритме 6.6.1 каждый процессор тратит
секунд, общаясь с общей памятью. Будучи основанными на gaxpy, алгоритмы 6.6.2 и 6.6.3 содержат меньше обменов:
п2п3
^6.6.2 ~ ^6.6.3 as + Т- Ps*2^6р
Конечно, это лишь грубые оценки. Тем не менее они еще раз указывают на то, что лучше опираться на операции gaxpy, чем на внешние произведения.
Блочный Холецкий на базе резерва задач
Предположим, что А - симметричная положительно определенная п х «-матрица и п = Nr. Вспоминая наше обсуждение блочного Холецкого со скалярными произведениями (см. §4.2.6), мы получаем центральное уравнение
GijGli = ^u-lGikGjk,(6-6.4)
k= 1
приравнивая (/,/|-блоки в А = GGT. Здесь все Gy и А^ суть г х r-блоки. Заметим, что если i > j, то вычисление Gtj не может закончиться, пока не будут готовы Gu, ..., G^, х и GjД, ... , Gjj. Если j = /, то вычисление GG3j не может закончиться, пока не будут готовы GjV ... 9 GLj_v В свете этих замечаний разумно вычислять G^ в порядке столбец за столбцом. В случае 4x4 это означает, что G-блоки отыскиваются в таком порядке:
Пусть задача (/,/)-это вычисление G^. Следуя рассуждениям, которые стоят за нашей процедурой Холецкого с использованием резерва задач, нам нужна мониторинговая процедура для назначения следующей задачи. Для этого подходит простая модификация мониторинговой процедуры nextij.index (см. § 6.3.8):
monitor: cholij
protected variables row, col, idle, proc
condition variables wait!
initializations: flag = 0
procedure cholij. index (N9p9more9 i9j) if flag = 0 row = 0; col = 1 idle, proc = 0; flag = 1 end if row < N row = row 4- 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 4- 1 if idle, proc ^p — 1 delay ^waiti^ else flag = 0 end
continue (w/Zz) end end cholij. index end cholij
Используя cholij. index, мы можем организовать нашу параллельную процедуру для блочного Холецкого следующим образом:
call cholij. index (N,p, more, i,j) while more = true
get S)
for к = 1: j — 1
{В случае готовности получить Gik и Gjk и вычислить модификацию S = S-GikG^ end
if i = j
{Решить GjjGjj = S, применив алгоритм 4.2.1.} else
{Решить GijGjj = S относительно G^ end
{Записать G^ в общую память и проинформировать все процессоры, которые могут ожидать G^, о его готовности.} call cholij. index (N,p, more, ij)
end
Анализируя (6.6.4), мы обнаруживаем необходимость в еще одном мониторе для надзора за обращением к А, когда на ее месте получается G. В частности, нам нужны блочные версии мониторинговых процедур chol. canread (z, k,j,ri} и chol. write (v,j, n). Другими словами, нам нужен монитор с процедурами bloc. chol. canread и bloc. chol. write, где:
block, chol. canread (w, i, к) возвращает Gik в W, если оно готово. Если Gik не готово, то вызывающий процессор становится ожидающим.
block, chol. write (w, z,у) копирует W= GLj в Ац и информирует все процессоры о том, что оно готово и находится в общей памяти.
Вот детали:
monitor: block, chol
protected variables: row.progress (•)
condition variables: waitq (•, •)
initializations: row. progress (•") = 0
procedure block, chol. canread (w, i, k) if row. progress (i) < к delay (waitq (i, k)) end get(Alk, W) continue (waitq (i, k)) end block, chol. canread
procedure block, chol. write (S, i,j, N)
put (5,Аи)
row. progress (i) = row. progress (i) + 1
if row. progress (N) < N continue (waitq (i,j^ else
row. progress () = 0 end
end bloc. chol. write end bloc, chol
Этот монитор равнозначен двумерной версии для chol. Мы заводим вектор-счетчик row. progress (\: А), отслеживающий число вычисленных Gu в каждой блочной строке.
В конце вычислений этот вектор обнуляется. Если процессор запрашивает блок Gik и находит, что он еще не готов, то он становится ожидающим-в зависимости от waitq^k^- Всякий раз, когда процессор вычисляет блок G^, он начинает процесс с активизации всех процессоров, дожидающихся соответствующего разрешения от waitq(i,j\ Собирая все это вместе, получаем
Алгоритм 6.6.4. Пусть Л-блочная Nx N-матрица с rxr-блоками. Предположим, что она симметричная положительно определенная и хранится в общей памяти, доступной для р процессоров. Если каждый процессор исполняет следующий алгоритм, то нижняя треугольная часть матрицы А заменяется на нижнюю треугольную часть матрицы G- треугольник Холецкого. (Ссылки на А^ в действительности являются ссылками на Л (1 + (/ — l)r:zr, 1 4- (у — l)r: jr\)
call cholij. index VNtPt more, ij) while more = true
getMy,S) for к = 1 :j’ — 1 call block, chol. canread (и , i, k) call block, chol. canread (Y, j, k) S = S- WYT
end if i = j
Решить GjjGjj = S, применив алгоритм 4.2.1 к S.
else
Решить G- Gjj = S относительно Gy.
end
call block, chol. write (S, ij, N)
call cholij. index (N,p, more, i,j^ end quit
Этот алгоритм можно распространить и на случай произвольного блочного разбиения.
Нетрудно показать, что каждый процессор, занятый исполнением алгоритма 6.6.4, тратит примерно
^№(as + psr2)'6.6.4 ~sp
секунд на обмен с общей памятью.
Задачи
Используя шаблон (6.6.1), разработать параллельную процедуру для QR-разложения, в предположении что т х «-матрица А хранится в общей памяти.
Разработать LU-версию алгоритма 6.6.2.
Для алгоритма 6.6.3 разработать LU-версию с частичным выбором.
Сравнить обмены с общей памятью, связанными с алгоритмами 6.6.3 и 6.6.4.
Приспособить алгоритм 6.6.4 и соответствующие мониторы для того, чтобы они были эффективными в случае блочно-трехдиагональной А.
Замечания и литература к § 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(y4 = UHVH, U и И-унитарные, Ё-ве-
щественная диагональная матрицы). Получение этих комплексных разложений отличается от вещественного случая не так сильно, чтобы оправдать отдельное описание.
Свойства и разложения
В этом разделе мы даем обзор математических основ, необходимых для построения и анализа обсуждаемых далее алгоритмов вычисления собственных значений.
Собственные значения и инвариантные подпространства
Собственные значения матрицы А с С”хп-это п корней ее характеристического многочлена р (z) = det (z I — А). Совокупность корней называют спектром и обозначают Х(А). Если Х(Л) = {Хр ... ,Х„), то
det (Л) = XYX2 ... Хп.
Более того, если мы определим след (trace) матрицы А как
trace (Л) = X аи-
i = 1
то trace (Л) = ^ + ... + Хп. Это можно показать, рассматривая коэффициент при zn~1 в характеристическом многочлене.
Если ХеХ(А\ то ненулевой вектор хеСп, удовлетворяющий уравнению
Ах — Хх,
называют собственным вектором. Точнее, х является правым собственным вектором, соответствующим X, если Ах = Хх, и левым собственным вектором, если хТА = Ххт. В дальнейшем, если не оговорено противное, «собственный вектор» означает «правый собственный вектор».
Собственный вектор определяет одномерное подпространство, инвариантное по отношению к умножению слева на матрицу А. В общем случае подпространство S с сл, обладающее свойством
xgS => AxgS,
называют инвариантным подпространством (матрицы А). Заметим, что если
АХ = ХВ, ВеСкхк, XeCnxk,
то подпространство range (X) является инвариантным и
By = Ху А(Ху) = Х(Х у).
Таким образом, если X имеет полный столбцовый ранг, то из АХ = ХВ следует, что Х(В) с Х(А). Если X-квадратная невырожденная матрица, то Х(Л) = Х(В) и говорят, что матрицы А и В = Х^АХ подобны. В этом случае X называют преобразованием подобия.
Многие алгоритмы вычисления собственных значений используют разбиение исходной задачи на ряд задач меньшего размера. Следующий результат является основой таких преобразований.
Лемма 7.1.1. Если матрица ТеСпхп представлена в блочном виде
гр _^11^12Р
L 0Т22Jq
рq
то МТ> = МД\^ и Х(Т22).
Доказательство. Пусть
712 Х1Т22 3 Lx2_712 Х1Т22 3 Lx2_= X= X
712 Х1
Т22 3 Lx2_
712 Х1
Т22 3 Lx2_
= X
= X
где xygCp и x2eCq. Если х2 / 0, то Т22х = Хх2 и ХеХ(Т22). Если х2 = 0, то Т^х^Х^ и ХеХ(Т11). Следовательно, Х(Т) с Х(ТИ) U Х(Т22). Но поскольку множества Х(Т) и Х(ТИ) и Х(Т22) имеют одинаковое число элементов, эти два множества равны. □ .
Основные унитарные разложения
Используя преобразования подобия, можно привести заданную матрицу к любой из нескольких канонических форм. Эти канонические формы отличаются способом представления собственных значений и видом информации об инвариантных подпространствах, которую они позволяют получить. Учитывая численную устойчивость унитарных преобразований, мы начнем с обсуждения редукций, которые реализуются унитарным подобием.
Лемма 7.1.2. Если матрицы АеСпх\ ВеСрхр и ХеСпхр удовлетворяют условиям
АХ = ХВ,
rank (X) = р,
(7.1.1)
то существует унитарная матрица QgC
пхп, такая, что
QHAQ = T =
Р
где Х(ТИ) = Х(Л) П X(S).
Доказательство. Пусть
712Р
Т22 Jп-р ’
п —р
(7.1.2)
X = Q [о]’ Qg
Спх\ RgCpxp,
есть QR-разложение матрицы X. Подставляя его в (7.1.1) и преобразуя полученное выражение, имеем
R_0_R_0_в,в,Ти т12"| Гл’
R
_0_
R
_0_
в,
в,
- 7^1 Т22 _ _0_
где
QHAQ =QHAQ =712Т22_712Т22_Рп — рРп — р
QHAQ =
QHAQ =
712
Т22_
712
Т22_
Р
п — р
Р
п — р
Р п-р
Из невырожденности матрицы R и уравнений Т21 R = 0 и TiYR = RB следует, что Т21 = 0 и Х(Т11) = Х(В). Окончательный результат получаем, воспользовавшись леммой 7.1.1, согласно которой Х(Л) = Х(7) = Х(ТИ) и Х(Т22).П
Пример 7.1.1. Если
А =
67.00
- 20.40
22.80
177.60
95.88
67.84
- 63.20
-87.16
12.12
X = (20, - 9, - 12)7 и В
= (25), тс
АХ =
ХВ. Более
того, если ортогональную матрицу
Q определить как
-
-8.00
0.360
0.480
е =
0.360
0.928
- 0.096
0.480
- 0.096
0.872
то б7Х = (—25, 0, О)7" и
25 -95
5
QTAQ =
Т=
0147
- 104
0146
3
Заметим, что Х(А) = {25, 75 4- 100/, 75 — 100/}.
Лемма 7.1.2 утверждает, что произвольная квадратная матрица может быть приведена к блочно-треугольной форме унитарными преобразованиями подобия, если известно одно из ее инвариантных подпространств. Применяя индукцию, мы можем легко получить разложение Шура [Schur (1909)].
Теорема 7.1.3 (Разложение Шура). Если АеСпхп, то существует унитарная матрица QeCnxn, такая, что
(7.1.3)(7.1.3)QHAQ = T=D + N,
(7.1.3)
(7.1.3)
где D = diag(X1, ... , Xn), a NeCnxn есть строго верхняя треугольная матрица. Более того, матрица Q может быть выбрана такой, чтобы собственные значения Xt были расположены вдоль диагонали в любом заданном порядке.
Доказательство. Теорема очевидно верна при п = 1. Предположим, что она верна для всех матриц порядка п — 1 или меньше. Если Ах = Хх, где х ^ 0, то согласно лемме 7.1.2 (при В = (X)) существует унитарная матрица U, такая, что:
UHAUUHAUX wH-0 С _X wH-0 С _1и — 11и — 11 п— 11 п— 1По предположению индукции найдется унитарная матрица U, такая, что матрица UHCU-верхняя треугольная. Следовательно, если Q = C7diag(l, 0\ то матрица QHAQ- верхняя треугольная. □Пример 7.1.2. ЕслиПо предположению индукции найдется унитарная матрица U, такая, что матрица UHCU-верхняя треугольная. Следовательно, если Q = C7diag(l, 0\ то матрица QHAQ- верхняя треугольная. □Пример 7.1.2. ЕслиА =А =78- 5078- 50200 1 Г 0.8944/0.4472и О =75 J L - 0.4472- 0.8944/200 1 Г 0.8944/0.4472и О =75 J L - 0.4472- 0.8944/то Q- унитарная матрица ито Q- унитарная матрица иQHAQ =QHAQ =75 + 100/150075 + 100/75 + 100/150075 + 100/
UHAU
UHAU
X wH
-0 С _
X wH
-0 С _
1
и — 1
1
и — 1
1 п— 1
1 п— 1
По предположению индукции найдется унитарная матрица U, такая, что матрица UHCU-верхняя треугольная. Следовательно, если Q = C7diag(l, 0\ то матрица QHAQ- верхняя треугольная. □
Пример 7.1.2. Если
По предположению индукции найдется унитарная матрица U, такая, что матрица UHCU-верхняя треугольная. Следовательно, если Q = C7diag(l, 0\ то матрица QHAQ- верхняя треугольная. □
Пример 7.1.2. Если
А =
А =
78
- 50
78
- 50
200 1 Г 0.8944/0.4472
и О =
75 J L - 0.4472- 0.8944/
200 1 Г 0.8944/0.4472
и О =
75 J L - 0.4472- 0.8944/
то Q- унитарная матрица и
то Q- унитарная матрица и
QHAQ =
QHAQ =
75 + 100/150
075 + 100/
75 + 100/150
075 + 100/
Если Q = [^р ... , q^ есть разбиение на столбцы унитарной матрицы Q из (7.1.3), то столбцы qt называют векторами Шура. Сравнивая столбцы в уравнении AQ = QT, мы видим, что векторы Шура удовлетворяют уравнениям
k- 1
Aqk = Xkqk + L nik4i> к=\;п.(7.1.4)
1=1
Отсюда следует, что подпространства
St = span{^,..., ^}, к= 1:и,
являются инвариантными. Более того, нетрудно показать, что если Q = [44, ... , q^, то X(QkAQk) = {Х1?... , XkY Поскольку собственные значения в (7.1.3) могут иметь произвольный порядок, это означает, что существует по крайней мере одно /с-мерное инвариантное подпространство для каждой подпоследовательности к собственных значений.
Другой вывод из (7.1.4) заключается в том, что вектор Шура qk является собственным вектором тогда и только тогда, когда /с-й столбец матрицы N- нулевой. Оказывается, что если к-й столбец матрицы N нулевой для всех к, то Ан А = А Ан. Матрицы, удовлетворяющие этому условию, называют нормальными.
Следствие 7.1.4. Матрица А е Спхпявляется нормальной тогда и только тогда, когда существует унитарная матрица QeCnxn, такая, что QHAQ = diag(X1? ... , Xn).
Доказательство. Нетрудно показать, что если А унитарно подобна диагональной матрице, то А нормальная. С другой стороны, если А является нормальной и QHA Q = Т есть ее разложение Шура, то Т является также нормальной. Осталось показать, что нормальная верхняя треугольная матрица является диагональной. □
Заметим, что если QHAQ = Т= diag(XJ + N есть разложение Шура произвольной «х «-матрицы А, то ||N ||F не зависит от выбора Q:
1^ Ui = м 1^- £ IV = ^2M)-
i = 1
Эту величину называют отклонением от нормальности. Таким образом, для того чтобы сделать Т «более диагональной», необходимо использовать неунитарные преобразования подобия.
Неунитарные преобразования
Для того чтобы увидеть, что представляет собой неунитарное преобразование подобия, мы рассмотрим блочную диагонализацию 2 х 2-блочно-треугольной матрицы.
Лемма 7.1.5. Пусть матрица ТеСпхп представлена в блочном виде
гр_ ^11 712 Р
_0Т22 _ q
р q
Определим преобразование ф \Cpxq -► Cpxq равенством
^(X)=T1YX-XT22,
где XeCpxq. Преобразование ф невырожденно тогда и только тогда, когда
Х(ТТ1) П Х(Т22) = 0. Если ф невырожденно и ¥ определено как
¥ =¥ =7-Lo /J7-Lo /Jф(2)= -Т12,ф(2)= -Т12,
¥ =
¥ =
7-
Lo /J
7-
Lo /J
ф(2)= -Т12,
ф(2)= -Т12,
то У-1ТУ= diag(T11, Т22).
Доказательство. Предположим, что ф(Х) = 0 для X + 0 и что
\3HXV =\3HXV =2r 0 о о2r 0 о огР-ггР-г
\3HXV =
\3HXV =
2r 0 о о
2r 0 о о
г
Р-г
г
Р-г
г q — r
есть сингулярное разложение матрицы X с Yr = diag^), г = rank(JQ. Подстановка этого разложения в уравнение TYiX = ХТ22 дает
^11 ^12 ^г 0-^21 ^22- -0 0_^11 ^12 ^г 0-^21 ^22- -0 0_Zr 0 ВХ1 ВХ2_о oJ Lb21 b22J ’Zr 0 ВХ1 ВХ2_о oJ Lb21 b22J ’
^11 ^12 ^г 0
-^21 ^22- -0 0_
^11 ^12 ^г 0
-^21 ^22- -0 0_
Zr 0 ВХ1 ВХ2
_о oJ Lb21 b22J ’
Zr 0 ВХ1 ВХ2
_о oJ Lb21 b22J ’
где UHTYiU = (Аф и VHT22V= (Вф. Сравнивая соответствующие блоки, мы видим, что Л21 = 0, BV2 = 0 и Х(ЛИ) = Х^п). Следовательно,
0 Х(ЛИ) = с Х(Тхф п Х(Т2ф.
С другой стороны, если ХеХ(Т11) П Х(Т22), то найдутся такие ненулевые векторы х и у, что TiYx = Хх и унТ22 = Ху11. Можно показать, что ф (хун) = 0. Наконец, если ф невырожденно, то указанная матрица Z существует и
¥"1Т¥ =¥"1Т¥ ="I_0"I_0/ J L0/ J L0т121 г/ XT22J Lo I _т121 г/ XT22J Lo I _
¥"1Т¥ =
¥"1Т¥ =
"I
_0
"I
_0
/ J L0
/ J L0
т121 г/ X
T22J Lo I _
т121 г/ X
T22J Lo I _
"^и TY1Z-ZT22^T12
-0Т22
Пример 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
то
У1 Т¥ =У1 Т¥ =1о о03 80-2 31о о03 80-2 3
У1 Т¥ =
У1 Т¥ =
1о о
03 8
0-2 3
1о о
03 8
0-2 3
Применяя повторно лемму 7.1.5, можно установить более общий результат.
Теорема 7.1.6 (Блочно-диагональное разложение). Пусть
Q»AQ = Т =
Tvi
0
о
^12 ^22
0
119
Тчч.
(7.1.5)
есть разложение Шура матрицы АеСп^п, и предположим, что блоки Ти квадратные. Если Х(Тц) П X^Tj]) = 0 при i У j, то существует невырожденная матрица УеСпхп, такая, что
(QYY^A^QY^ diag(Т.,, ..., Tqq).(7.1.6)
Доказательство. Доказательство можно выполнить, используя лемму 7.1.5 и индукцию. П
Если каждому диагональному блоку Ти соответствует определенное собственное значение, то мы получаем
Следствие 7.1.7. Если АеСпх*\ то существует невырожденная матрица X, такая, что
X~lAX = diag (ХД + Nv, ... , XqI + НД, N^C^,(7.1.7)
где Xt, ... , Xq различные, целые nv, ... , nq удовлетворяют равенству nY У ... У nq = = п и каждая матрица Nj является строго верхней треугольной.
С разложением (7.1.7) связан ряд важных понятий. Целое число щ называют алгебраической кратностью собственного значения Xv Если щ = 1, то говорят, что собственное значение Х( - простое. Геометрическая кратность Xt равна размерности null (N^, т. е. числу независимых собственных векторов, соответствующих Х? Если алгебраическая кратность Х( превышает его геометрическую кратность, то говорят, что Xv - дефектное собственное значение. Матрицу, имеющую дефектное собственное значение, называют дефектной. Недефектные матрицы называют также диаго- нализуемыми в соответствии со следующим результатом:
Следствие 7.1.8 (Диагональная форма). Матрица АеСпхп является недефектной тогда и только тогда, когда существует невырожденная матрица ХеСпхп, такая, что
X~lAX = diag(Xp ... , XJ.(7.1.8)
Доказательство. Матрица А недефектная тогда и только тогда, когда существуют линейно независимые векторы xv...,xneCn и скаляры Xv ... ,Хп, такие, что Axt = Xlxi при i = Х:п. Это эквивалентно существованию невырожденной матрицы X = [х15 ... , хпЗеСпхп, такой, что АХ = XD, где D = diag(X15 ... , XJ. □
Заметим, что если у" есть ья строка матрицы X"1, то у"А = Х1у". Таким образом, столбцы матрицы ХТ являются левыми собственными векторами, а столбцы матрицы X- правыми.
Пример 7.1.4. Если
то Х~х АХ = diag(4,7).
Если матрицу X в (7.1.7) разбить на блоки
x = \xv.._ ХД,
то Сп = range (XJ © ... © range (Х^) есть прямая сумма инвариантных подпространств. Если базисы в этих подпространствах выбрать специальным образом, то можно получить еще больше нулей в верхней треугольной части матрицы Х~хАХ.
Теорема 7.1.9 (Жорданово разложение). Если АеСхп, то существует невырожденная матрица ХеСпхп, такая, что X"YAX = diag(J15 ... ,7Д где
А, 1
0 А^
О 1
О
1
О А,
есть т( х тгматрица и тг 4- ... 4- mt = п.
Доказательство. Смотри Halmos (1958), с. 112. □
Блоки J, называют жордановыми. Число и размеры жордановых блоков, связанных с каждым собственным значением, определяются однозначно, хотя их расположение вдоль диагонали неоднозначно. .
Некоторые замечания о неунитарном подобии
Жорданову блочную структуру дефектной матрицы трудно определять численно. Множество диагонализуемых их «-матриц является плотным в С"х", и, таким образом, малые изменения в дефектной матрице могут значительно изменить ее жорданову форму. Более подробно мы поговорим об этом в разд. 7.6.
Трудности, возникающие в задаче нахождения собственных значений, состоят в том, что у почти дефектных матриц плохо обусловлены матрицы собственных векторов. Например, любая матрица X, диагонализующая матрицу
14-8 114-8 10 < 8 « 1 ,0 < 8 « 1 ,(7.1.9)(7.1.9)
14-8 1
14-8 1
0 < 8 « 1 ,
0 < 8 « 1 ,
(7.1.9)
(7.1.9)
имеет число обусловленности во 2-й норме порядка 1/8.
Эти наблюдения показывают трудности, связанные с плохой обусловленностью преобразования подобия. Поскольку
У7(Х"1ЛХ) = Х"1ЛХ4-Е,У7(Х"1ЛХ) = Х"1ЛХ4-Е,(7.1.10)(7.1.10)
У7(Х"1ЛХ) = Х"1ЛХ4-Е,
У7(Х"1ЛХ) = Х"1ЛХ4-Е,
(7.1.10)
(7.1.10)
где
(7.1.11)(7.1.11)||Е ||2«uk2(X) ||А ||2,
(7.1.11)
(7.1.11)
ясно, что большая ошибка может появиться при вычислении собственного значения, когда мы выходим за рамки унитарных преобразований подобия.
Задачи
Показать, что если матрица ТеСпхп является верхней треугольной и нормальной, то Т- диагональная.
Проверить, что если X диагонализует 2 х 2-матрицу (7.1.9) и е ^ 1/2, то ХДХ) ^ 1/е.
Пусть собственные значения матрицы АеСпх п различны. Показать, что если QH A Q = = Тесть ее разложение Шура и АВ = ВА, то матрица QHBQ верхняя треугольная.
Показать, что если матрицы А и Вн принадлежат Стх” с т^и, то:
Х(Л5) = Х(М) и {о,..., 0}.
Задана матрица АеСп х п. Используя разложение Шура, показать, что для каждого е > 0 существует диагонализуемая матрица В, такая, что ЦА — Я||2 ^ е. Это показывает, что множество диагонализуемых матриц плотно в С п х п и что каноническая форма Жордана не является непрерывным матричным разложением.
Предположим, что Ак -* А и Qk AkQk = Тк есть разложение Шура матрицы Ак. Показать, что последовательность {QJ имеет сходящуюся подпоследовательность {&.}, обладающую следующим свойством:
lim Qk. = Q,
где QH A Q = Т- верхняя треугольная. Это показывает, что собственные векторы матрицы являются непрерывными функциями ее элементов.
Обосновать (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 Applications, 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 работы
Turnbill Н. 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.
Теория возмущения
Никакие из разложений, описанных в предыдущем разделе, не могут быть вычислены точно из-за ошибок округления и из-за того, что алгоритмы вычисления собственных значений являются итерационными и должны быть остановлены после некоторого конечного числа шагов. Поэтому важно разработать удобную теорию возмущений, чтобы руководствоваться ею в последующих разделах.
Чувствительность собственного значения
Ряд стандартных программ вычисления собственных значений выполняют последовательность преобразования подобия Хк, обладающих тем свойством, что матрицы Хк1АХк становятся «более диагональными». Возникает, естественно, вопрос: «Насколько хорошо диагональные элементы матрицы аппроксимируют ее собственные значения?»
Теорема 7.2.1 (О кругах Гершгорина). Если X~lAX = D + F, где D = diag^, ..., dn) и F имеет нулевые диагональные элементы, то
Х(Л) с и Dt,
где
D^V^CAz-dA^ ^ |Л;|}.
7=1
Доказательство. Пусть X е Х(А) и предположим, не нарушая общности, что X Ф dv для 1=1;п. Так как матрица (D — XI) + F — вырожденная, то из леммы 2.3.3 следует, что
1 < ДО-ХГ^Е L = £ тДД7- 1 № —
для некоторого к,1 < к < п. Но это не означает, что XeDk. □
Пример 7.2.1. Если
1023
А =А =- 102
А =
А =
1 -2 1
то X (Л) % {10.226, 0.3870 + 2.2216 /, 0.3870 — 2.2216 /}, а круги Гершгорина -Dt = { | z |: | z — - 10|^5}, D2 = Az\Az\^3) и D3 = AzV\z- 11^3}.
Можно также показать, что если круг Гершгорина D, изолирован от остальных кругов, то он содержит в точности одно собственное значение матрицы А. Смотри Wilkinson (АЕР), с. 71. Для некоторых очень важных процедур вычисления собственных значений можно показать, что вычисленные собственные значения являются точными собственными значениями некоторой матрицы А + Е, где матрица Е мала по норме. Следовательно, мы должны понять, как малые возмущения влияют на собственные значения матрицы. Простым результатом, проливающим свет на этот вопрос, является следующая теорема.
Теорема 7.2.2 (Бауэр-Файк). Если ц является собственным значением матрицы А + ЕеСпхп и Х-1АХ* = D = diag^, ... ДД то
min \Х-^\^кДХ)\\Е\\р,
ХеХ^А)
где ||-||р означает любую из р-норм.
Доказательство. Достаточно рассмотреть лишь тот случай, когда ц не принадлежит Х(А). Если матрица Х~1 (А + Е — pl) X вырожденная, то матрица I + ф — ц/)-1 (X"1 ЕХ) также вырожденная. Поэтому из леммы 2.3.3 получаем, что
Х^ф-^ГЦХ^ЕХ)^
.^||(D-p/)-1||pl|2f||p||£||p||X-1|lp.
Так как матрица ф — ц/)"1 диагональная, а р-норма диагональной матрицы есть максимальное из абсолютных значений ее диагональных элементов, то
||(О-ц/) 4lp= minХеХ(Л)||(О-ц/) 4lp= minХеХ(Л)11^-нГ11^-нГ
||(О-ц/) 4lp= min
ХеХ(Л)
||(О-ц/) 4lp= min
ХеХ(Л)
1
1^-нГ
1
1^-нГ
что и доказывает теорему. □
Аналогичный результат может быть получен через разложение Шура:
Теорема 7.2.3. Пусть QHAQ = D + N-разложение Шура (7.1.3) матрицы АеСпхп.
Если цеХ(А + Е) и р- наименьшее положительное целое, такое, что | ^ |р = 0, то
min |Х — ц| ^ max(0,0 1/р), ХеХ(Л)
где
р-1
е = ||£||2 I и nlit/с = О
Доказательство. Обозначим
1
5 = min IX — u I =—.
хехм) Ш1-ПГЧ\2
Теорема очевидно верна, если 5 = 0. Если 5 > 0, то матрица I — (ц/ — А)"1 -вырожденная, и, применяя лемму 2.3.3, имеем:
1 < || ^1 - АГ1 £||2 < || (ц/ - А)" *||2 || £||2 =
= ||((H7-D)-N)-4|2||£||2.(7.2.1)
Учитывая, что матрица (ц / — Л)"1 диагональная и | ^ |р = 0, несложно показать, что ((ц/ — ВГ1 NV = 0. Поэтому
р- 1
((ц/— Л) — У)"1 = X ^1 - Dr^r^i - вг1
к = 0
и, следовательно,
1 р~ 1 / II NII V ||((ц/-Л)-У)-Ч|2^- £.
8t=0\ 8 /
Если 8 > 1, то
№/-£)- У)"1!^- £ IINII*
° к = 0
и из (7.2.1) следует, что 5^0. Если 51, то
1 Р- 1
||((ц/-Л)-У2)-1||2<-£ IINII*° к - о
и из (7.2.1) следует, что 5Р < 0. Таким образом, 5 < тах(0,01/р). □
Пример 17.2.2. Если
А =А =0000240240354.001354.001и Е =и Е =00 0.00100 0.0010 00 00 00 00 00 0
А =
А =
0
0
0
0
2
4
0
2
4
0
3
5
4.001
3
5
4.001
и Е =
и Е =
0
0 0.001
0
0 0.001
0 0
0 0
0 0
0 0
0 0
0 0
то к (А + Е) « {1.0001, 4.0582, 3.9427} и матрица собственных векторов матрицы А удовлетворяет условию к2(Х) « 107. Оценка Бауэра-Файка из теоремы 7.2.2 имеет порядок 104, в то время как оценка Шура имеет порядок 10°.
Каждая из теорем 7.2.2 и 7.2.3 указывает возможную чувствительность собственного значения, если матрица А не является нормальной. В частности, если величина /с2(^)
или ||N||? 1 велика, то малое возмущение элементов матрицы Л может вызвать большие возмущения ее собственных значений.
Пример 7.2.3. Если
то для всех ХбХ(Л) и цеХ(Л 4- Е) величина |Х — ц| = 10 \ В этом примере возмущение порядка 10"10 матрицы А приводит к возмущению порядка 10"1 ее собственных значений.
Обусловленность простого собственного значения
Высокая чувствительность собственного значения матрицы А не может иметь место, если матрица Л-нормальная. С другой стороны, «ненормальность» не обязательно подразумевает высокую чувствительность собственного значения. Действительно, матрица, не являющаяся нормальной, может иметь как хорошо обусловленные, так и плохо обусловленные собственные значения. Следовательно, полезно уточнить нашу теорию возмущения таким образом, чтобы ее можно было применять к отдельным собственным значениям, а не к спектру в целом.
Для этого предположим, что X-простое собственное значение матрицы АеСпхп и что векторы х и у удовлетворяют равенствам Ах = Хх и унА = Ху11, причем ||х||2 = ||у||2=1- Используя классические результаты теории функций можно показать, что в некоторой окрестности точки £ = 0 существуют дифференцируемые функции х(е) и Х(е), такие, что
(Л + £ЭД = Х(е)х(е) ||Г||2 = 1, ||х(е)||21,
где X (0) = X и х (0) = х. Дифференцируя это уравнение по £ и полагая затем £ = 0, получим следующее уравнение:
Лх(0) + F х = Х(0)х + Хх(0).
Умножив на у11 обе части этого уравнения, разделив их на унх и взяв по абсолютной величине, получим, что
|Х(0)| =|Х(0)| =ун F хунхун F хунх11
|Х(0)| =
|Х(0)| =
ун F хунх
ун F хунх
1
1
Верхняя граница достигается, если F = ухн. Поэтому мы будем называть величину, обратную
-sW = Ьн^1,
обусловленностью собственного значения X.
Грубо говоря, выполненный выше анализ показывает, что если матрицу А изменить на величину порядка £, то собственное значение X может измениться на величину порядка e/s(X). Следовательно, если s (X)- мало, то собственное значение X следует рассматривать как плохо обусловленное. Заметим, что $(Х) является косинусом угла между левым и правым собственными векторами, соответствующими X, и равно единице только в том случае, когда X-простое.
Малое s(X) означает, что матрица А близка к матрице, имеющей кратное собственное значение. Точнее, если X-изолированное собственное значение и s(XJ < 1, то найдется такая матрица Е, что X будет кратным собственным значением
матрицы А + Е и
IMIIl ^/1—s(X)2
Этот результат доказан в Wilkinson (1972).
Пример 7.2.4. Если
О О
О о о о
то Х(Л+Е) % {1.0001, 4.0582, 3.9427}, а 5(1)^0.79x10°, 5(4) % 0.16 х 10"3 и 5(4.001)« % 0.16 х 10" 3. Заметим, что ||Е||2Л(Х) является хорошей оценкой возмущения, которому подверглось каждое из собственных значений.
Чувствительность кратных собственных значений
Если X-кратное собственное значение, то вопрос о чувствительности этого собственного значения более сложен. Например, если
то Х(Л + eF) = {1 ± >/8 а}. Заметим, что если а / 0, то собственные значения матрицы А + &F не дифференцируемы в нуле; скорость их изменения в окрестности точки 8 = 0 бесконечна. Вообще говоря, если X-дефектное собственное значение матрицы А, то возмущения порядка О (е) матрицы А могут привести к возмущениям порядка O(81zp) в X, если X соответствует жорданову блоку порядка р. Более подробно это обсуждается в Wilkinson (АЕР), с. 77.
Чувствительность собственного вектора
Сейчас мы посмотрим, как малые изменения матрицы влияют на ее инвариантные подпространства. Рассмотрим сначала случай собственных векторов. Предположим, что матрица АеСпхп имеет попарно различные собственные значения Х19 /.. ,Х„ и матрица FeCnxn удовлетворяет условию ||Г||2 = 1. Из соображений непрерывности следует, что для всех 8 в некоторой окрестности точки 8 = 0 имеем:
(Л + £Г)хДе) = ХДе)хДе), 11^(8)112 = 1,
Ук (8)" (А + 8Г) = Хк^ук^н, II^GOIh = 1, к = 1 .п,
где каждая из функций Хк(8), хк(г) и ^(е) дифференцируема. Если мы продифференцируем первое уравнение по 8 и положим 8 = 0, то получим следующее равенство:
Л хк (0) + F хк = Хк (0) хк + Хкхк (0),
где Хк = Хк(0) и хк = хк(0). Так как собственные векторы матрицы А образуют базис, мы можем записать
Л(0)= £ QiXi
и, следовательно,
£ а,(Х; - XJxf + F хк = XJO)^.
i — 1i^k
Для того чтобы получить выражения для аь заметим, что ^(О)"хк = у"хк = 0 при всех i / к и, следовательно,
У? F хка =— I ф к.
(Xk-Xi)yiHxi
Поэтому ряд Тейлора для xfc(e) имеет следующий вид:
" y”Fxk
^(е) = -^ + L й^ х н х^ + °(е )'
1=ДК-^У1Х1■
/V к
Таким образом, чувствительность собственного вектора хк зависит от чувствительности собственного значения Хк и отделенности Хк от остальных собственных значений.
То, что отделенность собственных значений влияет на чувствительность собственного вектора, не должно вызывать удивления. Действительно, если Х-не дефектное кратное собственное значение, то существует бесконечное число возможных базисов в соответствующем ему инвариантном подпространстве. Предыдущий анализ просто показал, что эта неопределенность начинает чувствоваться, когда собственные значения сливаются. Другими словами, собственные векторы, соответствующие близким собственным значениям являются «шаткими».
Пример 7.2.5. Если
_Г i.oio.ooi"
” L 0.000.99 J ’
то собственное значение X = 0.99 имеет обусловленность 1/5(0.99) % 1.118 и собственный вектор х = (0.4472, — 0.8944). С другой стороны, собственное значение X = 1.00 «близкой» матрицы
Г 1.0010.01 "
+ = L 0.001.00 .
имеет собственный вектор х = (0.7071, — 7.071)т.
Чувствительность инвариантного подпространства
Набор чувствительных собственных векторов может составить нечувствительное инвариантное подпространство при условии, что соответствующий кластер собственных значений изолирован. Для определенности предположим, что
QHAQ =1112(7.2.2)
L0 T22J n-p
P n-p
-разложение Шура матрицы А с матрицей
Q = [Qi Q2L(7.2.3)
Р п-р
Из нашего анализа чувствительности собственного вектора ясно, что чувствительность инвариантного подпространства range (QJ зависит от расстояния между Х(ТИ) и Х(Т22). Правильной мерой этого расстояния, оказывается, является наименьшее сингулярное число линейного преобразования X Тхх X — ХТ22. (Напомним, что это преобразование фигурирует в лемме 7.1.5.) Более точно: если мы определим отделенность матриц Тхх и Т22 как
то получим следующий общий результат.
Теорема 7.2.4. Предположим, что имеют место равенства (7.2.2) и (7.2.3) и что для любой матрицы ЕеСпхп мы разбиваем матрицу QHEQ на блоки следующим образом
QHEQ =QHEQ =Е.ЕЕ.ЕРп-рРп-р
QHEQ =
QHEQ =
Е.
Е
Е.
Е
Р
п-р
Р
п-р
п — р
Если 6 = sep(T11,T22)-||E11||2-||E22||2>0 и
\\Е21\Щ\Т12\\2^\\Е2^^
то существует матрица РеС^п р^хр, такая, что
1И12^2||Е21||2/б,
а столбцы матрицы У = (Qx A-Q2P) (I А-РнР) 1,2 образуют ортонормированный базис в некотором инвариантном подпространстве матрицы А + Е.
Доказательство. Смотри Stewart (19736) теорема 4.1.1. □
Так как Q^Q^ = У-V РнРУХ'2, то сингулярные значения матрицы Р являются тангенсами главных углов между range(QJ и range(QJ. (См. § 12.4.3.) Теорема 7.2.4 показывает, что эти тангенсы по существу ограничены величиной ||£||2/sep(T'11, Т22\ Таким образом, величину, обратную sep(T119 Т22), можно трактовать как число обусловленности, определяющее чувствительность range(QJ как инвариантного подпространства.
Пример 7.2.6. Пусть
3О3ОТ22Т22О -2003.01 .О -2003.01 .
3
О
3
О
Т22
Т22
О -20
03.01 .
О -20
03.01 .
А = Т =А = Т =ТххоТххоТх2
А = Т =
А = Т =
Тхх
о
Тхх
о
Т22_
Заметим, что AQX=QXTXX, где Qx = [ех, е2] eR4 х 2. Вычисления показывают, что sep(TH, Т22) % 0.0003. Если мы положим
и исследуем разложение Шура матрицы
А + Е =А + Е =Тхх-Е2хТхх-Е2хТХ2Т22_ТХ2Т22_
А + Е =
А + Е =
Тхх
-Е2х
Тхх
-Е2х
ТХ2
Т22_
ТХ2
Т22_
то обнаружим, что матрица Qx стала равна
-0.9999-0.0003
0.0003-0.9999
-0.0005-0.0026
0.00000.0003
Таким образом, имеем dist(Qp 20 « 0.0027 % 10 6/sep(Tn TT1Y
Задачи
Предположим, что QHAQ = diag(XJ + N- разложение Шура матрицы АеСпхп, и обозначим v^A) = ЦАНА — ААНЦР. Верхняя и нижняя границы
6|И£6|И£
6|И£
6|И£
были установлены Хенричи (Henrici (1962)) и Эберлейном (Eberlein (1965)) соответственно. Проверить эти результаты для случая п = 2.
Предположим, что матрица А е Сп х п имеет различные собственные значения и
X "1^X = diag(X1,...,X„).
Показать, что если столбцы матрицы X имеют единичную вторую норму, то
Пусть QHAQ = diag(Xf) + ЛГ - разложение Шура матрицы А и Х-1АХ = diag(XJ. Показать, что
х2(Х)х2(Х)1№1И1Г1№1И1Г
х2(Х)
х2(Х)
1№
1И1Г
1№
1И1Г
Смотри Loizou (1969).
Если X ~1 АХ = diag(Xf) и | Хх | ^ ... ^ | Х„ |, то
|XJ ^ х2(Х)а,.(Л).
Х2 (А )
Доказать этот результат для случая п = 2 (Ruhe (1975)).
7.2.5. Показать, что если А =7.2.5. Показать, что если А =, то $(я) = 8(b) = (1 + \с^а — Z>)|2), то $(я) = 8(b) = (1 + \с^а — Z>)|2)
7.2.5. Показать, что если А =
7.2.5. Показать, что если А =
, то $(я) = 8(b) = (1 + \с^а — Z>)|2)
, то $(я) = 8(b) = (1 + \с^а — Z>)|2)
Показать, что обусловленность собственного значения сохраняется при унитарном преобразовании подобия.
Замечания и литература к § 7.2
Многие результаты, представленные в этом разделе, можно найти в Wilkinson (АЕР), гл. 2, так же, как и в
Householder A. S. (1964). The Theory of Matrices in Numerical Analysis. Blaisdell, New York.
Bauer F. L, Fike С. T. (1960). ’’Norms and Exclusion Theorems”, Numer. Math. 2, 123-144.
Следующие статьи посвящены действию возмущений на собственные значения матрицы общего вида
Kahan W., Parlett В. N. and Jiang E. (1982). ’’Residual Bounds on Approximate Eigensystems of Nonnormal Matrices”, SIAM J, Numer. Anal. 19, 470-484.
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 Ill-Conditioned Eigenproblem”, Numer. Math. 15, 57-60.
Wilkinson J.H. (1972). ’’Note on Matrices with a Very Ill-Conditioned Eigenproblem”, Numer. Math. 19, 176-178.
Wilkinson J. H. (1984). ”On Neighboring Matrices with Quadratic Elementary Divisors”, Numer. Math. 44, 1-21.
Работа Уилкинсона о ближайших дефектных матрицах является типичным примером разрастающейся литературы, посвященной проблеме «близости» матриц. Смотри
Byers R. (1988). ”А Bisection Method for Measuring the Distance of a Stable Matrix to the Unstable Matrices”, SIAM J. Sci. and Stat. Comp. 9, 875-881.
DemmelJ. W. (1987). ”On the Distance to the Nearest Ill-Posed Problem”, Numer. Math. 51, 251-289.
DemmelJ. 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.
Higham 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. Cover (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.
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 этой работы содержит исчерпывающее рассмотрение конечномерного случая.
Степенные итерации
Пусть заданы матрица ЛеС"хп и унитарная матрица 1/оеС"х". Предположим, что ортогонализация Хаусхолдера (алгоритм 5.2.1) может быть распространена на комплексные матрицы (это возможно), и рассмотрим следующий итерационный процесс
т0 = и»ли0•
for к = 1,2,...
Тк _ [ = Uk Rk (QR-разложение)(7.3.1)
Tk = RkUk
end
Так как Тк = RkUk = U^(UkRk)Uk = UkTk_Y Uk, то по индукции
Тк = (Uo Ux... и^А фоих... UJ.(7.3.2)
Следовательно, каждая матрица Тк унитарно подобна матрице А. Не так заметно, но именно это центральная тема данного раздела, что матрицы Тк почти всегда сходятся к верхней треугольной форме. То есть (7.3.2) почти всегда «сходится» к разложению Шура матрицы А.
Процесс (7.3.1) называют QR-итерациями, и он составляет основу наиболее эффективного алгоритма вычисления разложения Шура. Для того чтобы обосновать этот метод и установить характер его сходимости, рассмотрим сначала два других итерационных процесса, представляющих самостоятельный интерес.
Степенной метод
Пусть матрица АеСпхп диагонализуема, Х-1ЛХ = diag(X1,...,Xn), где Х = = [%i,...,xj и |XJ > |Х2| ^ ... ^ |ХИ|. Для заданного вектора q^EC\ имеющего единичную 2-норму, степенной метод генерирует последовательность векторов #(к) следующим образом:
for к = 1,2,...
zW = Aq^
qw = zw/\\zw\\2(ТЗЗ)
Xw = ^нА^
end
Нет никакой другой причины нормализовать по второй норме, кроме той, что это придает большее единообразие всему обсуждаемому в данном разделе.
Рассмотрим свойства сходимости степенных итераций. Если
Ч№ = aixi + а2х2 + • ■ ■ + а„х„
и ах ф 0, то
/ п а- /ХЛк
4^ = ^ х1+ X М
\j=2ax\4/
Так как #(MGspan {Л \/(0)}, можно заключить, что
X. )X. )dist (span {^(fc)}, span^}) = О
X. )
X. )
| Хх - Х(М| = О| Хх - Х(М| = Ои, кроме того,
| Хх - Х(М| = О
| Хх - Х(М| = О
Если |XJ > |Х2| ^ ... ^|XJ,то говорят, что Хх является доминирующим собственным значением. Итак, степенной метод сходится, если Xt доминирует и если qw имеет компоненту в направлении, соответствующем доминирующему собственному вектору xv
Поведение степенного метода без этих предположений рассматривается в Wilkinson (АРЕ), с. 570, и Parlett, Poole (1973).
Пример 7.3.1. Если
-261
209
-49
A =
-530
422
-98
-800
631
-144
то к (Л) = {10, 4, 3}. Применяя (7.3.3) с q^ = (1, 0, 0)т, находим:
к
AW
1
2
3
4
5
6
7
8
9
10
994.4900
13.0606
10.7191
10.2073
10.0633
10.0198
10.0063
10.0020
10.0007
10.0002
На практике эффективность степенного метода зависит от отношения |X2|/|XJ, так как оно определяет скорость сходимости. Опасность, что qw не содержит х19 не повод для беспокойства, поскольку ошибки округления, появляющиеся при выполнении итераций, обычно приводят к тому, что последующие qw имеют компоненту в этом направлении. Более того, типичен случай, когда в приложениях, где требуется доминирующее собственное значение и собственный вектор, известно априорное приближение вектора xv Обычно, полагая qw равным этому приближению, уменьшают опасность малого av
Заметим, что для реализации степенного метода требуется только программа, способная вычислять матрично-векторное произведение вида Aq. Нет необходимости хранить матрицу А в массиве размера пхп. По этой причине степенной метод может представлять интерес, когда матрица Л -большая и разреженная и когда существует достаточный зазор между |XJ и |Х2|.
Оценки погрешности |X(k) — XJ можно получить, используя теорию возмущения, развитую в предыдущем параграфе. Определим вектор r^ = Aq^ — Xwqw и заметим, что (А + Ew)qw = Xwq<k\ где Ew = — rw [^W]H. Следовательно,
Xw-собственное значение А + Ew и
|Х(к)-Х||Х(к)-Х|H^lhs(Xi)H^lhs(Xi)llr^llz s(Xj 'llr^llz s(Xj '
|Х(к)-Х|
|Х(к)-Х|
H^lhs(Xi)
H^lhs(Xi)
llr^llz s(Xj '
llr^llz s(Xj '
Если мы используем степенной метод для получения правого и левого доминирующих собственных векторов, то можно получить оценку ^(XJ. В частности, если ww-вектор с единичной 2-нормой, направленный вдоль <AH)kwv°\ то мы можем использовать следующее приближенное равенство ^(XJ « | wWHqw\.
Ортогональные итерации
Прямое обобщение степенного метода может быть использовано для определения инвариантных подпространств большой размерности. Пусть р- выбранное некоторым образом целое число, удовлетворяющее неравенствам 1 р п. Для заданной и хи-матрицы Qo с ортонормированными столбцами метод ортогональных итераций генерирует последовательность матриц {Ск} ^Спхр следующим образом:
for к = 1,2,...
(7.3.4)(7.3.4)^к = ^Qk-i
(7.3.4)
(7.3.4)
Qk^k = Zk (QR-разложение) end
Заметим, что если р = 1, то (7.3.4)-просто степенной метод. Более того, последовательность {б^^-это в точности последовательность векторов, полученных степенными итерациями с начальным вектором qw = Q0^i-
Для анализа ортогональных итераций предположим, что
qhAQ = Т= diag(Xt.) + N, |XJ |Х21 ... > |XJ,(7.3.5)
есть разложение Шура матрицы Ле С”™. Предположим, что 1 р < п и разобьем матрицы Q, Т и N на блоки следующим образом:
е = [ба еР]>е = [ба еР]>ГцОГцОР п-рР п-рТ12712 -Т12712 -Р п— р’Р п— р’Р п-рР п-р
е = [ба еР]>
е = [ба еР]>
Гц
О
Гц
О
Р п-р
Р п-р
Т12
712 -
Т12
712 -
Р п— р’
Р п— р’
Р п-р
Р п-р
<13.6)<13.6)"NH N12l р_0^22-1 п—р
<13.6)
<13.6)
Р п-р
Если |Хр| > |Хр+11, то подпространство Dp(A) = range(Qa) называют доминирующим инвариантным подпространством. Это единое инвариантное подпространство, соответствующее собственным значениям X!,...,Хр. Следующая теорема показывает, что при разумных предположениях подпространства range (бк), генерируемые методом (7.3.4), сходятся к Dp<A) со скоростью, пропорциональной |Хр+1/Хр|к.
Теорема 7.3.1. Пусть разложение Шура матрицы АеСпхп задано в виде <13.5) и (J3.6) с п^2. Предположим, что |Хр|>|Хр+1| и что 0^0 удовлетворяет неравенству
(1 + 0)|Хр| > ||N||F.
Если матрица QoeCuxp имеет орто гонор мированные столбцы и
d = dist(Dp(^H), range (Qo)) < 1,
то матрицы Qk, генерируемые методом фЗА\ удовлетворяют неравенству dist(Dp(^), range (QJ) <
<(1 +6)”"2/ цт12цг \ /|xp+1i + №/a + e)Y
"\ sep^TzJx IM-№/(1+0) ) '
Доказательство. Доказательство длинное и представлено в конце раздела. □
Условие d < 1 в теореме 7.3.1 гарантирует, что начальная матрица Q содержит все собственные направления:
d< 1 <->Др(Лн )-*-n range (Qo) = {0}.
Теорема 7.3.1 в действительности говорит, что если это условие выполнено и если 6 выбрано достаточно большим, то
X k
dist(DpU), range (QJ) < с -^ ,
где константа с зависит от sep(T11, Т22) и отклонения от нормальности матрицы А. Очевидно, что сходимость может быть очень медленной, если зазор между |Хр| и l^p+il недостаточно широкий.
Пример 7.3.2. Если (7.3.4) применить к матрице А из примера 7.3.1 с Qo = [ер е^, то
к
dxst^Di^AYTan^Qk^
1
2 3
4 5
6 7
.0052 .0047 .0039 .0030 .0023 .0017 .0013
Погрешность стремится к нулю со скоростью (X3/X2)k = (3/4)к.
Можно ускорить сходимость ортогональных итераций, используя прием, описанный Стюартом [Stewart (1976)]. В ускоренной схеме приближенное собственное значение Xjk) удовлетворяет неравенству
IX^-XJ^IX^-XJ^i = 1 :р.i = 1 :р.
IX^-XJ^
IX^-XJ^
i = 1 :р.
i = 1 :р.
(Без ускорения правая часть равна |Xf+1/XJk.) В алгоритме Стюарта время от времени вычисляется разложение Шура матриц QkAQk. Этот метод может быть очень полезным в тех ситуациях, когда матрица А большая и разреженная и требуются несколько ее старших собственных значений.
QR-итерации
Мы сейчас «выведем» QR-итерации (7.3.1) и исследуем их сходимость. Пусть р = п в (7.3.4) и собственные значения матрицы А удовлетворяют условию
|XJ > |Х2| > ... >|Х„|.
Разобьем на блоки матрицу Q из (7.3.5) и матрицу Qk из (7.3.4) следующим образом: e = ki,...^ni q^e^..,^].
Если
dist(Dt(Лн\ span{^^..,^0)}) < 1, i= Г.п,(7.3.7)
то из теоремы 7.3.1 следует, что
dist(span ^\... ^q^Y span {^i,...,^}) ^ 0
для z = 1: n. Это означает, что матрицы Тк, определяемые равенством
Tk = QkAQk,
сходятся к верхней треугольной форме. Следовательно, можно сказать, что метод ортогональных итераций вычисляет разложение Шура при условии, что начальное приближение Qo 6 С”хп полное в смысле (7.3.7).'
QR-итерации возникают естественно при размышлении о том, как получить матрицу Тк непосредственно из ее предшественника Tk_v С одной стороны, мы имеем из (7.3.4) и определения матрицы Tk_v что
Tk-x=Q"k-kAQk_X=Q"_X {AQk_x) = (Q»_tQJRk.
С другой стороны,
тк = QkAQk = (QkAQk _ J(Q”_ xQk) = Rk(Q«_ xQk).
Следовательно, матрицу Tk можно определить, вычисляя QR-разложение матрицы Тк _! и затем перемножая те же сомножители в обратном порядке. Это в точности то, что делается в (7.3.1).
Пример 7.3.3. Если итерационный процесс
for /< = 1, 2,...
А = QR А = RQ end
применить к матрице из примера 7.3.1, то строго нижние треугольные элементы будут уменьшаться следующим образом:
к
О(1“21|)
О(|аз1|)
О(|а32|)
1
ю-1
10-1
10“2
2
10~2
10~2
10-3
3
ю-2
10“3
10“3
4
10~3
10“3
10“3
5
10~3
10~4
ю-3
6
ю-4
10-5
10~3
7
10“4
10-5
10~3
8
10~5
10“в
10~4
9
ю-5
10-7
10~4
10
Ю-6
10~8
Ю”4
Заметим, что одна QR-итерация требует О(п3) вычислений. Более того, так как сходимость только линейная (если она имеет место), то понятно, что этот метод является недоступно дорогим способом вычисления разложения Шура. К счастью, как мы покажем в § 7.4 и § 7.5, эти практические трудности можно обойти.
LR-итерации
В заключение сделаем несколько замечаний о степенных итерациях, которые основаны на LU-разложении, а не на QR-разложении. Пусть матрица СоеСпхр имеет ранг р. В соответствии с (7.3.4) мы имеем следующий итерационный процесс:
for к = 1,2,...
^к = Q^k- 1
Zk = GkRk (LU-разложение)(7.3.8)
end
Предположим, что р = п и что мы определяем матрицы Тк равенством
Tk = G^AGk.(7.3.9)
Можно показать, что если Lo = Go, то эти матрицы Тк могут быть получены следующим образом:
т — дт
for к = 1,2,...
Tk_1=LkRk (LU-разложение)(7.3.10)
Тк = Rk^k
end
Итерационные процессы (7.3.8) и (7.3.10) называют ступенчатыми и LR-итерациями соответственно. Для успешного применения обоих методов необходим выбор ведущего элемента. Смотри [Wilkinson, АЕР], с. 602.
Приложение
Для того чтобы установить теорему 7.3.1, нам потребуется следующая лемма, которая оценивает норму степеней матрицы и обратных им матриц.
Лемма 7.3.2. Пусть QHAQ = Т = D + N-разложение Шура матрицы АеСпхп, где D-диагональная, a N -строго верхняя треугольная матрицы. Пусть к и ц означают максимальное и минимальное по абсолютной величине собственные числа матрицы А. Если 0^0, то для всех к ^ 0 имеем
Мкп2^(1 W1 IM +Мкп2^(1 W1 IM +WV1 +е/WV1 +е/(7.3.11)(7.3.11)
Мкп2^(1 W1 IM +
Мкп2^(1 W1 IM +
WV
1 +е/
WV
1 +е/
(7.3.11)
(7.3.11)
Если матрица А невырожденная и число 0^0 удовлетворяет неравенству (1 + 0)|ц| > ||A||F, то для всех к ^ 0 мы также имеем
(7.3.12)(7.3.12)IM"kH2^(i + еу
(7.3.12)
(7.3.12)
Доказательство. Для 0 > 0 определим диагональную матрицу А следующим равенством
А = diag(l,(l +0), (1 + 0)2,...,(1 + 0)"-1)
и заметим, что к2(^ = (1 + О)"-1. Так как матрица N-строго верхняя треугольная, то несложно проверить, что || А А А" ||F ^ ||A||F/(1 + 0). Следовательно,
IMk||2 = \\Тк\\2 = || А"1 (П + ^N^-^^\\2
/НАН V
k2(A)(||D||2 + l|AAA-1||2)k (1 + 0Г1 IX| +
\1 + и/ •
С другой стороны, если матрица А невырожденная и (1 + 0)|ц| > ||N||F, то ||AZ>~ 12VA~11|2 < 1 и, используя лемму 2.3.3, мы получим
1М-*||2 = ПТ-Ч = НА-Ча + AD-^A-1)-1^-1]^^ <
1 -IIAD-^A’^h/
<(1 +9)"-1<(1 +9)"-1'1 у
<(1 +9)"-1
<(1 +9)"-1
|ц|-ЛЖ/(1 + е)/ ' °
Доказательство теоремы 7.3.1. Легко показать по индукции, что AkQ0 = Qk(Rk...RJ. Подставляя (7.3.5) и (7.3.6) в это уравнение, получаем
Т*Т*" ^о"Lw0J" ^о"Lw0J" К"-Wk_" К"-Wk_(Rk..Ri)(Rk..Ri)
Т*
Т*
" ^о"Lw0J
" ^о"Lw0J
" К"
-Wk_
" К"
-Wk_
(Rk..Ri)
(Rk..Ri)
существует матрицасуществует матрицагде Vk = Q“Qk и Wk = QHQk. Из леммы 7.1.4 известно, что X еСрх^п-р\ такая, что
существует матрица
существует матрица
"ти о "-О т22_"ти о "-О т22_•1„ X учти т221 Г/, X
"ти о "
-О т22_
"ти о "
-О т22_
-О 1п-р--0Т12_ _0 1п_р
Более того, так как sep(Tu,T22) является наименьшим сингулярным значением линейного преобразования ф(Х) = Т^Х — ХТ22, то из уравнения ф(Х)= —Т12 непосредственно следует, что
1№<1№<ЦТ12||рsep(Tn, Т22)ЦТ12||рsep(Tn, Т22)(7.3.13)(7.3.13)
1№<
1№<
ЦТ12||р
sep(Tn, Т22)
ЦТ12||р
sep(Tn, Т22)
(7.3.13)
(7.3.13)
Поэтому
ТЧ о 1Ги0-х% .0 tUl WoТЧ о 1Ги0-х% .0 tUl Wovk- xwk- Wk _vk- xwk- Wk _(Rk...Rk).(Rk...Rk).
ТЧ о 1Ги0-х% .0 tUl Wo
ТЧ о 1Ги0-х% .0 tUl Wo
vk- xwk
- Wk _
vk- xwk
- Wk _
(Rk...Rk).
(Rk...Rk).
Если предположить, что матрица Vo — XW0 невырожденная, то это уравнение можно решить относительно Wk:
Wk = Tk22 W0(V0 - хиу1 Т^ЧК - xwk).
Беря это выражение по норме и учитывая, что
dist(Dp(^b range(QJ) = ||2«ej|2 = ||^||2, получимр
dist(Dp(^), rangeCQ^^IIT^II^I^o-X^^II^ITr^(7.3.14)
Для того чтобы обосновать это неравенство, мы должны показать, что матрица Ко — XW0 невырожденная.
Из уравнения AHQ = QTH следует, что
A*4Qa - QpXH) = (Qa - Q»XH) Т», т. e. ортогональные столбцы матрицы
2 = №а-г^ХнН1 + ХХнУ'2
образуют базис в Dp(AH). Можно показать, что
Ио - XW0 = (/ + ХХ^'г ZHQ0
и, следовательно,
ap(V0 - XW0) > op(ZHQ0) =
= пр(И0 - XW^ > ap(ZHQ0) = 71 - ^ > 0.
Это показывает, что матрица Vo — XW0 действительно обратима и
IKKo-X^-Mlz^l/Vb7^-(7.3.15)
Наконец, используя лемму 7.3.2, можно показать, что
(
IINII V 1ХР+11 + 7"Л
и
(
ll^ll \к
1 + и/
Окончательный результат получаем, подставляя эти неравенства вместе с (7.3.13) и (7.3.15) в (7.3.14). □
Задачи
(а) Показать, что если матрица X е Сп х п невырожденная, то 11А | |х = 11 Х~1 А X1|2 есть матричная норма, обладающая свойством ||ЯВ||Х ^ ||Л Hxll^llx- (6) Пусть АеСпхп и р = max | Х; |. Показать, что для любого е > 0 существует невырожденная матрица X е Сп х ”, такая, что 11Я | |х = 11 Х~1 АХ 1|2 ^ р + е. Доказать, что существует константа М, такая, что 11 Л* 112 ^ Л/(р 4- е)* для любого неотрицательного целого. (Подсказка: положить X = Qdiag(l, а, .... ап-х\ где QHAQ = D + N-разложение Шура матрицы А.)
Проверить, что (7.3.10) вычисляет матрицы 7^, определяемые равенством (7.3.9).
Предположим, что матрица А е С” х п невырожденная, а матрица Qo е С” х р имеет ортонормированные столбцы. Следующий итерационный процесс называют обратными ортогональными итерациями
for к = 1, 2,...
Решить AZk = Qk-i относительно ZkeCnxp .
Zk = Qk Rk (QR-разложение) end
Объяснить, почему этот процесс может обычно быть использован для вычисления р минимальных по абсолютной величине собственных значений матрицы А. Заметим, что для выполнения этих итераций необходимо, чтобы была возможность решать системы линейных уравнений с матрицей А. Когда р = 1, этот метод называют методом обратных (степенных) итераций.
Замечания и литература к § 7.3
Подробное практическое обсуждение степенного метода дано в Wilkinson (АЕР), гл. 10. Рассмотрены методы ускорения базового итерационного процесса, вычисление недоминирующих собственных значений, работа с комплексно сопряженными парами собственных значений. Связь между различными степенными итерациями обсуждается в
Parlett В. 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.
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). ”А 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. J. 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) являются основными методами вычисления нескольких собственных значений произвольной разреженной матрицы.
Хессенбергова форма и вещественная форма Шура
В этом и следующем разделах мы покажем, как сделать QR-итерации (7.3.1) быстрым и эффективным методом вычисления разложения Шура. Поскольку большинство проблем собственных значений и собственных подпространств вещественные, мы остановимся на развитии вещественного аналога (7.3.1), который запишем следующим образом:
H0=UT0AU0
for к = 1,2,...
Нк_х = UkRk (QR-разложение)(7.4.1)
Нк = RkUk
end
Здесь AeRnxn, каждая матрица UkeRnxn-ортогональная и каждая матрица RkeRnxn-верхняя треугольная. Трудность, связанная с этими вещественными итерациями, состоит в том, что матрицы Нк могут никогда не сойтись к строго «открывающей собственные значения» треугольной форме в случае, если матрица А имеет комплексные собственные значения. По этой причине мы должны оставить бесплодные надежды и быть довольны вычислением альтернативного разложения, известного как вещественное разложение Шура. Заметим, что в численной линейной алгебре обычно, не нарушая общности, фокусируют внимание на вещественных матричных задачах, поскольку большинство вещественных алгоритмов имеют очевидные комплексные аналоги. QR-итерации не являются исключением.
Для того чтобы эффективно вычислять вещественное разложение Шура, мы должны тщательно выбрать начальное ортогональное преобразование подобия Uo в (7.4.1). В частности, если мы выберем U0 так, что матрица Но будет верхней хессенберговой, то количество работы на итерации уменьшится с О (л3) до 0(п2\ Начальное преобразование к хессенберговой форме (170-вычисление) само по себе является очень важным алгоритмом и может быть реализовано последовательностью матричных операций Хаусхолдера.
Вещественное разложение Шура
Вещественное разложение Шура представляет собой блочную верхнюю триан- гуляризацию с диагональными блоками размера 1x1 и 2x2.
Теорема 7.4.1 (Вещественное разложение Шура). Если матрица AGRnxn, то существует ортогональная матрица QGRnxn, такая, что
^11 .• •^1тег^б =0^22;•• R2mо0... Rmm_^11 .• •^1тег^б =0^22;•• R2mо0... Rmm_(7.4.2)(7.4.2)
^11 .
• •^1т
ег^б =
0
^22;
•• R2m
о
0.
.. Rmm_
^11 .
• •^1т
ег^б =
0
^22;
•• R2m
о
0.
.. Rmm_
(7.4.2)
(7.4.2)
где каждый блок Ки-либо 1 х 1-матрица, либо 2 х 2-матрица, имеющая комплексно сопряженные собственные значения.
Доказательство. Комплексные собственные значения матрицы А должны входить в Х(Л) комплексно сопряженными парами, так как характеристический многочлен det(z/ — А) имеет вещественные коэффициенты. Пусть /с-число комплексно сопряженных пар в Х(А\ Докажем теорему индукцией по к.
Заметим прежде всего, что лемма 7.1.2 и теорема 7.1.3 имеют очевидные вещественные аналоги. Следовательно, теорема верна, если к = 0. Предположим теперь, что к ^ 1. Если к = у 4- fp е к (А) и р / 0, то в R" существуют векторы у и z (z / 0), такие, что
А (у + iz) = (у + /р) О + izV
т.е.
A[yz] = [yz]A[yz] = [yz]у р- "Р Y- 'у р- "Р Y- '
A[yz] = [yz]
A[yz] = [yz]
у р
- "Р Y- '
у р
- "Р Y- '
Предположение, что р / 0, подразумевает, что у и z образуют двумерное вещественное инвариантное подпространство матрицы А. Из леммы 7.1.1 следует, что существует ортогональная матрица UeRnxn, такая, что
UTAU =UTAU =_о2_о2Т12" Тц - п - 2Т12" Тц - п - 22л-2’2л-2’
UTAU =
UTAU =
_о
2
_о
2
Т12" Тц - п - 2
Т12" Тц - п - 2
2
л-2’
2
л-2’
где Х(ТИ) = {Х,^}. Согласно предположению индукции, существует ортогональная матрица О, такая, что матрица 0ТТ220 имеет требуемую структуру. Полагая Q = (Jdiag(/2, 0\ получаем искомое разложение. □
Теорема 7.4.1 показывает, что любая вещественная матрица ортогонально подобна некоторой верхней почти треугольной матрице. Понятно, что вещественные и мнимые части комплексных собственных значений могут быть легко получены из диагональных блоков размера 2x2.
Хессенбергов QR-шаг
Вернемся к быстрому вычислению одного QR-шага в (7.4.1). В этом отношении самый страшный недостаток (7.4.1) состоит в том, что каждый шаг требует полного QR-разложения, стоящего О (л3) флопов. К счастью, количество работы на одной итерации может быть уменьшено на порядок, если разумно выбрать ортогональную матрицу Uo. В частности, если матрица U%AU0 — Но = (Av)-верхняя хессенбергова (Ау = 0, i>j + 1), то для вычисления каждой матрицы Нк требуется только О (л2) флопов. Для того чтобы это увидеть, рассмотрим процесс вычисления матриц Н = QR и H+=RQ, когда Я-верхняя хессенбергова. Используя процедуры вращения givens, row. rot и col. rot, которые мы описали в §5.1.8, мы можем триангуляризовать Н последовательностью л — 1 вращений Гивенса. В частности, мы можем найти вращения Gv...,Gn_t с Gt = G(i, i 4- 1,0), такие, что матрица G^- х... GXН = R будет верхняя треугольная:
X X X X ‘
X X X X 0 х х х О 0 х х
Gy
"XXXX"
0ххх
0ххх
_00хх_
Ga
"XXXX "
0ххх
00хх
_00хх
' X
X
X
X
G3
0
X
X
X
0
0
X
X
0
0
0
X
Смотри алгоритм 5.2.3.
Вычисление матрицы RGn_1...G1 будет столь же простым, если использовать столбцовую процедуду вращения col. rot:
' XXXX "
0ххх
00хх
О00х
G3^
" XXXX "
0ххх
00хх
00хх
Ga^
"XXXX "
0ххх
0ххх
_00хх
Gy
XXXX
XXXX
0ххх
00хх
В целом получаем
Алгоритм 7.4.1. Если Н-пхп верхняя хессенбергова матрица, то этот алгоритм записывает в Н матрицу Я+ = RQ, где Н = QR-QR-разложение матрицы Н. Кроме того, Q = Gb...,Gn_b произведение вращений Гивенса, где ^-вращение в плоскостях к и к 4- 1.
for к = 1: п — 1
{Сгенерировать Gk и применить его: Н = G(k,k 4- 1,6к)тЯ.}
Vc(k)s(kH = givens (Я (/с,/с), Н (к 4- 1, к))
Н(к;кА- 1,к:п) = row. rot (Я (^:/с 4- 1,к:п), с(к), s(k)) end for к = п — 1: — 1:1
{Обновить: Н = HG (к, к 4- 1,0к).}
Я(1 ;к 4- 1, к: к 4- 1) = со1го!(Я(1 ;к 4- 1, к: к 4- 1), с(к), s(k)) end
Учитывая, что Gk = G(k,k 4- 1,0к), легко проверить, что матрица Q = ^-i... Gi- верхняя хессенбергова. Поэтому матрица RQ = Я+-также верхняя хессенбергова. Этот алгоритм требует примерно би1 флопов, и, следовательно, он на порядок более быстрый, чем QR-шаг для полной матрицы.
Пример 7.4.1. Если алгоритм 7.4.1 применить к матрице
Н =Н =312
Н =
Н =
423’
00.011
то
0.6 -0.8 00.8 0.600010.6 -0.8 00.8 0.60001100 0.9996 0 0.0249100 0.9996 0 0.02490-0.02490.99960-0.02490.9996
0.6 -0.8 0
0.8 0.60
001
0.6 -0.8 0
0.8 0.60
001
10
0 0.9996 0 0.0249
10
0 0.9996 0 0.0249
0
-0.0249
0.9996
0
-0.0249
0.9996
и
4.7600 -2.54425.4653
0.32000.1856 -2.1796
0.00000.02631.0540
Разложение Хессенберга
Нам осталось показать, как может быть вычислено разложение Хессенберга
U^AU0 = H UlU0 = LU^AU0 = H UlU0 = L(7.43)(7.43)
U^AU0 = H UlU0 = L
U^AU0 = H UlU0 = L
(7.43)
(7.43)
Это вычисление не сложное . Преобразование U 0 является произведением матриц Хаусхолдера Рх,..., Рп_2- Роль матрицы Рк заключается в обнулении к -го столбца ниже поддиагонали. В случае п = 6 мы имеем
XXXX
XXXX
Оххх
ООхх
ООхх
О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 О х О О О О О ОXXXX
х х
X X О х О О О О О О
х х
X X О х О О О О О О
XXXX
XXXX
XXXX
Оххх
ООхх
В общем случае, после к — 1 шагов мы вычислим к — 1 матриц Хаусхолдера PY РкХ, таких, что матрица
(Л...Л-1)Г^(Л .Л-1) =(Л...Л-1)Г^(Л .Л-1) =^11^12^13
(Л...Л-1)Г^(Л .Л-1) =
(Л...Л-1)Г^(Л .Л-1) =
^21^22^23 ^к
О ^к^ЗЗ ^к^ЗЗ^к
- верхняя хессенбергова в первых к столбцах. Используя процедуры Хаусхолдера house, row. house и col. house из § 5.1.8, получаем
Алгоритм 7.4.2 (Преобразование Хаусхолдера к хессенберговой форме). Для заданной матрицы A eR"x", следующий алгоритм записывает в А матрицу Н = UqAU0, где //-верхняя хессенбергова матрица и Uo = (/\ ... Р„_2)-произведение матриц Хаусхолдера. Значимая часть к-го вектора Хаусхолдера хранится в А (к + 2;п, к\
for к = 1: п — 2
и (к + 1: п) = house (А (к + 1: п, к))
{^ = Рк АРк, где Рк = diag(4,PJ.}
А (к + 1: п, к: п) = row. house (А (к + 1: п, к: п), v (к + 1: п))
А (1: п, к + 1: п) = col. house (А (1: п, к + 1: п\ v (к + 1: п))
А (к + 2: п, к) = v (к + 2: п) end
Этот алгоритм требует 10 п3 /3 флопов. Если матрица Uo формируется явно, то дополнительно требуется 4 п3[3 флопов. Подробное описание см. в Martin, Wilkinson (1968 d).
Свойства погрешности округления описанного метода приведения матрицы А к хессенберговой форме весьма привлекательны. Уилкинсон [Wilkinson (АЕР), с. 35 Ц установил, что вычисленная хессенбергова матрица Н удовлетворяет равенству Н = QT( А + E)Q, где Q Т Q = I и
с малой константой с.
1.00
8.60
-0.020
5.00
4.96
-0.072
0.00
2.28
-3.96
U^AU0 = H =
Пример 7.4.2. ЕслиПример 7.4.2. Если1 5 73 0 64 3 11 5 73 0 64 3 11 00И и0 =0 0.6 0.80 0.8 -0.61 00И и0 =0 0.6 0.80 0.8 -0.6тото
Пример 7.4.2. Если
Пример 7.4.2. Если
1 5 7
3 0 6
4 3 1
1 5 7
3 0 6
4 3 1
1 00
И и0 =
0 0.6 0.8
0 0.8 -0.6
1 00
И и0 =
0 0.6 0.8
0 0.8 -0.6
то
то
Трехуровневые варианты
Преобразование Хессенберга (алгоритм 7.4.2) богато двухуровневыми операциями: половина - gaxpy и половина - внешние произведения. Мы кратко обсудим два способа введения в этот процесс трехуровневых вычислений.
Первый подход состоит в блочном преобразовании к блочно-хессенберговой форме и прямо приводит к цели. Предположим (для простоты), что п = rN и запишем
Пусть мы вычислили QR-разложение матрицы Л21 = Qv Ry и матрица QY представлена в РУУ-форме. То есть мы имеем матрицы W1Y1eR^n-r)\ такие, что QY = I — ^Yi. (Подробнее см. в § 5.2.2.) Если = diag(/2, 2J, то
ег^21 =ег^21 =^12 21QIa22qy_^12 21QIa22qy_
ег^21 =
ег^21 =
^12 21
QIa22qy_
^12 21
QIa22qy_
Заметим, что перевычисления блоков (1,2) и (2,2) богаты трехуровневыми операциями благодаря тому, что матрица Qv представлена в РУУ-форме. Это полностью поясняет весь процесс, поскольку матрица Q f Л Q - блочная верхняя хессенбергова в первом блочном столбце. Мы далее повторяем те же вычисления для первых г столбцов матрицы 2 Г^22 21- После N-2 таких шагов получаем матрицу
Иц HY2 HYN
H=UqAU0 =
И21^22 H2N
0:
00... HN N_Y HNN_
где каждый блок Н^-матрица размера г х г и Uo = Qv... QN_2 с матрицами Q, в РУУ-форме. Весь алгоритм имеет трехуровневую часть вида 1 — О (1 / N).
Заметим, что поддиагональные блоки матрицы Н являются верхними треугольными и, следовательно, эта матрица имеет нижнюю ширину ленты р. Можно преобразовать Н к настоящей хессенберговой форме, используя вращения Гивенса, для того чтобы обнулить все поддиагонали, кроме первой. Остается открытым вопрос-насколько эта «подчистка» ухудшит трехуровневое представление.
Донгарра, Хаммерлинг и Соренсон [Dongarra, Hammarling, Sorenson (1987)] показали, как переходить непосредственно к хессенберговой форме, используя смесь операций gaxpy и трехуровневых замещений. Их идея требует минимальных
замещений после генерации каждого преобразования Хаусхолдера. Предположим, например, что первая матрица Хаусхолдера Рх вычислена. Чтобы сгенерировать матрицу Р2> нам нужен только второй столбец матрицы PyAPy, а не результат полного внешнего произведения. Чтобы сгенерировать Р3, нам нужен только третий столбец матрицы Р2Р Г A PY Р2 и т. д. Таким образом, матрицы Хаусхолдера можно определить, используя только операции gaxpy. Не требуется вычисление внешних произведений. Когда нужное число матриц Хаусхолдера станет известно, их можно собрать вместе и применить в трехуровневом виде.
Важные свойства матрицы Хессенберга
Рассмотренное разложение Хессенберга не единственно. Если Z-любая ортогональная матрица размера и х и и мы применим алгоритм 7.4.2 к матрице Z Т A Z, то матрица Q т A Q = Н будет верхней хессенберговой, где Q = Z Uo. Однако равенство Qex = Z(Uoe1) = Zex наводит на мысль, что матрица Н может быть единственна, если фиксирован первый столбец матрицы Q. Именно эту ситуацию обеспечивает отсутствие у матрицы Н нулевых поддиагональных элементов. Хессенберговы матрицы, обладающие этим свойством, называют неприводимыми. Имеет место очень важная теорема, проясняющая однозначность разложения Хессенберга.
Теорема 7.4.2 (Теорема о неявном Q^). Пусть Q = Хук^-ЛгА и ^= Eui,• •-,^1- ортогональные матрицы, обладающие тем свойством, что обе матрицы QTAQ = H и VTAV= G, являются верхними хессенберговыми, где A a R"x". Пусть к означает наименьшее положительное целое, для которого hk^Yk = 0, в предположении, что к = п, если матрица Н- неприводимая. Если U Y = qv, то vt = ± q^ и \hLi_Y | = (g Li_ J для i = 2: к. Кроме того, если к < п, то дк+^к = 0.
Доказательство. Определим ортогональную матрицу W= [w Y,..., wn] равенством W = VT Q. Заметим, что G W = WH. Поэтому для i = 2: к имеем:
i- 1hLi-XWi =Hhj.i-XWj-
j=l
Так как wv = ev, это означает, что матрица [wp ...,и\] верхняя треугольная и, следовательно, ^ = ± ^ для i = 2: к. Поэтому из равенств wf = VT q, и h^_v = = w^Cw^ следует, что ^ = ± ^ и |^£.f_х| = l&j.J для i = 2: к. Если hk^Yk = 0, то, игнорируя знаки, имеем:
9k + i.k = el+1Gek = e[+1GWek = (e^i W)(He^ = e{+1 £ h^We^ £ А№^+1е,. = 0. □
1 = 11=1
Суть теоремы о неявном Q в том, что если каждая из матриц QТ A Q = Н и ZTAZ = G-неприводимая верхняя хессенбергова и матрицы Q и Z имеют один и тот же первый столбец, то матрицы G и Н «в основном равные» в том смысле, что G = D"YHD, где D = diag ( ± 1,...,± 1).
Наша следующая теорема показывает, что существует связь между QR-разложением матрицы Крылова K(A,QC, 1),и) и разложением Хессенберга QT A Q = Н. Теорема 7.4.3. Пусть QgR"x" - ортогональная матрица и AeRnxn. Тогда QTAQ =Н есть неприводимая верхняя хессенбергова матрица тогда и только тогда, когда матрица QT К (А, Q(:, 1),и) = R- невырожденная и верхняя треугольная.
° Название этой теоремы (Implicit Q Theorem) подчеркивает сходство с теоремой о неявной функции (Implicit Function Theorem).-Прим, персе.
Доказательство. Предположим, что матрица 2еКлхл-ортогональная и положим Н = Q Т A Q. Рассмотрим следующее тождество
QTKlA^.AV) = levHev....^ = R.
Если Я-неприводимая верхняя хессенбергова матрица, то ясно, что матрица R-верхняя треугольная с элементами ги = кцНм^-Ьм-! Для i = 2;n. Это означает, что матрица R невырожденная, так как ги = 1.
Для доказательства обратного утверждения предположим, что матрица R- верхняя треугольная и невырожденная. Следовательно, Я(:, /c)espan{ei, ek+iV так как R(:, /с 4- 1) = ЯЯ(:, к). Это означает, что матрица Я-верхняя хессенбергова. Поскольку rnn = h21h32,... ,hn.n-i ^ 0, матрица Я является также неприводимой. □
Таким образом, существует более или менее явное соответствие между невырожденными матрицами Крылова К (А, х, п — 1) и ортогональными преобразованиями подобия, приводящими к неприводимой хессенберговой форме.
Наш последний результат касается собственных значений неприводимой верхней хессенберговой матрицы.
Теорема 7.4.4. Если X-собственное значение неприводимой верхней хессенберговой матрицы Не^пхп, то его геометрическая кратность равна единице.
Доказательство. Для любого Хе С имеем: rank (А — XI) ^ п — 1, так как первые и — 1 столбцов матрицы Я — XI линейно независимы. □
Сопровождающая матрица
Точно так же, как разложение Шура имеет неунитарный аналог - разложение Жордана, разложение Хессенберга имеет неунитарный аналог-сопровождающее разложение. Пусть ЬеВп, и пусть матрица Крылова К(А,х,п — 1) невырожденная. Если С = С$\п — 1)-решение линейной системы К(А,х,п — 1)С = — Апх, то
АК\А,х,п — 1) = К(А,х,п — 1)С, где матрица С имеет
следующий вид:
0 0 ••• 0 — с0
1 0 ••• 0 -сх
с =
0 1 ••• 0 -с2
.(7.4.4)
.0 0 •••1-с„_! _
Матрицу С называют сопровождающей матрицей1). Так как
det(z/ — С) = с0 4- cYz + ,...., 4- cn_Y^"Y-V zn,
то, если матрица Y= К(Х,х,п — 1) невырожденная, разложение У-1 A Y= С выявляет характеристический многочлен матрицы А. Это вместе с разреженностью С привело в различных прикладных областях к «методам сопровождающей матрицы». Эти методы обычно включают:
Вычисление Хессенбергова разложения UqAUq = H.
Надежду на неприводимость матрицы Я и вычисление матрицы У=[е1,Яе1,...,Ял’1е1].
Решение системы YC = HY относительно С.
° Сопровождающую матрицу иногда называют матрицей Фробениуса. Наряду с (7.4.4) используют также определения сопровождающей матрицы.- Прим, перев.
К несчастью, эти вычисления могут быть очень неустойчивыми. Матрица А подобна неприводимой хессенберговой только тогда, когда каждое собственное значение имеет единичную геометрическую кратность. Матрицы, обладающие этим свойством, называют простыми. Следовательно, матрица У может быть очень плохо обусловлена, если матрица А близка к некоторой матрице, не являющейся простой.
Полное обсуждение опасностей, связанных с вычислением сопровождающей матрицы, можно найти в Wilkinson (АРЕ), с. 405.
Хессенбергово преобразование через преобразования Гаусса
Коль скоро мы заговорили о неортогональных преобразованиях к хессенберговой форме, мы должны упомянуть о том, что преобразования Гаусса можно использовать вместо преобразований Хаусхолдера в алгоритме 7.4.2. Для определенности предположим, что перестановки Пх,... ,Пк_х и преобразования Гаусса MY,... ,М k_Y выбирались так, что
(Мк_1Щ_1...М1П1)Л(Мк_1Пк_1...М1П1Г1 = ^
где
^п^12^1зк—1
^21^22^231
0В32 В33_ п — к
к — 11п —к
-верхняя хессенбергова матрица в первых к — 1 столбцах. Перестановку Пк порядка п — к выбирают затем так, чтобы первый элемент столбца Пк^32 был максимальным по абсолютной величине. Это дает возможность найти устойчивое преобразование Гаусса Мк = I — zke^ того же порядка п — к, такое, что все компоненты столбца Мк(ПкВ32\ кроме первой,-нули. Полагая Щ = diag(7k. Щ) и Мк = diag (1к, Мк\ мы видим, что матрица
(МкПк,...,М1П1)Л(МкЩ,...,М1П1)'1 =(МкПк,...,М1П1)Л(МкЩ,...,М1П1)'1 =В Xi Вц оВ Xi Вц о^12513_^22В23ПкМ kYмкпкв32 мкпкв33Щмк 1К К DZк к ЭЭ * к —^12513_^22В23ПкМ kYмкпкв32 мкпкв33Щмк 1К К DZк к ЭЭ * к —
(МкПк,...,М1П1)Л(МкЩ,...,М1П1)'1 =
(МкПк,...,М1П1)Л(МкЩ,...,М1П1)'1 =
В Xi Вц о
В Xi Вц о
^12513_
^22В23ПкМ kY
мкпкв32 мкпкв33Щмк 1
К К DZк к ЭЭ * к —
^12513_
^22В23ПкМ kY
мкпкв32 мкпкв33Щмк 1
К К DZк к ЭЭ * к —
является верхней хессенберговой в первых к столбцах. Заметим, что М kY = I + zke^ и, следовательно, это преобразование состоит из некоторых очень простых одноранговых замещений.
Тщательный подсчет количества операций показывает, что преобразование Гаусса к хессенберговой форме требует только половины числа флопов метода Хаусхолдера. Однако, как и в случае исключения Гаусса с частичным выбором ведущего элемента, есть вероятность (весьма незначительная) роста ведущего элемента со скоростью 2”. Смотри Businger (1969). Другая проблема, связанная с гауссовским подходом, состоит в том, что числа обусловленности собственных значений - s (X)'1 - не сохраняются при неортогональных преобразованиях подобия. Это несколько усложняет схему оценки погрешности, приведенную в § 7.6.
Задачи
Пусть AeRnxn и zeR”. Предложить подробный алгоритм вычисления ортогональной матрицы Q, такой, что матрица QTAQ- верхняя хессенбергова, а вектор QTz коллинеарен ev. (Подсказка: сначала преобразовать z, а затем применить алгоритм 7.4.2.)
Описать полное преобразование Гаусса к хессенберговой форме при помощи процедур gauss и gauss, арр и проверить, что оно требует только 5и3/3 флопов.
В некоторых ситуациях, необходимо решать линейную систему (А 4- zl) х = b для различных значений zeR и ЬеКп. Показать, как эта задача может быть эффективно и устойчиво решена при помощи разложения Хессенберга.
Предложить подробный алгоритм явного вычисления матрицы Uo в алгоритме 7.4.2. Сконструировать алгоритм так, чтобы матрица Н замещалась матрицей Uo.
Пусть НеНп х п-неприводимая верхняя хессенбергова матрица. Показать, что существует диагональная матрица D, такая, что каждый поддиагональный элемент матрицы D~x HD равен единице. Чему равно к2ф^
Пусть W, YeR” хп и
W — Y
С = W + iY, В =
Показать, что если Хе X(Q-вещественно, то ХеХ(В). Найти соответствующие собственные
w-Уw-Увекторы.
w
-У
w
-У
7.4.7. Пусть А =7.4.7. Пусть А =- вещественная матрица, имеющая собственные значения X ± /ц, где
7.4.7. Пусть А =
7.4.7. Пусть А =
ц не равно нулю. Предложить алгоритм устойчивого определения с = cos (0) и 5 = sin (0), таких,
что
где оф = -ц2.
Пусть известна собственная пара (X, х) верхней хессенберговой матрицы НеКпхп. Предложить алгоритм вычисления ортогональной матрицы Р, такой, что
РТ HP —РТ HP —X wT_0 ^ J ’X wT_0 ^ J ’
РТ HP —
РТ HP —
X wT
_0 ^ J ’
X wT
_0 ^ J ’
где HvER^n ^х ^ ^-верхняя хессенбергова матрица. Вычислить Р как произведение вращений Гивенса.
Замечания и литература к § 7.4
Вещественное разложение Шура впервые опубликовано в
Murnaghan F. D. and Wintner А. (1931). ”А Canonical Form for Real Matrices Under Orthogonal Transformations”, Proc. Nat. Acad. Sci. 17, 417-20.
Полное описание преобразования к хессенберговой форме дано в Wilkinson (АЕР), гл. 6, а остальные процедуры для методов Хаусхолдера приведены в
Martin R. S. and Wilkinson J. Н. (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.
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.
Варианты хессенбергова разложения для разреженных матриц обсуждаются в
Duff I. S. 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 = C ”, 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. (1982). ”An Algorithm for Pole Assignment of Time Invariant Linear Systems”, International J. of Control 35, 341-354.
Paige С. 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.
Практический QR-алгоритм
Вернемся к хессенберговым QR-итерациям, которые мы запишем следующим образом:
Н = UoAUo (Преобразование Хессенберга)
for к = 1, 2,...(7.5.1)
H=UR (QR-разложение)
Н= RU end
Цель этого раздела-описать сходимость матрицы Н к верхней квазитреугольной форме и показать, как скорость сходимости можно увеличить, вводя сдвиги.
ISA* Исчерпывание
Не нарушая общности, мы можем предположить, что каждая хессенбергова матрица Н в (7.5.1) является неприводимой. Если это не так, то на некотором этапе мы имеем
я Гяп Я121 р
LO H21J п —р’
Р п—р
где 1 ^ р < п, и исходная задача расщепляется на две задачи меньшего размера с матрицами HYY и Нц. Термин исчерпывание также используют в этом контексте, обычно когда р = п — 1 и п — 2.
На практике расщепление осуществляют всякий раз, когда поддиагональный элемент матрицы Н достаточно мал. Например, в Eispack, если
|Ap+Lp| ^ си(|Лрр| 4- |Лр+1,р+1|)(7.5.2)
при малой константе с, то hp+YiP «объявляют» равным нулю. Это оправдано, так как погрешность округления порядка и||Я|| уже присутствует во всех элементах матрицы.
QR-итерации со сдвигами
Пусть peR. Рассмотрим итерации:
Н = UqAUq (Преобразование Хессенберга)
for k = 1, 2,...
Определить скаляр р(7.5.3)
Н — \xl = UR (QR-разложение)
Н = RU 4- р/
end
Скаляр р называют сдвигом. Каждая матрица Н, порождаемая (7.5.3), подобна матрице А, так как RU 4- pl = UT(UR 4- pl) U = UT HU. Если мы упорядочили собственные значения X, матрицы А так, что
'|Х1-ц|^...^|Х„-ц|
и величина р не меняется от итерации к итерации, то, согласно теории § 7.3, р-й поддиагональный элемент матрицы Н сходится к нулю со скоростью
Хр+1 - ц k
Конечно, если Хр = Хр+1, то сходимости нет совсем. Но если, например, р более близко к Хл, чем к остальным собственным значениям, то обнуление элемента (п, п — 1) ускорится. В экстремальном случае имеем:
Теорема 7.5.1. Пусть ^^собственное значение неприводимой хессенберговой матрицы размера п к п. Если Н = RU 4- pl, где Н — pl = UR - QR-разложение матрицы Н -vil, то hn<n_Y=^ и hnn = р.
Доказательство. Так как //-неприводимая хессенбергова матрица, первые п — 1 столбцов матрицы Н — ц/ линейно независимы при любом ц. Следовательно, если UR = (H — ц/) - QR-разложение, то ги ^ 0 для i = V.n — 1. Но если матрица Н — ц/ вырожденная, то Гц ...гпп = 0. Поэтому гпп = 0 и Я (и) = [0,..., 0, ц]. □
Теорема говорит, что если мы сдвигаем на точное собственное значение, то в точной арифметике исчерпывание происходит на первом шаге.
Пример 7.5.1. Если
9 -1 -2
Н =Н =26-2>
Н =
Н =
015
то Ge\(H). Если UR = Н — 61 есть QR-разложение, то равенство Н = RU + 6/ обеспечивает матрица
8.5384
-3.7313
-1.0090
н =
0.6343
5.4615
1.3867
0.0000
0.0000
6.0000
Стратегия одинарного сдвига
Рассмотрим варьирование ц от итерации к итерации, учитывающее новую информацию о Х(Л) по мере того как поддиагональные элементы сходятся к нулю. Хороший эвристический подход состоит в том, чтобы считать элемент hnn наилучшим приближением к собственному значению среди всех диагональных элементов. Если мы на каждой итерации осуществляем сдвиг на эту величину, то получаем QR-итерации с одинарным сдвигом:
for k = 1, 2,...
ц = Я (и, п)
Я — ц/ = UR (QR-разложение)(7.5.4)
Я = RU 4- ц/
end
Если элемент (п, п — 1) стремится к нулю, то это вероятнее всего будет происходить с квадратичной скоростью. Для того чтобы увидеть это, мы воспользуемся примером из Stewart (IMC), с. 366. Пусть Я-неприводимая верхняя хессенбергова матрица вида
х х х х х х
„X X X X X X
н —
0XXXXX
00хххх
_ 00008hnn_
и мы выполнили один шаг QR алгоритма с одинарным сдвигом: UR = Н — hnnI, Н = RU + hnnI. После п — 2 шагов приведения матрицы Н — hnnI к верхнему треугольному виду мы получим матрицу следующей структуры:
XXXXXXXXXОаbО8ОXXXXXXXXXОаbО8ОX X
XXX
XXX
XXX
Оаb
О8О
XXX
XXX
XXX
Оаb
О8О
О х
О О
О О
О О
Нетрудно показать, что элемент (п, п — 1) матрицы Н = RU + hnnI равен — г2ЬЦг2 4- а2\ Если предположить, что 8 « а, то ясно, что новый элемент (и, п — 1) имеет порядок 82, точно того же мы ждем от алгоритма, сходящегося квадратично.
Пример 7.5.2. Если
123
Н =Н =456
Н =
Н =
О0.0017
и UR = Н — 7/-QR-paзлoжeниe, то равенство Н = RU + 7/ обеспечивает
-0.5384 1.69080.8351
0.3076 6.5264 -6.6555
0.0000 2.10-57.0119
Близкие к оптимальным сдвиги, такие, как рассмотренный выше, почти всегда гарантируют малое hn,n-v Однако это лишь эвристика. Есть примеры, в которых Ап,!-относительно большой элемент матрицы, несмотря на то что omin (Я — ц/) % и.
Стратегия двойного сдвига
К несчастью, при использовании (7.5.4) можно ожидать трудности, если на некотором этапе собственные значения aY и а2 матрицы
^ИЛ -^ИЛ -т = п — 1т = п — 1(7.5.5)(7.5.5)
^ИЛ -
^ИЛ -
т = п — 1
т = п — 1
(7.5.5)
(7.5.5)
станут комплексными, вследствие чего hnn будет плохим приближением собственного значения.
Один из способов преодолеть это затруднение состоит в том, чтобы последовательно выполнять два QR-шага с одинарными сдвигами, используя в качестве сдвигов aY и а2.
Н — aYI = UyRv
HY = RYUY-V aYI,
HY—a2I = U2R2,(7.5.6)
H2 = R2U2-V a21.
Можно показать, что
(UyU2HR2Ry) = M,(7.5.7)
где M- матрица, определяемая равенством
М = (Я - aY I) (Н - а21).(7.5.8)
Заметим, что М - вещественная матрица, даже если собственные значения матрицы
G комплексные, так как
М = Н2 - sH + г/, где
5 = aY + а2 = hmm + hnn = trace(G)eRZ = #i а2 = hmmhnn hmnhnm = det(G')ER.
Поэтому (7.5.7)-QR-разложение вещественной матрицы и мы можем выбрать. UY и U 2 так, что Z = UYU2 будет вещественной ортогональной матрицей. Следовательно, матрица
Н2 = U? HY U2 = U^UiHUJ U2 = (UY U2)H(UY U ^ = ZT HZ
- вещественная.
К сожалению, погрешности округления почти всегда мешают точному возвращению в поле вещественных чисел. Вещественность матрицы Н2 можно гарантировать, если мы
явно формируем вещественную матрицу М = Н2 — sH + tl,
вычисляем вещественное QR-разложение М = ZR, и
полагаем Н2 = ZT HZ.
Но поскольку первый из этих шагов требует О (и3) флопов, это непрактичный образ действия.
Стратегия неявного двойного сдвига
К счастью, оказывается, что мы можем выполнить шаг двойного сдвига за О (и2) флопов, обратившись к теореме о неявном Q. В частности, мы можем осуществить переход от Н к Н2 за О (и2) флопов, если
Вычислим MeY-первый столбец матрицы М.
Найдем матрицу Хаусхолдера Ро, такую, что вектор P0(MeY) коллинеарен eY.
Вычислим матрицы Хаусхолдера Pv..., Рп-2, такие, что если ZY - произведение ZY = P0PY... Рп-^ то Z[HZY-верхняя хессенбергова матрица и первые столбцы матриц Z и ZY одинаковые.
При данных обстоятельствах теорема о неявном Q позволяет нам заключить, что если матрицы ZT HZ и ZYHZY являются неприводимыми верхними хессенберго- выми, то они в основном равны1). Заметим, что если эти хессенберговы матрицы не являются неприводимыми, то мы можем выполнить расщепление и перейти к неприводимым подзадачам меньшего размера.
Давайте отработаем детали. Заметим прежде всего, что матрицу Ро можно определить за 0(1) флопов, так как MeY = (х, у, z, О,..., 0)г, где
х = h\Y + hY2h2Y — shYY + Z, У = /hi (Ли + h22 - 51), h = h2Y h32 .
Поскольку преобразование подобия с матрицей Ро меняет только строки и столбцы
П^В основном равные (essentially equal) здесь и в дальнейшем означает, что столбцы матриц, имеющие одинаковые номера, равны с точностью до знака. Смотри теорему 7.4.2.- Прим, перев.
1, 2 и 3, понятно, что
XXР0НР0 =Р0НР0 =X X XО ОX X XО ОXXXXXXXXXXXXXXXXXXXXО0хххОО0ххXXXXXXXXXXXXXXXXXXXXО0хххОО0хх
X
X
Р0НР0 =
Р0НР0 =
X X X
О О
X X X
О О
XXXXX
XXXXX
XXXXX
XXXXX
О0ххх
ОО0хх
XXXXX
XXXXX
XXXXX
XXXXX
О0ххх
ОО0хх
Теперь роль матриц Хаусхолдера Pv..., Рп-2 заключается в том, чтобы вернуть
этой матрице верхний хессенбергов вид
XXXXXXXXXXXXXXXXXXXXО00ххО000хXXXXXXXXXXXXXXXXXXXXО00ххО000хX XX XXXXXXXXXXXX XО хО хО хО ОX XО хО хО хО ОXXXXXXXXXXXXXXXXXXXXО0ххXXXXXXXXXXXXXXXXXXXXО0хх
XXXXX
XXXXX
XXXXX
XXXXX
О00хх
О000х
XXXXX
XXXXX
XXXXX
XXXXX
О00хх
О000х
X X
X X
X
X
X
X
X
X
X
X
X
X
X X
О х
О х
О х
О О
X X
О х
О х
О х
О О
XXXX
XXXX
XXXX
XXXX
XXXX
О0хх
XXXX
XXXX
XXXX
XXXX
XXXX
О0хх
X X "
X X
X X
X X
X X
X X
Рзг
" XXXXXX”
XXXXXX
0XXXXX
00хххх
000ххх
000ххх_
XXXX
XXXX
Оххх
О0хх
О0хх
О0хх
X X X X X X X X X X X X О X X X X X О 0 х х х х О О О х х х О О О 0 х х
Ясно, что матрица Рк имеет, вообще говоря, вид Рк = diag(lk, Рк, 1п_к_3\ где Рк-матрица Хаусхолдера размера 3x3. Например,
1 0 0 0 0 0 0 1 0 0 0 0 О 0 х х х О О 0 х х х О О 0 х х х О 0 0 0 0 0 1
Заметим, что матрица Рп_2 является исключением, так как Рп-2 = diag(l„_2, Рп-гУ
Применимость теоремы 7.4.2 (теоремы о неявном Q) следует из того, что Ркех = е\ ПРИ к = 1 :п — 2 и матрицы Ро и Z имеют один и тот же первый столбец. Следовательно, ZYeY = Zex, и мы можем утверждать, что Zx в основном равна Z при условии, что верхние хессенберговы матрицы ZT HZ и Z\ HZX неприводимые.
Неявное определение Н2 по Н, рассмотренное выше в общих чертах, было впервые описано Фрэнсисом [Francis (1961)], и мы будем называть его QR-шагом Фрэнсиса. Полный шаг Фрэнсиса подытоживает следующий
Алгоритм 7.5.1 (QR-шаг Фрэнсиса). Для заданной неприводимой хессенберговой матрицы НеИп х \ чья нижняя главная подматрица размера 2x2 имеет собственные числа av и а2, этот алгоритм записывает в Н матрицу ZT HZ, где Z = PY... Рп_ 2-произведение матриц Хаусхолдера, а матрица ZT^H — avI)x х (Н — а21) - верхняя треугольная.
т = п — 1
{Вычислить первый столбец матрицы кН — ах 1)(Н — а2 7).}
5 = Н^п, т) 4- Н(п, п)
t = Н(т, т)Н(п, п) — Н(т, п)Н(п, т)
х = Я(1, 1)Я(1, 1) + Я(1, 2)Я(2, 1) - sH(\, 1) + t
у = Н(2, 1)(Я(1, 1) + Я(2, 2)-5)‘
z = Я (2, 1)Я(3, 2)
for к = 0: п — 3
{Записать в Н матрицу РкНРк, где Рк = diag(/fc, Рк, 1п_к_3^
v = house ([^>z]r)
Н (к 4- 1: к 4- 3, к 4- 1: л) = row. house (Я (к 4- 1: к 4- 3, к 4- 1: и), г)
г = min ^к 4- 4, и}
Я(1 :г, к + 1 ;к + 3) = со1.Ьои$е(Я(1 :г, к .4- 1 :к + 3), г)
х = Н(к + 2, к + 1)
у = Н(к + 3, к +1)
if к < п — 3
z = Н(к + 4, к + 1)
end
end
{Я= Рп-2НРп-2, где Рп_2 = diag(/„_2, Д-2)}
г = house ([х у] г)
Я (и — 1 ;п, п — 2: и) = row.house(Я(л — 1: п, п — 2: п), г)
Я(1 :п, п — 1, п) = col. house(Я(1 :п, п — 1, п\ г)
Этот алгоритм требует Юл2 флопов. Если матрицу Z накапливают в заданной ортогональной матрице, то необходимо дополнительно Юл2 флопов.
Полный процесс
Приведение матрицы А к хессенбергову виду, используя алгоритм 7.4.1 и последующее итерирование по алгоритму 7.5.1, для того чтобы получить вещественную форму Шура - стандартный способ решения плотной несимметричной проблемы собственных значений. В процессе итераций необходимо контролировать поддиагональные элементы матрицы Я для того, чтобы обнаружить любую возможность расщепления. Как это делают, поясняется в следующем алгоритме.
Алгоритм 7.5.2 (QR-алгоритм). Для заданной матрицы А е Rw х п и заданной погрешности tol, большей чем машинная точность, этот алгоритм вычисляет вещественную каноническую форму Шура QT AQ = Т. Записывает в матрицу А разложение Хессенберга. Если необходимы матрицы Q и Т, то Т хранят в Н. Если необходимы только собственные значения, то блоки матрицы Т хранят в соответствующих позициях матрицы Н.
Использовать алгоритм 7.4.2 для вычисления хессенбергова разложения
H=U£AU0, где U0 = P0...Pn_2.
Если необходима матрица Q, то сформировать Q = Ро... Рп-2. Смотри § 5.1.6. until q = п
Положить равными нулю все поддиагональные элементы, удовлетворяющие неравенству:
|A,-.,-il
^ toK\hu\
+ \hi-i,i
-11).
Найти
наибольшее неотрицательное q и наименьшее неотрицательное р.
такие,
что
"Яи
н12
Hi3
р
Н= 0
н22
н23
n-p-q ’
0
0
q
Р
n-p-q
q
где //33-верхняя квазитреугольная матрица, а матрица Н22-неприводимая. (Замечание: и р, и q может быть нулем1}.)
if q < п
Выполнить QR-шаг Фрэнсиса для матрицы Н22*.Н22 = ZT H22Z
if требуется Q
Q = Qdiag(7p, Z, Iq)
HV2 = HX2Z
H23 = ZTH23
end
end end
Привести к верхнему треугольному виду все диагональные блоки размера 2x2- матрицы Н, имеющие вещественные собственные значения, и, если это необходимо, накопить эти преобразования.
Этот алгоритм требует 25 п3 флопов, если вычисляются матрицы Q и Т. Если требуются только собственные значения, то необходимо Юи3 флопов. Эти оценки числа флопов очень приблизительные и основаны на том эмпирическом наблюдении, что в среднем требуются только две итерации Фрэнсиса для отщепления нижнего блока размера 1 х 1 или 2x2. Более детальный анализ времени, необходимого для выполнения QR-алгоритма, приведен в Eispack, с. 119.
Пример 7.5.3. Если алгоритм 7.5.2 применить к матрице
23456
А = Н= 44567
03678
00289
000110
то поддиагональные элементы будут сходиться следующим образом:
п Если матрица Н неприводимая (это возможно при первом подходе), то р = q = 0.- Прим, перев.
Итерация
О(|*21|)
О(|*з2|)
О(|*4з|)
О(|*541)
1
10й
10°
10и
10°
2
10°
10°
10°
10°
3
10°
10°
ю-*
10°
4
10°
10°
10“3
10-3
5
10°
10°
10-8
10-$
6
10-1
10°
1О-13
Ю~13
7
КГ1
10°
10-28
10-13
8
10“4
10°
сошелся
сошелся
9
10-*
10°
10
10-8
10°
11
10-ie
10°
12
10"32
10°
13
сошелся
сошелся
Свойства погрешностей округления QR-алгоритма такие же, какие можно ожидать от любого метода ортогональных матриц. Вычисленная вещественная форма Шура Т ортогонально подобна матрице, близкой к матрице Л, т. е.
QTU + E)Q = t
гДе QTQ = I и ||£|Ь « u|| A ||2. Вычисленные матрицы Q-почти ортогональные, в том смысле, что QT Q = I + F, где 11F112 « и.
Расположение собственных значений в матрице Тдовольно произвольное. Но мы обсудим в §7.6, как можно получить любое расположение, используя простую процедуру, меняющую местами два соседних диагональных элемента.
Масштабирование
В заключение заметим, что если элементы матрицы А сильно отличаются по величине, то матрицу А нужно масштабировать, прежде чем применять QR-алгоритм. Это О(п2) алгоритм, в котором вычисляется диагональная матрица D, такая, что если
D"1AD = Lcv._cnl =
то IkilL to Iki IL Для /=1-^. Диагональную матрицу D ищут в виде D = diagCP11,..., Р*м), где Р~ основание используемой арифметики с плавающей запятой. Заметим, что матрица D^AD может быть вычислена без округления. Когда матрица А масштабированная, вычисленные собственные значения часто более точные. Смотри Parlett, Reinsch (1969).
Задачи
7.5.1. Показать, что если матрица Н = QTHQ получена при помощи одного QR-шага7.5.1. Показать, что если матрица Н = QTHQ получена при помощи одного QR-шагас одинарным сдвигом ис одинарным сдвигом иН =Н =ww, ТО 1^21 I < l/*l [(w — ^)2 +/]•, ТО 1^21 I < l/*l [(w — ^)2 +/]•
7.5.1. Показать, что если матрица Н = QTHQ получена при помощи одного QR-шага
7.5.1. Показать, что если матрица Н = QTHQ получена при помощи одного QR-шага
с одинарным сдвигом и
с одинарным сдвигом и
Н =
Н =
w
w
, ТО 1^21 I < l/*l [(w — ^)2 +/]•
, ТО 1^21 I < l/*l [(w — ^)2 +/]•
Вывести формулы для элементов диагональной матрицы D размера 2x2, мини
мизирующей 11D 1 AD | |F,мизирующей 11D 1 AD | |F,где А =где А =w х-У 2 _ ’w х-У 2 _ ’
мизирующей 11D 1 AD | |F,
мизирующей 11D 1 AD | |F,
где А =
где А =
w х
-У 2 _ ’
w х
-У 2 _ ’
Объяснить, как 2Л-шаг с одинарным сдвигом: Н — ц/ = UR, Я = RU 4- ц/ может быть выполнен неявно. То есть показать, как переход от Я к Я может быть выполнен без вычитания сдвига ц из диагональных элементов матрицы Н.
Предположим, что матрица Я верхняя хессенбергова и мы нашли разложение РН = LU, посредством гауссовского исключения с частичным выбором ведущего элемента. (См. алгоритм. 4.3.4.) Показать, что матрица Я= U (РТ L) - верхняя хессенбергова и подобна Н. (Это основа модифицированного LR-алгоритма?)
Показать, что если задана матрица Я=Я0 и мы генерируем матрицы Нк; Нк — \хк1 = = UkRks Нк + 1 = RkUk 4- цк1, то
RJ = (Н-цА...ЛН-^1\
Замечания и литература к § 7.5
Развитие практического QR-алгоритма началось с важной статьи
Rutishauser Н. (1958). ’’Solution of Eigenvalue Problems with the LR Transformation”, Nat. Bur. Stand. App. Math. Ser. 49, 47-81.
Алгоритм, описанный здесь, был затем «ортогонализован» в
Francis J. G. F. (1961). ’’The QR Transformation: A Unitary Analogue to the LR Transformation, Parts 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. Н. (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 Е. F. (1960). ”On Preconditioning of Matrices”, JACM 7, 338-345.
ParlettB.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.3, а также гл. 8 и 9.
Выделение собственных векторов при помощи обратных итераций
Пусть ^(0)еС"-заданный вектор, нормированный в 2-норме и пусть матрица А — ц7 е R” х ”-невырожденная. Следующий процесс называют обратными
итерациями:
for к = 1, 2,...
Решить систему (Л — pl)z(k) = q(k"^
= ZW/| | ZW 112(7б1)
Xw = q^HAqw
end
Обратные итерации-это степенной метод, примененный к матрице (А — ц/)-1.
Для того чтобы анализировать поведение процесса (7.6.1), предположим, что матрица А имеет базис из собственных векторов {х1?..., хп} и что Ах^ = Х^ для z = 1: п. Если
r=ElU,i= 1
то ^-нормированный вектор, сонаправленный с
i = 1 W
Ясно, что если ц более близко к собственному значению Хь чем к остальным собственным значениям, то в векторе qw преобладает компонента, соответствующая направлению xt при условии, что Р; / 0.
Простым правилом остановки итераций (7.6.1) может служить следующее правило: остановить итерации, если невязка
rw = (А — р/) q(k)
удовлетворяет неравенству
lkWIL < cull А И»,(7.6.2)
где с-некоторая константа порядка единицы. Так как (А + E^q'kl = р9(М,
где Ек = — r{k)q(k} Т, то неравенство (7.6.2) обязывает р и q(k) быть собственной парой близкой матрицы.
Обратные итерации можно использовать совместно с QR-алгоритмом следующим образом:
Найти хессенбергово разложение Uq AU0 = Н.
Применить к матрице Н итерации с двойным неявным сдвигом Фрэнсиса без накопления преобразований.
Для каждого вычисленного собственного значения X, соответствующий собственный вектор которого нужно найти, применить (7.6.1) с матрицей А = Н и ц = X, чтобы получить вектор z, такой, что Hz « pz.
Положить х = Uoz.
Обратные итерации с матрицей Н очень экономичны, так как 1) нам совсем не нужно накапливать преобразования в процессе двойных итераций Фрэнсиса; 2) мы можем факторизовывать^ матрицы вида Н — XI за О (и2) флопов, и 3) обычно только одна итерация требуется для получения достаточно точного собственного вектора.
Этот последний пункт является, возможно, наиболее интересным аспектом обратных итераций и требует некоторого обоснования, так как X может быть
и Имеются в виду QR- или ЬК-разложения.-П/шлг перев.
сравнительно неточным, если оно плохо обусловлено. Предположим для простоты, что X вещественно и пусть
H-XI = f о^рГ = <7£Гг
i= 1
- SVD матрицы Н — X/. Из того что мы говорили о свойствах ошибок округления QR-алгоритма в § 7.5.6, следует, что существует матрица EeRnxn, такая, что матрица Н + Е — X/- вырожденная и 11 Е\ |2 ^ и 11 Я| |2. Это означает, что оп « и nt И ||(Я-^)Г„|12 « иа^ т.е. гп-хорошее приближение собственного вектора. Ясно, что если начальный вектор ^(0) имеет разложение
?<о,=
i= 1
то в векторе
i=l ai
преобладает направление vn. Заметим, что если величина s (X) % | и J vn | мала, то в векторе z(1) скорее всего не хватает направления ип. Это объясняет (эмпирически), почему другой шаг обратных итераций, вероятно, не даст более хорошей аппроксимации собственного вектора, особенно если X плохо обусловлено. Более подробно смотри в Peters, Wilkinson (1979).
Пример 7.6.1. Матрица
Г11
А =
LIO"10 1J
имеет собственные значения Хг = 0.99999 и Х2 = 1.00001 и соответствующие собственные векторы %j=(l, — 10~5)г и х2 = (1, 10”5)г. Обусловленность обоих собственных векторов порядка 105. Приближенное собственное значение ц = 1 есть точное собственное значение матрицы А + Е, где
_R)0"
—L —io10 0.'
Следовательно, качество ц соответствует обычному качеству собственных значений, найденных с помощью QR-алгоритма, когда его реализуют в 10-разрядной арифметике с плавающей запятой.
Если применить (7.6.1) с начальным вектором ^(0) = (0, 1), то ^и = (1, 0) и ||Л^(1) — — Ц^(1) 11г = Ю'10- Однако следующий шаг даст qw = (0, 1), для которого 11 Aqw — \\хр^ 112 = 1. Этот пример обсуждается в Peters, Wilkinson (1979).
Упорядочение собственных значений в вещественной форме Шура
Напомним, что вещественное разложение Шура дает информацию об инвариантных подпространствах. Если
QTAQ = Т=QTAQ = Т=_0Р_0Р712 Р ^22- Q q
QTAQ = Т=
QTAQ = Т=
_0Р
_0Р
И Х(Тц) п Х(Т22) = 0, то первые р столбцов матрицы Q образуют единственное унитарное инвариантное подпространство, соответствующее Х(ТЫ) (см. § 7.2.5). К
сожалению, итерации Фрэнсиса дают вещественное разложение Шура QfAQf = TF, в котором собственные значения довольно случайно расположены вдоль главной диагонали матрицы TF. Это создает проблему, если нам нужен ортогональный базис для инвариантного подпространства, которому соответствуют собственные значения, не расположенные в верхней части диагонали матрицы TF. Ясно, что нам нужен метод вычисления ортогональной матрицы QD, такой, что матрица Qb TF QD-верхняя квазитреугольная с подходящим расположением собственных значений.
Пример 2x2 наводит на мысль, как это может быть выполнено. Предположим, что
qtAQf=Tf =qtAQf=Tf ='12Х2 _'12Х2 _Xt 7^ Х2,Xt 7^ Х2,
qtAQf=Tf =
qtAQf=Tf =
'12
Х2 _
'12
Х2 _
Xt 7^ Х2,
Xt 7^ Х2,
и мы хотим изменить порядок собственных значений. Заметим, что TF х = Х2 х, где
Пусть QD~вращение Гивенса, такое, что вторая компонента вектора QdX нулевая. Если 2 = QfQd> то
(QTAQ)eL = QpTF(QDe1) = X22d(Gd^i) = X2et
и, следовательно, матрица QT AQ должна иметь вид
QTAQ =QTAQ =±'12X. J±'12X. J
QTAQ =
QTAQ =
±'12
X. J
±'12
X. J
Систематически выполняя перестановки в соседних парах собственных значений, используя этот метод, мы можем передвинуть любое подмножество спектра Х(Л) в верхнюю часть диагональной матрицы, при условии что мы не столкнемся с выступами размера 2x2.
Алгоритм 7.6.1. Для заданных ортогональной матрицы QeRnxn, верхней треугольной матрицы Т= QTAQ и подмножества А = {Х1?..., Хр} спектра Х(Л) следующий алгоритм вычисляет ортогональную матрицу QD, такую, что матрица Qd TQd = S - верхняя треугольная и {sn,..., spp^ = А. Матрицы Q и Тзамещаются матрицами QQD и S соответственно.
while {'ц,..., tpp\ * Д
for к = 1: n — 1
if tkk фА и 'jt + l,Jt + l E A
{Найти Qd и обновить: T= QdTQd, Q = QQd\
[c, 5] = givens (T(k, к + 1), T^k + 1, к + 1) - Дк, k))
T(k:k + 1, k:n) = row.rot(T(k:к + 1, k:n\ c, 5)
T(l:k + 1, k:k + 1) = col.rot(T(l :k + 1, k:k + 1), c, 5)
Q(1 :n, к + 1) = col.rot(2(1 .n, k:k + 1), c,s) end
end end
Этот алгоритм требует к(12м) флопов, где /с-общее число требуемых перестановок. Число к никогда не превышает (п — р) р.
Перестановки становятся немного более сложными, когда матрица Т имеет на диагонали блоки размера 2x2. Детали см. в Ruhe (1970а) и Stewart (1976а).
Понятно, что эти методы перестановок могут быть использованы для того, чтобы упорядочить собственные значения, скажем, от максимального до минимального по модулю.
Вычисление инвариантных подпространств посредством преобразования вещественного разложения Шура чрезвычайно устойчиво. Если Q =4»] озна
чает вычисленную ортогональную матрицу Q, то 11 йТ 5 “ 11 k ^ u и существует матрица Е, удовлетворяющая неравенству ||£||2 « и] | А112, такая, что (Л + £)&6span {^,^„},i = 1 :р.
Блочная диагонализация
Пусть
т=
"Ти 0
т12
т22 .
Т1а"
T2q
^1 fl2
_0
0
.. Tqq_
(7.6.3)
«1
^2
-разбиение некоторой вещественной канонической формы Шура QT AQ = TeR" х п, такое, что попарные пересечения подмножеств Х(ТП),..., Х(Т^) пусты. Согласно теореме 7.1.6 существует матрица У, такая, что У1 ТУ= diag(Tii,..., Tqq\ Теперь мы опишем практическую процедуру определения У вместе с анализом чувствительности У как функции вышеуказанного разбиения.
Разобьем на блоки единичную матрицу In = \_EV..., ЕД сообразно разбиению матрицы Т и определим матрицу ^eR” х п следующим образом
Yij = InFEiZij£J) i<j, Z^eRW.
Другими словами, матрица ¥ц выглядит точно так же, как единичная матрица, за исключением того, что (/,у)-ю блочную позицию занимает матрица Zy. Следовательно, если У;}1 Т¥ц= Т=(Тц), то матрицы Ти Т одинаковые, за исключением блоков
Tij = Ти Zij — Zij Tjj + Tij,
Tik = Tik — Zij Tjk(^ = 7 + 1 • ^)?
Tkj = TkiZij + Tkj(k = 1: i — 1).
Следовательно, блок Ти можно обнулить, если есть алгоритм решения уравнения Сильвестра
FZ — ZG = С,(7.6.4)
где FeRp хр и GeRrx г-заданные верхние квазитреугольные матрицы и CeRp х г.
Бартелс и Стюарт [Bartels, Stewart, 1972] придумали метод, позволяющий это сделать. Пусть С = tcv — э сД и Z = [z1$..., zr] - столбцовые разбиения. Если 9k + i,k = 0, то, сравнивая столбцы в (7.6.4), мы находим, что
кFzk - £ gucZi = ск.1 = 1
Следовательно, если мы знаем zv...,zk-b то можем решить квазитреугольную
системусистему
систему
систему
к-1
(^ 9кк^^к ^к + ^ 9ikzi
i = 1
относительно zk. Если gk + i,k ^ О, то zk и zk + 1 можно найти одновременно, решая систему размера 2x2
9тк I ^кF — 9mml- -zm-9тк I ^кF — 9mml- -zm-9 ik Zi-9im Zi-9 ik Zi-9im Zi-(7.6.5)(7.6.5)F -дкк1
9тк I ^к
F — 9mml- -zm-
9тк I ^к
F — 9mml- -zm-
9 ik Zi
-9im Zi-
9 ik Zi
-9im Zi-
(7.6.5)
(7.6.5)
- 9кт
где m = к + 1. Переставляя уравнения в соответствии с перестановкой (1, р + 1, 2, р + 2,..., р, 2р\ получаем ленточную систему, которая может быть решена за О (р2) флопов. Детали можно найти в [Bartels, Stewart, 1972]. Мы подытожим весь процесс для простейшего случая, когда обе матрицы F и G - треугольные.
Алгоритм 7.6.2 (Алгоритм Бартелса-Стюарта). Для заданных матрицы CeRpxr и верхних треугольных матриц F eRp х ри GeRr х г, удовлетворяющих равенству X (F) n X (G) = 0, следующий алгоритм записывает в матрицу С решение уравнения FZ - ZG = С.
for к = 1: г
{Вычислить Ь = ск + X ?=1 9ikz^
С(1:р, к) = С(\:р, к) + С(Д:р, 1:к- l)G(l:k- 1, к)
Решить (F — gkkI)z = b относительно г.
С(1:р, к) = z end
Этот алгоритм требует prQ) + г) флопов.
Ясно, что, обнуляя наддиагональные блоки матрицы Т в соответствующем порядке, мы можем преобразовать эту матрицу к блочно-диагональной форме.
Алгоритм 7.6.3. Для заданных ортогональной матрицы QeRn хп, верхней квази- треугольной матрицы T=QTAQ и разбиения (7.6.3) следующий алгоритм записывает в матрицу Q матрицу QY, где Y-1 ТУ = diag(TM,..., Tqq).
for j = z\q
for i = 1: j — 1
Решить TUZ — ZTn = — Tij относительно Z, используя алгоритм 7.6.2.
for к = j + 1: q
Tk = Tik — ZTjk end for к = 1: q
Qkj = Qkj Z + Qkj end
end end
Число флопов, которое требует этот алгоритм, является сложной функцией от размеров блоков в (7.6.3).
Выбор вещественной формы Шура и ее разбиения в (7.6.3) определяет устойчивость уравнений Сильвестра, которые должны быть решены в алгоритме 7.6.3. Это в свою очередь влияет на обусловленность матрицы Y и эффективность блочной диагонализации. Причина этих зависимостей в том, что относительная ошибка
вычисленного решения Z уравнения
(7.6.6)(7.6.6)ТН2-2ТЯ = — Ти
(7.6.6)
(7.6.6)
удовлетворяет приближенному равенству
П2-2Ц,||71к
l|Z||F ~и8еР(т;., 7}/
Детали смотри в [Golub, Nash, Van Loan, 1979]. Поскольку
sep(7],-, 7},) =sep(7],-, 7},) =minx/ominx/oHTyr-jfTyirII^IIfHTyr-jfTyirII^IIf^ min | X — ц |, XeX(7],) peX(7},)^ min | X — ц |, XeX(7],) peX(7},)
sep(7],-, 7},) =
sep(7],-, 7},) =
minx/o
minx/o
HTyr-jfTyirII^IIf
HTyr-jfTyirII^IIf
^ min | X — ц |, XeX(7],) peX(7},)
^ min | X — ц |, XeX(7],) peX(7},)
точность может существенно уменьшиться, когда подмножества Х(7^) недостаточно отделены. Более того, если матрица Z удовлетворяет (7.6.6), то
11^11^ ^11^11^ ^II 7^1 Ifsep(7L, 7},)"II 7^1 Ifsep(7L, 7},)"
11^11^ ^
11^11^ ^
II 7^1 Ifsep(7L, 7},)"
II 7^1 Ifsep(7L, 7},)"
Следовательно, большое по норме решение можно ожидать, если величина sep(7L 7},) мала. Это делает матрицу У в алгоритме 7.6.3 плохо обусловленной, так как она является произведением матриц
I Z
О I.
Замечание: хг(У;Д = 2п + ||Z||i.
Учитывая эти трудности, Бэвели и Стюарт [Bavely, Stewart (1979)] разработали алгоритм блочной диагонализации, который динамически определяет расположение собственных значений и разбиение (7.6.3) так, что все Z матрицы в алгоритме 7.6.3 ограничены по норме некоторой величиной, задаваемой пользователем. Они обнаружили, что обусловленность У можно контролировать, контролируя обусловленность матриц У^.
Базис собственных векторов
Если блоки в разбиении (7.6.3)-все размера 1 х 1, то алгоритм 7.6.3 порождает базис собственных векторов. Как и в случае метода обратных итераций, вычисленные пары собственное значение - собственный вектор являются точными для некоторой близкой матрицы. Широко распространенное правило выбора подходящего метода определения собственных векторов следующее: использовать обратные итерации всякий раз, когда требуется найти меньше чем 25% собственных векторов.
Заметим, однако, что вещественную форму Шура можно использовать для определения отдельных собственных векторов. Пусть матрица
Ти
и
Т13
к- 1
Qtaq =
0
X
vT
1
0
0
п — 1
к - 1
1
п — к
-верхняя квазитреугольная и Х^Х(ТМ) и Х(Т33). Тогда, если мы решим линейные
x = Qx = Qсистемы (Ты — X7)w = -и и (Т33 — XlYz = — v, то векторы
x = Q
x = Q
и y = Q
будут для X правым и левым собственными векторами соответственно. Заметим, что обусловленность собственного значения X определяется величиной 1Д(Х) = = У(1 + wTw)(l + zT zY
Определение блочных жордановых структур
Предположим, что мы вычислили вещественное разложение А = Q7QT, определили кластеры «равных» собственных значений и выполнили соответствующую блочную диагонализацию Т= ydiag(Tlb..., Tq^Y"x. Как мы видели, это может быть трудной задачей. Однако перед нами встанут еще более значительные численные проблемы, если мы попытаемся установить блочную жорданову структуру каждой матрицы Тц. Краткое исследование этих трудностей выявит недостатки жорданова разложения.
Предположим для ясности, что спектр X (7^)-вещественный. Преобразование матрицы ТЙ к жордановой форме начинается замещением ее матрицей вида С = Х7 + N, где N- строго верхняя треугольная часть Тц и X, скажем, среднее арифметическое ее собственных значений.
Напомним, что порядок жорданова блока J (X) есть наименьшее неотрицательное целое к, для которого [J(X) — X7]k = 0. Следовательно, если pt = dim [null (N1)], для i = 0:n, то разность pt — pi-i равна числу блоков жордановой формы матрицы С, которые имеют порядок i или выше. Конкретный пример позволяет сделать это утверждение понятным и иллюстрирует роль SVD в вычислении жордановой формы.
Предположим, что С-матрица размера 7x7. Пусть мы вычислили SVD 1Д NVX = £л и «обнаружили», что матрица N имеет ранг 3. Если мы располагаем сингулярные числа в порядке возрастания, то это означает, что матрица Nx = ИТ NVX имеет вид
На этом этапе мы знаем, что геометрическая кратность X равна 4, т. е. жорданова форма матрицы С имеет 4 блока ^рх — pQ = 4 - 0 = 4).
Теперь предположим, что Ul LV2 = Z2-SVD матрицы L и мы нашли, что матрица L имеет единичный ранг. Если мы опять располагали сингулярные числа в порядке возрастания, то матрица L2 = V^ LV2, очевидно, имеет следующую структуру:
000000000000
0
0
0
0
0
0
0
0
0
0
0
0
Однако X(L2) — Х(7) = {0, 0, 0} и, следовательно, с = 0. Таким образом, если
V2 = diag(74, УД
то N2 = KJ Nt V2 имеет следующий вид
‘о 0
=0
0 0 0
000ххх
000ххх
000ххх
000ххх
00000а
00000b
000000
Помимо того что SVD матрицы L позволяет ввести больше нулей в верхний треугольник, оно позволяет сделать вывод о размерности ядра матрицы N 2. Так как
N? =N? =О.0О.0KLУ _KLУ _о.0о.0к~1 Го к lJ Lo l_к~1 Го к lJ Lo l_
N? =
N? =
О
.0
О
.0
KL
У _
KL
У _
о
.0
о
.0
к~1 Го к lJ Lo l_
к~1 Го к lJ Lo l_
и Ll_и Ll_имеет полный столбцовый ранг, то
и Ll_
и Ll_
р2 = dim (null (N 2)) = dim (null (N 2)) =4 4- dim (null (Z)) = pY 4- 2.
Поэтому мы можем заключить на этом этапе, что жорданова форма матрицы С имеет по меньшей мере два блока порядка 2 или выше.
Наконец, легко видеть, что N ? = 0, откуда мы делаем вывод, что существует р3 - р2 = 7 — 6 = 1 блока порядка 3 или выше. Если положить У= ^ V2, то разложение
VTCV =VTCV =X000ххх0X00ххх00X0ххх000Xххх0000Xха00000X 0000000 XX000ххх0X00ххх00X0ххх000Xххх0000Xха00000X 0000000 X4 блока порядка выше2 блока порядка выше} 1 блок порядка выше4 блока порядка выше2 блока порядка выше} 1 блок порядка выше1 или2 или3 или1 или2 или3 или
VTCV =
VTCV =
X000ххх
0X00ххх
00X0ххх
000Xххх
0000Xха
00000X 0
000000 X
X000ххх
0X00ххх
00X0ххх
000Xххх
0000Xха
00000X 0
000000 X
4 блока порядка выше
2 блока порядка выше
} 1 блок порядка выше
4 блока порядка выше
2 блока порядка выше
} 1 блок порядка выше
1 или
2 или
3 или
1 или
2 или
3 или
«выявит» жорданову блочную структуру матрицы С: 2 блока порядка 1, 1 блок порядка 2 и 1 блок порядка 3.
Для того чтобы найти жорданово разложение, необходимо прибегнуть к неортогональным преобразованиям. Мы рекомендуем читателю работы Golub, Wilkinson (1976) и Kagstrom, Ruhe (1980а, 1980b), в которых описано, как выполнить этот этап редукции.
Рассмотренные выше вычисления на основе SVD в достаточной мере иллюстрируют, что трудное решение о величине ранга приходится принимать на каждом этапе и что окончательное вычисление блочной структуры существенно зависит от этих решений. К счастью, в практических приложениях можно почти всегда использовать вместо жорданова разложения устойчивое разложение Шура.
Задачи
Предложить полный алгоритм решения вещественной, п к п, верхней квазитреугольной системы Тх = Ь.
Пусть U"1/lU = diag (a^-.^aj и И-179И = diag ф^..., 0И). Показать, что если ф(Х) = АХ + ХВ, то Х(ф) = {a, + Р,: z = 1 :т, j = 1: лг}. Какими будут соответствующие собственные векторы? Как использовать эти разложения для решения уравнения АХ + ВХ = С?
7.6.3. Показать, что если У =7.6.3. Показать, что если У =, то ж2 (У) = [2 + ст2 + ^4<зг + а4]/2, где ст = 11 Z| |2.
7.6.3. Показать, что если У =
7.6.3. Показать, что если У =
Получить систему (7.6.5).
Предположим, что Те R” х п- блочная верхняя треугольная матрица, и она разбита на блоки следующим образом:
Т=Т=TilТ12Т12
Т=
Т=
ОТ22Т23’
ООТ33
Предположим, что диагональный блок Т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. Н. (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. H. (1971). “The Calculation of Specified Eigenvectors by Inverse Iteration” in HACLA, 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.
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.
SymmH.J. and Wilkinson J. H. (1980). “Realistic Error Bounds for a Simple Eigenvalue and Its Associated Eigenvector”, Numcr. Math. 35, 113-126.
Как мы видели, функция sep (.,.) является очень важной для оценки вычисленного инвариантного подпространства. Вопросы, связанные с этой величиной, обсуждаются в
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.
Некоторые авторы рассматривали обобщенное уравнение Сильвестра, т. е. EF.AG, = С. В их числе
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^gp = 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
Пусть А и В -две матрицы размера и х и. Множество всех матриц вида А — ХВ : Хе С называют пучком. Собственные значения пучка - элементы множества к (А, В), определеяемого как
Х(А, В) = {zeC:det(A - zB) = 0}.
Если ХеХ(Л, В) и
Ах = ХВх, х^О,(7.7.1)
то вектор х называют собственным вектором пучка матриц А — ХВ.
В этом разделе мы даем краткий обзор математических свойств обобщенной проблемы (7.7.1) и представляем устойчивый алгоритм ее решения. Важный случай, когда матрицы А и В-симметричные и матрица В-положительно определенная, рассматривается в § 8.7.2.
Основы теории
Первое, что следует сказать об обобщенной проблеме собственных значений,- это то, что п собственных значений имеются тогда и только тогда, когда rank (В) = п. Если В- матрица неполного ранга, то множество Х^А, В) может быть конечным, пустым или бесконечным:
л =
' 1 2 " .° 3 .
В =
■ 1 0 "
-° 0.
А(Л,В) = {1),
А =
' 1 2 " ° 3
В =
■ 0 0 "
1 0
=> А(Л,В) = 0,
А =
1 2 .00
В =
1 0
-° 0.
=> А(Л,В) = С.
Заметим, что если 0/ХеХ(Л, В), то (1/Х)еХ(Д А). Кроме того, если матрица В невырожденная, то Х(А, В) = Х^В-1 А, I) = Х(В-1 А).
Это последнее наблюдение подсказывает один метод решения А — ХВ проблемы для случая, когда матрица В невырожденна:
Решить уравнение ВС = А относительно С, используя, скажем, исключение Гаусса с выбором ведущего элемента.
Используя QR-алгоритм, найти собственные значения матрицы С.
Заметим, что матрица С будет подвержена влиянию погрешностей округления порядка и 11А1|2 11 В~11|2. Если матрица В плохо обусловлена, то это может сделать невозможным точное вычисление любого обобщенного собственного значения, даже тех собственных значений, которые можно считать хорошо обусловленными.
Пример 7.7.1. Если
, Г 1.7460.9401Г0.7800.563‘
11.2461.898J10.9130.659J
то Х(Л, В) = {2, 1.07 х 106}. В арифметике с плавающей запятой с 7 значащими цифрами, мы найдем Хф^АВ”1)) = {1.562539, 1.01 х 106}. Плохое качество младшего собственного значения вызвано тем, что х2(В) % 2 х 106. С другой стороны, мы найдем, что
ХЦ, /ЦА*1 В)) » {2.000001, 1.06 х 106}.
Точность младшего собственного значения улучшилась потому, что х2 (Л) % 4.
Пример 7.7.1 наводит на мысль искать альтернативный подход к А — ХВ-проблеме. Одна из идей-найти хорошо обусловленные матрицы Q и Z, такие, что каждая из
матриц
AV=Q"VAZ, BY=QYBZ(7.7.2)
имеет канонический вид. Заметим, что Х^А, В) = Х(ЛР BY\ так как
Ах = ХВхо AYy = XBYy, х = Zy.
Мы будем говорить, что пучки матриц А — ХВ и AY — XBY-эквивалентные, если справедливы равенства (7.7.2) с невырожденными матрицами Q и Z.
Обобщенное разложение Шура
Как и в обычной проблеме собственных значений А — XI, в обобщенной проблеме есть возможность выбора канонической формы. Аналогом жордановой формы является разложение Кронекера, в котором обе матрицы А и В- блочнодиагональные. Эти блоки похожи на жордановы блоки. Кронекерова каноническая форма приводит к тем же вычислительным проблемам, что и жорданова форма. Однако это разложение позволяет понять математические свойства пучка матриц А — ХВ. Смотри Wilkinson (1978) и Demmel, Kagstrom (1987).
Более привлекательной формой с вычислительной точки зрения является следующее разложение, описанное Молером и Стюартом [Moler, Stewart (1973)].
Теорема 7.7.1 (Обобщенное разложение Шура). Если А и В принадлежит Сл х п, то существуют унитарные матрицы QuZ, такие, что матрицы QH AZ = TnQH BZ = S являются верхними треугольными. Если при некотором к элементы tkk и skk оба равны нулю, то X (А, В) = С. В противном случае
Х(А, В^ = Vulsu*.su ^ 0}.
Доказательство. Пусть {Вк} - последовательность невырожденных матриц, сходящаяся к матрице В. Для каждого к пусть Qk (A Bk^Qk = Вк есть разложение Шура матрицы ЛД-1. Пусть Zk-унитарная матрица, такая, что матрица Zk (Вк 1 Qk) = = S^1-верхняя треугольная. Тогда обе матрицы QkAZk = RkSk и QkBkZk = Sk будут также верхние треугольные.
Из теоремы Больцано-Вейерштрасса мы знаем, что ограниченная последовательность {(Qk, Zk)} имеет сходящуюся подпоследовательность lim(Qk,Zk) = (Q,Z). Легко показать, что матрицы Q и Z-унитарные, а матрицы QHAZ и QHBZ-верхние треугольные. Доказываемые утверждения следуют из тождества
det (Л - ХВ^ = det (QZH) £ (tu - Xsu\ □i=l
Если матрицы А и В-вещественны, то представляет интерес следующее разложение, которое соответствует вещественному разложению Шура (теорема 7.4.1).
Теорема 7.7.2 (Обобщенное вещественное разложение Шура). Если А и В принадлежат R”х п, то существуют ортогональные матрицы QuZ, такие, что матрица QT AZ-верхняя квазитреугольная, а матрица QT BZ-верхняя треугольная.
Доказательство. Смотри Stewart (1972). □
Оставшаяся часть данного раздела будет посвящена вычислению этого разложения и связанным с этим математическим вопросам.
ПЛЗ» Выводы о чувствительности
Обобщенное разложение Шура проливает свет на вопрос об устойчивости собственных значений А — ZB-проблемы. Ясно, что малые изменения в матрицах А и В могут вызвать большие изменения собственного значения Xz = tu/sa, если элемент su мал. Однако, как показал Стюарт [Stewart (1978)], было бы неправильно считать такое собственное значение «плохо обусловленным». Дело в том, что обратная величина pf = Su/tu может быть собственным значением пучка матриц цА — В, ведущим себя очень хорошо. В анализе Стюарта матрицы А и В считались симметричными и собственные значения рассматривались скорее как упорядоченные пары, чем как частные. С этой точки зрения более удобно измерять возмущения собственных значений в метрике chord (я, Ь\ определяемой как
chord (а,,—.
угг? УПЙР
Стюарт показал, что если X является отделенным собственным значением пучка матриц А — ХВ и Х£ - соответствующее собственное значение возмущенного пучка матриц А — ХВ с 11А — А 1|211В — В1|2 в, то
chord (X, Х£) ^ т-s--—ч—Гн п + °(8 X£ (ун Ах)2 + ку Вх)2
где х и у имеют единичную вторую норму и удовлетворяют равенствам Ах = ХВх и ун = Ху11 В. Заметим, что в знаменатель этой верхней оценки матрицы А и В входят симметрично. «В самом деле плохо обусловленные» собственные значения это те, для которых этот знаменатель мал.
Экстремальный случай tkk = skk = 0 при некотором к был рассмотрен Уилкинсоном [Wilkinson (1979)]. Он сделал интересное наблюдение, что когда это имеет место, остальные частные 1ц/8ц могут принимать произвольные значения.
Хессенбергово-треугольная форма
Первый шаг вычисления обобщенного разложения Шура пары (А, В) состоит в преобразовании матрицы А к верхнему хессенбергову виду и матрицы В к верхнему треугольному виду посредством ортогональных преобразований. Сначала мы найдем ортогональную матрицу 17, такую, что матрица 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
,s = итв =
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
Затем мы преобразуем А к верхнему хессенбергову виду, сохраняя верхний треугольный вид матрицы В. Сначала определим вращение Гивенса Q45, обнуляющее элемент а51:
" X
X
X
X
X "
" X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
А = Ql5A =
X
X
X
X
X
,b = q^5b =
0
0
X
X
X
X
X
X
X
X
0
0
0
X
X
_ 0
X
X
X
X
0
0
0
X
X
Ненулевой элемент, появившийся в позиции (5,4) матрицы В, может быть обнулен последующим умножением на подходящую матрицу вращения Гивенса Z45:
А = AZ^ =
" X X X X
_ 0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X "
X
X
X
X
, В = BZ45 =
" X 0 0 0 0
X
X
0 0 0
X X X
0 0
X
X
X
X
0
X
X
X
X
X
Точно так же вводятся нули в
позиции
(4,1) и (3,1) матрицы А:
" X
X
X
X
X "
X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
— 9з4^4 —
X
X
X
X
X
.b = q^4b =
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
А = AZ34 =
X
X
X
X
X
, В = BZ34 =
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
X X X X X
X X X X X
X X X X X
0 х х х х
Л — Q23A —
0 х х х х
, В = Q^B =
0 х х х х
0 х х х х
000 х х
0 х х х х
00 0 х х
" X
X
X
X
X "
" X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
А = AZ23 =
0
X
X
X
X
, В = BZ23 =
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. Как показано выше, требуется два
ортогональных преобразования для каждого обнуляемого элемента а^-одно для обнуления и другое для сохранения треугольности матрицы В. Можно использовать как вращения Гивенса, так и модифицированные преобразования Хаусхолдера размера* 2 х 2. В целом имеем
Алгоритм 7.7.1 (Хессенбергово-треугольное преобразование). Для заданных матриц А и В, принадлежащих R" х ", следующий алгоритм записывает в матрицу А верхнюю хессенбергову матрицу QT AZ и в матрицу В-верхнюю треугольную матрицу QT BZ, где обе матрицы Q и Z-ортогональные.
Используя алгоритм 5.2.1, записать в матрицу В матрицу QT В — R, где Q-ортогональная, a R верхняя треугольная матрицы.
A = QT А
for j = 1: п — 2
for i — n: — 1: j 4- 2 {Обнулить tiij.^ [c, 5] = givens (A (i - 1, j\ A (z, j)) A (i — 1: i, j:n) = row, rot (A (z — 1: i, j: n\ c, s) B{i — 1: z, i— 1:n) = row. rot(B(i — 1: z, z — 1: n\ c, s) [c, s] = givens (5 (z, i — 1), B^i, z)) B(1: i, i — 1: z) = col. rot(B(7: z, z — 1: z), c, 5) A (1: n, i — 1: z) = col. rot (A (1: n, i — 1: z), c, s)
end end
Этот алгоритм требует примерно 8 и3 флопов. Накопление матриц Q и Z потребует примерно 4 и3 и Зи3 флопов соответственно.
Преобразование пучка матриц А — ХВ к хессенбергово-треугольной форме служит предварительным преобразованием для обобщенных QR-итераций, известных как QZ-итерации, которые мы опишем ниже.
Пример 7.7.3. Если
А =
10 12
12-1
1 12
и В =
1 2 3
4 5 6
7 8 9
и ортогональные матрицы Q и Z выбраны следующим образом:
0.0000
■ 0.8944
0.4472
0.0000
- 0.4472
- 0.8944
е =
-0.1231
- 0.4924
-0.8616
-0.9917
0.0279
0.1257
0.0378
- 0.8699
0.4917
и Z =
1.0000
0.0000 -
0.0000
то матрицы >
li = QT AZ
и В. = QT
BZ имеют вид
- 2.5849
1.5413
2.4221
- 8.1240
3.6332
14.2024
Л1 =
- 9.7631
0.0874
1.9239
и Вх =
0.0000
0.0000
1.8739
0.0000
2.7233 -
-0.7612
0.0000
0.0000
0.7612
Исчерпывание
При описании QZ-итераций мы можем предполагать, не нарушая общности, что А - неприводимая верхняя хессенбергова матрица и что В -невырожденная верхняя
треугольная матрица. Первое из этих утверждений очевидно, так как если «к +1, к = 0, то
Лы—Х5Ы Л12 — ХВ12 к
_ ОА 22 — Х^22 _ И — к
ки — к
и мы можем продолжать решать две проблемы меньшего размера Лы — Х5Ы и А22 — ХВ22. С другой стороны, если Ькк = 0 при некотором к, то можно ввести нулевой элемент в позицию (п, п — 1) матрицы А и тем самым осуществить исчерпывание. Проиллюстрируем это следующим примером, где и = 5 и к. = 3:
А =
XXXXX'
XXXXX
0хххх
00ххх
_ 000хх_
, В =
"XXXXX '
0хххх
000хх
000хх
.0000х
Используя вращения Гивенса, нуль на диагонали матрицы В можно «столкнуть» на позицию (5,5) следующим образом
" X
X
X
X
X "
" X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
А = Q^A =
0
X
X
X
X
,B = Ql4B =
0
0
0
X
X
0
X
X
X
X
0
0
0
0
X
. 0
’ X
0
X
0
X
X
X
X
X "
_ 0
" X
0
X
0
X
0
X
X
X
X
X
X
X
X
0
X
X
X
X
А = AZ23 =
0
X
X
X
X
, В = BZ23 =
0
0
X
X
X
0
0
X
X
X
0
0
0
0
X
_ 0
0
0
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
А = Ql5A =
0
X
X
X
X
,b = q^b =
0
0
X
X
X
0
0
X
X
X
0
0
0
0
X
_ 0
’ X
0
X
X.
X
X
X
X
X "
. 0
X
0
X
0
X
0
X
0
X
X
X
X
X
X
0
X
X
X
X
А = XZ34 =
0
X
X
X
X
, В = BZ34 —
0
0
X
X
X
0
0
X
X
X
0
0
0
0
X
. 0
0
0
X
X
0
0
0
0
0
" X
X
X
X
X "
" X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
А = AZ45 =
0
X
X
X
X
, В = BZ45 =
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
Этот метод перегонки нуля вполне общий и может быть использован для обнуления элемента ап,п-х независимо от того, где на диагонали матрицы В появился нулевой элемент.
QZ-шаг
Теперь мы подготовлены к описанию QZ-шага. Основная идея заключается в том, чтобы обновить матрицы А и В следующим образом:
(A -XB) = QT(A -XB)Z,
где матрица Л-верхняя хессенбергова, В-верхняя треугольная, Q и Z-ортогональные и матрица АВ"1 в основном та матрица, которая получилась бы, если QR-niar Фрэнсиса (алгоритм 7.5.2) применить к матрице АВ"1. Это можно сделать при помощи ловкой перегонки нуля и апелляции к теореме о неявном Q.
Пусть матрица М = АВ"1 (верхняя хессенбергова) и пусть г-первый столбец матрицы (М — aI)(M — Ы), где а и Ь- собственные значения нижней подматрицы 2x2 матрицы М. Заметим, что вектор г может быть вычислен за 0(1) флопов. Если Ро-матрица Хаусхолдера, такая, что вектор Рои коллинеарен еп то
" X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
А = Р0А =
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
В = Р0В -
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, обнуляющих элементы b3X, b32 и Ь2Х*.
"хххххх"
X X X X X X
А = AZ\Z2 —
хххххх хххххх 0 0 0 х х х 0 0 0 0 х х
’ XXXXXX
0XXXXX
В — В Z\ Z2 =
00xxxx
000xxx
0000xx
_ 00000x_
Затем используем матрицу Хусхолдера Рг для обнуления «3i и я^:
" X
X
X
X
X
X
X
X
X
X
X
X
A = АЛ =
0
X
X
X
X
X
0
X
X
X
X
X
0
0
0
X
X
X
0
0
0
0
X
X
В = PYB =
"XXXXXX
0XXXXX
0XXXXX
0XXXXX
0000xx
_00000X
Заметим, что после этого шага нежелательные ненулевые элементы оказались сдвинутыми вниз и вправо от их первоначального положения. Это иллюстрирует типичный шаг QZ-итераций. Заметим, что матрица Q = Q0Qi -Qn-2 имеет тот же самый первый столбец, что и матрица Qo. Кстати, первая матрица Хаусхолдера определяется однозначно, мы можем применить теорему о неявном Q и утверждать, что матрица АВ-1 = QT(АВ" ^Q-действительно, в основном, та матрица, которую можно получить, применяя итерацию Фрэнсиса к матрице М = АВ"Х непосредственно. В целом мы имеем
Алгоритм 1Л.1 (QZ-шаг). Для заданной неприводимой верхней хессенберговой матрицы AeRn х п и невырожденной верхней треугольной матрицы BeRn х п следующий алгоритм записывает в матрицу А верхнюю хессенбергову матрицу QT AZ и в В -верхнюю треугольную матрицу QT BZ, где матрицы Q и Z-ортогональные, и Q имеет тот же самый первый столбец, что и ортогональное преобразование подобия в алгоритме 7.5.1, если его применить к матрице АВ-1.
Положить М = АВ"1 и вычислить (М — al) (М — Ы) е{ = (х,у, z, 0,..., 0)г, где а и b - собственные значения нижней подматрицы 2x2 матрицы М.
for к = 1: и — 2•
Найти матрицу Хаусхолдера Qk, такую, что QkL-x у^ЗТ = [*00]г.
А = diag(/k_!, Qk, In_k_2)A S^diag^-!, Qk, In-k-2)B
Найти матрицу Хаусхолдера ZkX, такую, что [^k + 2,k ^с+2, k+1 ^k + 2,k + 2]^kl = [00*]
A = Adiag(7k-i, ZkX, In-k-2)
В = Bdiag(7k-i, Zkx, In-k_2)
Найти матрицу Хаусхолдера Zk2, такую, что
[^k+l.k ^k+l.k+l] Zk2 = [0*].
A = Adiag(7k-i, Zk2) In_k_x)
В = Bdiag(7fc-i, Zk2, In-k-i)
x = ак+1.ь У — як*Х,к
if к < n — 2
Z = ^k+3,k end
end
x *
Найти матрицу Хаусхолдера Qn-X, такую, что Qn-X = Q
А = diag(/n-2, Qn-iV
B = diag(/n-2, Qn-i^B
Найти матрицу Хаусхолдера Zn-X, такую, что fo.n-i bnn3Zn_x = [0*]
А = ^diag(/n_2, Zn-X)
B = Bdiag(/n_2, Zn-^
Этот алгоритм требует 22 и2 флопов. Матрицы Q и Z могут быть накоплены за еще 8 и2 флопов и 13 и2 флопов соответственно.
QZ-процесс в целом
Применяя последовательность QZ-шагов к хессенбергово-треугольному пучку матриц А — кВ, можно привести матрицу А к квазитреугольному виду. Делая это, необходимо контролировать поддиагональ матрицы А и диагональ матрицы В, для того чтобы осуществлять расщепление всякий раз, когда это возможно. Полный процесс, благодаря Молеру и Стюарту [Moler, Stewart (1973)] имеет следующий вид:
Алгоритм 7.7.3. Для заданных A eRn х п и ВeRn х п следующий алгоритм вычисляет ортогональные матрицы Q и Z, такие, что матрица QT AZ = Т- верхняя квази- треугольная, а матрица QT BZ = S-верхняя треугольная. Матрицу А замещает матрица Т, а матрицу В-матрица S.
Используя алгоритм 7.7.1, записать в А матрицу QT AZ (верхняя хессенбергова) и в матрицу В-матрицу QT BZ (нижняя треугольная).
until q = п
Положить равными нулю все поддиагональные элементы матрицы А, удовлетворяющие неравенству
l^.i-d ^£(|^-i,i-i| 4- |а|Ч|)
Найти наибольшее неотрицательное q и наименьшее неотрицательное р.
такие, что если
—
Ахх
^12
^13
р
А =
0
^22
^23
n-p-q
0
0
^33
q
Р
n-p-q
q
то матрица Л 33-верхняя квазитреугольная, а матрица Л 22-неприводимая верхняя Хесенбергова.
В соответствии с этим разбить на блоки матрицу В:
5ц
5=0
_ 0
^i2В13р
ВиВ23n-p-q
0В33_q
р
n-p-q q
if q <п
if В вырожденна
Обнулить On-^n-q-x
else
Применить алгоритм 7.7.2 к матрицам Л22 и В22
А = diag(7p, Q, Iq)T A diag Up, Q, Iq)
B = dia^Ip, Q, I^Bdiag^, Q, Iq) end
end
end
Этот алгоритм требует 30 и3 флопов. Если желательно иметь матрицу Q, то необходимо дополнительно 16 и3 флопов. Если требуется матрица Z, то нужно дополнительно 20 и3 флопов. Эти оценки вычислительных затрат основаны на наблюдении, что необходимо примерно два шага QZ-итераций на одно собственное значение. Таким образом, свойства сходимости QZ-алгоритма те же, что и у QR-алгоритма. На скорость сходимости QR-алгоритма не влияет дефект ранга матрицы В.
Можно показать, что вычисленные матрицы 5 и Г удовлетворяют равенствам Qo^A-V E^Z0 = Т, QUB^F>Zo = ^
где Qo и Zo - точно ортогональные матрицы, а 11Е1|2 « и 11А1|2 и 11F1|2 « и 11В112.
Пример 7.7.5. Если QZ-алгоритм применить к матрицам
2 3 456 "
‘ 1 -1 -1 -1 -1 “
4 4567
01-1-1-1
А =
0 3 678
и В =
001-1-1
0 0289
0001-1
0 0 0110
00001
то поддиагональные элементы матрицы А будут сходиться следующим образом
Итерация
0(1^211)
О(|А32|)
0(1/431)
О(|Л54|)
1
1Оо
10*
10и
10-1
2
10°
10°
10°
10.-!
3
10°
101
10-1
ю-3
4
10°
10°
ю-1
10~8
5
10°
ю1
10-1
10-16
6
10°
10°
10~2
7
10°
ю-1
10-4
8
ю1
10-1
10~8
9
10°
10-*
ю-19
10
10°
10~2
11
10-1
Ю*4
12
10~2
10-11
13
10~3
10~27
14
Вычисление обобщенных инвариантных подпространств
Многие алгоритмы вычисления инвариантных подпространств, обсуждавшиеся в §7.6, переносятся на обобщенную проблему собственных значений. Например, приближенный собственный вектор можно найти посредством обратной итерации:
<7(°)еС"х" задан.
for к = 1,2,...
Решить систему (А — \xB^zw = Bq^k-U
Нормализовать: qw = zw!\ | z(k) 1|2
Xw = ^qW^H AqW^q^H AqW
end
Когда матрица В невырожденная, это эквивалентно применению алгоритма (7.6.1) с матрицей В-1 А. Как правило, требуется только одна итерация, если ц-приближенное собственное значение, найденное QZ-алгоритмом. Обратное итерирование с хессенбергово-треугольным пучком позволяет избежать дорогого накопления Z-преобразований в течение QZ-итераций.
Подобно понятию инвариантного подпространства матрицы, существует понятие понижающего подпространства пучка матриц А — ХВ. В частности, говорят, что /с-мерное подпространство 5 ^ R” является понижающим для пучка А — zB, если подпространство ^Ах + Ву:х, jgS} имеет размерность к или меньше. Заметим, что столбцы матрицы Z в обобщенном разложении Шура определяют семейство понижающих подпространств, так как если Q = [^р... ^„] и Z = [z^..., zn], то span {Az^..., Azk} c span ^qY,...,q^ и span ^Bzv..., Bzk} c span {#i,..., qkY Свойства понижающих подпространств и их поведение под воздействием возмущений описаны в Stewart (1972).
Задачи
7.7.1. Предположим, что А и7.7.1. Предположим, что А иВ принадлежат R^” и чтоВ принадлежат R^” и что
7.7.1. Предположим, что А и
7.7.1. Предположим, что А и
В принадлежат R^” и что
В принадлежат R^” и что
иТВУ =иТВУ =О г
иТВУ =
иТВУ =
, 1/ = !^ l/2], V=[Vt У21
О J п — г г п — г г п — г
есть SVD матрицы В, где D- матрица размера г х г, а г = rank (5). Показать, что если Х(Л, В) = С, то матрица U2A У2 вырожденна.
Определим функционал F:R"->R как
II Ах —II Ах —хт Вт Ах хт Вт Вххт Вт Ах хт Вт ВхВх ||LВх ||L
II Ах —
II Ах —
хт Вт Ах хт Вт Вх
хт Вт Ах хт Вт Вх
Вх ||L
Вх ||L
где А и В принадлежат R" х п. Показать, что если V F (х) = 0, то вектор А х коллинеарен вектору Вх.
Пусть А и В принадлежат R" х п. Предложить алгоритм вычисления ортогональных матриц Q и Z, таких, что матрица QT A Z верхняя хессенбергова, а матрица ZJBQ верхняя треугольная.
Показать, что если ц^Х(Л, В\ то матрицы А1=(А — цВ)1А и ВХ=(А — pF)-1 перестановочны.
Пусть АеСпхп, ВеСпхп и матрица А — цВ невырожденная при некотором ре С. Предположим, что матрица В невырожденная. Показать, что ХеХ(Л, В) тогда и только тогда, когда ХеХ^В, В (А — р By1 В).
Замечания и литература к § 7.7
Математические аспекты обобщенной проблемы собственных значений рассматриваются в работах
Erdelyi I. (1967). “On the Matrix Equation Ax = XBx'\ J. Math. Anal, and Applic. 17, 119-132.
Гантмахер Ф. P. Теория матриц, т. 2, M.: Наука, 1967.
Turnbill H.W. and Aitken А. С. (1961). An Introduction to the Theory of Canonical Matrices, Dover, New York.
Хорошей книгой, охватывающей многие аспекты А — X В проблемы, является
Kagstrom В. and Ruhe А. (1983). Matrix Pencils, Proc. 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 = XBx'\ 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\ 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 — XB’\ 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. Transl. 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.
рассматривается обобщение QZ-алгоритма, которое работает с проблемой ATCx = XBTDx без обращения или формирования матриц АТ С, ВтD.
Поведение QZ-алгоритма для пучков матриц А — X В, которые всегда близки к вырожденным, обсуждается в
Wilkinson J. Н. (1979). “Kronecker’s Canonical Form and the QZ Algorithm”, Lin. Alg. and Its Applic., 28, 28 5-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 — XB^x = 0”, Num. Math. 23, 135-152.
Обобщенная Ax = XBx проблема является центральной для многих важных приложений теории управления. Смотри
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 Kagstrom B. (1988). “Acurate Solutions of Ill-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 Ei genstructure 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 Diagonalize Matrix Pencils”, SIAM J. Numer. Anal. 20, 599-610.
Demmel J. W. and Kagstrom B. (1987). “Computing Stable Ei gendecompositions of Matrix Pencils”, Linear Alg. and Its Applic. 88/89, 139-186.
Kagstrom B. (1985). “The Generalized Singular Value Decomposition and the General A-XB Problem”, BIT 24, 568-583.
Kagstrom B. (1986). “RGSVD: An Algorithm for Computing the Kronecker Structure and Reducing Subspaces of Singular A-XB 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 Р. (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.
Добавления при переводе
Среди работ, опубликованных на русском языке, наиболее полно различные вопросы, связанные с обобщенной проблемой собственных значений, в том числе нелинейной, изложены в следующей серии:
Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алгоритмы. I-Препринт ЛОМИ, Р. 2-88. Ленинград, 1988, 57 с.
Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алгоритмы. II-Препринт ЛОМИ Р-33-88, Ленинград, 1988, 37 с.
Кублановская В. Н., Хазанов В. Б. Спектральные задачи для пучков матриц. Методы и алгоритмы. Ш-Препринт ЛОМИ Р-4-88, Ленинград, 1988, 54 с.
Построению алгоритмов, обеспечивающих гарантированную точность в условиях приближенных вычислений, посвящены работы
Годунове.К. Задача о дихотомии спектра матрицы//Сиб. мат. журн-1986, Т. 27, № 5С. 24-25.
Булгаков А.Я., Годунов С.К. Круговая дихотомия матричного спектра. Новосибирск, 1987
34 с. (Препринт/AH СССР. Сиб. отд. Ин-т математики № 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.1 (Симметричное вещественное разложение Шура). Если А-вещественная симметричная матрица размера п х п, то существует вещественная ортогональная матрица Q, такая, что
QTAQ = diag^j,Х„).
Доказательство. Пусть QTAQ = Т есть вещественное разложение Шура (теорема 7.4.1) матрицы А. Поскольку матрица Т к тому же симметричная, из сделанного предположения следует, что она должна быть прямой суммой матриц размера 1 х 1 и 2 х 2. Однако легко проверить, что симметричная матрица размера 2 х 2 не может иметь комплексных собственных значений. Следовательно, матрица Т не может иметь на диагонали блоков размера 2 х 2. □
Пример 8.1.1. Если
~ 6.82.41 Г 0.6- 0.8 "
А =и О =,
L 2.48.2 J L 0.80.6 J
то матрица Q ортогональная и QTAQ = diag(10,5).
Теорема о минимаксе и некоторые следствия
Для Ат = AeRnxn пусть ХДЛ) означает i-e максимальное собственное значение А. Таким образом,
Легко показать, что каждое собственное значение симметричной матрицы является стационарной точкой отображения х -► хтАх)хтх, где х ^ 0. Более того, собственные значения допускают следующую минимаксную характеризацию:
Теорема 8.1.2 (Теорема Куранта - Фишера о минимаксе). Если матрица AeRnxn симметричная, то
у• уТау
Хк (л) = max min —г -
dim (5) = к 0 # у е 5 У У
для к = 1: п.
Доказательство. [Wilkinson, АЕР], с. 100-101. □
Используя этот результат, можно установить несколько очень полезных следствий.
Следствие 8.1.3. Если А и А Л- Е- симметричные матрицы размера п х п, то ХДА^ -V ХДЕ^ХДА + Е)^Хк(А) + Х^Е),к=\:п.
Доказательство [Wilkinson, АЕР], с. 101-102. □
Пример 8.1.2. Если
Г 6.82.41 Г 2.00.0"
Л = L 2.48.2 J И 0.01.0 J’
то Х^А) = {5, Ю}, Х(£) = {1,2} и Х(Л + £) = {6.5917, 11.4083}.
Следствие 8.1.4. (Свойство чередования). Если А, означает верхнюю главную г х г подматрицу симметричной матрицы А размера п х п, то для г = 1 :п — 1 справедливо
следующее свойство чередования:
Х^ДА^Д ХДАД ^ ХДАГ^Д ^Х2(Лг+1) ХДАД
Доказательство. [Wilkinson, АЕР], с. 103-104. □
Пример 8.1.3. Если
1111
Л =1234
13610’
1 41020
то Х(Ла = {1}, Х(Л2) = {0.3820, 2.6180}, Х(Л3) = {0.1270, 1.0000, 7.873} и Х^АД = {0.0380, 0.4538, 7.2034, 26.3047}.
Дополнительные результаты
Если матрицу А подвергнуть одноранговому возмущению, то ее собственные значения сдвинутся некоторым очень регулярным образом.
Теорема 8.1.5. Пусть В = А + тссТ, где A gR* х п - симметричная матрица, с gR"- вектор, имеющий единичную вторую норму и т g R. Если т > 0, то
Xi (В) 6 [X,. (Л), Xi _! (Л)],/ = 2: п;
а если т ^0, то
Х,(В)е[Х, + 1(Л), Х^Л)],i = \:п- 1.
В обоих случаях существуют неотрицательные числа тх, ..., тп, такие, что
ХДВ) = Х;(Л) + т^, i = 1 :и,
с mt + ... + тп = 1.
Доказательство. [Wilkinson, АЕР], с. 94-97. См. также теорему 8.6.2. □
Воздействие однорангового возмущения на собственные значения симметричной матрицы интересно в различных контекстах, таких, как квазиньютоновские методы для безусловной оптимизации. См. также § 8.6, где теорема 8.1.5 лежит в основе решения трехдиагональной проблемы собственных значений методом «разделяй и властвуй».
Наш следующий результат, касающийся возмущений, является скорее другим вариантом предыдущего. Он устанавливает границы для разности Х(Л) и Х(Л + Е) в терминах ||^||F.
Теорема 8.1.6 (Виландта-Хоффмана). Если А и А + Е-симметричные матрицы размера п х п, то
£ (М^ + £)-Х,(Л))2< Ш£. i=l
Доказательство. Доказательство можно найти в [Wilkinson, АЕР], с. 104-108.
Пример 8.1.4. Если
" 6.82.41Г 2.00.0"
Л =и Е =,
L 2.48.2 JL 0.01.0 J
тото
то
то
2
4.5168 = Е МА + Е) - X,W || Е ||> = 5.
См. пример 8.1.2.
Чувствительность инвариантных подпространств
Инвариантные подпространства симметричной матрицы не обязательно хорошо обусловлены. Отделенность собственных значений является критическим фактором, как и в несимметричном случае. Однако приведенная оценка в общей теореме о возмущении для инвариантных подпространств (теорема 7.2.4) допускает некоторое упрощение в симметричном случае.
Теорема 8.1.7. Пусть А и А + Е-симметричные п х п матрицы и
Q = 2i Qi
-к п-к-
- ортогональная матрица, такая, что range (Q^ является инвариантным подпространством матрицы А. Разобьем матрицы QTAQ и QT EQ на блоки следующим образом:
QTAQ =
^ii
_0 к
0 " ^22- п — /
к
п — к’
к
QTEQ =
£ц
-£21
£12‘
£22 -
к
п — к*
к
п - к
Если
8 = min | X — ц| — || £ц || 2 — || £22 || 2 > О
ХеЦЛ )
VieX^A^
и II £12 II2 ^/2, то существует матрица Pe^n~k^ х к, удовлетворяющая неравенству
21|£||2^ё1|£21112>О
такая, что столбцы матрицы QY = (Qt + Q2P)(7 + рТру^1 образуют ортогональный базис в подпространстве, являющемся инвариантным для матрицы А + Е.
Доказательство. См. [Stewart, 1973в]. □
Эта теорема в сущности утверждает, что чувствительность инвариантного подпространства симметричной матрицы зависит исключительно от отделенности связанных с ним собственных значений.
Пример 8.1.5. Если А = diag (0.999, 1.001, 2.0) и
0.00 0.01 0.01
Е =Е =0.01 0.00 0.01
Е =
Е =
0.01 0.01 0.00
то QT(A + E)Q = diag (0.9899, 1.0098, 2.0002), где
- 0.74180.67060.0101
0.67080.74170.0101
0.0007- 0.01430.9999
является ортогональной. Пусть ^ = Qeb / = L 2, 3, т. е. вектор q( есть возмущенный собственный вектор qt = et матрицы А. Вычисления показывают, что
dist {span {^J , span {^х}} = dist {span {^2}, span {^2}} = 0.67.
Таким образом, векторы qx и q2 не могут быть вычислены точно, поскольку они связаны с близкими собственными значениями. С другой стороны, так как Хт и Х2 хорошо отделены от Х3, то они определяют двумерное подпространство не столь чувствительное: dist {span \av а2}. span{?j, qTys = 0.01.
Наконец мы приведем ряд результатов, касающихся аппроксимации инвариантных подпространств. Эти результаты будут полезны в следующих разделах и помогут интерпретации различных алгоритмов.
Теорема 8.1.8. Пусть матрицы АеКп х п и SgR^ х ^ симметричные и
^61 ~ Ql^ = ^1 5
где матрица QreR?*k удовлетворяет равенству QaQy = Тк. Тогда существуют собственные значения щ, ..., цкеХ(А), такие, что
|Ц1.-^.(5)1 ^^ЦЕЛ,,
Доказательство. Пусть 22gR” х ^ ~ ^-любая матрица, такая, что матрица Q = = [Qi> 62! ортогональная. Тогда
QTAQ =QTAQ =01 №er^eJ vq^e.01 №er^eJ vq^e.eiq2о .eiq2о .= 5 + Е= 5 + Е
QTAQ =
QTAQ =
01 №
er^eJ vq^e.
01 №
er^eJ vq^e.
eiq2
о .
eiq2
о .
= 5 + Е
= 5 + Е
и, используя следствие 8.1.3, мы получаем оценку | Х^А) — Х^В) | ^ || Е || 2 для i = \:п. Поскольку X(S) с Хф\ существуют щ, ..., ^eXtyfy такие, что
| ц,-— Х;(5) | ^ || Е || 2
для i = 1:к. Доказываемое неравенство следует из того, что для любых xgR* и ^gR"-* мы имеем
+ II ElQ2y\\2^ || Ех ||2||х||2 + || Ех ||2|М2,
откуда легко заключить, что || Е || 2 ^ V 2 || Ev || 2. □
Пример 8.1.6. Если
тото2.48.22.48.20.79940.60070.79940.6007S = (5.1)gR,S = (5.1)gR,AQ1-Q1S =AQ1-Q1S =- 0.0828- 0.0562- 0.0828- 0.0562
то
то
2.4
8.2
2.4
8.2
0.7994
0.6007
0.7994
0.6007
S = (5.1)gR,
S = (5.1)gR,
AQ1-Q1S =
AQ1-Q1S =
- 0.0828
- 0.0562
- 0.0828
- 0.0562
Теорема предсказывает, что матрица А имеет собственное значение на расстоянии не более ^/5 || Ех || 2 ~ 0.1415 от числа 5.1. Это соответствует действительности, так как Х(Я) = {5, 10}.
Оценка собственного значения в теореме 8.1.8 зависит от погрешности аппроксимации инвариантного подпространства, т. е. || AQX — QXS || 2. Для заданных матриц А и Qt следующая теорема показывает, как выбрать матрицу S так, чтобы эта величина была минимальной, если || • || = || • ||f.
Теорема 8.1.9. Если матрица A gR” х п - симметричная, а матрица QxERnxk удовлетворяет уравнению QfQi = Л’ т0
min || AQX - QXS ||f = || U - QxQl)AQx ||f.
Доказательство. Пусть матрица Q2eRux ^n~k^ такова, что матрица Q = [Q^ Q2]~ ортогональная. Для любой матрицы SeRk х k имеем
II AQx - Q^ ||i = || ^ AQX - QTQXS ||i = || QlAQx - S ||| + || Q\AQX |||.
Ясно, что минимум no S дает S = QXAQX. □
Этот результат дает нам возможность связывать /с-мерное подпространство range (QJ с некоторым набором к «оптимальных» приближенных пар собственные значения - собственные векторы.
Теорема 8.1.10. Пусть матрица A gR” х п - симметричная, а матрица QxERnxk удовлетворяет уравнению QTQX = 1к. Если
Zr(Q^Qi)Z = diag(01,..., ^-D
-разложение Шура матрицы QXAQx и QXZ = [ух, ..., ук], то || Ау1 — 0^. || 2 = || (I — — QiQX)AQxZei || 2 = || (I — QxQi)AQx || 2 для i = 1: к. Величины 0,- называют числами Ритца, векторы ух называют векторами Ритца, а пары (§ь у J - парами Ритца.
Доказательство.
Ау, - 0^ = AQxZet = Q.ZDe, = AQX - Qx(QXAQx))Zei.
Беря норму, получаем доказываемое равенство. □
Полезность теоремы 8.1.8 увеличится, если мы ослабим предположение об ортогональности столбцов матрицы Qx. Как и следует ожидать, оценки становятся хуже с потерей ортогональности.
Теорема 8.1.11. Пусть A gR-симметричная матрица и
АХх - XxS = Fx,
где X1eRnxk и S = Х^ЛХ^ Если сДХ^ > 0 и
|| XIX, -Ik ||2 = т,
то существуют собственные значения щ, ..., ^EkfA), такие, что
\1)/
для k = 1: п.
Доказательство. Пусть Хх = UХУ,УТ есть SVD матрицы Хх с матрицами UxERn х к, KgR^ х к и S = diag(a1? ..., <sk)ERk х к. Подставляя его в уравнение АХх — XxS = Fx,
мы получим равенство
Аи^УТ - U ^Ут ф ^У^ Аф ^Ут^ = F;
поэтому
AUt - U^^AU,) = FVL"1.
(8.1.1)(8.1.1)Отсюда следует, что
(8.1.1)
(8.1.1)
AUt - U^UlAUJ = Е,,где Ех = FVL"X + U^Е2 - Ik)U {AU,. Замечая, что|| Е2-Л||2 = ||ХГХ1-ЛН2 = г,
мы получаем оценку
|| Е, ||2 ^ || FKE"11|2 + || С/ДЕ2 - 4) U{AUt ||2+ т ИЬ-
Применяя теорему 8.1.8 с матрицами Q = UY и S = UiAU^ получаем доказываемое неравенство. □
Закон инерции
Мы завершим этот раздел установлением закона инерции Сильвестра. Инерция симметричной матрицы Л-это тройка неотрицательных целых чисел (m, z, р), где т, z и р- число отрицательных, нулевых и положительных элементов множества Х(Л).
Теорема 8.1.12 (Закон инерции Сильвестра). Если матрица AeRnxn симметричная, а матрица ХеКпх п невырожденная, то матрицы А и ХТАХ имеют одну и ту же инерцию.
Доказательство. Предположим, что для некоторого г ХДА) > 0, и определим подпространство So с R" следующим образом:
So = span {Jf-1^, ..., X-1qrY q^^
где Aqt = Xt (Л) qt и i = 1: г. Из минимаксной характеризации собственного значения ХДХТАХ) имеем:
Xr (X ТАХ) = max min - ^-f^ >dim(S) = r yeS У У
ут(ХтАХ)у уту *
Далее, для любого yeR” имеем
/P£20zуту/P£20zуту<т„т2,<т„т2,
/P£20z
уту
/P£20z
уту
<т„т2,
<т„т2,
в то время как для yeS0 ясно, что
уЧХтАХ)у^уту "уЧХтАХ)у^уту "XrW.XrW.
уЧХтАХ)у^
уту "
уЧХтАХ)у^
уту "
XrW.
XrW.
Следовательно,
Х,(ХТАХ) > min ^eS0Х,(ХТАХ) > min ^eS0./(ХтХ)у /у J./(ХтХ)у /у J>Хг(А)ап(Х)2.>Хг(А)ап(Х)2.
Х,(ХТАХ) > min ^eS0
Х,(ХТАХ) > min ^eS0
./(ХтХ)у /у J
./(ХтХ)у /у J
>Хг(А)ап(Х)2.
>Хг(А)ап(Х)2.
Если матрицы А и ХТАХ поменять ролями, то аналогичные рассуждения покажут, что
а,И) ^ Ч\Х АХ) ап(Х ) —2 .
Oi (А )
Таким образом, собственные числа ХДА) и ХДХТАХ) имеют один и тот же знак и, следовательно, мы показали, что матрицы А и ХТАХ имеют одно и то же число положительных собственных значений. Если применить этот результат к матрице — А, то можно сделать вывод, что матрицы А и X ТАХ имеют одно и то же число отрицательных собственных значений. Очевидно, что число нулевых собственных значений, которое имеет каждая из матриц, тоже будет одним и тем же. □
Пример 8.1.7. Если А = diag(3, 2, — 1) и
1 4 5
X =X =О 1 2
X =
X =
О 0 1
то
ХТАХ =ХТАХ =4 12 1512 50 6415 64 824 12 1512 50 6415 64 82
ХТАХ =
ХТАХ =
4 12 15
12 50 64
15 64 82
4 12 15
12 50 64
15 64 82
и к(ХтАХ) = {134.769, 0.3555, - 0.1252}.
Задачи
Показать, что собственные значения симметричной матрицы размера 2x2 должны быть вещественные.
Г 12 "
Найти разложение Шура матрицы А =.
Показать, что собственные значения эрмитовой матрицы (Ан = А) вещественные. Для каждой теоремы и следствия из этого раздела сформулировать и доказать соответствующий результат для эрмитовых матриц. Какие результаты имеют аналоги, если матрица А кососимметричная? (Подсказка: Если Ат = — А, то матрица 1А эрмитова.)
Замечания и литература к § 8.1
Теория возмущения симметричной проблемы собственных значений рассматривается в [Wilkinson, АЕР], гл. 2 и [Parlett, SEP], гл. 10 и 11. Некоторые типичные работы в этой хорошо освещенной области включает следующий перечень:
Deift Р., 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.
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.
Симметричный OR-алгоритм
Посмотрим теперь, как практический QR-алгоритм, полученный в гл. 7, может быть специализирован, если матрица A gR” х п симметричная. Три замечания можно сделать сразу:
Если матрица UqAUq = H верхняя хессенбергова, то Н = Т должна быть трехдиагональной.
Симметричность и трехдиагональная ленточная структуры сохраняются после выполнения QR-шага с одинарным сдвигом.
Нет необходимости рассматривать комплексные сдвиги, так как X (Л) с R.
Эти упрощения вместе с приятными математическими свойствами симметричной проблемы собственных значений делают алгоритмы этой главы очень привлекательными .
Преобразование к трех диагональному виду
Начнем с получения преобразования Хаусхолдера к трехдиагональному виду. Предположим, что матрицы Хаусхолдера Pv ..., Рк-\ определены так, что подматрица BYY матрицы
5ц 52i Ок-5ц 52i Ок-В12Ок-1
5ц 52i О
к-
5ц 52i О
к-
Ак-х = (Л ...Рк-^А^! ...Рк-^ =Ак-х = (Л ...Рк-^А^! ...Рк-^ =^22^231
Ак-х = (Л ...Рк-^А^! ...Рк-^ =
Ак-х = (Л ...Рк-^А^! ...Рк-^ =
^32^33п — к
111п — к
1
1
трехдиагональная. Если Рк-матрица Хаусхолдера порядка п — к, такая, что вектор РкВЪ2 коллинеарен ^""^ и, если Рк = diag(lk, Рк), то верхняя главная подматрица размера к х к матрицы
В н
5i2
0 _
к
- 1
^к — ^k^k-l^k —
52i 0
522
РкВм
52зА _ РкВ^Рк
1
п
- к
к- 1
1
п — к
трех диагона льная Ч Ясно, что если Uo = Р1...Рп_2) то матрица UqAU0 = Т трехдиагональная.
При вычислении матрицы Ак важно использовать симметричность в процессе формирования матрицы РкВ^Рк. Для определенности предположим, что матрица
Перед /с-м шагом трехдиагональной является верхняя главная подматрица порядка к + 1, а описанная процедура /с-го шага делает трехдиагональной верхнюю главную подматрицу порядка к + 2.-Прим, перев.
Рк имеет видРк имеет вид_2Р - I _ v1)t O^veR”^. vTv_2Р - I _ v1)t O^veR”^. vTvЗаметим, что еслиЗаметим, что если
Рк имеет вид
Рк имеет вид
_2
Р - I _ v1)t O^veR”^. vTv
_2
Р - I _ v1)t O^veR”^. vTv
Заметим, что если
Заметим, что если
2ри
тотоР = -р-Вгьу и w=p^v,V VV V
то
то
РквззРк = взз ~ vwT - wvT.
Необходимо вычислить только верхнюю треугольную часть этой матрицы, поэтому переход от Ак-1 к Ак можно выполнить всего за 4 (и — к)2 флопов.
В целом мы имеем следующую процедуру трех диагонализации:
Алгоритм 8.2.1 (Трехдиагонализация Хаусхолдера). Для заданной симметричной матрицы А размера п х п следующий алгоритм записывает в А матрицу Т= = UqAU0) где матрица Т-трехдиагональная, a Uo = Hv... Нп_2-произведение преобразований Хаусхолдера.
for к = 1: п — 2
г = house (А (к + 1: и, к)) р = 2А(к + 1: п, к + 1: и) vlvTt) w = р — (pTv)v/vTv
А (к + 1: щ к + 1: п) = А (к + 1: п, к + 1: и) — vwT — wvT end
Этот алгоритм требует 4и3/3 флопов, если использовать симметричность при выполнении двухрангового обновления. Матрицу Uo можно хранить в факторизованном виде в поддиагональной части матрицы А. Если матрица Uo требуется в явном виде, то ее можно сформировать, выполнив дополнительно 4п3/3 флопов.
Пример 8.2.1. Если
то U о U о = I и
U^AU0 =U^AU0 =15 О15 О5 О
U^AU0 =
U^AU0 =
1
5 О
1
5 О
10.32 1.76
1,76 -5.32
Пусть Т означает вариант матрицы Т, вычисленный по алгоритму 8.2.1. Можно показать, что t= QT(A + E^Q, где Q- точно ортогональная матрица, а Е-симметричная матрица, удовлетворяющая неравенству || E\\F cu || A ||F, где с-некоторая небольшая константа. См. [Wilkinson, АЕР], с. 297.
QR-итерации с явным одинарным сдвигом
Рассмотрим теперь QR-итерации с одинарным сдвигом для симметричных матриц:
Т= UqAUq (трехдиагональная)
for к = 0, 1, ...
Определить вещественный сдвиг ц.(8.2.1)
Т— ц7 = UR (QR-разложение)
Т= RU + ц7 end
Эти итерации сохраняют хессенбергову структуру (ср. с алгоритмом 7.4.1) и симметричность, следовательно, они сохраняют трехдиагональную форму. Более того, QR-разложение трехдиагональной матрицы требует лишь О^ флопов, так как матрица R имеет только две наддиагонали. Поэтому необходимо выполнять на порядок меньше вычислений, чем в несимметричном случае. Однако если накапливать ортогональные матрицы, потребуется О (и2) флопов на итерацию.
ООСимметричность можно также использовать при вычислении сдвига ц. Обозначим через Т следующую матрицу
О
О
a, btbi а2
bn-ibn-iООb„-ib„-i
bn-i
bn-i
О
О
b„-i
b„-i
Мы можем, очевидно, положить ц = а„. Однако эффективнее сдвигать на собственное значение подматрицы
Т(и — 1: п, п - 1: и) =Т(и — 1: п, п - 1: и) =^П- 1А-1^П- 1А-1Ьп-1Ьп-1
Т(и — 1: п, п - 1: и) =
Т(и — 1: п, п - 1: и) =
^П- 1
А-1
^П- 1
А-1
Ьп-1
Ьп-1
охватывающей элемент ап. Такой выбор сдвига известен как сдвиг Уилкинсона и его вычисляют по формуле
Ц = ап + d - sign (d) ^~Vb^,(8.2.2)
где d = (ап_! — ап)/2. Уилкинсон [Wilkinson, 1968в] показал, что процесс (8.2.1) сходится кубически при любой стратегии сдвигов, но дал эвристическое объяснение, почему сдвиг (8.2.2) предпочтительнее.
Вариант с неявным сдвигом
Как и в случае несимметричных QR-итераций, в алгоритме (8.2.1) есть возможность делать неявный сдвиг. То есть мы можем выполнять переход от Т к Т+ = RU + ц7 = UTTU без явного формирования матрицы Т— р7. Пусть вычислены с = cos (0) и № sin (0), такие, что
* о* оГг1
* о
* о
с s а\ — р—s с bi
Если положить Gi = G(l, 2, 0), то GYeY = UeY и
T «- GfTGi =+ x0 00 00 0T «- GfTGi =+ x0 00 00 0X XX XX XX X4- О х О х х х х О х О О4- О х О х х х х О х О ОО О О ОО о х О х х х хО О О ОО о х О х х х х
T «- GfTGi =
+ x
0 0
0 0
0 0
T «- GfTGi =
+ x
0 0
0 0
0 0
X X
X X
X X
X X
4- О х О х х х х О х О О
4- О х О х х х х О х О О
О О О О
О о х О х х х х
О О О О
О о х О х х х х
На этом этапе применима теорема о неявном Q при условии, что мы можем вычислять вращения G2, ..., Gn-i, обладающие тем свойством, что если Z = = G1G1...Gn-1) то Zev = G^ = Ue1 и матрица ZTTZ-трех диагональная.
Заметим, что первый столбец у матриц Z и U один и тот же при условии, что мы берем матрицы GY вида G, = СЦ, i + 1, 6J, i = 2:п — 1. Но матрицу G, такого вида можно использовать для выталкивания ненулевого элемента « + » из матрицы GlTGv.
<^2^
G*
xxOOOO" xxx+00
0xxx00
04-xxx0
000xxx
0000xx
'xxOOOO xxx000
0xxx00
00xxx4000xxx
_ 000+xx
g5
xxOOOO" xxx000
0xxx4-0
00xxx0
004-xxx
0000xx
"xxOOOO xxx000
0xxx00
00xxx0
000xxx
_ 0000xx
Из теоремы о неявном Q следует, что трехдиагональная матрица ZTTZ, полученная таким выталкиванием нулевых элементов, в основном та же, что и трехдиагональная матрица Т, полученная явным способом. (Мы можем предполагать, что все трехдиагональные матрицы по определению невырожденные, так как в противном случае проблема расщепляется.)
Заметим, что на любом этапе выталкивания ненулевых элементов с внешней стороны * трехдиагональной ленты расположен лишь один ненулевой элемент. Следующее равенство показывает, как этот ненулевой элемент опускается в нижний
а-кЬкОО
^кGp^р^р
ОbpQqbq
ОZpbqQy
Здесь (р, q, г) = (к + 1, к + 2, к + 3). Это обновление может быть выполнено не более чем за 26 флопов, если определены числа с и s из уравнения bks + zkc = 0. В целом получаем
Алгоритм 8.2.2 (Неявный симметричный QR-шаг со сдвигом Уилкинсона). Для заданной неприводимой симметричной трехдиагональной матрицы Те^хп, следующий алгоритм записывает в матрицу Т матрицу ZTTZ, где Z = Gv...Gn_v произведение вращений Гивенса, такое, что матрица ZT(T— ц/)-верхняя треугольная, а ц-собственное значение нижней главной подматрицы размера 2x2, охватывающей элемент tnn.
= (^Л- 1, Л - 1^пп)/^
\х = Un — tL-1/У + sign^V^+T^i) х = Гц - ц z= <21 for к = 1: и — 1
[с, 5] = givens (x, z)
T= GkTGk, Gk = G(k, к + 1, 6) if к < n — 1
x = tk +1^ z = ^+2,k end end
Этот алгоритм требует примерно 30м флопов и и извлечений квадратного корня. Если в заданную ортогональную матрицу Q записывать QGY ...Gn-i, то потребуется дополнительно 6м2 флопов. Конечно, при любой практической реализации трехдиагональную матрицу Т желательно хранить в паре векторов длины п, а не в массиве размера п х п.
Пример 8.2.2. Если алгоритм 8.2.2 применить к матрице
1
т= 1
0
0
100
210
130.01
00.014
то новая трехдиагональная матрица Т будет иметь вид
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 4- Е, где Q- ортогональная матрица, D- диагональная, а матрица Е удовлетворяет приближенному равенству || Е|| 2 « и || Л || 2.
Используя алгоритм 8.2.1, выполнить трехдиагонализацию
т=(л ...Л-2)Г^(Л ...Л-2)
until q = п
Для i = \:п — 1 положить ai+ia и aiii+i равными нулю, если I»i+1.iI = I«i, 1+11 < е(|ан1 + |a. + i,i + i I)
Найти наибольшее q и наименьшее p, такие, что если
Гц
0
0
р
т=
0
т22
0
n-p-q
0
0
Тзз
q
р
n-p-q
q
то Т33 диагональная, а Т22 неприводимая, if q < п
Применить алгоритм 8.2.2 к Т22:_
Т= diag(/,, Z, l4)rTdiag(l„, Z, /.) 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 следующим образом:
Итерация
021
032
043
1
1.6817
3.2344
0.8649
2
1.6142
2.5755
0.0006
3
1.6245
1.6965
10 —13
4
1.6245
1.6965
сошелся
5
1.5117
0.0150
6
1.1195
10“9
7
0.7071
8
По завершении вычислений мы найдем Х(^) = {— 2.4848, 0.7046, 4.9366, 12.831}.
Как и в несимметричном QR-алгоритме, вычисленные собственные значения £;, полученные при помощи алгоритма 8.2.3, являются точными собственными значениями некоторой матрицы, близкой к А, т.е. Qo(A + E^Q0 = diag(XJ, где бобо = I и || Е || 2 % и || А || 2. Однако в отличие от несимметричного случая мы можем утверждать (благодаря свойству 8.1.3), что абсолютная погрешность каждого ^ мала в том смысле, что |^ — XJ % и || А ||2. Если Q = E^,...,^]-вычисленная матрица ортогональных собственных векторов, то точность ^ зависит от отделенности Х( от остального спектра. См. теорему 8.1.7.
Если требуются все собственные значения и несколько собственных векторов, то накапливать матрицу Q в алгоритме 8.2.3 нецелесообразно. Вместо этого необхо-
димые собственные векторы можно искать обратными итерациями с матрицей Т Если требуется только несколько собственных значений и собственных векторов, то лучше использовать некоторые специальные методы, описанные в § 8.4.
Задачи
8.2.1. Пусть матрица А =8.2.1. Пусть матрица А =wwXZXZвещественная, и пусть мы выполнили следующийвещественная, и пусть мы выполнили следующий
8.2.1. Пусть матрица А =
8.2.1. Пусть матрица А =
w
w
X
Z
X
Z
вещественная, и пусть мы выполнили следующий
вещественная, и пусть мы выполнили следующий
QR-шаг со сдвигом: А — zl = UR, А = RU -V zl. Показать, что если А =
w = w 4- х2 (w — z)/[(w — z)2 4- х2], z = z — x2 (w — z)/[(w — z)2 4- x2], x = — x3/[(w — z)2 4- x2].
Предположим, что матрица AeRn x "-симметричная и положительно определенная, и рассмотрим следующие итерации:
А0 = А
fork = 1,2,...
Ак _ { = Gk Gk (Холецкий)
Ak = GTkGk
end
(а) Показать, что эти итерации сходятся. (Ь) Показать, что если матрица А =
L b имеет собственные значения Xt ^ Х2 ^ 0, то матрицы Ак сходятся к diag(X19 Х2).
Пусть матрица A е R” х ” кососимметричная (Ат = — А). Показать, как конструировать матрицы Хаусхолдера Pv ..., Рп-2, так, чтобы матрица (1\ ...Рп_ 2У А Ц\...Рп_2) была трехдиагональной. Сколько флопов требует ваш алгоритм?
Пусть матрица A g С” х ” эрмитова. Показать, как конструировать унитарную матрицу 2, так, чтобы матрица QH A Q = Т была вещественной, симметричной и трех диагональной.
Г В -С~
Показать, что если матрица А = В 4- i С эрмитова, то матрица М = ^^ -сим
метричная. Сравнить собственные значения и собственные векторы матриц А и М.
Переписать алгоритм 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 раскладывается в произведение ортогональной матрицы и верхней треугольной матрицы. Другие статьи, касающиеся этих методов, включают следующий список:
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 (SLS), арр.
В, так же, как и в работах
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 Parlett 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-20.
Анализ этого метода в случае, когда его применяют для нормальных матриц, смотри в
Huang СР. (1981). ”On 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. (1986).”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 А. (1987). ”А 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 Stratgem Using Scattered Square Decomposition”, Parallel Computing 6, 297-312.
Вычисление SVD
ложениями Шура симметричных матриц АТА, ААТ иложениями Шура симметричных матриц АТА, ААТ и„ . В самом деле, если L4 о J„ . В самом деле, если L4 о JСуществуют важные связи между сингулярным разложением матрицы А и раз- АТ1 „
ложениями Шура симметричных матриц АТА, ААТ и
ложениями Шура симметричных матриц АТА, ААТ и
„ . В самом деле, если L4 о J
„ . В самом деле, если L4 о J
UTAV= diag(CTjст„)
есть SVD матрицы Л eRm х "(т > л), то
(8.3.1)(8.3.1)VTUTA) V= diagtoL.-.o^eR” х ”
(8.3.1)
(8.3.1)
(8.3.2)(8.3.2)384 Гл. 8. Симметричная проблема собственных значений и
(8.3.2)
(8.3.2)
UT(AAT)U = diag(a^...,a2,^...,0)GRmXmr
Кроме того, еслиm п
и = tu. и21п m — п
и мы определим ортогональную матрицу Q е R^m + ”) х (w + ”) как _1 Гт v о "I
V^-U, -U, V2U2J ТО
QTQTО А1А ОО А1А ОQ ="diag(<Ti,...,crn,-<Ti,Q ="diag(<Ti,...,crn,-<Ti,,-<т„, О,...,О ).,-<т„, О,...,О ).
QT
QT
О А1
А О
О А1
А О
Q ="diag(<Ti,...,crn,-<Ti,
Q ="diag(<Ti,...,crn,-<Ti,
,-<т„, О,...,О ).
,-<т„, О,...,О ).
Эти связи с симметричной проблемой собственных значений позволяют нам приспособить математические и алгоритмические разработки из двух предыдущих разделов к проблеме сингулярных значений.
Теория возмущения и свойства
Сначала мы установим некоторые результаты, касающиеся возмущения SVD на основе теорем из § 8.1. Напомним, что п£(Л) означает i-e наибольшее сингулярное число матрицы А.
Теорема 8.3.1. Если AeRm х п, то для к = 1:min{т, п\
(.х• уТАх. ||Лх||2
оДА) = max min-—-—-—— = max mm——-—.
dim(S) = k XGS I] X I] 2 У 2 dim(S) = k XGS || X 2 dim (T) = k T
Заметим, что в этом выражении S ^ R” и Т^ Rm-подпространства.
Доказательство. Крайняя правая характеризация следует из теоремы 8.1.2, примененной к матрице А ТА. Остальную часть доказательства мы оставляем в качестве упражнения. □
Следствие 8.3.2. Если А и А 4- Е-матрица из Rm х п с т^п, то при к=\:п справедливы неравенства
|nj^+£)-qJ^)|^qJ£)= ||£||2.
Доказательство. Применить следствие 8.1.3 к матрицам
"0 АТ
"0(А + £)г"
_А 0 _
_А + Е 0_
Пример 8.3.1. Если
1 4
1 4
А =
2 5
и А + Е =
2 5
3 6
3 6.01
то а^А) = {9.5080, 0.7729} и а(А + Е) = {9.5145, 0.7706}. Ясно, что при i= 1:2 справедливо неравенство | а((А + £) — сг,-(Я) | ^ 11 Е| |2 = 0.01.
Следствие 8.3.3. Пусть А = [я1? ..., «n]eRm х п есть разбиение матрицы на столбцы и т^ п. Если Аг = [я1? ..., аг3, то при г = 1 ;п — 1 имеем
оДАг+Д ^ (МЛ) > а2(Л+1) ^^ ^ДАг+Д ^ ar(Ar) ^ аг+1(Аг+1).
Доказательство. Применить следствие 8.1.4 к матрице АТА. □
Этот последний результат говорит о том, что при добавлении столбцов к матрице наибольшее сингулярное число возрастает, а наименьшее сингулярное число убывает.
Пример 8.3.2.
16 11
Г
27 12
с(АА = {7, 4162}
38 13
=>1
cr(v42) = {19,5377; 1,8095}
48 14
□ U1) = {35,1272; 2,4654; 0,0000}
5 10 15
что подтверждает следствие 8.3.3.
Следующий результат является теоремой Виландта - Хоффмана для сингулярных чисел:
Теорема 8.3.4. Если А и А + Е принадлежат Rm х п и т^ п, то
ЛГ1ЛГ1Y (^ + С) — ак(А))2 ^ Ц ЕЦр.k = 1
ЛГ1
ЛГ1
Доказательство. Применить теорему 8.1.5 к матрицам
О (А + Ef
• □
La + e о J
Пример 8.3.3. Если
1 42 53 61 42 53 6и А + Е =и А + Е =1 4
1 4
2 5
3 6
1 4
2 5
3 6
и А + Е =
и А + Е =
2 5
3 6.01
то
f (at(J + £)-atM))2 = 0.472 X 10"4 5 10"4 = ||Е||^. k = 1
См. пример 8.3.1.
Мы будем говорить, что /с-мерные подпространства S с R” и Т^ Rm образуют пару сингулярных подпространств матрицы А е Rm х п, если из xeSnyeT следует, что Axe Ти Ату е$. Следующий результат касается возмущения пар сингулярных подпространств.
Теорема 8.3.5. Пусть даны матрицы A, EeRmx п, и пусть матрицы VeRnx п и UeRmxm ортогональные. Предположим, что'
и=№ к2] и = [Ui t/2]к п — к к т — к
и range(Р^) и range (17 J образуют пару сингулярных подпространств матрицы А. Пусть
^11
0 "
k
_0
^22-
m — k’
k
n —
k
£ц
£12“
k
_£2i
£22-
m — k
k
n —
k
UHAV =
инЕУ =
и 8 = || [£2i £Г2] || г- Предположим, что
0<8 = min |а-уЫГ£11||2-l|£22ll2.
оео(Лн)
уео(Л22)
Если е/8 ^ 1/2, то существуют матрицы PeR^n-^xk и QeR<m “ к^ х к, удовлетворяющие неравенству
такие, что ranged 4- P^Q) и range (Uy 4- U2P) являются парой сингулярных подпространств матрицы А А Е.
Доказательство. См. [Stewart, 1973в], теорема 6.4. □
Грубо говоря, эта теорема утверждает, что изменения порядка 0(e) в матрице А могут вызвать изменения сингулярных подпространств порядка е/8, где 8-мера изолированности соответствующих сингулярных чисел.
Пример 8.3.4. Матрица Л = diag (2.000, 1.001, 0.999)eR4x3 имеет пары сингулярных подпространств (span {vj, span (mJ), / = 1, 2, 3, где г\ = ej3) и uL = е^. Пусть
A + E —
2.000
0.010
-0.010
0.010
0.010 0.010
1.001 0.010
0.010 0.999
0.010 0.010
Соответствующие столбцы матриц
0 = [Й^Й,] =
0.9999
0.0101
0.0101
0.0051
-0.01440.0007
0.74150.6708
0.6707 -0.7616
0.0138 -0.0007
Р=[Й, Мз] =
0.9999
0.0101
0.0101
-0.01430.0007
0.74160.6708
0.6707 -0.7416
определяют пары сингулярных подпространств матрицы А + Е. Заметим, что пара (span {£,}, span {и,}) близка к (span {vj, span {и,}) при i = 1, но не при z = 2 и 3. С другой стороны, пара сингулярных подпространств (span {02, ^з), sPan {^2» ^з}) близка к (span {v2, v3}» sPan {“г» «з})-
SVD-алгоритм
Теперь мы покажем, как некоторый вариант QR-алгоритма можно использовать для вычисления SVD матрицы Л eRw х " с т > п. На первый взгляд это кажется очевидным. Уравнение (8.3.1) наводит на мысль, что мы можем
Сформировать матрицу С = АТА.
Использовать симметричный QR-алгоритм для вычисления FiC^ = diag(nf).
Применить QR-разложение с выбором ведущего элемента по столбцу к матрице AVv получая U ^ЛК^П = R.
Поскольку матрица R имеет ортогональные столбцы, матрица С^Л^П) диагональная. Однако, как мы видели в примере 5.3.1, формирование матрицы ЛГЛ может привести к потере точности. В данном случае ситуация не совсем такая же плохая, поскольку для вычисления матрицы U используется исходная матрица А.
Более предпочтительный метод вычисления SVD описан в работе Голуба и Кахана [Golub, Kahan, 1965]. Их алгоритм находит матрицы U и К одновременно, неявно применяя симметричный QR-алгоритм к матрице АтА. Первый шаг состоит в приведении матрицы А к верхней двухдиагональной форме посредством алгоритма 5.4.2:
В =В =dx fx0 d2dx fx0 d2UbAVb =UbAVb =В„0.В„0.
В =
В =
dx fx
0 d2
dx fx
0 d2
UbAVb =
UbAVb =
В
„0.
В
„0.
Таким образом, остается вычислить SVD матрицы В. С этой целью рассмотрим применение QR-шага с неявным сдвигом (алгоритм 8.2.2) к трехдиагональной матрице Т= ВТВ:
Вычислить собственное значение X подматрицы
T^m \n, m\n^ =T^m \n, m\n^ =dm dmfmVdjm jn + d„ уdm dmfmVdjm jn + d„ уm = n — 1,m = n — 1,
T^m \n, m\n^ =
T^m \n, m\n^ =
dm dmfm
Vdjm jn + d„ у
dm dmfm
Vdjm jn + d„ у
m = n — 1,
m = n — 1,
охватывающей элемент d„ A-J™.
Вычислить величины cY = cos^J и 5t = sin^), такие, что
5i lr dl — X
ci J L^i/i
и положить GY = G(l, 2, ОД
Вычислить вращения Гивенса G2, ..., Gn_Y, такие, что если Q = GY... Gn-x, то матрица QTTQ трехдиагональная и QeY = G^.
Заметим, что эти вычисления требуют явного формирования матрицы ВТВ, которое, как мы видели, является нежелательным с вычислительной точки зрения.
Предположим, что вместо этого мы применяем указанное выше вращение Гивенса Gx непосредственно к матрице В. Применительно к случаю п = б это дает
В BG1 =
"ххОООО
+хх000
00хх00
000хх0
0000хх
00000х
Затем мы можем определить вращения Гивенса Uр Г2, U2, ..., К-ь С^-ь
перегоняющие нежелательный ненулевой элемент в нижнюю часть двухдиагонали:
" х X + 000 '
0 X X 000
ВU^B =!! п Х ° п '
10 0 0 х X 0
0000 х X
_ 0000 0 х _
"ххОООО"
0 х х 0 0 0
г.™,0+ х х 00
В BV2 - Л Т ЛЛ >
20 0 0 х х 0
0000 X X
_ 0 0 0 0 0 х _
"ххОООО"
0 х х + 0 0
в - иТ в =° °х 0 ”
20 0 0 х х 0 >
0000 X х
0 0 0 0 0 х
и так далее. Это процесс закончится появлением новой двухдиагональной матрицы В, связанной с В следующим образом:
В = (UL,... U Г) В(G. Г2... Vn_ J = U т BV.
Каждая матрица У( имеет вид Уг = G^i, i 4- 1, 0,), где i = 2:п — 1; следовательно, Уех = Qev В силу теоремы о неявном Q мы можем утверждать, что матрицы У и Q в основном равные. Таким образом, мы можем неявно выполнять переход от Т к Т= ВТВ, работая непосредственно с двухдиагональной матрицей В.
Конечно, для этого требуется, чтобы трехдиагональные матрицы были неприводимыми. Поскольку поддиагональные элементы матрицы ВтВ формируют величины ^_ у и fh понятно, что мы должны убедиться в отсутствии нулей в двухдиагональной ленте. Если fk = 0 при некотором к, то
BY 0 к
9В2_ п — к
к п — к
и исходная SVD-проблема расщепляется на две меньшие задачи с матрицами BY и В2. Если dk = 0 при некотором к, то умножением на последовательность преобразований Гивенса можно обнулить Jk. Например, если п = б и к = 3, то
вращением строк в плоскостях (3, 4), (3,
5) и (3, 6) мы можем обнулить элементы
третьей строки:
■ х X 0 0 0 0 '
" х х 0 0 0 0 '
0 х х 0 0 0
0 х х 0 0 0
0 0 0 x 0 0
(3,4)
0 0 0 0 + 0
В =
0 0 0 х х 0
0 0 0 х х 0
0 0 0 0 х х
0 0 0 0 х х
_ 0 0 0 0 0 х
_ 0 0 0 0 0 х
-
х х 0 0 0 0 '
х х 0 0 0 0 '
0 х х 0 0 0
0 х х 0 0 0
(3,5)
0 0 0 0 0 +
(3,6)
0 0 0 0 0 0
■
0 0 0 х х 0
0 0 0 х х 0
0 0 0 0 х х
0 0 0 0 х х
0 0 0 0 0 х _
0 0 0 0 0 х
Таким образом, мы можем осуществлять расщепление всякий раз, когда j\ ...fn_ i = О или dY ...dn-Y = 0.
Алгоритм 8.3.1 (SVD-шаг Голуба-Кахана). Для заданной двухдиагональной матрицы BgRw х ”, не имеющей нулей на главной диагонали или наддиагонали, следующий алгоритм записывает в матрицу В двухдиагональную матрицу В = UTBV, где U и F-ортогональные матрицы и матрица Ев основном та ортогональная матрица, которая могла бы быть получена применением алгоритма 8.2.2 к матрице Т = Вт В.
Пусть ц-собственное значение нижней угловой 2x2 подматрицы матрицы Т= ВТВ, охватывающей элемент tnn.У = 'и -н2 = ^12for к = 1: п — 1Определить с = cos (9) и 5 = sin (0), такие, чтоПусть ц-собственное значение нижней угловой 2x2 подматрицы матрицы Т= ВТВ, охватывающей элемент tnn.У = 'и -н2 = ^12for к = 1: п — 1Определить с = cos (9) и 5 = sin (0), такие, чтоиис s_ — s сс s_ — s с= [* 0]= [* 0]В = BG(k, к + 1, 0)У = bkk) z = bk+Y,kОпределить с = cos (9) и 5 = sin (9), такие, что .В = BG(k, к + 1, 0)У = bkk) z = bk+Y,kОпределить с = cos (9) и 5 = sin (9), такие, что .с s_ — s с_с s_ — s с_У_z_У_z_**LOJLOJB = G(k, к + 1, 9)г5 if/c < и — 1У = ^k,k+ 1> 2 = ^кЛ + 2 endendB = G(k, к + 1, 9)г5 if/c < и — 1У = ^k,k+ 1> 2 = ^кЛ + 2 endend
Пусть ц-собственное значение нижней угловой 2x2 подматрицы матрицы Т= ВТВ, охватывающей элемент tnn.
У = 'и -н
2 = ^12
for к = 1: п — 1
Определить с = cos (9) и 5 = sin (0), такие, что
Пусть ц-собственное значение нижней угловой 2x2 подматрицы матрицы Т= ВТВ, охватывающей элемент tnn.
У = 'и -н
2 = ^12
for к = 1: п — 1
Определить с = cos (9) и 5 = sin (0), такие, что
и
и
с s
_ — s с
с s
_ — s с
= [* 0]
= [* 0]
В = BG(k, к + 1, 0)
У = bkk) z = bk+Y,k
Определить с = cos (9) и 5 = sin (9), такие, что .
В = BG(k, к + 1, 0)
У = bkk) z = bk+Y,k
Определить с = cos (9) и 5 = sin (9), такие, что .
с s
_ — s с_
с s
_ — s с_
У_z_
У_z_
*
*
LOJ
LOJ
B = G(k, к + 1, 9)г5 if/c < и — 1
У = ^k,k+ 1> 2 = ^кЛ + 2 end
end
B = G(k, к + 1, 9)г5 if/c < и — 1
У = ^k,k+ 1> 2 = ^кЛ + 2 end
end
Эффективная реализация этого алгоритма хранит диагонали и наддиагонали матрицы В в векторах а(1:и) и /(1:и — 1) и требует 30м флопов и 2м вычислений квадратных корней. Накопление матрицы U требует бит флопов. Накопление матрицы V требует би2 флопов.
Обычно после нескольких вышеописанных SVD-цтераций наддиагональный элемент /п_! становится пренебрежимо малым. Критерий малости внутренних элементов ленты матрицы В обычно имеет вид
Ш ^8(|^| + |4 + 11),Ш^\\В\\,
где е-малая величина порядка машинной точности, а || • || - некоторая удобная для вычислений норма.
Объединение алгоритма 5.4.2 (двухдиагонализация), алгоритма 8.3.1, и упомянутого способа расщепления дает
Алгоритм 8.3.2 (SVD-алгоритм). Для заданных матриц AeRmxn(m и) и 8-малой величины порядка машинной точности, следующий алгоритм записывает в матрицу А матрицу UTAV= D -V Е, где U eRm х п ортогональная, VeRnxn ортогональная, D g Rm х п диагональная матрицы, а матрица Е удовлетворяет приближенному равенству || Е2 || 2 « и || А || 2.
Используя алгоритм 5.4.2, выполнить двухдиагонализацию
В*-^... uyA(VY...Vn-2)
until q — n
Положить а^^у равным нулю, если \а^ J ^ е(| ан | + | ai + i, i+i |) для всех / = 1 :п — 1.
Найти наибольшее q и наименьшее р, такие, что если
Ви
0
0
р
в =
0
В 22
0
n-p-q,
0
0
В33
q
—
р
n-p-q
q
то подматрица В33-диагональная, а подматрица В22 имеет ненулевую наддиагональ.
if q < п
if некоторый диагональный элемент в В22 равен нулю, то обнулить наддиагональные элементы той же строки.
else
Применить алгоритм 8.3.1 к В22,
В = diag(Z„, U, IOm_yBdiag(Ip, V, Iq) end
end end
Объем вычислений этого алгоритма и его вычислительные свойства обсуждались в § 5.4.5 и § 5.5.8.
Пример 8.3.5. Если алгоритм 8.3.2 применить к матрице
А =
110 0
0 2 10
0 0 3 1
0 0 0 4
то наддиагональные элементы будут сходиться к нулю следующим образом:
Итерация O(|a2i|)
0(1=32 |)
0(1=43 |)
1
10и
юи
10и
2
10°
10°
10°
3
10°
10°
10°
4
10°
10-1
10-2
5
10°
10-1
ю~®
6
10°
10~1
10"27
7
10°
10-*
сошелся
8
10°
10~4
9
10-1
ю-14
10
10-1
сошелся
11
10~4
12
ю-12
13
сошелся
Наблюдается кубическая сходимость.
Задачи
8.3.1. Показать, что если BeR” х п-верхняя двухдиагональная матрица, имеющая кратное сингулярное значение, то В должна иметь нуль на главной диагонали или наддиагонали.
8.3.2. Получить формулу для собственных векторов матрицы векторов матрицы A eRm х ”, где т > п.
О АТ‘ _А 0 _
в терминах сингулярных
8.3.3. Дать алгоритм приведения комплексной матрицы А к вещественной двухдиагональной форме, используя комплексные преобразования Хаусхолдера.
8.3.4. Связать сингулярные числа и векторы матрицы А = В + iC (В, С eRm х ”)Гя -с!
с сингулярными
числами и векторами матрицы
В
8.3.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). ’’Perturbation Bounds in Connection with the Singular Value Decomposition”, BII 12, 99-111.
Две последние работы посвящены устойчивости SVD разложения. К другим работам, связанным с устойчивостью сингулярных чисел, относятся
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 Р. A. and Golub G. Н. (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 MolerC. В. (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 матрицы А = иУ,УТ. Конечно, алгоритм 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.
Некоторые специальные методы
Используя богатую математическую структуру симметричной проблемы собственных значений, можно придумать полезные альтернативы симметричному QR-алгоритму. Многие из этих методов предпочтительнее, когда требуется найти только несколько собственных значений и/или собственных векторов. Три таких метода описаны в этом разделе: бисекция, итерации с отношением Рэлея, ортогональные итерации с ускорением Ритца.
Бисекция
Пусть Тг означает ведущую главную подматрицу размера г х г матрицы
т=
«i Ьх
bl аг ■
...0
(8.4.1)
'" bn_ 1
0...
Ь„-1 ап
и определены многочлены рДх) = det (Tr — хГу г = 1: п. Можно показать, используя обычную формулу для определителя, что
рАх> = (аг - х^р,-!(х) - ЬА 1А-2 И(8.4.2)
при г = 2;и, если положить р0(х) = 1. Поскольку значение многочлена р,Дх^ можно оценить за О (и) флопов, его корни имеет смысл искать, используя метод бисекции. Например, если рп (у)рп (z) < 0 и у < z, то итерационный процесс
while|j? — z| > е(|.у| + |z|)
X = (у + z)/2
ifp„(x)p„ (у) < 0
Z = X else
У = х end end
обязательно закончится с (у + z)/2 равным приближенному корню многочлена рп (х), т. е. приближенному собственному значению матрицы Т Эти итерации сходятся линейно, причем погрешность уменьшается примерно в два раза на каждом шаге.
Иногда нужно вычислить k-е максимальное собственное значение матрицы Тдля некоторой заданной величины к. Это можно сделать эффективно, используя идею бисекции и следующий классический результат:
Теорема 8.4.1 (Свойство последовательности Штурма). Если трехдиагональная матрица (8.4.1) неприводимая, то собственные значения подматрицы Тг_х строго разделяют собственные значения подматрицы Т/.
• Хг (Тг) < Хг_! (Тг_ J < Хг_! (Тг) < ... < Х2 (Тг) < X, (Tr_ J < Х1 (Тг).
Более того, если а(Х) означает число перемен знака в последовательности
{PoMPiM -,Л(М},
то я(Х) равно числу тех собственных значений матрицы Т, которые меньше чем X. Здесь рДх^-многочлены, определенные равенством (8.5.2), и считается, что рДх) имеет отрицательный знак, если prQ^ = 0.
Доказательство. Из следствия 8.1.4 следует, что собственные значения подматрицы Тг_х нестрого разделяют собственные значения подматрицы Тг. Для того чтобы доказать, что разделение должно быть строгим, предположим, что рг(р) = pr-i (|i) = = 0 при некоторых г и ц. Тогда из (8.4.2) и предположения о неприводимости матрицы Т следует, что />0 (ц) = рх (ц) = ... = />г (ц) = 0-противоречие. Следовательно, мы должны иметь строгое разделение.
Утверждение о величине aQ^ доказано в [Wilkinson, АЕР], с 300-301. □
Пример 8.4.1. Если
1—10 0 12-10 0-1 3-1 0 0-14
то Х(Т)« {0.254, 1.82, 3.18, 4.74}. Последовательность
{р0(2),Л(2),р2(2),р3(2)} = {1, -1, -1,0, 1}
подтверждает, что имеются два собственных значения, меньших, чем X = 2.
Пусть нам нужно вычислить Хк(Т). Из теоремы о кругах Гершгорина (теорема 7.2.1) следует, что Хк(Т)е£у, z], где
у = min сц — |^| — 1^-! |, z = max сц + \bi | + |Z>i-i |,'
1^ i^ n1 ^ i ^n
если определить b0 = bn = 0. Из свойства последовательности Штурма видно, что с этими начальными данными итерации
while|z - j| > и(Щ + И)
b = (у + z)/2
if a^ > к
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) появляется информация о разложении других собственных значений. Систематически следя за этой информацией можно предложить эффективную схему вычисления «смежных» подмножеств спектра Х(Т), т.е. Хк(Ту Xk+i(T), ..., Хк+,(Т). См. [Barth, Martin, Wilkinson, 1967].
Если требуются отдельные собственные значения симметричной матрицы А общего вида, то необходимо выполнить трехдиагонализацию Т= UqTU0, прежде чем можно будет применять описанную выше бисекцию. Это можно сделать, используя алгоритм 8.2.1 или метод Ланцоша, рассматриваемый в следующей главе. В любом случае соответствующие собственные векторы могут быть легко найдены
посредством обратных итераций (см. § 7.6), так как трехдиагональную систему можно решить за О (и) флопов.
В тех приложениях, где исходная матрица А уже имеет трехдиагональный вид, бисекция вычисляет собственные значения с малой относительной погрешностью, независимо от их величины. Это отличает ее от трехдиагональных QR-итераций, где для вычисленных собственных значений ^ можно гарантировать только наличие малой абсолютной погрешности | X, — X, (Т) | % и || Т\\ 2.
Наконец, можно вычислять отдельные собственные значения симметричной матрицы, используя ЬОЬг-разложение (см. § 4.2) и применяя теорему Сильвестра об инерции (теорема 8.1.12). Если
А — \xl = LDLT, А = АтеКпх\
есть ЬПЬг-разложение матрицы А — ц! с матрицей D = diag^, ..., dn\ то число отрицательных ^ равно числу собственных значений Х^А), которые меньше ц. Детали см. в [Parlett, SEP], с. 46.
Итерации с отношением Рэлея
Предположим, что матрица AeRnxn симметричная и х- заданный ненулевой вектор длины п. Простое дифференцирование показывает, что величина
минимизирует || (Л — XI) х || 2. Скалярную величину г(х) называют отношением Рэлея вектора х. Ясно, что если х - приближенный собственный вектор, то г(х) является разумным выбором для соответствующего ему собственного значения. С другой стороны, если X - приближенное собственное значение, то теория обратных итераций говорит нам, что решение уравнения (А — XI) х = b будет почти всегда хорошей аппроксимацией собственного вектора.
Объединение этих двух идей естественным образом приводит к итерациям с отношением Рэлея*.
х0 задан, || %0 || 2 = 1
for к = 0, 1, ...
Hi = г(.хк)(8.4.4)
Решить уравнение (А — |ifc/) zk +1 относительно zk +1
№+1 = zk + 1/II zk + 1 II 2
end
Заметим, что для любого к мы имеем равенство (А + Ek)zk + 1 = ц^+1, где матрица возмущения Ек есть Ек = — xkzk + 1/\\ zk+1 || 2. Из теоремы 7.2.2 следует, что | pk — X |1/1| zk+1 || 2 для некоторого X е X (А).
Пример 8.4.3. Если (8.4.4) применить к матрице
1 1 1
1 23
1
4
1
5
1
6
А =
1 36
10
15
21
1 4 10
20
35
56
1 5 15
35
70
126
1 6 21
56
126
252
с х0 = (1, 1, 1, 1, 1, 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 (Xt, Х2) с Х1 > Х2. Обозначая компоненты вектора хк следующим образом: ,
хк =хк =скSk-скSk-cl +$l= Vcl +$l= V
хк =
хк =
ск
Sk-
ск
Sk-
cl +$l= V
cl +$l= V
получим, ЧТО |lfc = Xvck + XYsk и
1 Гcklsi
Xi Х2 _ sk/ck_
Вычисление показывает, что
Q +1Q +1СкVCk + $кСкVCk + $кsk + 1sk + 1
Q +1
Q +1
Ск
VCk + $к
Ск
VCk + $к
sk + 1
sk + 1
Из этого уравнения видно, что вектор хк сходится кубически либо к подпространству spanf^i}, либо к подпространству span{e2} при условии, что |cfc| # |5fc|.
Детали, связанные с практическим применением итераций с отношением Рэлея, можно найти в [Parlett, 1974b].
Интересно заметить связь между итерациями с отношением Рэлея и симметричным QR-алгоритмом. Пусть мы применяем последний к трехдиагональной матрице TeRn х п со сдвигом и = е„Теп = tnn. Если Т — cl = QR, то мы получим матрицу Т= RQ + ol. Из уравнения (Т — cI)Q = RT следует, что
(Т-о1^п = Чпвп,
где ^„-последний столбец ортогональной матрицы Q. Следовательно, если мы применим (8.4.4) с вектором х0 = еп, то xt = qn.
Ортогональные итерации с ускорением Ритца
Напомним метод ортогональных итераций из § 7.3:
Qo е R” х р задана с бобо = 1р for к = 1, 2, ...
^к = ^Qk- 1
Zk = QkRk (QR-разложение)(8.4.5)
end
Пусть A - симметричная матрица с разложением Шура QTAQ = diag(Xz), где б = E^i> ..., qn"\ и | Х11 > | Х2 | > ... > | Х„|. Из теоремы 7.3.2 следует, что если d = dist{Z)p(^),
range (Co)} < 1, то
dist{DpG4), ranged)} < - -• —.,
V1 + ^ лр
где Dp (А) = span {^15..., qpY Более того, из анализа, выполненного в § 7.3, мы знаем, что если Rk = (г^), то
Это может быть неприемлемо: низкая скорость сходимости, если собственные значения \ и Xz+1 имеют почти равные модули.
Эта трудность может быть практически преодолена заменой матрицы Qk ее векторами Ритца на каждом шаге:
Qo g R" х р задана с бобо = Ip
for k = 1, 2, ...
^k = ^Qk- 1
QkRk = Zk (QR-разложение)(8.4.6)
Sk = QlAQk
UkSkUJ( = Dk (разложение Шура)
Qk = Qkuk
end
Можно показать, что если Dk = diag(0(i°, ..., 0W) 10^ | ^ ... ^ 10^ |,
TO
lO^-X^^HOlO^-X^^HO^p+ i^p+ ikki = 1: p.i = 1: p.
lO^-X^^HO
lO^-X^^HO
^p+ i
^p+ i
k
k
i = 1: p.
i = 1: p.
Таким образом, числа Ритца 0ik) сходятся со значительно более предпочтительной скоростью, чем величины г}^ в (8.4.5). Детали см. в [Stewart, 1969].
Пример 8.4.4. Если мы применим (8.4.6) к матрицам
100 1
1
1
1
0
199
1
1
0
1
А =
1 1
2
1
и
Qo —
0
0
1 1
1
1
0
0
то
к
dist{D2(A),Qk)
0
0.2 X 10-1
1
0.5 X 10-3
2
0.1 х 10“4
3
0.3 X 10-6
4
0.8 х 1О~®
Ясно, что имеет место сходимость со скоростью (2/99)к.
Задачи
Пусть X есть собственное значение симметричной трехдиагональной матрицы Т Показать, что если X имеет алгебраическую кратность к, то по меньшей мере к — 1 поддиагональных элементов матрицы Т равны нулю.
Пусть матрица А - симметричная и имеет ширину ленты р. Показать, что если мы выполним QR-шаг со сдвигом: А — ц/ = QR, А = RQ + ц/, то матрица А будет иметь ширину ленты р.
Пусть BeR” х п-верхняя двухдиагональная матрица с диагональными элементами tZ(l :п) и наддиагональными элементами /(1 :п — 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. Н. (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”, Int. J. 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.
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.
Методы Якоби
Методы Якоби для симметричной проблемы собственных значений в настоящее время привлекают к себе внимание, потому что они являются существенно параллельными. Во время их работы выполняется последовательность ортогонально подобных обновлений A*- QTAQ, обладающих тем свойством, что каждая новая матрица А, даже плотная, является «более диагональной», чем ее предшественник. В конце концов, внедиагональные элементы становятся достаточно малыми для того, чтобы объявить их равными нулю.
После обзора основных идей, лежащих в основе метода Якоби, мы разработаем параллельную процедуру Якоби, которая годится для кольцевой многопроцессорной системы. Все процедуры Якоби для симметричной проблемы собственных значений из этого раздела имеют SVD-аналоги.
Идея метода Якоби
Идея, лежащая в основе метода Якоби, состоит в том, чтобы систематически уменьшать величину
осуществления этогоосуществления этогот. е. «норму» внедиагональных элементов. Средством для
осуществления этого
осуществления этого
являются вращения вида
о. о о
с ••• s ••• о р
Др-q,^ =
— 8• • • С * * * 0
оо0••• 0 •••1
о
о
которые мы будем называть вращениями Якоби. Вращения Якоби не отличаются от вращений Гивенса, ср. с § 5.1.8. Мы пошли в этом разделе на изменение названия в честь автора метода.
Основной шаг в процедуре Якоби включает (1) выбор пары индексов (р, q), удовлетворяющих неравенству 1 ^ р < q < п, (2) вычисление пары косинус-синус (с, 5) такой, что матрица
Ьрр bpq_bqp bqq _Ьрр bpq_bqp bqq _С— sС— sс J \_atс J \_atapqaqq-apqaqq-(8.5.1)(8.5.1)
Ьрр bpq_bqp bqq _
Ьрр bpq_bqp bqq _
С
— s
С
— s
с J \_at
с J \_at
apq
aqq-
apq
aqq-
(8.5.1)
(8.5.1)
диагональная, и (3) запись матрицы B — JTAJ в матрицу А, где J = J(p, q, 9). Заметим, что матрица В совпадает с матрицей А, кроме строк и столбцов с номерами р и q. Более того, так как норма Фробениуса сохраняется при ортогональных преобразованиях, мы находим, что
«рр + “qq + ^pq = ЬРР + bqq + 26И = Ьрр + ^ ,
и, следовательно,
off(8)2 = || 8 ||i- £ ft'
1= 1
= М IIF - £ й» + Vapp + Под - Ьрр - ь^
i= 1
= off (Л)2 - 2a,q.
В этом смысле матрица А становится ближе к диагональной форме на каждом шаге метода Якоби.
Прежде чем обсуждать, как может быть выбрана пара индексов (р, q), давайте рассмотрим фактические вычисления, связанные с (р, ^-подзадачей.
Симметричное разложение Шура размера 2x2
Сказать, что мы диагонализовали матрицу (8.5.1), это сказать, что
0 = bpq = dpq (с2 - 52) + (dpp - dqq) CS .(8.5.2)
Если apq = 0, то мы сразу берем (с, 5) = (1, 0). Иначе, полагаем
Т = ^Е^ЕЕ nt = s/c^pq
и из равенства (8.5.2) делаем вывод, что t = tg(9) является решением квадратного уравнения
z2 + 2tz — 1 = 9.
Оказывается, важно выбрать наименьший из двух его корней
после чего величины с ^ s могут быть найдены по формулам
s = tc.(8.5.4)
Выбор t равным наименьшему из двух корней гарантирует, что 191л/4 и имеет
место эффект минимизации разности матриц В и А, так как
II В- A III = 4(1 - с) X (а?р + а?) + 2а^/с2 .
i= 1 i^p.q
Мы подведем итог 2x2 вычислениям следующим образом:
Алгоритм 8.5.1. Для заданной симметричной матрицы А размера п х п и целых pviq, удовлетворяющих неравенствам 1 ^ р < q ^ п, этот алгоритм вычисляет пару косинус-синус (с, s), такую, что если В = J(p, q, 9)тAJ(p, q, 6), то bpq = bqp = 0.
function: (с, 5) = sym.schur2 (Л, p, q)
if A(p, q) #0
t = (A(p, q)- A(p, p))/(2A (p, 9»
t = sign(T)/(| т | + У1 + т2); с = 1А/1 + r2;
else
c = 1; 5 = 0 end
end sym.schur2
Обновления в методе Якоби
Как было замечено выше, когда решают ^р, ^-подзадачу, меняются только строки и столбцы с номерами р и q. После того, как процедура sym.schur2 определила вращение размера 2x2, обновление A^-J^, q, Q)TAJ(p, q, 9) может быть выполнено за 6л флопов, если использовать симметрию.
Классический алгоритм Якоби
Теперь мы обратим внимание на определение подзадач, т.е. выбор пары (р, q). С точки зрения максимизации изменения величины off (Л) в (8.5.2), имеет смысл выбирать пару (р, q) так, чтобы величина apq была максимальной. Это составляет основу классического алгоритма Якоби.
Алгоритм 8.5.2 (Классический алгоритм Якоби). Для заданной симметричной матрицы Л е R" х " и погрешности tol > 0 этот алгоритм записывает в матрицу А матрицу VTAV, где матрица V ортогональная и oH(VTAV^ ^ tol\\ A ||F.
V = In; eps = tol\\ А\\ F
while off (Л) > eps
Выбрать индексы р и q, такие, что
Kp<q^nn\apq\ = max/^y | я7|
(с, 5) = 8уш.8сЬиг2(Л, р, q)
А = J(p, q, 6)TAJ(p, q, 9)
V= yj^p, q, 9)
end
Из того что | apq | является максимальным внедиагональным элементом, следует, чтооИ(Л)2^М(^ + я2р),
где N = п(п — 1)/2. Поэтому из (8.5.1) мы получаем оценку
off(S)2 < ^1-^оИ(Л)2.'
По индукции, если Aw означает матрицу А после к обновлений Якоби, то off (Л***)2 <1) off (Л<°>)2.
Это означает, что классическая процедура Якоби имеет линейную скорость сходимости.
Однако асимптотическая скорость сходимости этого метода значительно выше линейной. Шонхаге [Schonhage, 1964] и Ван Кемпен [van Kempen, 1966] показали, что для достаточно большого к существует константа с, такая, что
offU(HN))^roff(^
т. е. имеет место квадратичная сходимость. В более ранней работе Хенричи [Henrici, 1958] установлен тот же результат для специального случая, когда матрица А имеет различные собственные значения. В теории сходимости итераций Якоби существенно, что 101 л/4. Помимо всего прочего, это предотвращает возможность «обмена» между близко сошедшимися диагональными элементами. Это следует из формул Ьрр = арр ~ tapq и bqq = aqq + tapq, которые могут быть выведены из уравнений (8.5.1) и (8.5.3).
Принято называть N обновлений Якоби чисткой. Таким образом, после,достаточного числа итераций квадратичная сходимость наблюдается, если проверять off (Л) после каждой чистки.
Не существует строгой теории, дающей возможность предсказать число чисток, требующихся для достижения определенного уменьшения off (Л). Однако Брент и Люк [Brent, Luk, 1985] обосновали эвристически, что число чисток пропорционально log (л), и это, по-видимому, согласуется с практикой.
Пример 8.5.1. Применяя классическую итерацию Якоби к матрице
1
1
1
2
1
3
1
4
А =
1
3
6
10
1
4
10
20
мы найдем, что
Логика
О(о№(Л))
0
102
1
101
2
10~2
3
ю-11
4
10"17
Алгоритм циклический по строкам
Недостаток классического метода Якоби в том, что обновления требуют О (л) флопов, в то время как поиск оптимальной пары (р, #) требует О (л2) флопов. Один из путей устранить этот дисбаланс - заранее фиксировать последовательность подзадач, которые будут решаться. Представляется разумным проходить все подзадачи строка за строкой. Например, при л = 4 цикл имеет следующий вид
(р, q) = (1,2), (1,3), (1,4), (2,3), (2,4), (3,4), (1,2), ...
Этот способ упорядочения называют циклом по строкам и его реализует следующая процедура:
Алгоритм 8.5.3 (Циклический метод Якоби). Для заданной симметричной матрицы А е R" х п и погрешности tol > 0, этот алгоритм записывает в матрицу А матрицу VTAV, где V- ортогональная матрица и о1Г(7гЛЮ < tol || A ||F.
V=l„
eps = tol || A || F
while off (A) > eps
for p = 1: n — 1
for q = p 4- 1: n
(c, s) = sym.schur2 (A, p, q) A = J (p, q, ^TAj(p, q, 0) V= yj^ q, 0)
end
end
end
Циклический метод Якоби также сходится квадратично. (См. [Wilkinson, 1962] и [Van Kempen, 1966]). Однако поскольку он не требует внедиагонального поиска, он значительно быстрее, чем исходный алгоритм Якоби.
Пример 8.5.2. Если циклический метод Якоби применить к матрице из примера 8.5.1, то мы найдем, что
Уист/са
O(off(A))
0
102
1
101
2
ю-1
3
10“6
4
10-1в
Барьерный метод Якоби
Когда выполняется циклический метод Якоби, представляется разумным пропускать уничтожение элемента apq, если его модуль меньше, чем некоторый малый параметр, зависящий от чистки, так как фактическое уменьшение величины off (Л) не будет оправдывать затрат. Это приводит к так называемому барьерному методу Якоби. Детали, связанные с этим вариантом алгоритма Якоби, можно найти в [Wilkinson, АЕР], с. ТП. Подходящий выбор барьеров может гарантировать сходимость.
Анализ ошибок округления
Используя предложенный Уилкинсоном анализ ошибок, можно показать, что если нужно выполнить г чисток по алгоритму 8.5.3, то вычисленная величина dt удовлетворяет неравенству
M||FU
i= 1
при некотором упорядочении собственных значений Xt матрицы А. Параметр kr зависит от г слабо.
Сравнение с симметричным QR-алгоритмом
Хотя циклический метод Якоби сходится квадратично, он, вообще говоря, не выдерживает конкуренции с симметричным QR-алгоритмом. Например, если подсчитывать флопы, то 2 чистки метода Якоби, примерно эквивалентны полной QR-редукции к диагональной форме с накоплением преобразований. Следователь-
но, алгоритм Якоби, вообще говоря, хуже. Однако, его программа очень простая по сравнению с QR-алгоритмом и, следовательно, при малых п он может быть предпочтительнее. Кроме того, если известна приближенная матрица собственных векторов К, то матрица VTAV почти диагональная,-пример ситуации, которую может использовать метод Якоби, но не QR.
Параллельное упорядочение
Возможно наиболее интересное различие между алгоритмами QR и Якоби для симметричной проблемы собственных значений - богатый внутренний параллелизм последнего алгоритма. Для того чтобы пояснить это, положим п = 4 и сгруппируем шесть подзадач в три множества вращений следующим образом
rot. ^z(l) = {(1, 2), (3, 4)},rot. 5^(2) = {(1,3), (2, 4)},rot. 5^(3) = {(1,4), (2, 3)}.
Заметим, что все вращения внутри каждого из трех множеств вращений являются «неконфликтующими». То есть подзадачи (1, 2) и (3, 4) могут быть выполнены параллельно. Подзадачи (1, 3) и (2, 4) также могут быть выполнены параллельно равно как и подзадачи (1, 4) и (2, 3). В общем случае мы будем говорить, что
01,УД О^Л), -, UnJn\ N =(п — 1)л/2
есть параллельное упорядочение множества пар индексов {(z,y)| 1 < i <j С и}, если при 5 = 1 : п — 1 множества вращений
rot.set ^ = {(/r,Jr):r = 1 + n(s — l)/2:«5/2}
состоят из неконфликтующих вращений. Для этого необходимо, чтобы п было четным, что мы и будем предполагать в этом разделе. (Случай нечетного п можно охватить, окаймляя матрицу А строкой и столбцом нулей и проявляя осторожность при решении подзадач, включающих эти добавочные нули.)
Хороший способ генерировать параллельное упорядочение - воспроизвести шахматный турнир с п игроками, в котором каждый должен играть с каждым ровно один раз. В случае п = 8 это повлечет за собой 7 «кругов». В первом круге мы имеем следующие четыре игры
13 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 начнут новый тур:
12 3 512 3 54 6 8 74 6 8 7rot.set^ = {(1,4),(2,6),(3 8), (5,7)}rot.set^ = {(1,4),(2,6),(3 8), (5,7)}14 2 314 2 36 8 7 56 8 7 5rot.set^ = {(1,6),(4,8),(2,7),(3,5)}rot.set^ = {(1,6),(4,8),(2,7),(3,5)}16 4 216 4 28 7 5 38 7 5 3rot.set^ = {(1,8), (6, 7), (4,5), (2,3)}rot.set^ = {(1,8), (6, 7), (4,5), (2,3)}
12 3 5
12 3 5
4 6 8 7
4 6 8 7
rot.set^ = {(1,4),(2,6),(3 8), (5,7)}
rot.set^ = {(1,4),(2,6),(3 8), (5,7)}
14 2 3
14 2 3
6 8 7 5
6 8 7 5
rot.set^ = {(1,6),(4,8),(2,7),(3,5)}
rot.set^ = {(1,6),(4,8),(2,7),(3,5)}
16 4 2
16 4 2
8 7 5 3
8 7 5 3
rot.set^ = {(1,8), (6, 7), (4,5), (2,3)}
rot.set^ = {(1,8), (6, 7), (4,5), (2,3)}
rot.set^ = {(1,7), (5,8), (3,6), (2,4)}
rot.set^ = {(1,5),(3,7),(2,8),(4,6)}
rot.set(l) = {(1,3), (2,5), (4,7), (6,8)}
Мы можем закодировать эти действия в паре целочисленных векторов ^(1:и/2) и bot(\ *.п!1\ В течение заданного круга top (к) играет с bot(k\ к = 1 :п/2. Разбиение на пары для следующего круга достигается обновлением векторов top и bot:
function: \_t0P^ bot] = music (top, bot) m = length (top) for к = 1: m if/с = 2
new.top (к) = bot(l)
elseif к > 2
new.top (к) = top (к — 1) end if к = m
new.bot (k) = top(k) else
new.bot (k) = bot(k + 1) end end
top = new.top; bot = new.bot
end music
Используя процедуру music, мы получаем следующую параллельную процедуру Якоби.
Алгоритм 8.5.4 (Параллельный метод Якоби). Для заданной симметричной матрицы А е R" х п и погрешности tol > 0 этот алгоритм записывает в матрицу А матрицу VTAV, где И-ортогональная матрица и off(VTAV) ^ tol\\ A ||F. Предполагается, что п четное.
v=in
eps = tol\\A\\F
top = 1:2: п; bot = 2:2: п
while off (Л) > eps
for set = 1: n — 1
for к = 1: n/2
p = min(z^(/c), bot(k)) q = max (top (k), bot(k)) (c, s) = sym. schur2 (A, p, q) A = J(p, q, 0)TAJ(p, q, 9)
VJ(p, q, 0)
end
\_top, bot] = music (top, bot) end
end
Заметим, что цикл по к проходит через м/2 независимых, неконфликтующих подзадач.
Кольцевая процедура
Теперь мы покажем, как выполнять алгоритм 8.4.4 на кольцевой /2-процессорной вычислительной системе. Предположим на некоторое время, что р = л/2. В любой момент процессор Ргос(ц) располагает двумя столбцами матрицы А и соответствующими столбцами матрицы V Например, если п = 8, то столбцы матрицы А распределяют от шага к шагу как показано ниже:
Proc(l)
Proc (2)
Proc (3)
Proc (4)
Step 1:
[1 2]
[3 4]
[5 6]
[7 8]
Step 2:
[1 4]
[2 6]
[3 8]
[5 7]
Step 3:
[1 6]
[4 8]
[2 7]
[3 5]
И т.д.
Упорядоченные пары обозначают индексы расположенных в процессорах столбцов. Первый индекс означает левый столбец, а второй индекс - правый столбец. Таким образом, левый и правый столбцы в Ргос(З) в течение шага 3 это 2 и 7, соответственно. Эта терминология используется ниже в параллельной процедуре.
Заметим, что между шагами столбцы сдвигают в соответствии с перестановкой, определяемой процедурой music, и что связи с ближайшими соседями сохраняются. На каждом шаге каждый процессор имеет дело с одной подзадачей. Она включает (а) вычисление ортогональной матрицы VsmaU g R2 х 2, решающей локальную проблему Шура размера 2x2, (Ь) использование матрицы 2x2 Vsmall для обновления двух столбцов матриц А и V, размещенных в этом процессоре, (с) пересылку 2x2 Vsmall во все другие процессоры, и (d) получение матриц Vsmall от других процессоров и локальное обновление матриц А и V соответственно. Поскольку матрица А хранится по столбцам, связь между процессорами необходима для того чтобы выполнять обновления матриц Vsmalb так как они зависят от столбцов матрицы А. Например, на втором шаге при п = 8 Proc (2) должен получить матрицы вращения 2 х 2, связанные с подзадачами (1, 4), (3, 8) и (5, 7). Они поступают из Ргос(1), Ргос(З) и Proc (4) соответственно. В общем случае, распределение матриц вращения можно удобно осуществлять посредством циркуляции матриц 2x2 Vsmall в «карусельном» режиме по кольцу процессоров. Каждый процессор копирует проходящую через него матрицу 2x2 Vsmall в свою локальную память и затем обновляет размещенные в нем части матриц А и V.
Критерий остановки алгоритма 8.5.4 вызывает определенные проблемы в системе с распределенной памятью, состоящие в том, что оценка величин off( ) и || A ||F требует доступа ко всей матрице А. Однако эти глобальные величины могут быть вычислены в течение одного цикла карусели. До того как начнется вращение, каждый процессор может вычислить свой вклад в || A ||F и off( ). Эти величины могут быть затем суммированы каждым процессором, если они расположены на карусели и считываются во время каждой остановки. После одного оборота каждый процессор будет иметь собственную копию величин || А || F и off (•). Однако для простоты в нижеследующем алгоритме мы просто останавливаемся после определенного числа чисток М.
Алгоритм 8.5.5. Пусть А - симметричная матрица размера п х п. Если каждый процессор /^-процессорного кольца выполняет следующий набор программ, то по завершении процесса Proc (ц) разместит 5(:, 2 ц — 1:2 ц) в А1ос и К(:, 2 ц — 1:2 ц) в У1ос,
где В= Vг А V- матрица, которая получится в результате М чисток по алгоритму 8.5.4. Предполагается, что р > 2.
local.init [р, ц = ту. id, left, right, п, Aloc = А(:, 2ц - 1:2ц), М]
Vloc = In^ 2ц-1:2ц)
top = 1:2:п; hot = 2:2:и
{Установить партнеров коммутационной сети для перетасовки столбцов Lsend, Rsend = куда левый (правый) столбец передается Lrecv, Rrecv = откуда новый левый (правый) столбец берется.}
if ц = 1
Lsend = 1; Rsend = 2, Lrecv = 1; Rrecv = 2
elseif ц = p
Lsend = p; Rsend = p — 1; Lrecv = p — 1; Rrecv = p; else
Lsend = ц + 1; Rsend = ц — 1; Lrecv = ц — 1; Rrecv = ц + 1 end
for sweep = 1:M
for set = 1: n — 1
p = min (top (ц), /ш(ц)); q = max(top(\£), bot^
k 5) = sym. schur 2 (Л/ос ([p, q\, 1:2), 1, 2); Vsmall =
Л-loc Л-ioc ^small ’ ^loc ^/oc ^small
{Сдвинуть матрицы 2x2 P^maH по кольцу.}
X = ц
for k = 1: p sendee, right); v^VVsmaU, left) ifX = 1
X = p else
X = X- 1 end {Принять матрицу Vsmall от Proc(X)} p0 = min (top (X), botQf); q0 = max (top (X), bot(X)) Aloe (Oo» ^o]’ •) = ^small Aioc([p0, q^\, •), end
{Тасовка столбцов для подготовки следующего множества вращений.} send (Aloc(:, 1), Lsend); send (А 1ос(:, 2), Rsend)
reev(Aioc(:, 1), Lrecv); reev(Aloc(:, 2), Rrecv)
send(^oc(:, 1), Lsend); send(Pjoc(:, 2), Rsend) reev(^oc(:, 1), Lrecv); reev(Vloc(:, 2), Rrecv) ^top, bot] = music (top, bot) end
end
Порядок команд send и reev, связанных с тасовкой столбцов существен. Читатель, должно быть, заметил почему: левый и правый столбцы оба должны быть переданы после требуемой перестановки.
Блочная процедура Якоби
Обычно когда решают симметричную проблему собственных значений на р-процессорной системе, п» р. В этом случае может быть использована блочная
версия алгоритма Якоби. Блочная версия описанной выше процедуры строится непосредственно. Предположим, что п = rN и что мы разбили матрицу А размера п х п на блоки следующим образом:
А =А =Ai^N1Ai^N1^1N^NN^1N^NN
А =
А =
Ai
^N1
Ai
^N1
^1N
^NN
^1N
^NN
Здесь каждый блок А и- матрица размера г х г. В блочном методе Якоби (р, q) подзадачи включают в себя вычисление разложения Шура размера 2x2:
V Vрр pqV VL r qp Т qq -IV Vрр pqV VL r qp Т qq -ID,p 0Lo 2)JD,p 0Lo 2)JААЛ VV
V V
рр pq
V V
L r qp Т qq -I
V V
рр pq
V V
L r qp Т qq -I
D,p 0
Lo 2)J
D,p 0
Lo 2)J
ррpq ррpq
АА VV
L qpqq a t-rqpqq -*
и последующее применение к матрице А блочного вращения Якоби, осуществляемого совместно матрицами V^. Обозначим это блочное вращение через И.Легко показать, что
off(7r AVY = ofW - (2 || Apq ||^ + o^AppY + oHUqqYY
Блочные процедуры Якоби имеют много интересных вычислительных аспектов. Например, существует много способов решать подзадачи и выбор оказывается существен. См. [Bischof, 1987].
SVD-процедура Якоби
Наконец, мы заметим, что для каждой приведенной выше процедуры Якоби для симметричной проблемы собственных значений существует соответствующий аналогичный алгоритм SVD. Подзадачи в этом случае состоят в 2 х 2 SVD-вычислении, т. е.
С1 ^1^рр ^pq-^1 ^1 -- ^qp ^qq -С1 ^1^рр ^pq-^1 ^1 -- ^qp ^qq -С2 S2-52 С2_С2 S2-52 С2_dp 0 '-0 dq_*dp 0 '-0 dq_*
С1 ^1^рр ^pq
-^1 ^1 -- ^qp ^qq -
С1 ^1^рр ^pq
-^1 ^1 -- ^qp ^qq -
С2 S2
-52 С2_
С2 S2
-52 С2_
dp 0 '
-0 dq_*
dp 0 '
-0 dq_*
Детали см. в задачах 8.5.1 и 8.5.2.
Задачи
(а) Пусть матрица
И’ X
С =
Ly yJ
вещественная. Предложить устойчивый алгоритм вычисления величин с и 5, удовлетворяющих равенству с2 + s2 = 1, таких, что матрица
симметричная. (Ь) Комбинируя (а) с тригонометрическими вычислениями метода Якоби, описанными выше, получить устойчивый алгоритм вычисления SVD матрицы С. (с) Часть (Ь) можно использовать для разработки Якоби-подобного алгоритма для вычисления SVD матрицы А еШ? х п. Для заданной пары (р, q\ где р < q, преобразования Якоби Др, q, 0J и J^p, q, 02) определяют так, что если
В = J (р. q, в,)1 A J(р, q, 02),
то bpq = bqp = 0. Показать, что
off(5)2 = off(/l)2 - A2, - bqp.
Как лучше выбирать р и q? Как можно модифицировать этот алгоритм для того, чтобы охватить случай, когда А е R'” х п с т> nt
55%5.1. Предположим, что векторы х и у принадлежат R", и определим матрицу Q следующим образом:
5
5
Q =
Предложить устойчивый алгоритм вычисления величин с и 5, таких, что столбцы матрицы [х ^] Q взаимно ортогональны. Основная идея «односторонних» Якобшподобных SVD- алгоритмов состоит в том, чтобы найти ортогональную матрицу V, такую, что столбцы матрицы В = А V- взаимно ортогональные. Матрица U в SVD-разложении может быть затем найдена путем нормализации столбцов.
Пусть задана скалярная величина у вместе с матрицей
Необходимо вычислить ортогональную матрицу
— 5 С.
такую, что элемент (1, 1) матрицы F Т AF равен у. Показать, что эти требования приводят к уравнению
(w — у) т2 — 2х т + (z — у) = 0,
где т = c/s. Проверить, что это квадратное уравнение имеет вещественные корни, если величина у удовлетворяет неравенству Х2 ^ у ^ Xt, где Xt и Х2-собственные значения матрицы А.
Пусть AeRn х п-симметричная матрица. Используя задачу 8.5.3, предложить алгоритм, который вычисляет разложение
QTAQ = fI + F,
где Q - произведение вращений Якоби, у = trace (Л)/л и матрица F имеет нулевые диагональные элементы. Рассмотреть вопрос о единственности матрицы Q.
Сформулировать процедуру Якоби для (а) кососимметричной матрицы и (Ь) комплексной эрмитовой матрицы.
Разобьем вещественную симметричную матрицу А размера п х п на блоки следующим образом
Пусть Q означает матрицу Хаусхолдера, такую, что если В = QT AQ, то B(3:ns 1) = 0. Пусть матрица вращения J = J(l, 2, 6) определена так, что если С = J т BJ, то с12 = 0 и схх ^ с21. Показать, что cvx ^ а + 11 v 1|2. Ла Будде [La Budde, 1964] сформулировал алгоритм для симметричной проблемы собственных значений, основанный на повторении этих хаусхолдер- якобиевых вычислений.
Организовать процедуру music так, чтобы она требовала как можно меньше рабочей памяти.
Модифицировать алгоритм 8.5.5 так, чтобы он останавливался, когда off (Л) < tol\ | А | |F.
Модифицировать алгоритм 8.5.5 так, чтобы он вычислял SVD.
Замечания и литература к § 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 CD. (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. С. (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.
Установление квадратичной сходимости классической и циклической итераций Якоби увлекло нескольких авторов
Brodlie К. W. and PowellM. J. D. (1975). ”On the Convergence of Cyclic Jacobi Methods”, J. Inst. Math. Applic. 15, 279-87.
Hansen E. R. (1962). ”On Quasicyclic Jacobi Methods”, ACM J. 9, 118-35.
Hansen E. R. (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. Appl. Math. 6, 144-62.
Henrici P. and Zimmermann K. (1968). ”An Estimate for the Norms of Certain Cyclic Jacobi Operators”, Lin. Alg. and Its Applic. 1, 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.P. (1959). ”А 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. H. С. (1971). ”An Eigenvalue Algorithm for Skew Symmetric Matrices”, Numer. Math. 17, 189-202.
Существенно, что анализ и алгоритмические разработки, приведенные в этой работе, охватывают случай нормальных матриц без значительной модификации. Это замечание, вообще говоря, относится и к Якоби-подобным методам для 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 M., Van Dooren 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. (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 Р. 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 Triangularization 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 Р. 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
and Singular Value Decompositions”, in Proc. International Conference on Parallel Processing, 433-440.
Bischof C.H. (1987). “The Two-Sided Block Jacobi Method on Hypercube Architectures”, in Hypercube Multiprocessors, ed. M.T. HeaTH; SIAM Press, Philadelphia.
Bischof C.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. M.T. Heath, SIAM Publications,, Philadelphia.
Luk F. T. (1980). “Computing the Singular Value Decomposition in the ILLI AC 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-3 56.
Shroff G. and Scheiber R. (1987). “Convergence of Block Jacobi Methods”, Report 87-25, Comp. Sci. Dept., RPI, Troy, NY.
Метод «разделяй и властвуй»
00В этом разделе мы опишем алгоритм «разделяй и властвуй» для вычисления собственных значений и собственных векторов симметричной трехдиагональной матрицы
0
0
а1 61
61 02
Т =
006п — 16п — 1&п-1Оп&п-1Оп
0
0
6п — 1
6п — 1
&п-1Оп
&п-1Оп
Он вычисляет разложение Шура
(8.6.1)(8.6.1)^7e = A = diag(k1, ...,XJ, QTQ = L
(8.6.1)
(8.6.1)
склеивая вместе разложения Шура двух специальных трехдиагональных проблем вдвое меньшего размера. Каждая из этих проблем может быть определена в свою очередь парой разложений Шура вчетверо меньшего размера и т. д. Полная процедура, благодаря Донгарре и Соренсену [Dongarra, Sorensen, 1987], удобна для параллельных вычислений.
8.6.1. Расщепление8.6.1. РасщеплениеСначала мы покажем, как матрица Тможет быть «расщеплена» на две части при помощи одноранговой модификации. Для простоты пусть п = 2т. Определим вектор veR” следующим образом:Сначала мы покажем, как матрица Тможет быть «расщеплена» на две части при помощи одноранговой модификации. Для простоты пусть п = 2т. Определим вектор veR” следующим образом:г =г =Заметим, что для всех peR матрица «четырех средних» элементов:Заметим, что для всех peR матрица «четырех средних» элементов:Т= Т— ри иТ= Т— ри иT(m:m + 1, m:m + 1) =T(m:m + 1, m:m + 1) =О-ТП РО-ТП Р6т р^6т р^(8.6.2)(8.6.2)идентична матрице Т, кромеидентична матрице Т, кромеЬтп рвЬтп рвam+i - р02 _am+i - р02 _
8.6.1. Расщепление
8.6.1. Расщепление
Сначала мы покажем, как матрица Тможет быть «расщеплена» на две части при помощи одноранговой модификации. Для простоты пусть п = 2т. Определим вектор veR” следующим образом:
Сначала мы покажем, как матрица Тможет быть «расщеплена» на две части при помощи одноранговой модификации. Для простоты пусть п = 2т. Определим вектор veR” следующим образом:
г =
г =
Заметим, что для всех peR матрица «четырех средних» элементов:
Заметим, что для всех peR матрица «четырех средних» элементов:
Т= Т— ри и
Т= Т— ри и
T(m:m + 1, m:m + 1) =
T(m:m + 1, m:m + 1) =
О-ТП Р
О-ТП Р
6т р^
6т р^
(8.6.2)
(8.6.2)
идентична матрице Т, кроме
идентична матрице Т, кроме
Ьтп рв
Ьтп рв
am+i - р02 _
am+i - р02 _
Если мы положим рб = Ьт, то
гдегдеТ\Т\г2г2т =т =«1«16161ООоо" Tiо" TiоОТ2ОТ2+ pwT,+ pwT,bibi«2«2Ь,Ь,ООЬтп —Ьтп —bm+1bm+1^т + 2^т + 2ООЬп- &ПЬп- &Па ат=_ат-р и ат+х=ат + х- р02.а ат=_ат-р и ат+х=ат + х- р02.8.6.2. Объединение разложений ШураПусть у нас есть ортогональные матрицы Qx и Q28.6.2. Объединение разложений ШураПусть у нас есть ортогональные матрицы Qx и Q2размера m х ш, такие, чторазмера m х ш, такие, чтокаждая из матриц Qi TXQV = Dv и QiT2Q2 = D2-диагональная. Если положитькаждая из матриц Qi TXQV = Dv и QiT2Q2 = D2-диагональная. Если положитьU =U =Qi_оQi_ооQi- ’оQi- ’тото• итти = ит• итти = итТх о-0 г2_Тх о-0 г2_pvvT j U = D + pzzT ,pvvT j U = D + pzzT ,(8.6.3)(8.6.3)
где
где
Т\
Т\
г2
г2
т =
т =
«1
«1
61
61
О
О
о
о
" Ti
о
" Ti
о
О
Т2
О
Т2
+ pwT,
+ pwT,
bi
bi
«2
«2
Ь,
Ь,
О
О
Ьтп —
Ьтп —
bm+1
bm+1
^т + 2
^т + 2
О
О
Ьп- &П
Ьп- &П
а ат=_ат-р и ат+х=ат + х- р02.
а ат=_ат-р и ат+х=ат + х- р02.
8.6.2. Объединение разложений Шура
Пусть у нас есть ортогональные матрицы Qx и Q2
8.6.2. Объединение разложений Шура
Пусть у нас есть ортогональные матрицы Qx и Q2
размера m х ш, такие, что
размера m х ш, такие, что
каждая из матриц Qi TXQV = Dv и QiT2Q2 = D2-диагональная. Если положить
каждая из матриц Qi TXQV = Dv и QiT2Q2 = D2-диагональная. Если положить
U =
U =
Qi
_о
Qi
_о
о
Qi- ’
о
Qi- ’
то
то
• итти = ит
• итти = ит
Тх о
-0 г2_
Тх о
-0 г2_
pvvT j U = D + pzzT ,
pvvT j U = D + pzzT ,
(8.6.3)
(8.6.3)
где матрицагде матрицаD =D =Dx ОО D2Dx ОО D2диагональная идиагональная иz = UTv =z = UTv =Qlem " 022^1- *Qlem " 022^1- *(8.6.4)(8.6.4)
где матрица
где матрица
D =
D =
Dx О
О D2
Dx О
О D2
диагональная и
диагональная и
z = UTv =
z = UTv =
Qlem " 022^1- *
Qlem " 022^1- *
(8.6.4)
(8.6.4)
Сравнивая (8.6.1) и (8.6.3), мы видим, что для эффективного синтеза этих двух разложений Шура вдвое меньшего размера требуется быстрое и устойчивое вычисление ортогональной матрицы V, такой, что
VT(D + pzzT)V= Л = diag^p ..., XJ.(8.6.5)
После того как матрица V вычислена, мы полагаем Q = UV, чтобы получить (8.6.1).
Собственная система матрицы D + pzzT
К счастью, матрицу вида диагональная + матрица ранга один можно диаго- нализовать очень быстро. Метод опирается на некоторые базовые теоретические результаты, которые мы сейчас установим.
Лемма 8.6.1. Пусть матрица D = diag^, ..., ^JgR” х п обладает свойством dx > > ... > dn. Предположим, что р 7й 0 и что вектор zeW не имеет нулевых компонент. Если
(D + pzzT)v = Хи, г / О,
то ztd ^ 0 и матрица D — XI невырожденная.
Доказательство. Если X е X (D), то X = dt при некотором i и, следовательно, О = еТ [(D — XI) v + p(zTv)z] = p(zTv)zf.
Поскольку р и z( не равны нулю, мы должны иметь равенство 0 = zTv и, таким образом, Du = Хи. Однако матрица D имеет различные собственные значения и, следовательно, respan{^}. Но из этого следует, что 0 = zTv = zt-противоречие. Таким образом, матрицы D и D + pzzT не могут иметь общих собственных значений и zTv / 0. □
Теорема 8.6.2. Пусть матрица D = diag^, ..., d„)eR" х п и ее диагональные элементы удовлетворяют условию dx >... > dn. Предположим, что р / 0 и что вектор zeR” не имеет нулевых компонент. Если VeR” х п-ортогональная матрица, такая, что
VT(D + pzzT)V = diag(Xp ..., XJ
с Xx > ... Xn и V= [vls ..., vj, mo
Величины Xt являются n нулями функции /(X) = 1 + pzT(D — XI)-1 z.
Если p > 0, mo Xi > dx> X2... > Xn > dn.
Если p < 0, mo dx>Xx> d2> ... > dn > Xn.
Собственный вектор и{ сонаправлен с (D — ХД)-1 z.
Доказательство. Если (D + pzzT) v = X и, to
ф - XI)v + p(zTv)z = 0.(8.6.6)
Мы знаем из леммы 8.6.1, что матрица D — XI невырожденная. Следовательно,
v е span ^D — XI)" Yz),
что устанавливает (с). Кроме того, если мы умножим матрицу zT(D — XI) 1 на обе части уравнения (8.6.6), то получим равенство
zTv(l + pzT(D — XI)-1 z) = 0.
Согласно лемме 8.6.1, zTv ^ 0, и, следовательно, это равенство показывает, что если X е X (D + р z zT\ то /(X) = 0. Мы должны показать, что все нули функции / являются собственными значениями матрицы D + pzzT и что имеет место чередование (Ь).
Для того чтобы сделать это, посмотрим более внимательно на уравнения
/ z2Z2 \
— 1 + P’
\ W| К ап К /
/ W = - Р I 73772 + - + 7л*
X - ХУ щп - ХУ /
Заметим, что функция/монотонна между полюсами. Это позволяет нам заключить, что если р > 0, то f имеет точно п корней, по одному в каждом из интервалов
<dnA-iV.Ad2M №,*)).
Если р < 0, то функция / также имеет точно п корней, по одному на каждом из интервалов
(- оо,<), (d^d^A -Ad^dA.
В обоих случаях из этого следует, что нули функции /-это в точности собственные значения матрицы D + р v vT. □
Эта теорема наводит на мысль для вычисления матрицы К (а) найти корни Хь ..., Хп функции / и затем (Ь) вычислить столбцы матрицы К нормализуя векторы ф — ХДУхг при i=\:n. До того как мы начнем рассматривать практические аспекты этих вычислений, мы покажем, что точно такому же плану можно следовать, даже если встречаются кратные dt и нулевые zv
Теорема 8.6.3. Если матрица D = diag^,...,^) и вектор zeR”, то существует ортогональная матрица Vv такая, что если F^DY = diag^p... ,ци) и w = V\z, то
Mi >р2>... >pr>pr+1 >... >рп)
W; / 0 при i = 1: г и wt = 0 при i = г + 1: п.
Доказательство. Мы дадим конструктивное доказательство, основанное на двух элементарных операциях, (а) Пусть dt = dj при некотором i < j. Пусть Jii.j, 0) есть вращение Якоби в плоскости (z, у), обладающее тем свойством, что j-я компонента матрицы J(z, у, 0)т-нулевая. Нетрудно показать, что J(z, у, O)TDJ(z, у, 0) = D. Следовательно, мы можем обнулить компоненту вектора z, если существует кратное dv (b) Если zt = 0, Zj ф 0, и z < у, то пусть Р есть единичная матрица с переставленными столбцами г и у. Тогда матрица РТ DP- диагональная, (Рт z\ / 0, и (Рт z)j = 0. Следовательно, мы можем переставить все нулевые компоненты zt «вниз». Понятно, что повторением операций (а) и (Ь) можно получить требуемую каноническую структуру. Матрица ¥г является произведением матриц вращения. □
Практический синтез
Практическое определение разложения (8.6.5) состоит в разумном применении теорем 8.6.2 и 8.6.3. Матрица V находится после этого как произведение V= VY Уг. Ортогональную матрицу У можно получить, выполняя редукцию, указанную в
теореме 8.6.3. Конечно, на практике нам нужен критерий для принятия решения, когда два диагональных элемента различные и когда элемент z можно рассматривать как нулевой. Пусть lot - небольшая величина порядка машинной точности, например, tol = u (|| D ||2 + | р 1|| z ||2)). Определим ортогональную матрицу Ц и целое число г(1 ^ г ^ п), такие, что 7ГDVX = diag^, ...,ци) и w = V{z с (а) щ — ц1 + 1 > tol при i = 1: г — 1, (Ь) | wt | ^ tol при i = 1: г и (с) | ^ | < tol при i = г + 1: п. Выполняя замещение D*-V\DVX и z*-Vxz, мы придем к задаче нахождения матрицы V2eRr х \ такой, что
.^1(0(1 :r, 1 :r) + pz(l:r)z(l:r)r)P2 = diag(Xi,... ДД
Замечая, что теорема 8.6.2 применима к этой подзадаче, поставим в качестве первой задачи нахождение г нулей функции
/(X) = 1 + Р S .
Пусть р > 0. (Если это не так, заменим р на — р и D на — D.) Пусть Xf - единственный нуль функции / в открытом интервале (db d^^, где мы полагаем d0 = оо. Нелинейное уравнение/(X) = 0 в интервале (db dt_x) может быть решено с помощью очень быстрых ньютоно-подобных итераций, основанных на рациональном приближении функции / на каждой текущей итерации. Секулярное уравнение прекрасно устроено, и есть возможность начать ньютоновский процесс с хорошего начального приближения. Если ^-вычисленный корень секулярного уравнения, то /-й столбец матрицы V2 находится посредством нормализации вектора (D (1: г, 1: г) — — XJ^-1 z(l: г). Заметим, что V = Vx Р2, где V2 = diag(P2, In _ ^). Детали можно найти в работе [Dongarra, Sorensen, 1987] вместе с анализом ошибок округления, показывающего ортонормальность вычисленной матрицы И
Полный процесс с параллелизмом
Рассмотрев операции расщепления и синтеза, мы готовы к тому, чтобы пояснить весь процесс и то, как он может быть реализован на многопроцессорной системе. Для ясности предположим, что п = 8N при некотором положительном целом N и, что выполняются три уровня расщепления. Мы можем изобразить это при помощи двоичного дерева следующим образом:
Т(100) Т(101) Т(110) Т(111)Т(100) Т(101) Т(110) Т(111)
Т(100) Т(101) Т(110) Т(111)
Т(100) Т(101) Т(110) Т(111)
Рис. 8.6.1. Вычислительное дерево. Здесь для индексов использованы двоичные коды и схемы.
Т(Ь)АТ(ЬО) Т(Ы)
Рис. 8.6.2. Вершина.
Рис. 8.6.2 означает, что собственная система трехдиагональной матрицы T(b) получается из собственных систем трехдиагональных матриц Т(Ь^ и T(b 1). Например, собственные системы N х N матриц 7(110) и 7(111) в комбинации дают собственную систему трехдиагональной матрицы 7(11) размера 2N х 2N.
Для алгоритмов, имеющих древовидную структуру, всегда существует опасность, что параллелизм теряется при подъеме к корню, но в нашей задаче это не так. Для того чтобы увидеть это, предположим, что у нас есть 8 процессоров и что первая задача процессора Proc ф) состоит в вычислении разложения Шура матрицы Тф), где b = ООО, 001, 010, 011, 100, 101, ПО, 111. Эта часть вычислений вполне сбалансирована и не требует межпроцессорных связей. (Мы игнорируем исчерпывания теоремы 8.3, которые вызывают значительный дисбаланс загруженности.) На следующем уровне нужно выполнить четыре операции склейки: 7(00), 7(01), 7(10), 7(11). Однако каждое из этих вычислений изящно разделяется на части и мы можем использовать два процессора для решения каждой задачи. Например, поскольку секулярное уравнение, которое лежит в основе синтеза 7(00), известно обоим процессорам 7(000) и 7(001), то каждый из них может взять на себя получение половины всех собственных значений и соответствующих собственных векторов. Точно так же четверки процессоров могут быть использованы для решения задач 7(0) и 7(1). Все 8 процессоров могут разделиться при вычислении собственной системы матрицы 7 Таким образом на любом уровне можно достичь полного параллелизма, поскольку вычисления собственных значений/собственных векторов не зависят друг от друга.
Задачи
Предложить алгоритм определения величин р и 0 в (8.6.3), обладающих свойством 0 е { — 1,1 } и min {| аг — р |, | ат^ t — р |} - максимален.
Показать, что если D ^diag^^ , .^. , dn\ zj + zj / 0, i < j\ и Ц (ij\Q\r z)j = 0, то внедиагональная часть матрицы J У,]\^\г DJ (iJ,Q) имеет норму Фробениуса, равную
,\di-dj\\zi2j\/(zf +
Какие связи необходимы между процессорами для части Ть? Можно ли распределить между процессорами работу, связанную с кратными di и нулевыми z^
Если матрица 7положительно определена, следует ли из этого, что матрицы Тх и 72 из § 8.6.1 положительно определены?
Замечания и литература к § 8.6
Алгоритм, обсуждавшийся в этом разделе, детально рассмотрен в работе
Dongarra J. J. and Sorensen D. С. (1987). “A Fully Parallel Algorithm for the Symmetric Eigenvalue Problem”, SIAM J. Sci. and Stat. Comp. 8, SI39 SI54.
Критические аспекты этого алгоритма берут начало из следующих работ
Bunch J. R., Nielsen С. Р., and Sorensen D. С. (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.
Golub G. Н. (1973). “Some Modified Matrix Eigenvalue Problems”, SIAM Review 15, 318-44.
SVD-версии и способ перехода к общему ленточному случаю обсуждаются в
Arbenz Р., Gander W., and Golub G. Н. (1988). “Restricted Rank Modification of the Symmetric Eigenvalue Problem: Theoretical Considerations”, Lin. Alg. and Its Applic. 104, 75-95.
Arbenz P. and Golub G. H. (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, Argonne National Laboratory, Argonne, IL.
8.7. Более общие проблемы собственных значений
Часто в обобщенной проблеме собственных значений Ах = X Вх матрица Л-симметричная, а матрица В-симметричная и положительно определенная. Пучки такого рода называют симметрично определенными пучками. Это свойство сохраняется при преобразовании конгруэнтности:
А — ХВА — ХВ(ХТ АХ)-Х(ХТ ВХ^(ХТ АХ)-Х(ХТ ВХ^
А — ХВ
А — ХВ
(ХТ АХ)-Х(ХТ ВХ^
(ХТ АХ)-Х(ХТ ВХ^
симметрично-определен-ныйсимметрично-определен-ныйсимметрично-определен-ныйсимметрично-определен-ный
симметрично-определен-ный
симметрично-определен-ный
симметрично-определен-ный
симметрично-определен-ный
В этом разделе мы приводим различные сохраняющие структуру процедуры, решающие такую проблему собственных значений. Обсуждается также связанная с ней обобщенная проблема сингулярных значений.
Математические основы
Хотя QZ-алгоритм из § 7.7 можно использовать для решения симметричноопределенной проблемы, он разрушает как симметричность, так и положительную определенность. То, что мы ищем, это устойчивый, эффективный алгоритм, вычисляющий матрицу X, такую, что обе матрицы ХтАХ и Хт ВХ имеют «каноническую форму». Очевидной формой, отвечающей этой цели, является диагональная форма
Теорема 8.7.1. Предположим, что А и В - симметричные матрицы размера п х п, и определим С(ц) как
(8.7.1)(8.7.1)С(ц) = цЛ + (1 - ц)В, peR.
(8.7.1)
(8.7.1)
Если существует некоторое ре[0, 1], такое, что матрица С^ неотрицательно определенная и
null (С (ц)) = null (Л) П null (В),
то существует невырожденная матрица X, такая, что обе матрицы ХТ АХ и Хт ВХ диагональные.
Доказательство. Пусть величина це[0, 1] выбрана так, что матрица С(р) неотрицательно определенная и обладает свойством null (С (ц)) = null (Л) П null (В). Пусть
QlC^Qv =QlC^Qv =D О0 0D О0 0, D = diag (dv..., d^, ^ > 0,, D = diag (dv..., d^, ^ > 0,
QlC^Qv =
QlC^Qv =
D О
0 0
D О
0 0
, D = diag (dv..., d^, ^ > 0,
, D = diag (dv..., d^, ^ > 0,
-разложение Шура матрицы С(ц) и Хх = Q^iag^ _1/2, In_k\ Если Ах = XlAXx,
B = XlBXv и Сг =Х[С(ц)Х1г то
CiCi"Л о"-О 0_"Л о"-О 0_= цЛ, + (1 - ц)^.= цЛ, + (1 - ц)^.
Ci
Ci
"Л о"
-О 0_
"Л о"
-О 0_
= цЛ, + (1 - ц)^.
= цЛ, + (1 - ц)^.
Так как span {ек +,,..., е„} = null (С,) = null (A J П null (8 J, то из этого следует, что матрицы Ах и Вх имеют следующую блочную структуру:
ЛцО к в =
О0_ п — к’1 _0 0_ п — к*
кп — кк п — к
Более того, 1к = цАхх + (1 — p)B1P
Пусть ц / 0. Тогда, если ZT Вхх Z = diag(bv...,b^ разложение Шура матрицы £п и мы положим X = Хх diag (Z, 1п_к\ то
X ТВХ = diag фх...., bk. 0,..., 0) = DB
и
Хт АХ = - Хт(С(и) - (1 - ц)8) X =
= И[о о]-^-^)^-
С другой стороны, если ц = 0, то пусть ZTAXX Z = diag(а^... акк)-разложение Шура матрицы Ахх и X = X1diag(Z, 1п_к\ Несложно проверить, что в этом случае также обе матрицы ХТАХ и ХТВХ диагональные. □
Часто условия теоремы 8.7.1 выполняются из-за того, что или матрица А, или матрица В положительно определенная.
Следствие 8.7.2. Если A — XBEKnx п симметрично-определенный пучок матриц, то существует невырожденная матрица X = [x^-.^xj, такая, что
ХТ АХ = diag^p...,^), ХТЯХ = diag (Z>p...,»„).
Кроме того, Axt = Xf Bxt при i = 1: п, где Xt = ajbv
Доказательство. Полагая ц = 0 в теореме 8.7.1, мы видим, что симметрично-определенный пучок может быть одновременно диагонализован. Остальная часть следствия легко проверяется. □
Пример 8.7.1. Если
229 16381 59
и В =163 11659 43
то пучок А-ХВ симметрично-определен и Х^А, В) = {5, —1/2}. Если
X =X =33-57-57
X =
X =
3
3
-5
7
-5
7
то ХТАХ = diag(5,-1) и X тВХ = diag(l, 2).
Стюарт [Stewart, 1979b] разработал теорию возмущения для симметричного пучка А — X В, удовлетворяющего условию
с^А,В) = min (хТ Ах)2 + (хтВх)2 > 0.(8.7.2)
II Н2 = 1
Эту скалярную величину называют числом Крауфорда пучка А — X В.
Теорема 8.7.3. Пусть А — XВ-симметрично-определенный пучок размера пхп с собственными значениями
^i ^ Х^ ^ ••• ^ Хп.
Пусть Еа и Ев - симметричные пхп матрицы, удовлетворяющие неравенству е2= НЕ^Ч- ||£в||!<с(Л,5).
Тогда (А + ЕЛ) — Х^В + Ев) является симметрично-определенным пучком с собственными значениями pt ^ ... ^ цл, удовлетворяющими неравенству*
|arctg(Zf) - arctg(pf)| ^ arctg (г/с (А, В))
при i = 1: п.
Доказательство. См. [Stewart, 1979b]. □
Методы для симметрично-определенной проблемы
Возвращаясь к алгоритмическим вопросам, мы прежде всего рассмотрим метод решения симметрично-определенной проблемы, который использует разложение Холецкого и симметричный QR-алгоритм.
Алгоритм 8.7.1. Для заданных матриц А = АТ еКп хп и В = Вт еКп х п, где 5-положительно определенная матрица, следующий алгоритм вычисляет невырожденную матрицу X, такую, что Хт ВХ = 1п и ХтАХ = diag(a1?...,а^.
Вычислить разложение Холецкого В = GGт, используя алгоритм 4.2.2.
Вычислить матрицу С = G"1 AG" т.
Использовать симметричный OR-алгоритм для вычисления разложения
Шура QTCQ = diag^,...,^).
Положить X = G т Q.
Этот алгоритм требует примерно 14 м3 флопов. В практической реализации, матрицу А можно замещать матрицей С. Детали смотри в [Martin, Wilkinson, 1968с]. Заметим, что
X(А, В) = X^A,GGT) = X^G"1 AG" ТД) = Х(С) = {а^а,,}.
Если ^-вычисленное собственное значение, полученное по алгоритму 8.7.1, то можно показать, что a^X^G"1 AG" т + Е(), где || Е{ ||2 « и || А ||2 || В"1 ||2. Следовательно, если матрица В плохо обусловлена, то щ может быть несколько испорчено погрешностью округления, даже если at-хорошо обусловленное обобщенное собственное значение. Проблема, конечно, в этом случае в том, что матрица С = G"1 AG"1 может иметь очень большие элементы, если матрица В и, следовательно, G, плохо обусловлена. Эту трудность можно иногда обойти, заменяя матрицу G в алгоритме 8.7.1 на матрицу VD" 1,2, где VT BY = D- разложение Шура матрицы В. Если диагональные элементы матрицы D упорядочены в порядке возрастания, то большие элементы в матрице С будут сконцентрированы в верхнем
левом углу. Малые собственные значения матрицы С могут быть вычислены без чрезмерной погрешности округления (или таковы эвристические выводы). Дальнейшее смотри в [Wilkinson, АЕР], с. 337-38.
Пример 8.7.2. Если
А =
"12 3"!Г 0.00100
2 4 5, G =10.0010
3 5 6|_ 210.001_
ц В = GGl\ то два наименьших собственных значения пучка А — ХВ есть
ах= - 0.619402940600584, а2 = 1.627440079051887.
Если использовать 17-разрядную арифметику с плавающей запятой, то эти собственные значения будут вычислены с полной машинной точностью, если симметричный QR-алгоритм применять к матрице fl^D-V 2VrAVD-vl2\ где B=VDVr разложение Шура матрицы В. С другой стороны, если применяется алгоритм 8.7.1, то
ах = - 0.619373517376444, а2 = 1.627516601905228.
Причина получения только четырех правильных значащих цифр в том, что к2(В) « 1018.
Обусловленность матрицы X в алгоритме 8.7.1 иногда можно улучшить, заменяя матрицу В подходящей выпуклой комбинацией матриц А и В. Связь между собственными значениями этого модифицированного пучка и собственными значениями исходного пучка подробно рассматривается в доказательстве теоремы 8.7.1.
Другая проблема, касающаяся алгоритма 8.7.1, связана с тем, что матрица G"v AG" Т, вообще говоря, плотная, даже если матрицы А и В разреженные. Это серьезная проблема, так как многие симметрично определенные задачи, возникающие на практике, большие и разреженные.
Крауфорд [Crawford, 1973] показал, как эффективно применять алгоритм 8.7.1, когда матрицы А и В-ленточные. Однако за исключением этого случая подход, связанный с одновременной диагонализацией не практичен для больших разреженных симметрично-определенных проблем.
Альтернативная идея состоит в том, чтобы обобщить итерации с отношением Рэлея (8.4.4) следующим образом
Задан вектор х0 с ||х0||2 = 1.
fork = О, 1, ...
(8.7.3)(8.7.4)(8.7.5)(8.7.3)(8.7.4)(8.7.5)Ht = xl Axjxl Вхк
(8.7.3)
(8.7.4)
(8.7.5)
(8.7.3)
(8.7.4)
(8.7.5)
Решить уравнение (А — щ В) zk + t = Вхк относительно zk + х.
Хк + 1 = Zk + l/ll Zk + 1 II 2 end
Математической основой этих итераций является то, что
хт Ах X = хт Вх
минимизирует
Ж= II Ax-XBx\\Bs
где || • ||в определена как || z \\в = zT В"х z. Математические свойства итераций (8.7.3) подобны свойствам итераций (8.4.4). Их применимость зависит от того, может или нет быть легко решена система вида (А — ц В) z = х. Подобное замечание относится
и к следующим обобщенным ортогональным итерациям
Задана матрица 50еКпхр с QoQo = 1Р.
for к = 1, 2, ...
Решить уравнение BZk = AQk_v относительно Zk.(8.7.6)
Zk = Qk Rk (QR-разложение)
end
Этот алгоритм математически эквивалентен алгоритму (7.3.4) с матрицей А, замененной на В-1 А. Его практичность зависит от того, насколько легко решать линейные системы вида Bz = у.
Иногда матрицы А и В такие большие, что ни (8.7.3), ни (8.7.6) не могут помочь. В этой ситуации можно прибегнуть к любому из градиентных или релаксационных алгоритмов. См. [Stewart, 1976b], где приведен обширный список литературы.
Обобщенная проблема сингулярных значений
Мы закончим некоторыми замечаниями о симметричных пучках, которые имеют вид АТА — ХВТВ, где AeRmxn и BeRpxn. Этот пучок допускает обобщенное сингулярное разложение (GSVD-разложение), которое полезно для особым образом устроенных методов наименьших квадратов (§ 12.1). Заметим, что по теореме 8.7.1 существует невырожденная матрица XERnx\ такая, что обе матрицы ХТ(АТА)Х и Хт (Вт В) X - диагональные. Значение GSVD в том, что эти диагонализации можно получить без формирования матриц АТА и Вт В.
Теорема 8.7.4 (Обобщенное сингулярное разложение). Если AERmxn с т^п и BeRp х ns mo существуют ортогональные матрицы UERmxm и VeRp х р и обратимая матрица ХеКпх ns такие, что
UTAX = C = diag(c1,...,cJ, с^ О,
и
VTBX = S = diag^^...,^), s( ^ О, где q = min ip. и).
Доказательство. Доказательство этого разложения появилось в работе Van Loan [1976]. Мы приведем более конструктивное доказательство в духе Paige, Saunders [1981]. Для ясности предположим, что null (Л) П null (В) = {0} и р ^ п. Мы оставим читателю обобщить доказательство так, чтобы оно охватывало все случаи.
Пусть
АВАВQiLe2JQiLe2JRR(8.7.6)(8.7.6)
А
В
А
В
Qi
Le2J
Qi
Le2J
R
R
(8.7.6)
(8.7.6)
является ()Я-факторизацией с матрицами Q1ERmx п, Q2eRp х п и ReR” х п. Пейдж и Саундерс показали, что SVD матриц Qv и Q2 связаны в том смысле, что
Qx = UCWT, Q2 = У51УГ.(8.7.7)
Здесь U, V и РУ-ортогональные матрицы, С = diag(cf) с 0 ^ ct ^ ... ^ сп, S = diag(^) с st > ... > snn СТ С -V ST S = 1п. Разложение (8.7.7)-вариант CS разложения из § 2.6, поэтому А = QtR = UC(WTR) и В = Q2R = VS(WTR). Теорему доказывает подстановка X = (WTR)-1, Da = C и Db = S. Обратимость матрицы R следует из нашего предположения, что null (Л) П null (В) = {0}. Мы оставляем читателю детально рассмотреть случай, когда матрицы А и В имеют общие нуль-векторы. □
Элементы множества а (А, В) = \cJsv- .cjs^ называют обобщенными сингулярными числами матриц А и В. Заметим, что ggg(A, В) означает, что g2gX(AtA, ВТ В). Эта теорема является обобщением SVD, так как если В = 1п, то о (Л, B) = g(A\
Наше доказательство GSVD имеет практическую ценность, так как Стюарт (Stewart, 1982) и Ван Лоан (Van Loan, 1985) показали, как вычислять CS-разложение устойчиво. Единственной хитрой частью является обращение матрицы WT R для получения матрицы X. Заметим, что столбцы матрицы X = [x^-.^xj удовлетворяют равенству
SiATAxt = c2BTBxis i = 1 :я,
и, следовательно, если sx ^ 0, то Ат Ахt = g2 Вт Вхь где Gi = с^. Поэтому вектор х( естественно назвать обобщенным сингулярным вектором пары (А, В).
В некоторых приложениях требуется ортогональный базис для построения подпространства обобщенных сингулярных векторов span {х^,...,^}. Мы покажем, как это можно сделать без каких бы то ни было матричных обращений или перекрестных умножений:
Вычислить QR-разложение
LeJ
Вычислить CS-разложение
Q1 = UCIVT, Q2=ySWT
и упорядочить диагональные элементы матриц Си S так, чтобы
klAl ,, cjs^ = {с,^,..., сф^ .
Вычислить ортогональную матрицу Z и верхнюю треугольную матрицу Т, такие, что TZ = WTR. (См. задачу 8.7.5.) Заметим, что если X"1 = WTR = = TZ, то X = Zт Т"1 и, следовательно, первые к столбцов матрицы Z являются ортогональным базисом в подпространстве span{x1,...,xj.
Задачи
Пусть матрица ЛеВ" х " симметричная, a GeR” х " нижняя треугольная и невырожденная. Предложить эффективный алгоритм вычисления С = G"x AG" т.
Пусть матрица AeRnxn симметричная, а матрица BeRnxn симметричная положительно определенная. Предложить алгоритм вычисления собственных значений матрицы АВ, использующий разложение Холецкого и симметричный QR-алгоритм.
Показать, что если матрица С вещественная и диагонализуемая, то существуют симметричные матрицы А и В (В невырожденна), такие, что С=АВ-1. Это показывает, что симметричный пучок А — ХВ-достаточно общий случай.
Показать, как преобразовать проблему Ах = ХВх в обобщенную проблему сингулярных значений, если матрицы А и В -обе симметричные и неотрицательно определенные.
Для заданной матрицы Уе R" х " показать, как вычислить матрицы Хаусхолдера Н2, ... , Нп, такие, что матрица ¥Нп.. .Н2 верхняя треугольная. Подсказка: матрица Нк обнуляет к-ю строку.
Пусть
О Лу
Ат 0z
Вх0 у
ОВ2_ _ z
где AeRmxn, ВгеНтхт и B2eRnxn. Предположим, что матрицы Вх и В2 положительно определенные с треугольными матрицами разложения Холецкого Gx и G2 соответственно. Связать обобщенные собственные значения этой проблемы с сингулярными числами матрицы Gxv AG^T.
Замечания и литература к § 8.7
Превосходный обзор вычислительных методов для симметрично-определенных пучков дан в
Stewart G. W. (1976b). “A Bibliographical Tour of the Large Sparse Generalized Eigenvalue Problem”, in Sparse Matrix Computations, ed., JR. Bunch and D. J. Rose, Academic Press, New York.
Следующие статьи представляют особый интерес:
Crawford C.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. 11, 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, 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.
См. также
Elsner L. and Guang Sun J. (1982). “Perturbation Theorems for the Generalized Eigenvalue Problem”, Lin. Alg. and Its Aplic. 48, 341-357.
Paige С. 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.
Обобщенное 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. 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 особый интерес представляет разработка метода сопряженных градиентов для симметричных положительно определенных линейных систем. Изучение связи метода Ланцоша и метода сопряженных градиентов будет продолжено в следующей главе.
Вывод и свойства сходимости
Пусть имеется большая разреженная симметричная матрица Л е R” х ” и нас интересует небольшое число ее наибольших и (или) наименьших собственных значений. Эта задача может быть решена с помощью метода, приписываемого Ланцошу (1950). Метод строит последовательность трехдиагональных матриц 7} с тем свойством, что экстремальные собственные значения для TjeRj xj с ростом j дают все более точные оценки экстремальных собственных значений для А. В этом разделе мы выводим метод и исследуем его свойства в точной арифметике.
Подпространства Крылова
К выводу алгоритма Ланцоша можно подойти с различных сторон. Для того чтобы замечательные свойства сходимости метода не оказались полным сюрпри-
зом, мы предпочитаем начать с рассмотрения оптимизации отношения Рэлея
. . хТ Ахг (х) = —=— , х / 0.х х
Напомним, что согласно теореме 8.1.2 максимальное и минимальное значения г(х) суть ХДЛ) и Хп(А) соответственно. Предположим, что ^q^ с R” есть последовательность ортонормированных векторов. Определим скаляры Mj и mj следующим образом:
(ОАО д v
Mj = ^1 (QiAQj) = max -^—J— = max r(Qy) < Xj (Л),
y*o У У llyll2 = i
рГ /АО д v
mi = M6J ^Qj) = min ^—~ = min r(g -у) > X (Л),
УТУ и«г=1
где Qj = [^1,...л7]. Алгоритм Ланцоша можно получить, рассматривая вопрос о таком выборе векторов q^ чтобы Mj и т3 были все более и более точными оценками для Х^А) и Хп(А).
Пусть вектор u^espan{^t,...,q^ таков, что Mj = r(Uj). Поскольку г(х) возрастает наиболее быстро в направлении градиента
2
V г(х) = -^-(Ах — г(х)х),
X1 X
мы можем гарантировать, что Mj+1 > Mj, если qj+1 определяется так, что
V Г (Uj) 6 span {9q, + j.(9.1.1)
(Предполагается, что Vr(Uj) # 0.) Аналогично, если вектор i^espan^,...,</7} удовлетворяет условию r(Vj) = mj, то есть смысл потребовать, чтобы
V г (i^ 6 span ^q1,...,qj+^,(9.1.2)
так как г (х) убывает наиболее быстро в направлении — V г (х).
На первый взгляд, задача отыскания одного вектора q5^v удовлетворяющего этим двум требованиям, кажется неразрешимой. Однако, поскольку Vr(x)e espan{x, Лх}, ясно, что (9.1.1) и (9.1.2) можно удовлетворить одновременно при условии, что
span Vk.-.q^ = span {g,, Aqv,..., А^1 qx} = X<A,qvjV
ивектор^+1 выбирается так, что ^T^A,qvj + 1) = span {^1,...,^+1}. Таким образом, мы пришли к задаче вычисления ортонормированных базисов в подпространствах Крылова Ж ^A,qY,j\
Трехдиагонализация
Для эффективного вычисления базиса мы используем связь между трехдиагонализацией матрицы А и (^-разложением матрицы Крылова
K<Aqvn> = [q1,AqvA2q1,...,A”-1qJ.
(См. § 7.4.4.) Именно, если матрица QT AQ = Т трехдиагональная и Qev = qv то соотношение
К (A, qv n) = Q [^, Tev Т2 е. ,...,T^Y ej
является ^^-разложением для К (A, qv п\ Таким образом, векторы q5 можно
строить эффективно, выполняя трехдиагонализацию матрицы А с помощью некоторой ортонормированной матрицы, в которой первый столбец есть qv
Для этой цели можно адаптировать трехдиагонализацию Хаусхолдера, обсуждавшуюся в § 8.2.1. Однако такой подход непрактичен в случае большой и разреженной матрицы Л, потому что подобные преобразования Хаусхолдера имеют тенденцию к разрушению разреженности. В результате этого в ходе процесса будут возникать неприемлемо большие плотные матрицы.
Иногда потерей разреженности можно управлять, заменяя преобразования Хаусхолдера на преобразования Гивенса (см. Duff and Reid (1976)). Однако любой метод, вычисляющий матрицу Т последовательно с помощью модификации матрицы А, бесполезен для большинства разреженных матриц А.
Это наводит на мысль о том, чтобы попытаться вычислять элементы матрицы Т= QT AQ непосредственно. Полагая Q = [q^... лп],
и приравнивая столбцы в равенстве AQ = QT для j = 1 :п — 1 находим
Aq, = P,-i^-i + ajqJ, + Р,^; р0^0 —О-
Ортонормированность векторов qt влечет за собой а,- = qj Aqj. Более того, если вектор rj = (А - а/)^Р;_, q;_x ненулевой, то qj+l = г^, где Pv = + ||rj|2. Если Kj = 0, то итерации прерываются, но (как мы увидим) остается ценная информация об инвариантном подпространстве. Упорядочивая подходящим образом приведенные выше формулы, мы получаем итерации Ланцоша*.
г0 = чх; Ро = 1; Чо = 0; j = о
while (р7 / 0)
4^1 = r^j-, j = j + 1; a,. = 4j Aq^(9.1.3)
r, = U - Uj I)qj -^j_1qj_l ; py = || г,- ||2
end
Без потери общности можно выбирать р; положительными. Векторы q. называются векторами Ланцоша.
Окончание и оценки погрешностей
Итерации обрываются, прежде чем будет получена полная трехдиагонализация в том случае, когда qv принадлежит подходящему собственному подпространству. Это одно из нескольких математических свойств метода, охватываемых следующей теоремой.
Теорема 9.1.1. Пусть матрица Ае^пхп симметрична, и предположим, что вектор qveKn имеет единичную 2-норму. Тогда итерации Ланцоша (9.1.3) обрываются при j = т, где т = rank (К (Л, qv п)). Более того, при j = V.m мы имеем
AQ, = QjTj + r^J,(9.1.4)
гдегде' «1 Рх' «1 РхООР1 «2Р1 «2
где
где
' «1 Рх
' «1 Рх
О
О
Р1 «2
Р1 «2
Зз-х
«3-
и Qj = E^i,--,^] имеет ортонормированные столбцы, являющиеся базисом в ^<A,qvjY
Доказательство. Проведем индукцию по j. Предположим, что итерации дали матрицу б7 = к1?... Л7], такую, что range (2;) = X'(A, q^ j) и Qj Q = I.. Легко видеть, что (9.1.3) влечет за собой (9.1.4). Итак, Qj AQj = Tj + Qj FjCj. Вследствие того что а, = q^ Aqt при i = 1 :j и
qLiAqi = qLi(Aqt ~ ^Qi ~ P.-i^-i) = ^1+ i (Pi^ +1) = Pi
при i = 1 :j — 1, мы имеем Q] AQj = Tj. Следовательно, Qj Fj = 0.
Если Fj Ф 0, то вектор q^x = гД f31|2 ортогонален к qv, ..., q3 и ^+1espan{^? qj, q^^ jf (A, qvjA- 1).
Таким образом, Qj+1 Qj+1 = Ij+1 и range(Qj+1) = J^(A, qYJ + 1). С другой стороны, если Fj = 0, то AQj = Qj Tj. Это говорит об инвариантности range(Q7) = X (A, qlsj\ Отсюда получаем, что j = т = rank (К (Л, qv п)). □
Получение нулевого р7 в процессе Ланцоша-событие, желательное в том смысле, что оно свидетельствует о том, что найдено некоторое подпространство, являющееся в точности инвариантным. Однако на практике точный нуль или даже малое р7 встречаются редко. Тем не менее крайние собственные значения для Tj оказываются удивительно хорошими аппроксимациями к крайним собственным значениям для А. Поэтому для сходимости собственных значений нужно искать иное объяснение. Следующий результат представляет собой некоторый шаг в этом направлении.
Теорема 9.1.2. Предположим, что выполнены j шагов алгоритма Ланцоша и Sj TjSj = = diag(01,...,0) есть разложение Шура трехдиагональной матрицы Tj. Если Yj = = l>i. -.Jy] = 2j^eR7 х< то для i = 1-J имеем || Ay, - 9^( ||2 = |р;| |^|, где SJ = = ^pq).
Доказательство. Умножая (9.1.4) справа на Sjs получаем
AYj= ^diag^^T^
так что Ау( = 0^- + Fj(eJ Ве(). Чтобы завершить доказательство, остается перейти К Нормам И ВСПОМНИТЬ, ЧТО || Fj || 2 = | Р7-|. □
Теорема позволяет вычислить оценки погрешностей для собственных значений матрицы Тр
min |9, —ц| ^IPjH^/L i= IV- цеХ(Л)
Заметим, что в терминологии теоремы 8.1.10 (0f, yt) суть пары Ритца для подпространства range (Qj).
Другой подход к использованию 7} для получения оценок собственных значений матрицы А описан в [Golub (1974)]. Предлагается специальным образом построить некоторую одноранговую матрицу Е, такую, что подпространство range (Qj) инвариантно относительно А + Е. Более точно, если в соответствии с методом Ланцоша AQj = Q^TjA- rje], то, положив Е = twwt, где т = ± 1 и w = aq^ + br^ можно показать, что
(А + E)Qj = Q^Tj + T^ejej) + (1 + таЬ^е].
Если 0=1 + Tab, то собственные значения матрицы 7} = 7} + Ta2ejeJ (трехдиагональной) являются также собственными значениями для А + Е. Тогда из теоремы 8.1.5 мы можем вывести, что каждый из интервалов^ V^i^j^ ^-i(^/)J, * = 2:у, содержит какое-то собственное значение матрицы А.
Эти интервалы локализации зависят от выбора та2. Предположим, что у нас имеется какое-то приближение к собственному значению X матрицы А. Одна из возможностей-выбирать та2 таким образом, чтобы det (7} — XTj) = (а^ + та2 — — X)Pj_t (X) — Pj-iPj-2 W = 0, где значения полиномов р^х) = det (7] — х 7]) в точке X можно оценить, используя трехчленные рекуррентные соотношения (8.5.2). Здесь предполагается, что Pj-i(X)/O. Оценивание собственных значений в таком духе обсуждается в Lehmann (1963); Householder (1968).
Теория сходимости Каниэля-Пейджа
Предыдущее обсуждение показывает, каким образом с помощью алгоритма Ланцоша можно получать оценки собственных значений, но оно не дает никакой информации о скорости сходимости. Результаты такого рода составляют то, что называется теорией Каниэля-Пейджа. Ниже приводится некоторое извлечение из нее.
Теорема 9.1.3. Пусть А-симметричная п х п-матрица с собственными значениями Xt > ... > Х„ и соответствующими ортонормированными собственными векторами zv...,zn. Если 6t > ... > 0; суть собственные значения матрицы Т? полученной в результате j шагов итераций Ланцоша, то
Xi > 0t ^ XXi > 0t ^ X11(Xi -X„)tg(V!)2
Xi > 0t ^ X
Xi > 0t ^ X
1
1
(с,-! (1 + 2 P1))2 ’
где cos(<Pi) = |qXzx |, Pi = (Xt — X2)/(X2 — X„), Cj_Y^-полином Чебышева степени j- I-
Доказательство. По теореме 8.1.2 имеем
6161УТ^у= max —х+—у /о У УУТ^у= max —х+—у /о У У= maxу ^ 0= maxу ^ 0(QX^i^ = max wTAw<й)УУкй)У> 0*weXkA,qvh WT W '(QX^i^ = max wTAw<й)УУкй)У> 0*weXkA,qvh WT W '
61
61
УТ^у
= max —х+—у /о У У
УТ^у
= max —х+—у /о У У
= max
у ^ 0
= max
у ^ 0
(QX^i^ = max wTAw
<й)УУкй)У> 0*weXkA,qvh WT W '
(QX^i^ = max wTAw
<й)УУкй)У> 0*weXkA,qvh WT W '
Поскольку Xj есть максимум wT Aw/wT w по всем ненулевым w, отсюда следует, что
Xi > 6Р Чтобы получить нижнюю оценку для Oj, заметим, что
q^ptA^AplA^qimax т5реР,^ qiPWqt
1} Это верно в случае т = 1. Если т = — 1, то в соответствии с теоремой 8.1.5 в качестве локализации следует взять [Xi + 1(7}), Х,(7})], /= 1:«— \.-Прим. перев.
где Pj_x -множество полиномов степени j — 1. Если qY = £ d^^ то i=l
Т ,ДХД (дхY^P^2
qXp<A>Ap<A>qx _ ^пi = 2
/„M2~"^Л1 Л‘ Л""'
^£^(М2Wx? + I сЦр^
' = 11 = 2
Нижнюю оценку можно сделать весьма точной, выбирая полином р^х) таким образом, чтобы его значение при х = Хт было большим по сравнению со значениями при остальных собственных значениях. Один из способов это сделать состоит в том, чтобы взять
Р^ =1 + 2
где Cj-^z) есть (j — 1)-й полином Чебышева, порождаемый рекурсией Cj^ = IzCj.^ - ^(z), с0=1, cY=z.
Эти полиномы ограничены единицей на [— 1, 1], но очень быстро растут вне этого интервала. Если определить р(х) таким образом, то как следствие |р(Х()| будет ограничено единицей при / = 2:л, вто время как р(Х^ = с^-Д! 4- 2pJ. Итак,
01 >Хх — (Хт — X ) —^~ х2 •
dt+ 2pj
Чтобы получить требуемую нижнюю оценку, нужно заметить, что tg^J2 = = (1 - <WV □
Из данной теоремы немедленно вытекает аналогичный результат, относящийся К
Следствие 9.1.4. В обозначениях теоремы имеем
где р„ = (Х„_! - Х,)/^ - X„_i) и cos(0„) = ql z„..
Доказательство. Применяем теорему 9.1.3 с заменой Л на — А. □
Сравнение степенного метода с методом Ланцоша
Есть смысл сравнить 0т с оценкой для Хх, отвечающей степенному методу (см. § 7.3.1). Для ясности предположим, что Хт > ...Хп ^ 0. После того как к qx будут применены j — 1 шагов степенного метода, мы получим некоторый вектор в направлении
v = Aj"1 qY = £ ct ХГ1 zt
вместе с оценкой собственного значения
vT Av
Yi =~7^-v1 V
Используя доказательство и обозначения теоремы 9.1.3, легко показать, что
'(9.1.5)
(Указание: положить в доказательстве р^ = xj \) Таким образом, мы можем сравнить точность нижних оценок для 6t и у1? сопоставляя
и
Для выборочных значений j
Таблица 9.1.1. L^JR.,
Vl=l
’ и X2IXx это i
сделано в
следующей таблице.
Ai/A2
j = 5
j = 10
j = 15
j = 20
J =25
1.50
rixiozi
2.OxlO~10
3.9xl0~16
7.4xl0~22
1.4X10"27
3.9X10-2
6.8X10"4
1.2X10-5
2.0X10-7
3.5X10-9
1.10
2.7xl0~2
5.5xl0~5
1.1X10"7
2.1X10"10
4.2xl0~13
4.7X10-1
1.8x10"1
6.9x10-2
2.7x10-2
1.0x10-2
1.01
5.6X10"1
1.0x10" 1
1.5xl0~2
2.0xl0~3
2.8X10"4
9.2X10-1
8.4X10"1
7.6X10-1
6.9X10-1
6.2X10-1
!/[<•)-! (1 +2 Р1)]2
Превосходство метода Ланцоша очевидно. Этому и не следует удивляться, поскольку 0т есть максимум г (л) = хТ Ах(хт х на всем X ^А, q^ у), в то время как Yi = г (г) - значение для некоторого специального г из Jf (Л, qv /), а именно для v = AJ"X qv
Сходимость внутренних собственных значений
Мы закончим некоторыми замечаниями по поводу оценок погрешностей для внутренних собственных значений матриц 7]. Ключевая идея в доказательстве теоремы 9.1.3 заключается в использовании сдвинутых чебышевских полиномов. С помощью такого полинома мы усиливаем компоненту вектора qx в направлении zv Чтобы получить оценки для внутреннего числа Ритца 019 можно использовать схожую идею. Однако оценки не будут столь же хорошими, потому что «усиливаю
щий полином» имеет вид q^ П (х — Хк), где q (х) - полином Чебышева степени j — 1 к = 1
на интервале [Х1 + 1, XJ. Подробности см. в Kaniel (1966), Paige (1971), Scott (1978).
Задачи
Предположим, что матрица TeR" х " кососимметрична. Вывести алгоритм типа Ланцоша, вычисляющий кососимметричную трехдиагональную матрицу Тт, такую, что AQm = Q„T„, где QLQ„ = /„.
Пусть матрица A eR" х п симметрична и г(х) = хт Ах! хт х. Предположим, что подпространство ScRn обладает тем свойством, что xeS влечет за собой Vr(x)eS. Показать, что S инвариантно относительно А.
Показать, что если симметричная матрица A eR" Хп имеет кратное собственное значение, то итерации Ланцоша заканчиваются до срока.
Показать, что в теореме 9.1.1 индекс т есть размерность наименьшего Я-инвариантного подпространства, содержащего qx.
Пусть матрица A eR” х ” симметрична и рассмотрим проблему определения ортонорми- рованной последовательности qx, q2, ... , обладающей тем свойством, что если матрица 27 = [^i, ... , ^7] известна, то qj+x выбирается так, чтобы минимизировать ц. = ||(J — — Qj+1 Q-+1 )AQj || F. Показать, что если span ^qx, ... , qj} = X^A,qx, j), to qj+x можно выбрать таким образом, что ц7 = 0. Объяснить, как эта оптимизационная задача приводит к алгоритму Ланцоша.
Замечания и литература к § 9.1
К хорошим «глобальным» ссылкам на алгоритм Ланцоша относится Parlett (SEP) (1980b) и
Cullum J. К. and Willoughby R. A. (1985a). Lanczos Algorithms for Large Symmetric Eigenvalue Computations, Vol. 1. 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.
369-78.'
Paige C.C. (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, Berkely.
См. также Wilkinson (1965a), Parlett (1980в) и
Saad Y. (1980). “On the Rates of Conversence of the Lanczos and the Block Lanczos Methods”, SIAM J. Num. Anal. 17, 687-706.
Связь между алгоритмом Ланцоша, ортогональными полиномами и теорией моментов обсуждается в
Golub G. Н. (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 to a Sparse Matrix”, ACM Trans. Math. Soft. 5, 442-50.
Практические процедуры Ланцоша
На поведение итераций Ланцоша сильнейшее воздействие оказывают ошибки округления. Основная трудность вызвана потерей ортогональности среди векторов
Ланцоша. Это явление затуманивает вопрос об окончании процесса и усложняет соотношение между собственными значениями матрицы А и трехдиагональных матриц 7}. Трудности, навеянные этим явлением, вместе с созданием совершенно устойчивого метода хаусхолдеровой трехдиагонализации, объясняют, почему численные аналитики не обращали внимания на алгоритм Ланцоша в течение 50-х и 60-х годов. Однако интерес к методу оживили как теория Каниэля-Пейджа, так и необходимость решать большие разреженные спектральные задачи, размер которых увеличивался вместе с производительностью компьютеров. Поскольку для получения хороших приближений к экстремальным собственным значениям обычно требуется намного меньше чем и итераций, метод Ланцоша привлекает скорее не как соперник подхода Хаусхолдера, а как средство для работы с разреженными матрицами.
Успешные реализации метода Ланцоша включают в себя гораздо больше, чем только закодированные соотношения (9.1.3). В этом разделе мы дадим представление о некоторых практических идеях, предложенных для того, чтобы сделать процедуру Ланцоша работоспособной.
Реализация в точной арифметике
Весь процесс Ланцоша можно выполнить, сохраняя лишь два л-вектора. Для этого понадобится формула
и тщательная организация замещения в (9.1.3).
Алгоритм 9.2.1 (Алгоритм Ланцоша). Для заданных симметричной матрицы А е R” х п и вектора weR" с единичной 2-нормой следующий алгоритм вычисляет симметричную трехдиагональную / х у-матрицу 7}, такую, что Х(7}) с Х(Л). Предполагается, что есть функция A. mult (w), возвращающая матрично-векторное произведение Aw. Диагональные и поддиагональные элементы матрицы Tj хранятся соответственно в а(1:/) и 0(1:/ — 1).
г(1:л) = 0; 0О= 1; 7= 0
while ру # 0
if У / 0
for / = 1: п
t = w^ wt = vJ^j; г,- = — PyZ end
end
v = v + A. mult (w)
j =j + 1; a-j = wT v; v = v- u^w, P, = || v||2 end
Заметим, что А не изменяется в течение всего процесса. Нам нужна лишь процедура A. mult(), вычисляющая матрично-векторные произведения с участием А. Если А имеет в среднем по к ненулевых элементов на строку, то один шаг Ланцоша требует примерно (2 к 4- 8) и флопов.
По окончании процесса собственные значения для Tj могут быть найдены с помощью симметричного трехдиагонального QR-алгоритма или любого из специальных методов из § 8.4, например бисекций.
Векторы Ланцоша получаются в л-векторе w. Если предполагается как-то их использовать, то нужны специальные меры по их сохранению. Для типичных
разреженных задач до момента использования их можно хранить на диске или в каком-либо другом вспомогательном запоминающем устройстве.
Ошибки округления
Разработка практичной, простой в реализации процедуры Ланцоша требует понимания фундаментального анализа ошибок округления, выполненного Пейджем [Paige (1971, 1976а, 1980)]. Осмысление этих результатов дает наилучшую мотивацию для рассматриваемых в этом разделе нескольких модифицированных процедур Ланцоша.
После / шагов алгоритма мы получаем матрицу вычисленных векторов Ланцоша 6j = Un-t^jl и соответствующую трехдиагональную матрицу
" ах 31• • •0"
31:
. 0••• 3j-i &з .
Пейдж (1971, 1976а) показывает, что если вместо гу при вычислении получается fp то ^Qv = QvT;. + ^eJ + £v,(9.2.1)
где
ll^llz^uMHz-(9.2.2)
Это означает, что важное уравнение AQj = QjTj + r^j удовлетворяется с рабочей точностью.
К несчастью, с ортогональностью векторов qj дело обстоит намного хуже. (Речь идет не о нормированности, так как вычисленные векторы Ланцоша имеют по существу единичную длину.) Если ^= //(|| fj ||2) и мы вычисляем q^i= fl^jl^jV то простой анализ показывает, что Р;^+1 » Fj + Wj, где || Wj ||2 % и Н^- ||2 % и ||Л ||2. Таким образом, мы приходим к выводу о том, что
для / = 1: j. Другими словами, при малом Р; можно ожидать значительных отклонений от ортогональности даже в идеальной ситуации, когда rj q^ есть нуль. Малое ^ влечет за собой потерю точности при вычислении вектора fj. Мы подчеркиваем, что потеря ортогональности происходит благодаря этой потере точности и не является результатом постепенного накапливания ошибок округления.
Пример 9.2.1. Матрица
2.64 -0.48
А =
0.482.36 _
имеет собственные значения Хт = 3 и Х2 = 2. Если алгоритм Ланцоша для этой матрицы с начальным вектором qx = [0.810, —0.586] т выполняется в плавающей трехзначной арифметике, то ^2 = [0.707, 0.707]. Потеря ортогональности происходит из-за того, что подпространство span{^1} почти инвариантно для А. (Вектор х = (0.8, — 0.6)т является собственным вектором, отвечающим ХР)
Вскоре будут даны и дальнейшие детали анализа Пейджа. Сейчас нам достаточно заметить, что на практике потеря ортогональности происходит всегда, а вместе с ней и очевидное ухудшение качества собственных значений матрицы 7}. Количественную оценку этого ухудшения можно получить, объединив (9.2.1) с теоремой 8.1.11. В частности, если в этой теореме взять Fx = r^e^ + Ej, XY = Qj, S = Tj и т = \\ Qj Qj — Ij\\2, то можно утверждать, что существуют собственные значения ц19 ..., ЦуеЦЛ), такие, что
I I < 72+ т н у
для z = 1: j. Очевидное действие с целью помешать знаменателю в верхней оценке приблизиться к нулю заключается в проведении ортогонализации каждого вновь вычисляемого вектора Ланцоша ко всем его предшественникам. Это сразу же ведет к нашей первой «практической» процедуре Ланцоша.
Метод Ланцоша с полной переортогонализацией
Пусть заданы г0, ..., rJ_1eRn, и предположим, что вычислены матрицы Хаусхолдера Яо, ..., Hj_v такие, что матрица (Яо... Н^ Х)Т [г0,..., rj_ J является верхней треугольной. Пусть [^i, .,^7] обозначает первые j столбцов хаусхолдерова произведения ^Но... Hj_xY Теперь предположим, что задан вектор rjGRn и мы хотим вычислить нормированный вектор qj+i, направленный так же, как
j
w = rj - £ (q] r)qjespan^q1,...,qjV.i = 1
Если хаусхолдерова матрица Hj обеспечивает треугольный вид матрицы (//0...//7)г[г0,...,г7], то, следовательно, искомый вектор-это (/ + 1)-й столбец в Н0...Н?
Включив эти хаусхолдеровы вычисления в процедуру Ланцоша, мы можем получить векторы Ланцоша, являющиеся ортогональными с рабочей точностью:
г о = qY (заданный единичный вектор)
Найти хаусхолдерову матрицу Но с тем, чтобы Ного = ех.
«1 = q\Aqx
for j = 1 :п — 1
rs = <A- а, 7) qj - Р,_ t 4j_, (Po q0 = 0)
и' = (Я,_1...Я0)гу(9.2.3)
Найти хаусхолдерову матрицу Hj с тем, чтобы HjW = (w1,...,wj, 0^,0, ...,0)т. Чт = Яо - Н,^!; aj + 1 = qj+1 Aqj+1
end
Это пример схемы Ланцоша с полной переортогонализацией. Тщательный анализ можно найти в работе Paige (1970). Идея использования матриц Хаусхолдера для усиления ортогональности появилась в работах Golub, Underwood, Wilkinson (1972).
То что в (9.2.3) вычисленные векторы qv ортогональны с рабочей точностью, следует из свойств ошибок округления при работе с матрицами Хаусхолдера. Заметим, что в силу способа определения q^x ничего не меняется, если Р7 = 0. Поэтому алгоритм может без помех выполняться до j = п — 1. (Однако на практике можно остановиться при намного меньшем значении у.)
В любой реализации процесса (9.2.3), конечно, сохраняются хаусхолдеровы векторы Vj, а соответствующие Pj никогда не формируются в явном виде. Поскольку Hj^VJ, l:j) = ^ нет необходимости в вычислении первых j компонент вектора
w = (Hj_!... H0)rj, так как в точной арифметике эти компоненты были бы нулевыми.
Эти возможности экономии, к несчастью, дают очень мало для снижения вычислительных затрат, связанных с полной переортогонализацией. Хаусхолдеровы вычисления увеличивают работу на j-м шаге Ланцоша на О (jn) флопов. Более того, для того чтобы вычислить ^+i, нужно иметь доступ к хаусхолдеровым векторам, связанным с Но,... ,Hj. Для больших п nj это обычно влечет за собой неприемлемо большое число пересылок данных.
Таким образом, полная переортогонализация стоит очень дорого. К счастью, есть и более эффективные средства, но они требуют от нас более внимательного анализа того, как теряется ортогональность.
Выборочная ортогонализация
Замечательное ироническое следствие из анализа ошибок округления в работе Paige (1971) состоит в том, что потеря ортогональности неразрывно связана со сходимостью некоторой пары Ритца. Более того, предположим, что симметричный QR-алгоритм, примененный к 7}, дает вычисленные значения Ритца б19 ..., 07 и почти ортогональную матрицу собственных векторов Sj = (Spq). Если Yj=\jx, ..., уД = = //(QjSj), то можно показать, что для i = 1 ;j мы имеем
I #71ЛII #71ЛIUMJ2 IPjl^lUMJ2 IPjl^l(9.2.4)(9.2.4)
I #71ЛI
I #71ЛI
UMJ2 IPjl^l
UMJ2 IPjl^l
(9.2.4)
(9.2.4)
И
1^11^1 ■(9-2.5)
Как видим, поведение последнего из вычисленных векторов Ланцоша ^-+1 таково, что он имеет нетривиальную и нежелательную компоненту в направлении любого из сошедшихся векторов Ритца. Следовательно, вместо того чтобы ортогонализировать ^.+ 1 по отношению ко всем ранее вычисленным векторам Ланцоша, мы можем добиться того же эффекта, проводя ортогонализацию по отношению к намного меньшему множеству сошедшихся векторов Ритца.
Практические аспекты указанного способа усиления ортогональности обсуждаются в работах Parlett и Scott (1979). В предложенной там схеме, известной под названием выборочной ортогонализации, вычисленная пара Ритца (0, у) называется «хорошей», если она удовлетворяет соотношению
'||4Р-§Л2 «\/“М||2.
Как только вектор qj+Y вычислен, он ортонормируется по отношению ко всем хорошим векторам Ритца. Это стоит намного меньше, чем полная переортогонализация, поскольку хороших векторов Ритца обычно намного меньше, чем векторов Ланцоша.
Один из способов реализации выборочной ортогонализации состоит в том, что на каждом шаге диагонализируется 7} и затем оцениваются ^ в свете (9.2.4) и (9.2.5). Гораздо более эффективный подход - оценивать меру потери ортогональности || Ij — Qj Qj || 2, используя следующий результат:
Лемма 9.2.1. Предположим, что St = [S<5, где SeRn х 7 и deRn. Если S удовлетворяет || Ij — 5 TS ||2 < ц и | 1 — cP d\ < 5, то || 7j+1 — S + S ||2 ц + , где
И+ = ^(ц + 5 + УоГТбТТлУмН).
Доказательство. См. Kahan, Parlett (1974) или Parlett, Scott (1979). Итак, имея оценку для || Ij — Qjg7||2, мы можем получить оценку для || /;+1 — Qj+1 Qj+i Нг» применяя лемму с 5 = Qj и d = ^+1. (В этом случае 8 « и и мы предполагаем, что ^+1 был ортогонализирован по отношению к текущему набору хороших векторов Ритца.) Есть возможность оценить норму вектора QJ ^-+1 с помощью простого рекуррентного соотношения, избавляющего от необходимости доступа к #х,..., ^. См. Kahan, Parlett (1974) или Parllet, Scott (1979). Накладные расходы минимальны, и лишь когда оценки дают сигнал о потере ортогональности, наступает тот момент, когда ожидается пополнение множества хороших векторов Ритца. В эти и только эти моменты проводится диагонализация матрицы 7).
Проблема теневых собственных значений
Значительные усилия были направлены на разработку работоспособной процедуры Ланцоша, вообще не использующей какое-либо усиление ортогональности. Исследования в этом направлении сосредоточены на проблеме «теневых» или «ложных» собственных значений. Это кратные собственные значения для tj, отвечающие простым собственным значениям для А. Они возникают из-за того, что итерации начинаются по существу заново, когда теряется ортогональность к какому-либо сошедшемуся вектору Ритца. (По аналогии рассмотрите, что может случиться в процессе ортогональных итераций из § 7.3.2, если мы «забудем» ортогонализировать.)
Как обнаружить теневые собственные значения и что делать, если они есть, эта проблема обсуждается в Cullum, Willoughby (1979) и Parlett, Reid (1981). Эта проблема особенно актуальна в тех приложениях, где для А требуется найти все собственные значения,- в этих случаях описанные выше процедуры ортогонализации требуют чрезмерных вычислительных затрат.
Трудности с итерациями Ланцоша могут ожидаться даже в том случае, когда А имеет по-настоящему кратное собственное значение. Это вытекает из того, что матрицы Tj неразложимы, а неразложимые трехдиагональные матрицы не могут иметь кратных собственных значений (см. теорему 7.4.3). Наша следующая практическая процедура Ланцоша пытается преодолеть эту трудность.
Блочный Ланцош
Точно так же, как простой степенной метод имеет своим блочным аналогом одновременные итерации, так и алгоритм Ланцоша имеет блочную версию. Предположим, что и = гр, и рассмотрим разложение
оо" Мх ВТ
о
о
Вх М2
QT AQ = Т =
ооВ^хмт
о
о
где матрица
Q = [%!,...,%,], XteRnxp,
ортогональная, М,еR^ х р для всех z, все матрицы В,eRp х р верхние треугольные.
Приравнивание блоков в AQ = QT показывает, что
AXj = Xj_YBT_x^-XjMjA-XjBjs ХоВо = 0, для у = 1: г — 1. В силу ортогональности Q мы имеем Mj = Xj AXj для j = 1: г. Более того, если мы определим
Rj = AXj - XjMj - Х^. В]., eRn xp, то Xj+i Вj = Rj представляет собой QR-разложение для Rj. Эти наблюдения наводят на мысль о том, что блочно трехдиагональная матрица Т может быть получена следующим образом:
XY eRp х р-заданная матрица, такая, что Х\Хх = 1р.
Мх = Х{АХГ
for У = 1: г — 1
Ri = AXj - X, Mj - Х5_, B^_ , (Xo В? = 0)(9.2.7)
Xjvl Bj = Rj (QR-разложение для Rj)
Mj^=XKiAXj+t
end
В начале у-го прохода цикла мы имеем
гдегдеА [Xt,..., ^] = [X,,...,Х^ Tj + Rj [0,..., 0, /„],(9.2.8)
где
где
ооМх ВТ
о
о
Вх Mi
оовт_хBj_\ Mj _вт_хBj_\ Mj _
о
о
вт_х
Bj_\ Mj _
вт_х
Bj_\ Mj _
Используя рассуждения, аналогичные тем, что были использованы при доказательстве теоремы 9.1.1, мы можем показать, что Xj совместно ортогональны при условии, что все матрицы Rj имеют полный ранг. Однако если rank (7^) < р для некоторого у, то можно выбрать столбцы матрицы Xj+i так, что X J+1 Х( = 0 для /= 1:/ См. Golub, Underwood (1977).
Поскольку Tj имеет ленту шириной р, она может быть приведена к трехдиагональному виду эффективным образом-по алгоритму из работы Шульца (1968). Как только получена трехдиагональная форма, значения Ритца могут быть найдены с помощью симметричного QR-алгоритма.
Чтобы принять разумное решение об использовании блочного алгоритма Ланцоша, необходимо понимать, как размеры блоков влияют на сходимость значений Ритца. Этот вопрос проясняется следующим обобщением теоремы 9.1.3.
Теорема 9.2.2. Пусть А-симметричная п х п-матрица с собственными значениями Хт > ... > Х„ и соответствующими ортонор мированными собственными векторами zXs...szn. Пусть цх > ... > рр составляют р старших собственных значений матрицы Tj, полученной после j шагов итераций (9.2.7) блочного Ланцоша. Если Zx = [Zi,...,zp] и cos(Op) = ap(Z х XJ > 0, то для k = \ ;p имеем Xk > pk > Xk — е*, где
2 _ G4 - ^)tan2(ep) _ xt-xp+1, Г ( \ I v \~] 2 ’ Yle л Л , -i-x U-yJ-
Cj.^z) есть (j — \)-й полином Чебышева.
Доказательство. См. Underwood (1975). □
Аналогичные неравенства можно получить и для младших собственных значений матрицы 7}, применяя эту теорему с заменой Л на — А.
Основываясь на теореме 9.2.2 и тщательном анализе итераций (9.2.7) блочного алгоритма Ланцоша, мы можем заключить, что:
Оценки погрешности для значений Ритца улучшаются с ростом р.
Объем работы по вычислению собственных значений для 7} пропорционален Р2-
Размер блоков должен быть по меньшей мере таким же, как наибольшая кратность любого из отыскиваемых собственных значений.
Как определять размер блоков на базе компромисса отмеченных выше свойств, в деталях обсуждается в работе Scott (1979).
Потеря ортогональности является бедой и блочного алгоритма Ланцоша. Все описанные выше схемы усиления ортогональности, однако, можно применять и в блочной постановке. Детали см. в работах Scott (1979), Lewis (1977), Ruhe (1979).
s-Шаговый алгоритм Ланцоша
Блочный алгоритм Ланцоша (9.2.7) можно использовать итерационно, если нужно вычислить выборочные собственные значения для А. Чтобы изложить идеи, предположим, что мы хотим найти р старших собственных значений. Задавшись некоторой матрицей X1gR'7X^ с ортонормированными столбцами, мы можем действовать следующим образом:
until норма || АХх — Хх Ts ||2 достаточно мала.
Вычислить X2,...,XsERn х р по блочному алгоритму Ланцоша.
Сформировать Ts = VXx,...,XsY AVXx,...,XsA
(это ^-диагональная матрица размера sp х sp\ Вычислить ортогональную матрицу U = [«i, .,wsp], такую, что UTTSU = diag(0t,...,0sp), где 0t ^ ... ^ 0sp.
Положить Xx = [Xi,...,XJ [«!,...,Up\.
end
Это блочный аналог s-шагового алгоритма Ланцоша, который всесторонне анализировался в работах Cullum, Donath (1974) и Underwood (1975).
Та же самая идея может быть использована для вычисления нескольких наименьших собственных значений для А или смешанной группы как наибольших, так и наименьших собственных значений. См. Cullum (1978). Выбор параметров s и р зависит от ограничений на память, а также от факторов, упоминавшихся выше, когда обсуждался выбор размера блоков. Блочный размер р может быть понижен при появлении хорошего вектора Ритца. Однако это требует проведения ортогонализации к сошедшимся векторам Ритца. См. Cullum, Donath (1974).
Задачи
Докажите лемму 9.2.1.
Если rank(R7) < р в (9.2.7), то следует ли отсюда, что range([Xн ... , ХД) состоит из собственных векторов для Л?
Замечания и литература к § 9.2
Хорошие общие ссылки для практического метода Ланцоша включают Parlett (SEP) и
Cullum J. К. and Willoyghy R.A. (1985b). Lanczos Algorithms for Large Symmetric, Eigenvalue Computations, Vol. 11. Programs, Birkhaiiser, Boston.
Из нескольких вычислительных вариантов метода Ланцоша алгоритм 9.2.1 наиболее устойчив. Детали см. в
Paige C.C. (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 Lagest 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.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. Н. (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.A. (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 C. 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.
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 Ei genproblems”, 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 Recurrences”, Lin. Alg. Appl. 113, 7-63.
Отметим также обзор
ИкрамовХ. Д. (1982). Разреженные матрицы. Итоги науки и техники, т. 20-М.: ВИНИТИ, 179-257.
Приложения и обобщения
В этом разделе мы вкратце расскажем о том, как итерации Ланцоша могут быть приспособлены для того, чтобы решать большие разреженные линейные системы и задачи наименьших квадратов. Мы обсудим также процессы Арнольди и несимметричного метода Ланцоша.
Симметричные положительно определенные системы
Предположим, что матрица А е Ки х п симметричная и положительно определенная, и рассмотрим функционал ф(х), имеющий вид
Ф (х) = ^ хт Ах — хт b,
где ЬеКп. Поскольку 7ф(х) = Ах — Ь, заключаем, что х = А-1 b является единственной точкой минимума для ф. Значит, приближение к точке минимума для ф можно рассматривать как приближение к решению системы Ах = Ь.
Один из способов построения последовательности ^х^, сходящейся к х, состоит в генерации последовательности ортонормированных векторов ^q^ и определении ху как точки минимума ф на span{^15 ..., q^J = \;п. Пусть Qj = [^15 ..., q^\. Поскольку хе span ^к,q^ => <р (х) = ^ / (Qj AQ^y - ут (Qj b)
(9.3.1)(9.3.1)(9.3.2)(9.3.2)для некоторого reR7, отсюда вытекает, что
(9.3.1)
(9.3.1)
(9.3.2)
(9.3.2)
xi = Qjyp
где
^AQj)yj = Qjb.
Заметим, что Ахп = Ь.
Теперь посмотрим, как можно этот подход к решению системы Ах = b сделать эффективным, когда А большая и разреженная. Преодолеть нужно следующие два препятствия:
Линейная система (9.3.2) должна быть «легко» решаемой.
Должна быть возможность получения Xj без явного обращения к векторам ^1,...,^у, как предполагается в (9.3.1); в противном случае будет чрезмерным число пересылок данных.
Мы покажем, что оба эти требования удовлетворяются, если в качестве qj взять векторы Ланцоша.
После j шагов алгоритма Ланцоша мы получаем разложение
(9.3.3)(9.3.3)ооAQj = 9,Т} + rj6J,
(9.3.3)
(9.3.3)
о
о
где
«1 3i
31«2
Tj = QTAQj =
О
При таком подходе (9.3.2) становится симметричной положительно определенной трехдиагональной системой, которую можно решать на базе ЬВЬт-разложения (см. алгоритм 4.3.6). В частности, положим
1РхО1РхОО1О1О о ■ о оРз-х 1 .О о ■ о оРз-х 1 .Dj =Dj =diО'•••О"Оd2::ООО dj _diО'•••О"Оd2::ООО dj _
1
Рх
О
1
Рх
О
О
1
О
1
О о ■ о о
Рз-х 1 .
О о ■ о о
Рз-х 1 .
Dj =
Dj =
diО'•••О"
Оd2:
:О
ОО dj _
diО'•••О"
Оd2:
:О
ОО dj _
и сравнивая элементыи сравнивая элементыв матричном равенстве
и сравнивая элементы
и сравнивая элементы
(9.3.5)(9.3.5)Т, = ь,п,ы
(9.3.5)
(9.3.5)
мы находим, что
= «i
for i = l;j
и.- = Pi-1/<-1; d, = «.• - Р.-- i/п.-1
end
Заметим, что для того, чтобы получить Lj и Dj из Lj_ Y и Dj_ х, нам нужно лишь найти величины
Ру-! = Р7_ Jdj_,, d5 = ау - 0у_! цу_ j.(9.3.6)
Как уже отмечалось, важно уметь вычислять Xj из (9.3.1) эффективным образом.
Для этого мы определим CjgR” х/ и PjeRj уравнениями
CjL^Q^ L^p^Qjb(9.3.7)
и заметим, что
Xj = Qj ту ^ТЬ = QjiLjDjLlr 1 Qj b = CjPj.
Рассмотрим столбцовое разбиение Су = [с,,..., су]. Из (9.3.7) следует, что [с,, р, с, + с2,, ру_, Cj_, + сД = [^,..., q^,
и поэтому
С, = ^ТС, = ^Тcj = 4j-Pj-x4cj = 4j-Pj-x4
С, = ^Т
С, = ^Т
cj = 4j-Pj-x4
cj = 4j-Pj-x4
Заметим также, что если мы положим уравнение принимает видЗаметим также, что если мы положим уравнение принимает видPj =Pj =Рз-х-PjРз-х-PjPj = tii b-Pj-xdj^ py_^dj,Pj = tii b-Pj-xdj^ py_^dj,
Заметим также, что если мы положим уравнение принимает вид
Заметим также, что если мы положим уравнение принимает вид
Pj =
Pj =
Рз-х
-Pj
Рз-х
-Pj
Pj = tii b-Pj-xdj^ py_^dj,
Pj = tii b-Pj-xdj^ py_^dj,
р,-= [Р1,...,Р,]Г В LjDjpj = Qjb, то это
В силу Ц_ г Dj_ YPj_Y = Qj-1 b получаем
и, таким образом, Xj = CjPj = Cj_YPj_Y + pjCj = Xj_Y + pjCj. Это именно та рекуррентная формула для х, которая нам нужна. Вместе с (9.3.6) и (9.3.7) она позволяет нам выполнить переход от (qj-v cj-v ^j-i) к (^ ср xj) с минимальными затратами по числу операций и памяти.
Дальнейшее упрощение получается, если положить qY = Z>/Po, где ро = || Р ||2. При таком выборе начального вектора для Ланцоша мы видим, что q] b = 0 при i ^ 2. Из
вытекает, что
Ах} = AQjyj = QjTjyj + rj6Tyj = QjQT b + r^j = b + r,ej y._
Итак, если Р7 = || rj ||2 = 0 в итерациях Ланцоша, то Ах} = b. Более того, поскольку || AXj — b ||2 = Pjl^J’jb итерации обеспечивают оценки текущей невязки. В целом, мы приходим к следующей процедуре.
Алгоритм 9.3.1. Если beRn и матрица AeRnxn симметричная положительно определенная, то алгоритм вычисляет вектор xgR", такой, что Ах = Ь.
г о = Ь; р0 = || b ||2; q0 = 0; j = 0; х0 = 0
while р7 ^ 0
= rj!^ J=j+V Uj = q] Aq;
rj = U-ajnqj-Pj_Yqj_1; ₽7 = Ц^Иг
if./ = 1
^i = «i; Ci = qv Pi = «i/Ро; xi = pi qv
else
b-1 = Pj- Jdj-1; dj = a,. - ₽;_, n;_!
cj = q, - ь-1 cj-1; pj = - р,- i di-1 p,-- i^
Xj = Хг'Л PjCj end
end
X = Xj
Этот алгоритм требует одно матрично-векторное умножение и несколько операций saxpy на итерацию^. Численное поведение алгоритма 9.3.1 обсуждается в следующей главе, где мы выводим его заново и узнаем в нем широко известный метод сопряженных градиентов.
Симметричные неопределенные системы
Ключевую роль в предыдущих рассмотрениях играет идея вычисления LDLr- разложения трехдиагональных матриц Tj. Если А (и, как следствие, 7}) не положительно определенная, то, к сожалению, это разложение потенциально неустойчиво. В способе обхода этой трудности, предложенном в Paige, Saunders (1975), предлагается строить рекурсии для х? опираясь на LQ-разложение для 7}. Именно, на j-м шаге итераций мы получаем вращения Гивенса JY,...,Jj_Y, такие, что
" di00 0"
eid20 0
/1^2^3 0
0
000••• fj-2 €j_i dj
Заметим, что в согласии с этим разложением Xj имеет вид xj = Qjyj = QjT7^QTb=WjSj,
u Сюда необходимо добавить одно скалярное произведение и одно вычисление 2-нормы вектора. Прим, не рев.
где Wj е R" х J и Sj е RJ определяются как
^ = еИ1-^-1’ LjSj=QTb.
Тщательный анализ этих уравнений позволяет вывести формулу для вычисления Xj по Xj_t и некоторого легко получаемого кратного вектора ^-последнего столбца в Wj. Детали см. в Paige, Saunders (1975).
Двухдиагонализация и SVD
Предположим, что для матрицы А е Rm х п проведена двухдиагонализация UTAV= В, где
и = [И1,...,ит],и = [И1,...,ит],UTU = lm, vTv=in,UTU = lm, vTv=in,
и = [И1,...,ит],
и = [И1,...,ит],
UTU = lm, vTv=in,
UTU = lm, vTv=in,
ооОО
о
о
О
О
«1/?i
О «2
(9.3.8)
Рп-1
О On
Напомним (см. § 5.4.3), что это разложение может быть вычислено с помощью преобразований Хаусхолдера и что оно используется как прелюдия к SVD-алгоритму.
К несчастью, если матрица А большая и разреженная, то в процессе хаусхолдеро- вой двухдиагонализации можно ожидать появления больших и плотных подматриц. Поэтому будет прекрасно, если мы найдем средства для вычисления В непосредственно, без последовательной двухдиагонализации подматриц матрицы А.
Действуя так же, как в § 9.1.2, приравняем столбцы в уравнениях AV = UB и АТ U = VBT для j = 1 :п и получим
AvJ = aJui + ^j_1uj_1, ро«о = 0,
ATu^ajVj + ^v^^ P„v„+1=O.
Определив Fj = AVj — РуИу-i и pj = Ат Uj — UjVj, из ортогональности мы можем вывести, что а7 = ± IIr^||2, Uj = г/а;, Р, = ± ||р,||2» у,+ 1 = Pj№j- После правильного упорядочения эти уравнения будут определять метод Ланцоша для двухдиагонализации прямоугольной матрицы:
Vj = заданный д-вектор с единичной 2-нормой
Ро = Ро = 1; 7 = 0; и0 = О
while pj * 0(9.3.10)
^+1 = Р,№М =V+ 1
г,- = А^ - Р,-_ vuj_v; Uj = || Fj ||2; и, = г/а,
Pi= ATuj-ajvj; Р7 = ||р7||2
end
Если rank (А) = п, то мы гарантируем отсутствие нулевых а? Действительно, если а;. = 0, то span {Л^,..., Av^ с span {wx,..., Uj_ J, что влечет за собой неполноту ранга.
Если Р7 = 0, то нетрудно проверить, что
A Е^!, — , Гу] = Е«1, — , *Д Bj,
где Bj = 5(1 :j, 1 :j), а В имеет вид (9.3.8). Таким образом, в данном случае векторы v и и являются сингулярными векторами и 0(5,) с а (Л). Ланцошева двухдиагонализация обсуждается в Paige (1974). См. также Cullum, Willoughby (1985а, 1985b). По существу, это эквивалентно применению схемы ланцошевой трехдиагонализации к симметричной матрице
В начале § 8.3 мы показали, что ХДС) = оДЛ) = — Xn + m_i+1(Q для / = 1 :п. Вследствие этого неудивительно, что большие сингулярные значения двухдиагональной матрицы оказываются очень хорошими приближениями к большим сингулярным значениям матрицы А. Малые сингулярные значения для А отвечают внутренним собственным значениям для С и аппроксимируются уже не так хорошо. Аналог теории Каниэля - Пейджа для двухдиагонализации Ланцоша можно найти в Luk (1978), а также в Golub, Luk, Overton (1981). Аналитические, алгоритмические и численные рассмотрения, проведенные в двух предыдущих разделах, естественным образом переносятся и на двухдиагонализацию.
Наименьшие квадраты
Задачу наименьших квадратов (LS) min || Ах — b || 2 с матрицей А полного ранга также можно решить с помощью двухдиагонализации. Именно,
xls = VyLS = X У^ь
где у = (у19.,.,уп)т-решение системы By = (wfb,..., и^Ьу. Заметим, что вследствие верхнего двухдиагонального вида матрицы В мы не можем начать вычисление вектора b до завершения двухдиагонализации. Более того, мы вынуждены хранить векторы г19..., гп; это малоприятное занятие в случае больших п.
Развитие основанного на двухдиагонализации алгоритма для разреженных задач наименьших квадратов может пойти по более удачному пути, если А приводится к нижнему треугольному виду
«1 О
31«2
ООООUTAV = В =
О
О
О
О
О 0п
где V= [v19..., vj и U = [«1,..., ип+ iJ. Осуществляющая это процедура Ланцоша разрабатывается без труда, а итоговый алгоритм очень похож на (9.3.10).
Пусть Vj = [v19..., Vj], Uj = [м19..., иД Bj = (1 :j 4- 1,1 :j\ и рассмотрим минимизацию || Ах — b || 2 по всем векторам вида х = у у, где .yeRL Поскольку
\\АУ1У-Ь\\г = \\ит АУ5У-итЬ\\2 = \\В5у-и^хЬ\\2А- £ kuj Ь?,
искомый минимизирующий вектор х имеет вид Xj = У3у? где у3 минимизирует (/ + 1) х /-задачу наименьших квадратов min || В^у — Uj+1 b ||2.
Вследствие того, что матрица Bj-нижняя двухдиагональная, легко вычисляются вращения Гивенса J^...,./, такие, что матрица
является верхней двухдиагональной. Если
jj...j1uT+1b =
то отсюда вытекает, что Xj = V^j = Wjd? где Wj = VjRJ1. В Paige, Saunders (1975) показано, как можно получить Xj из xj+ г посредством простой рекурсии, привлекающей последний столбец матрицы Wr Окончательным результатом является алгоритм для разреженных задач наименьших квадратов, требующий для своей реализации запоминания лишь нескольких л-векторов.
Идея Арнольди
Один из способов обобщения процесса Ланцоша на несимметричные матрицы принадлежит Арнольди (Arnoldi (1951)) и опирается на хессенбергову редукцию QTAQ = H. Именно, если мы запишем 6 = [^1,...,^п] и приравняем столбцы в AQ = QH, то получим
1
A4i='Lhiiqi, 1^Чл-1.
1=1
Таким образом, если мы нашли qY, ... , q; и вычислили h^ = qf Aq; при / = 1:j, то q}+1 = rJ+i / || rj+1 || 2, где
rj*i =A4j- £
i= 1
Если rm = 0, то нетрудно показать, что подпространство span {44, ... , ^} инвариантно относительно А. В целом, мы имеем
г = qY ; Р = V j = 0
while Р / 0
hj+u = Р; ^+1 = r^; j = j -v \
w = Aq^ г = w
for i = 1;j
hij = qf w; r = r — hi-qi
end
P = II r || 2
if j < n
A,+l., = p end end
Это и есть то, что называют итерациями Арнольди. Некоторые их численные свойства обсуждаются в Wilkinson (АЕР, 382//). Как и в симметричных ланцошевых итерациях, вызывает вопросы потеря ортогональности среди qj. Заметим также, что на каждом шаге происходит обращение к каждому из вычисленных векторов q.
Точно так же, как из итераций Ланцоша мы получим процедуры решения симметричных систем Ах = Ь, процесс Арнольди может послужить базой для построения процедур решения разреженных линейных систем. Центральная идея состоит в том, чтобы вычислять последовательность приближенных решений {Xj} с тем свойством, что Xj есть решение задачи
min || Ах — b || 2,
где X(A,qY ,7) = span{ qY, AqY, ... , Aj~1 qY} = span^qY, ... , q^ . Ссылки на эти методы, связанные с подпространствами Крылова, приводятся в конце параграфа.
Несимметричная трехдиагонализация Ланцоша
Еще один подход к обобщению процесса Ланцоша на симметричный случай связан с приведением А к трехдиагональной форме с помощью преобразований подобия. Однако, как указывается в Wilkinson (АЕР, рр. 388-405), из соображений численной устойчивости лучше отказаться от подобных преобразований при трехдиагонализации матрицы общего вида. Несмотря на это, нам кажется, что будет интересно познакомиться с несимметричным процессом Ланцоша,-хотя бы для того, чтобы высветить дополнительные трудности, сопутствующие несимметричным спектральным задачам.
Предположим, что A eR” х п и существует невырожденная матрица X, такая, что
Х-хАХ = Т =
" «1
А
71
^2*
о ‘
7п-1
. 0
Зп —1^п _
Рассматривая столбцовые разбиения X = [х„..., %„],
и, приравнивая столбцы в АX = XT и А т ¥= ¥Тт, находим Ах} = Yj-iXj-! + а5х5 + Р,х,+ 1, уохо = 0,
И
Ату,= Pj-i^-i + ajyj + Yj^+1» Po^o^O,для j = 1: n — 1. Эти уравнения вместе c YT X = 1п влекут за собойaj = у} Axj'
Pjxi +1 = rj =Xj -ij-iXj-^
i=Pj = U- ctjiVy, - P;-1у,-1 •
Некоторый произвол есть в выборе масштабирующих множителей р7 и уг Стандартный выбор-взять Р, = 11^112 и уj = x^xPj-приводит к следующему алгоритму:
15 63
хт, уг -заданные ненулевые векторы.
j = 0; Ро = 1; л0 = 0; г0 = ^ ; у0 = 0; р0 = ух
while Р,. # 0 Л г Jр} # 0
Ъ = Г1РМ(9.3.11)
>i =г/₽р ^+1 = Pjhj
j =j + 1
«j = yj^ji rj = U- aJVj - 1j-ixj-i; P, = IIrj Il2
Pj = (А-а,1)Ту,. - Р,-1 у,_!
end
Пусть Xj = £xY) ... , Xj3, Yj = [>4, ... , yj3 и Ty-ведущая у x у-подматрица в T. Легко проверить, что
АХ^Х^ + г^, ATYj=YjTj+pjeJ.
Таким образом, всякий раз, когда р7 = || Fj ||2 = 0, столбцы матрицы Xj определяют инвариантное подпространство для А. Окончание по этой причине, следовательно, событие желанное. К сожалению, если у7 = хJ+ г р3 = 0, то итерации заканчиваются, но не дают никакой информации об инвариантных подпространствах для А или А т.
Эта проблема - одна из нескольких трудностей, связанных с (9.3.11). К числу других трудностей относятся отсутствие сходимости собственных значений матриц Tj и близкие к линейно зависимым векторы Xj и уР Нам неизвестны какие-либо успешные реализации несимметричного алгоритма Ланцоша.
Задачи
Показать, что вектор Xj из алгоритма 9.3.1 удовлетворяет || Axj — b || 2 = PJeJyJ, где Tjyj^Qjb.
Привести пример начального вектора, для которого несимметричные итерации Ланцоша (9.3.12) обрываются и при этом не дают какой-либо информации о инвариантном подпространстве. Возьмем
"16 2"
3 0 2
1 3 5
Модифицировать алгоритм 9.3.1 так, чтобы он реализовал процедуру решения неопределенной симметричной системы, следуя схеме из § 9.3.2.
Сколько нужно рабочих векторов, чтобы эффективно реализовать (9.3.10)?
Предположим, что А неполного ранга и а7 = 0 в (9.3.10). Как получить Uj, причем итерации могли бы продолжаться?
Разработайте нижний бидиагональный вариант (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.
Paige С. С. and Saunders М.А. (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, Birkhauser, Boston.
Cullum J. and Willoughby R. A. (1985b). Lanczos Algorithms for Large Symmetric Eigenvalue Computations, Vol. 11 Programs, Birkhauser, 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.
Разреженные несимметричные процедуры для Ах = b, основаные на идеях Ланцоша/Арнольди, обсуждаются в
Arnold! W. Е. (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). GM RES: 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 J. Sci. Stat. Comp. 9, 152-163.
Обобщения процесса Ланцоша на спектральные задачи других типов обсуждаются в
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.
Van der Vorst H.A. (1982). “A Generalized Lanczos Scheme”, Math. Comp. 39, 559-562.
Глава 10
Итерационные методы для линейных систем
В конце предыдущей главы было показано, каким образом итерации Ланцоша можно использовать для решения различных линейных уравнений и задач наименьших квадратов. Разработанные методы подходят для больших разреженных задач, так как они не требуют разложения соответствующей матрицы. В этой главе мы продолжим обсуждение процедур решения линейных уравнений, обладающих этим же свойством.
Первый раздел-это беглый обзор классических итерационных методов: Якоби, Гаусса-Зейделя, SOR, чебышевских полуитераций и т. д. Мы даем краткое изложение этих методов, потому что наша главная цель в этой главе - основательно представить метод сопряженных градиентов. В § 10.2 мы подробно излагаем эту важную технику, естественным образом отталкиваясь от метода наискорейшего спуска. Напомним, что в § 9.3 метод сопряженных градиентов уже появился в связи с итерациями Ланцоша. Метод выводится заново для того, чтобы объяснить некоторые его практические варианты, которым посвящен § 10.3.
Мы предупреждаем читателя о непоследовательности в обозначениях этой главы. В § 10.1 разработка методов на «/,j-уровне» делает необходимым использование верхних индексов: х^ обозначает /-ю компоненту вектора xw. В других разделах, однако, развитие алгоритмов происходит без явного упоминания компонент векторов или матриц. Поэтому в § 10.2 и § 10.3 мы можем отказаться от верхних индексов, а последовательности векторов обозначать как { хк}.
Стандартные итерации
В гл. 3 и 4 процедуры решения линейных уравнений были связаны с разложением матрицы коэффициентов А. Методы такого типа называются прямыми методами. Если матрица А большая и разреженная, то искомые составляющие разложений могут быть плотными, и это ограничивает практическое применение прямых методов. Одним из исключений является случай ленточной матрицы А (см. § 4.3). Но даже во многих задачах с ленточными матрицами сама лента оказывается разреженной, внося трудности в реализацию алгоритмов типа ленточного метода Холецкого.
Одна из причин огромного интереса к процедурам решения разреженных линейных уравнений связана с тем значением, которое придается умению находить численные решения уравнений в частных производных. В действительности именно исследователи в области вычислительных методов для уравнений в частных производных ответственны за многие из подходов к разреженным матрицам, которые теперь используются повсеместно.
Грубо говоря, есть два подхода к разреженной задаче Ах = Ь. Один из них заключается в выборе подходящего прямого метода и его адаптации с тем, чтобы
учесть разреженность в А. Типичные стратегии адаптации связаны с разумным использованием структур данных и со специальными, минимизирующими заполнения стратегиями выбора ведущего элемента. Есть обширная литература по этим вопросам; заинтересованному читателю следует обратиться к книгам George, Liu (1981) и Duff, Erisman, Reid (1986).
Противоположностью прямым методам являются итерационные методы. Эти методы порождают последовательность приближенных решений {хк}, и по существу А участвует лишь в матрично-векторных умножениях. При оценивании качества итерационного метода неизменно в центре внимания вопрос о том, как быстро сходятся итерации xw. В этом параграфе мы представим некоторые основные итерационные методы, обсудим их практические реализации и докажем несколько характерных теорем о поведении итераций.
Итерации Якоби и Гаусса-Зейделя
Простейшей итерационной схемой, возможно, являются итерации Якоби. Они определяются для матриц с ненулевыми диагональными элементами. На метод может натолкнуть запись 3 х 3-системы Ах = b в следующем виде:
Х1 = 01 — ^12 Х2 — ti13 ХзМ «1 1 >
х2 = ^2 — ^21 Х1 — ti23 ХзМ«22 >
х3 = 03 — ti31 Х1 — ^32 Х2^1 «33 *
Предположим, что xw-какое-то приближение к х = А-1 Ь. Чтобы получить новое приближение х(к + 1), естественно взять
Х<1 b = 01 — «12х? — «13Х?)/«ц ,
х2 + П = (*2 - «21 ^ - а23х^/а22,(10.1.1)
х<з-‘+1> = (63_аз1х<‘>_аз2х<‘>33.
Это и определяет итерации Якоби в случае п = 3. Для произвольных п мы имеем for i = 1: п
х^^Г-'^а^- У аих*Л/а..
\ ' Д и J ,=f+1 и 1 )'а"(10.1.2)
end .
Заметим, что в итерациях Якоби при вычислении х*^ ^ не используется информация, полученная в самый последний момент. Например, при вычислении х^ используется х? s хотя уже известна компонента х^^. Если мы пересмотрим итерации Якоби с тем, чтобы всегда использовать самые последние оценки для xt, то получим
for / = 1: п
X J=1j = i + l/(10.1.3)
end
Так определяется то, что называется итерациями Гаусса-Зейделя.
Для итераций Якоби и Гаусса - Зейделя переход от xw к х(к+1) в сжатой форме описывается в терминах матриц L, D и U, определяемых следующим образом:
*ОО О"
«21О•••:
«31«32*•О1
:О О
.«п1«п2*** «п,п —1О.
(10.1.4)
Именно, шаг Якоби имеет вид MjX^1^ = NjXw 4- b, где Mj = D и Nj = — (L+ U). С другой стороны, шаг Гаусса - Зейделя определяется как MGx(k^"^ = NGxw 4- b, где MG = (D 4- L) и Ng = - U.
Расщепления и сходимость
Процедуры Якоби и Гаусса - Зейделя - это типичные представители большого семейства итерационных методов, имеющих вид
Мх(к^п = Nxw -У Ь, (10.1.5)
где А = М — N есть расщепление матрицы А. Для практического применения итераций (10.1.5) должна «легко» решаться система с матрицей М. Заметим, что для Якоби и Гаусса - Зейделя матрица М соответственно диагональная и нижняя треугольная.
Сходятся ли итерации (10.1.5) к х = А-1, зависит от собственных значений матрицы М"1 N. Именно, определим спектральный радиус произвольной п х «-матрицы G как
р(С) = шах{|Х|:ХеХ(С)};
тогда величина p(M-1N) и определяет, будут ли итерации (10.1.5) успешными.
Теорема 10.1.1. Предположим, что beRn и матрица А = М 4- NeR” х п невырожденная. Если М невырожденная и спектральный радиус матрицы М-1 N удовлетворяет неравенству p(M-1N)<i, то итерации xw, определенные согласно Мх^1^ = Nxw 4- b, сходятся к х = А-1Ь при любом начальном векторе х(0).1)
Доказательство. Пусть ew = xw — х обозначает погрешность на /с-й итерации. Вследствие того что Mx = Nx 4- b, находим M(x(k^ — х) = N(х(к} — х), и, значит, погрешность для х(к+1) имеет вид е^1^ = М"1 New = (М-1 N)kew. Из леммы 7.3.2 мы знаем, что (М-1 N)k -► 0 тогда и только тогда, когда р(М-1 N) < !.□
Обычно формулируют более полное (см. задачу 10.1.6) утверждение, а именно условие p^M-1N^< 1 необходимо и достаточно для сходимости при любом начальном векторе. - Прим, перев.
Этот результат является центральным при таком изучении йтерационных методов, когда разработка алгоритмов обычно происходит по следующим направлениям:
Предлагаются расщепления А = М — N, такие, что линейные системы Mz = d «легко» решаются.
Описываются классы матриц, для которых итерационная матрица G = М"1 N удовлетворяет p(G) < 1.
Устанавливаются дальнейшие результаты относительно p(G), дающие представление о том, каким образом погрешности е(к) стремятся к нулю.
Например, рассмотрим итерации Якоби Dx(k + 1) = — (L4- Щх^ 4- b. Одним из условий, обеспечивающих p(MjY Nj) < 1, является строгое преобладание. Действительно, если А обладает этим свойством (определение см. в § 3.4.10), то
п а-p(.M7lNJ)^\\D-l(L+U)\\ay = max £ ^ < L
Как правило, чем «сильнее» диагональное преобладание, тем быстрее сходимость, но есть и контрпримеры: см. задачу 10.1.8.
Для метода Гаусса-Зейде ля, чтобы установить его сходимость для симметричной положительно определенной А; оценка спектрального радиуса осуществляется сложнее.
Теорема 10.1.2. Если матрица A gR” х п симметричная и положительно определенная, то итерации Гаусса - Зейде ля (10.1.3) сходятся при любом x{Q\
Доказательство. Запишем А = L 4 D 4 LT, где D = diag(an) и L нижняя строго треугольная. В свете теоремы 10.1.1. наша задача-показать, что все собственные значения матрицы G = — ф -4 L)"1 LT находятся внутри единичного круга. Вследствие положительной определенности матрицы D имеем GY = D 1/2 GD "1/2 = = — (1 + LJ"1 L[, где Lt = D~i/2 LDi/2. Поскольку G и Gx имеют одинаковые собственные значения, мы должны убедиться в том, что p(GJ < 1. Если Gv х = Хх и хнх = 1, то —L[x = X(/4-L1)xh, следовательно, — хн L^ х = Х(Х 4xIiL1x). Положив а 4- bi = хн Lr х, получаем
2 _ - а-4 bi 2 _ а2 4- Ь21 4* а 4" bi 14" 2а 4* а2 А- Ь2
Однако в силу положительной определенности матрицы D "1/2 AD "1/2 = I 4- Lv 44- L { нетрудно показать, что 0 < 1 4-xHL1x + xHL1x = 1 4- 2а, откуда и следует, что |X| < !.□
Этот результат используется постоянно, из-за того что многие матрицы, возникающие при дискретизации эллиптических уравнений в частных производных, являются симметричными положительно определенными. В литературе появилось множество других результатов в том же духе. См. Varga (1962), Young (1971), Hageman, Young (1981).
Практическая реализация Гаусса-Зейделя
Теперь мы сосредоточимся на некоторых практических деталях, связанных с итерациями Гаусса-Зейделя. Особенно просто реализуется шаг Гаусса -Зейделя (10.1.3) с замещением:
forendforendi = Х:пi = Х:пbl- Т аихз - £j=ij=t+ibl- Т аихз - £j=ij=t+i%х) )/«»%х) )/«»ЧислоЧислофлопов в этих вычислениях примерно в два раза больше числа ненулевых
for
end
for
end
i = Х:п
i = Х:п
bl- Т аихз - £j=ij=t+i
bl- Т аихз - £j=ij=t+i
%х) )/«»
%х) )/«»
Число
Число
элементов в матрице А. Нет никакого смысла в более точном оценивании вычисли
зависит от
тельной работы, потому что реализация в действительности сильнотельной работы, потому что реализация в действительности сильноалгоритмаалгоритма(10.1.6)(10.1.6)0 10 144-1-1-1-144G(l.» 0(2, j)G(l.» 0(2, j)F^J)
тельной работы, потому что реализация в действительности сильно
тельной работы, потому что реализация в действительности сильно
алгоритма
алгоритма
(10.1.6)
(10.1.6)
0 1
0 1
4
4
-1
-1
-1
-1
4
4
G(l.» 0(2, j)
G(l.» 0(2, j)
FM
Т =Т =оо-1-1-14-14L G(N,j) JL G(N,j) JL f(nj) JL f(nj) J, 9з =
Т =
Т =
о
о
-1
-1
-1
4
-1
4
L G(N,j) J
L G(N,j) J
L f(nj) J
L f(nj) J
Эта задача возникает при дискретизации уравнения Пуассона в прямоугольнике.
Легко показать, что здесь матрица А положительно определенная.
При условии что G(iJ) = 0, если ig{0,N+1} или je {0,М 4- 1}, один шаг
Гаусса - Зейделя с замещением принимает следующую форму:
for j = 1: М
for i= 1:М
G(iJ) = UHiJ) + G(i- 1,7) + GVi + 1,7) + G^iJ- 1) + G(iJ + l))/4 end end
Заметим, что в этой задаче для матрицы А не требуется никакой памяти.
Последовательная верхняя релаксация
Метод Гаусса - Зейделя очень привлекателен в силу своей простоты. К несчастью, если спектральный радиус для М G1 NG близок к единице, то метод может оказаться непозволительно медленным из-за того, что ошибки стремятся к нулю как p(MGx NG)k. Чтобы исправить это, возьмем coeR и рассмотрим следующую модификацию шага Гаусса-Зейделя:
for i= 1: п
= 4b.,- Y«uxTU ~ i(10.1.7)
end7-1j=i+i /
Так определяется метод последовательной верхней релаксации (SOR- Successive over relaxation). Используя (10.1.4), мы видим, что в матричных обозначениях шаг SOR выглядит как
М x(k + 1) = N xw + со£,(10.1.8)
CDCD’X7
где Mto = D + соТи N^ = (1 — to)D — toU. Для небольшого числа специфических (но важных) задач, таких, как (10.1.6), значение релаксационного параметра со, минимизирующего p(MJ1 N^), является известным. Более того, в результате p(Mf1 Ny) = p(MGY NG) значительно сокращается. В более сложных задачах, однако, для того чтобы определить подходящее со, может возникнуть необходимость в выполнении весьма трудного анализа собственных значений. Полный обзор «теории SO R» появился в Young (1971). Некоторые практические схемы для оценивания оптимального со обсуждаются в O’Leary (1976) и Wachpress (1966).
Метод чебышевских полуитераций
Еще один подход к ускорению сходимости итерационного метода извлекает пользу из полиномов Чебышева. Предположим, что посредством итераций Мхи*п = NxU) 4- b получены хкХ\ ...s хкк> и мы хотим определить коэффициенты Vj(^), J' = 0: к, такие, что вектор
к
у^ = £ v^x^(10.1.9)
j = 0
лучше приближает решение, чем х(к\ Если х(0) = ... = xw = х, то разумно потребовать, чтобы yw = х. Следовательно, будем считать, что
к
Z vj(k)= 1.(10.1.10)
J = o
Посмотрим, как при этом ограничении выбирать Vj(k) с тем, чтобы минимизировать погрешность для у(к).
Вспомним, что согласно теореме 10.1.1 xw — х = (М~1 N)kew, где ew = = xw — X. Мы видим, что
кк
yW — х = ^ vj(k)(xU} — х) = ^ Vj(k)(M-1 N)jew .
j=oj=O
Работая с 2-нормами, отсюда получаем
‘ll/^-^^ll^^k^(10.1.11)
где G = M"1 N и
к
Pk(z) = L vAMzj.
j=o
Заметим, что условие (10.1.10) влечет за собой pk(l) = 1.
Теперь предположим, что матрица G симметричная и ее собственные значения X, удовлетворяют неравенствам — 1 < а ^ Хл ^ ... ^ Xt ^ 0 < 1. Отсюда вытекает, что
||л(О)||2= max 1а(М1< max 1л(Х)|.
Х^Х^А)а < X < р
Таким образом, для того чтобы сделать норму pk(G) малой, нам нужен полином pk(z), принимающий малые значения на [а, 0] и подчиненный ограничению Л(1)=1-
Рассмотрим полиномы Чебышева Cj(z\ порождаемые рекуррентным соотношением Cj(z) = 2zcj_1(z) — Cj_2(z), где c0(z) = 1 и c2(z) = z. Эти полиномы удовлетворяют неравенству | сДг) | ^ 1 на [— 1,1], но быстро растут вне этого интервала. Как следствие, полином
СкСк— 1+2— 1+2гдегдеРк^ =Рк^ =z — а \ р-а/z — а \ р-а/ct(10ct(10-1+2-1+21 - аР-а1 - аР-а1 + 21 + 21 -Р р-а’1 -Р р-а’
Ск
Ск
— 1+2
— 1+2
где
где
Рк^ =
Рк^ =
z — а \ р-а/
z — а \ р-а/
ct(10
ct(10
-1+2
-1+2
1 - а
Р-а
1 - а
Р-а
1 + 2
1 + 2
1 -Р р-а’
1 -Р р-а’
удовлетворяет условиюpk(l) = 1 и оказывается малым на [а, Р]. В силу определения
pk(z) и уравнения (10.1.11)
И/'0 ~Х II 2 <И/'0 ~Х II 2 <||Х-Х(О) || 2к* (и) I||Х-Х(О) || 2к* (и) I
И/'0 ~Х II 2 <
И/'0 ~Х II 2 <
||Х-Х(О) || 2к* (и) I
||Х-Х(О) || 2к* (и) I
Таким образом, чем больше ц, тем значительнее ускорение сходимости.
Для того чтобы изложенное выше стало практической процедурой ускорения, для вычисления yw нам нужен метод более эффективный, чем (10.1.9). Мы молчаливо предполагаем, что п большое и поэтому вновь обращаться к x^\...sxw при больших к может быть неудобно или даже невозможно.
К счастью, для yw можно вывести трехчленные рекуррентные соотношения, опираясь на трехчленные рекуррентные соотношения для многочленов Чебышева. Именно, можно показать, что если
22-р-а ^(ц) Р-а ^+1(ц)’22-р-а ^(ц) Р-а ^+1(ц)’
22-р-а ^(ц) Р-а ^+1(ц)’
22-р-а ^(ц) Р-а ^+1(ц)’
ТО
(10.1.12)(10.1.12)у^ " = ак+1 (у^ - у<к"+ yzw) + у«-^ Mzw = b — Ayw,
(10.1.12)
(10.1.12)
у = 2/(2-а-Р),
где j(0) = xw и у(1) = х(1). Об этой схеме мы будем говорить как о чебышевском полуитерационном методе, связанном с Му^*^ = Nyw 4- b. Для эффективности ускорения нам нужны хорошие нижние и верхние оценки для аир. Как и для SOR, установить эти параметры может быть трудно, за исключением небольшого числа специфических задач.
Чебышевские полуитерационные методы всесторонне анализируются в Golub, Varga (1961), а также в Varga (1962, гл. 5).
Симметричный метод SOR
При выводе чебышевского ускорения мы предполагали, что итерационная матрица G = М"1 N симметрична. Таким образом, наш простой анализ неприменим в случае SOR-итераций с несимметричной матрицей M^N^. Однако есть возможность симметризовать метод SOR, сделав его пригодным к применению чебышевского ускорения. Идея состоит в сочетании метода SOR и схемы SOR с обратным ходом:
for i: = п; — 1:1
х'* + 1> = со^6- £ ацХ^+и- £ аих^\аи + (1(10.1.13)
endj=1^i+l 7
Эти итерации получаются, когда неизвестные в (10.1.7) перевычисляются в обратном порядке. Обратный метод SOR можно описать в матричных терминах, используя (10.1.4). Именно, имеем М^х^^1^ = Stoxw 4- mb, где
Мш = Я 4- wU, N^ = (1 - co)D - coL.(10.1.14)
Если А симметричная (С/ = LT), то Mto = M^ и Nto = N^ и мы получаем итерации
Mtox(k"^"1,2) = N^x^ 4- rob,
(10.1.15)
МУ+1) = N^x^1/2) 4- wb.
Ясно, что G = M;TN^M^N^ представляет собой итерационную матрицу для этого метода. Из определений Mto и Nto следует, что
^М’1#^^’^)’1^^1^(10.1.16)
Если D имеет положительные диагональные элементы и ККТ = (N^D-1 N^) — разложение Холецкого, то KTGK~T = KT(MtoD -1 М^)-1 К. Таким образом, G подобна симметричной матрице и имеет вещественные собственные значения.
Итерационный метод (10.1.15) называется методом симметричной последовательной верхней релаксации (SSOR). Он часто используется вместе с чебышевским полуитерационным ускорением.
Задачи
Показать, что итерации Якоби можно записать в виде х<к + и = х{к} 4- Нг{к\ где rw = Ь — Ах(к\ Получить аналогичное утверждение для итераций Гаусса-Зейде ля.
Показать, что если А обладает строгим диагональным преобладанием, то итерации Гаусса - Зейде л я сходятся.
Показать, что итерации Якоби сходятся для симметричных положительно определенных 2 х 2-систем.
Показать, что если матрица А = М — N вырожденная, то нельзя получить р(М"1 N) < 1 ни для какой невырожденной М.
Доказать (10.1.16).
-3/41-3/41Доказать обращение теоремы 10.1.1. Другими словами, показать, что если итерации Мх(к + п = Nxw 4- b всегда сходятся, то р(М-1 N) < 1.
-3/4
1
-3/4
1
и A2 =и A2 =— 1/12— 1/12(R.S. Varga). Предположим, что Ах =
и A2 =
и A2 =
— 1/12
— 1/12
Пусть Jx и J2 - соответствующие итерационные матрицы метода Якоби. Показать, что р^) > р(72), т е- опровергнув заявление о том, что усиление диагонального преобладания влечет за собой более быструю сходимость метода Якоби.
Замечания и литература к § 10.1
С намного большей основательностью, чем здесь, обзор области итерационных методов дают три исчерпывающих тома:
Hageman L. A. and Young D. М. (1981). Applied Iterative Methods, Academic Press, New York.
[Есть перевод: Хейгеман Л., Янг Д. Прикладные итерационные методы.- М.: Мир, 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.
Мы также настоятельно рекомендуем гл. 7 из
Ortega J. (1972). Numerical Analysis: A Second Course, Academic Press, New York.
Часто предпочтение отдается прямому (неитерационному) решению больших разреженных систем. См.
Duff I. S., ErismanA. М. and Reid J. К. (1986). Direct Methods for 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.]
Мы видели, что число обусловленности к (Л) имеет важное значение, когда к системе Ах = b применяются прямые методы. Однако обусловленность системы имеет отношение и к эффективности итерационного метода. См.
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 M.J. М. and Verner J. Н. (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.P. (1976). “Hybrid Conjugate Gradient Algorithms”, Report STAN-CS-76-548, Department 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 П”, 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 1, 3-18.
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.
Добавление при переводе к § 10.1
Обстоятельное изложение основных итерационных методов и их применений можно найти в следующих отечественных монографиях:
Марчук Г. И., Кузнецов Ю. А. (1972). Итерационные методы и квадратичные функционалы.- Новосибирск: Наука.
Самарский А.А., Николаев Е.С. (1978). Методы решения сеточных уравнений-М/. Наука. Воеводин В. В., Кузнецов Ю. А. (1984). Матрицы и вычисления.-М.: Наука.
Марчук Г. И. (1986). Методы расщепления и переменных направлений.-М.: ОВМ АН СССР.
Перевод
Дьяконов Е. Г. (1989). Минимизация вычислительной работы.-М.: Наука.
Метод сопряженных градиентов
Трудность, связанная с SOR, чебышевскими полуитерациями и такого же типа методами, заключается в том, что они зависят от параметров, правильный выбор которых иногда бывает затруднителен. Например, для того чтобы чебышевское ускорение было успешным, нам нужны хорошие оценки для наибольшего и наименьшего собственных значений соответствующей итерационной матрицы М"1 N. Если эта матрица не устроена по-особому, то получение их в аналитическом виде, скорее всего, невозможно, а вычисление дорого.
В этом разделе мы представим метод, в котором нет этой трудности,-хорошо известный метод сопряженных градиентов Хестенса-Штифеля. Мы вывели этот метод в § 9.3.1 при обсуждении - как приспособить алгоритм Ланцоша к решению симметричных положительно определенных линейных систем. Здесь мы выводим метод сопряженных градиентов заново для того, чтобы подготовить почву для § 10.3, где будет показана его связь с другими итерационными схемами для Ах = b и будут описаны некоторые из полезных его обобщений.
» Наискорейший спуск
Вывод метода мы начнем с того, что обсудим, как может происходить рыскание при минимизации функционала ф(х), имеющего вид
ф(х) = -хТ Ах — хт Ь,
где beRn и матрица ЛеК” хл предполагается положительно определенной и симметричной. Минимальное значение ф равно — ЬТА"ХЬ(2 и достигается при х = А -1 Ь. Таким образом, минимизация ф и решение системы Ах = Ь- эквивалентные задачи.
Одной из самых простых стратегий минимизации ф является метод наискорейшего спуска. В текущей точке хс функция ф убывает наиболее быстро в направлении антиградиента — Уф(д:с) = b — Ахс. Мы называем
г=Ь — Ах.
невязкой вектора хс. Если невязка ненулевая, то ф(хс + arc) < ф(хс) для некоторого положительного а. В методе наискорейшего спуска (с точной минимизацией на прямой) мы берем а = rj rjr? Агс, дающее минимум для ф(хс + агс). Получаем
к = 0; х0 = 0; r0 = b
while гк / 0
к = кА- 1
а* = Гк-irk-x/rLiAr^!
xk = xk-i + акгк_1
гк = Ь — Ахк(10.2.1)
end
Выбор начального вектора в виде х0 = 0 не является ограничением. Если х считается более подходящим начальным приближением, то мы просто применим (10.2.1), заменив b на b — Ах. В этом случае искомое решение аппроксимируется векторами хк + X.
Глобальная сходимость метода наискорейшего спуска является следствием легко устанавливаемого неравенства
ф(^) + ^TA-1b ^ f 1 -—^^(д^Н^Л-1/,).(10.2.2)
2\ к 2 (А) /2
К несчастью, скорость сходимости может быть недопустимо медленной, если к2(А) = Х1 (А)/Хп(А) большое. В этом случае линии уровня для ф являются сильно вытянутыми гиперэллипсоидами, а минимизация соответствует поиску самой нижней точки на относительно плоском дне крутого оврага. При наискорейшем спуске мы вынуждены переходить с одной стороны оврага на другую вместо того, чтобы спуститься к его дну. Направления градиента, возникающие при итерациях, являются слишком близкими; это и замедляет продвижение к точке минимума.
Произвольные направления спуска
Чтобы избежать ловушек при наискорейшем спуске, мы рассмотрим последовательную минимизацию ф вдоль какого-либо множества направлений yPv,p2, •••}> которые не обязаны соответствовать невязкам {fq,^,...}. Легко показать, что минимум ф^-! + арк) по а дает
а = a-k=plrk_JplApk.
При таком выборе, как легко видеть, получаем
фО*-1 -V- а^ = <р(хк_к) -^(р^г,.-^2р{Арк.(10.2.3)
Таким образом, для того чтобы обеспечить уменьшение ф, мы должны потребовать, чтобы рк не был ортогонален к гк_1. Это приводит к следующей стратегии минимизации:
к = 0; х0 = 0; r0 = b
while гк ^ 0
к = к А- 1
Выбрать направление рк так, чтобы рк rk_Y * 0
а* = Рк rk-Jpk Арк(10.2.4)
xk = 4-i + арк
гк = Ь- Ахк end
Заметим, что xkespan{p1? ... spkV Проблема, конечно, состоит в том, как выбирать эти векторы с тем, чтобы гарантировать глобальную сходимость и в то же время обойти ловушки наискорейшего спуска.
А-сопряженные направления спуска
По-видимому, идеальный подход был бы связан с выбором линейно независимых р( с тем, чтобы каждое х( было решением задачи
minф(-х).(10.2.5)
xespan{pi,... ,pj
Это гарантировало бы не только глобальную сходимость, но и конечность процесса, так как должно быть Ахп = Ь. Заметим, что то, что нам нужно, это такой вектор рк, для которого решение одномерной задачи минимизации
ттф^ + apj
одновременно дает решение для /с-мерной задачи минимизации (10.2.5). Это серьезное ограничение, но, оказывается, этого можно добиться.
Пусть Рк = [р1? ..., pk]6R" х к является матрицей направлений спуска. Если хе range^рк\ то х = Ркгу + арк для некоторых jgR^-1 и aeR. Для х такого вида легко показать, что
а2
Ф (*) = Ф (Л -1 у) + ау Т Р^_! Арк + у р{ Арк — аркЬ.
Присутствие «смешанного члена» аут Рк_хАрк усложняет минимизацию. Без него задача минимизации q> по range (Рк) расщепилась бы на задачу минимизации по range (Л-Д решение которой xk_v предполагается известным, и простую минимизацию для скаляра а. Один из способов добиться этого расщепления - потребовать, чтобы направление рк было Я-сопряженным по отношению к Pi, ... , pk-i, т. е.
Рк_1Арк = 0.(10.2.6)
Если это сделать и определить xk_Y Grange(/^-J и akeR соотношениями
ф(л:к_1) = ттф(Р1У
'ак = ркЬ!рк Арк,
то задача
fa21
min ф(Р*_ j у + акрк) = min Ф(Р*_ ,у) + min j —р^ Арк - ар^b >у, ауa I1
будет решена, если взять PkY у = xk_Y и а = ак. Поскольку xk_Y есть линейная комбинация векторов р1, ... , pkY, отсюда вытекает, что р^ Ахк_г = 0 и, следовательно,
а к = р{ rk -JpI Арк,
т. е. рецепт для ak точно такой же, как в (10.2.4). Таким образом, получаем
к = 0; х0 = 0; r0 = b
while гк / 0
к = к А- 1
Выбрать pkGspan{Apv, ... , Apk_v}1 так, чтобы pl rk_Y ^ 0.(10.2.7)
«к = pI rk-Jd-iArk-i
•4 = ^-1 +«кА
гк = Ь- Ахк
end
Здесь вектор хк = xk_Y + акрк минимизирует ф на линейной оболочке направлений спуска, т. е. на подпространстве span {pY, ... , рк}.
Метод сопряженных градиентов
Чтобы выполнить (10.2.7), мы должны быть уверены, что возможен выбор рк, при котором pkYApk = 0 и pkrkY / 0. Предположим, что векторы р^ , pk-i ненулевые и удовлетворяют условиям рТ Apj = 0 при i^j. Поскольку xk_YE 6span {/^, ... , pk_Y}, отсюда вытекает, что для любого peR” мы имеем рТгk_Y = = ртb — рт Apk_Yz для какого-то zeRk-1. Если ртrk_Y = 0 для всех р, являющихся Л-сопряженными с /^, ... , рк_ t, то bе span {ApY, ... , Арк_ t}. А это влечет за собой х = А " Yb е span {pt, ..., рк_ ^ и, значит, хк _ t = х, т. е. rk_ г ^ 0. Следовательно, если rk_Y 0, то можно найти ненулевой вектор рк) Л-сопряженный с рх, ... , pk V и удовлетворяющий условию ркгк_г 0.
Поскольку наша цель - осуществить быстрое сокращение величины невязок, естественно выбирать в качестве рк вектор, который ближе всего к rk_Y среди векторов, Л-сопряженных с Pi,..,pk-i- Так мы получаем «нулевую версию» метода сопряженных градиентов:
к = 0; х0 = 0; r0 = b
while гк^ 0
к = к А- \
if к = 1
Pi -'о
else(10.2.8)
Пусть рк минимизирует lip — ^-i ||2 среди всех векторов ре8рап{Лр1? ..., Арк_ут. end
«к =РГк-1!р1Арк
xk = xk-i А-акрк
гк = Ь- Ахк
end
х = Ч
Конечность этого алгоритма обеспечивается тем, что векторы рк ненулевые и, будучи ненулевыми Л-сопряженными векторами, линейно независимы. Более точно, или rk_Y = 0 для некоторого к ^ п, или мы вычислим хп, минимизирующий ф на span{р^ ... ,р„} = R”.
Несколько крайне необходимых наблюдений
Чтобы сделать (10.2.8) эффективной процедурой для решения разреженных систем Ах = Ь, нам нужен эффективный метод вычисления рк. В качестве первого шага в этом направлении изучим свойства рк как решения определенной задачи наименьших квадратов.
Лемма 10.2.1. Для к^ 2 векторы рк, получаемые согласно (10.2.8), удовлетворяют
соотношению
Рк = Гк — 1 ~ ^^к- lZk-l^
где zk_Y есть решение задачи min || rk_Y — APk_Yz ||2 •
Доказательство. Предположим, что 2к1есть решение приведенной выше задачи наименьших квадратов и р = rk_Y — APk_Yzk_ ^минимальная невязка. Отсюда получаем р Т АРк_ t = 0. Более того, поскольку р = [ I — (АРк _ i) (АРк _ t)+ ] rk _ i - ортогональная проекция вектора rk_Y на range(Л/^Д р является ближайшим вектором к rk_Y на range (Л Р^). Таким образом, р = pk-Y •□
Используя этот результат, мы можем установить несколько важных соотношений между невязками rL и направлениями спуска р(.
Теорема 10*2.2. После к итераций метода сопряженных направлений имеем
Г, = Fj-X -UjApj,(10.2.9)
Р^ = 0,(10.2.10)
span{p1,... ,pj} = span{r0,...,}
= span^b, Ab,(10.2.11)
Доказательство. Уравнение (10.2.9) получается, если подействовать матрицей А на обе части равенства Xj = Xj_Y + а^- и учесть определение невязки.
Чтобы установить (10.2.10), заметим, что если (Pj АР^у^ = Р] Ь, то yj минимизирует
ф^у) = ^т(рГ лр^у - уТр1ь-
Таким образом, PT APjyj = РТЬ, и поэтому Xj = P^j и PTr^ = PT(Ь — APjу^ = 0.
Чтобы доказать соотношение (10.2.11), необходима индукция. При j = 1 оно очевидно верно. Предположим, что оно выполняется для некоторого у, удовлетворяющего 1 ^ j < к. Вследствие (10.2.9) г^еspan {b, АЬ, ... , AjЬ} и, значит, pj+Y = r-j — APj ZjE span ^b, Ab, ... , Ajb^. Оба пространства span {r0, ... , r;} и span {p1, ... , pj+t} имеют размерность у + 1, вследствие чего они должны совпадать с span {b, АЬ,... , Ajb}. □
Теперь мы установим взаимную ортогональность невязок Fj.
Теорема. 10.2.3. После к — 1 шагов алгоритма сопряженных градиентов (10.2.8) невязки г0, ... , rk_Y взаимно ортогональны.
Доказательство. Из уравнения xt = xt_ i + а^; вытекает, что r{ = гН1 — at Ар? Таким образом, по лемме 10.2.1, для у = 1 :к
Pj = rj-i -1Арх,..., Apj_1^zj_1espan{r0,
Следовательно, [р1, ... , рк] = [г0, ... , rk_ t ] Т для некоторой верхней треугольной матрицы TeRkxk. Поскольку векторы pt независимы, матрица Т невырожденная и поэтому
[г0, ... ,
Как следствие rj_ t е span ^pY, ... , pj} для j = 1: к. Но в силу (10.2.10) Рк-irk._Y = 0. Поскольку г0, ... , гк_2 е span ^pY, ... , рк_ i}, мы должны заключить, что rjrk_1 = 0 для j = 0: к — 2.
Теперь покажем, каким образом рк выражается в виде линейной комбинации рк _ г
и гк_1. Представим вектор zk_x из леммы 10.2.1 в блочном виде
‘ w 1 к - 2
и воспользуемся тождеством rk_x = rk_2 — ^k-i^Pk-i • Мы видим, что
/ И \
Рк = 4-у - ^Л-i^-i = 4-у - APk-2w- МРк = I 1 +— 4-у + 4-1» V «к/
где
^-i =—^-2 - APk_2w.
Вследствие взаимной ортогональности невязок rt векторы sk_x игк_1 ортогональны. Таким образом, задача наименьших квадратов из леммы 10.2.1 сводится к выбору ц и w, таких, что величина'
/ и \2
11^112= 1+~ H2 + U-1 Иг \ CLk-X/
минимальна. Поскольку 2-норма для rk_2 — APk_2z имеет минимум в точке zk_2, дающей невязку рк_х, отсюда вытекает, что sk_x есть кратное вектора рк_х. Следовательно, pkespan {гк_х, рк_х}. Не ограничивая общности, мы можем считать, что рк = гк_ 1 + $крк_ i, и так как рк_ х Арк = 0 и рк- irk_x = 0, отсюда вытекает, что
о _ Pk-yArk-yг^1гк 1
PLvAPk-xРкАрк
Это приводит к «версии 1» метода сопряженных градиентов:
к = 0; х0 = 0; r0 = b
while гк / 0
к = к * \
if к ^ 1
Р1 = 'о
Р* = - Р1-1Агк-1/р1-1ЛРк-1(10.2.12)
Рк = 4-у + P*A-i end °-к = Г у4-у!Р3кАрк 4 = 4-у +акрк гк = Ь- Ахк end х = хк
Кажется, что эти итерации - в том виде, как они записаны - требуют трех различных умножений матрицы на вектор на каждый проход цикла. Однако если вычислять невязки с помощью рекурсии гк = гк_х — акАрк и подставить
rl-irk-i= -O-k-yrLyApk-y,(10.2.13)
= ak-yPl-yAPk-y(10.2.14)
в формулу для Рк, то у нас получится следующая более эффективная реализация метода.
Алгоритм 10.2.1 (Сопряженные градиенты). Для симметричной положительной определенной матрицы AeRnxn и вектора beRn следующий алгоритм вычисляет решение xeR” системы Ах = Ь.
к = 0; х0 = 0; r0 = b
while гк / 0
к = к + 1
if к= 1
Pi - 'о
else
^к = Гк-1Гк-1/Гк-2Гк-2
Рк^Ч-к + Р*А-1 end
°-к = г{_1гк_1/р{Арк
xk = xk_Y + акрк
гк = гк-1 ~акАрк end
х = хк
Эта процедура и есть по существу алгоритм сопряженных градиентов, появившийся в оригинальной работе Хестенса и Штифеля (Hestenes, Stiefel (1952)). Детали, связанные с его практической реализацией, обсуждаются в § 10.3. Но уже здесь укажем на то, что каждая итерация требует лишь одного умножения матрицы на вектор.
Связь с алгоритмом Ланцоша
В § 9.3.1 мы вывели метод сопряженных градиентов из алгоритма Ланцоша. Теперь давайте проследим за связями между этими двумя алгоритмами в обратном порядке, «выводя» процесс Ланцоша из сопряженных градиентов. Определим матрицу невязок RkеR"х п как Rk = [г0,..., гк_ г ] и верхнюю двухдиагональную матрицу BkeRk х к как
Вк =
- 1-0,0■
1-Рз:
. 01,
Из уравнений pj = rjY + Р7р7 -1, j = 2: к и равенства рг = г0 следует, что Rk = РкВк. Как следствие Я-сопряженности столбцов матрицы Рк = [р1, ... , рк"\ мы видим, что матрица Rk ARk = Вк diag(p[ ApY, ... , рк Арк)Вк трехдиагональная. Из (10.2.11) и теоремы 10.2.3 вытекает, что если
A = diag(p0, ... , рк_Д pf = || rt ||2,
то столбцы в ЯкД-1 образуют ортонормированный базис подпространства span{b, АЬ, ... , Ак-1 Ь^. Следовательно, столбцы этой матрицы являются, по сути, векторами Ланцоша из алгоритма 9.3.1, т. е. qt = + ri_1/pi_1, где i= 1: к. Более того, отвечающая этим ланцошевым векторам трехдиагональная матрица задается формулой
T^A^^diag^^A’1.T^A^^diag^^A’1.(10.2.16)(10.2.16)
T^A^^diag^^A’1.
T^A^^diag^^A’1.
(10.2.16)
(10.2.16)
Диагональные и поддиагональные элементы этой матрицы включают величины, которые легко извлекаются из итераций сопряженных градиентов. Таким образом, порождая векторы хк из алгоритма 10.2.1, мы можем получить хорошие оценки крайних собственных значений (и числа обусловленности) матрицы А.
Некоторые практические детали
Критерий окончания итераций в алгоритме 10.2.1 нереалистичен. Ошибки округления приводят к тому, что невязки теряют ортогональность, а конечность процесса не гарантируется математически. Более того, когда применяется метод сопряженных градиентов, то обычно п настолько большое, что в О (и) итерациях объем работы неприемлемо большой. Как следствие этих наблюдений метод принято рассматривать как какую-то подлинно итерационную технику с критерием останова, основанном на максимуме /стах для числа итераций и норме невязки. Это приводит к следующей практической версии алгоритма 10.2.1:
к = 0; х = 0; г = Ь; р0 = Ik Н2
while Vp* > е || b ||2 Л к < ктах
к = к + 1
if к= 1
Р = г else
0k = Pk-l/Pk-2
P = r^V>kP.
end
w = Ар*
a* = Pk-JPT*
x = x + akp r = r — akw p* = p II2 end
Этот алгоритм требует одно умножение матрицы на вектор и Юи флопов на одну итерацию. Заметим, что по существу нужна память только для четырех «-векторов: х, г, р и и\ Индексация скаляров^ не является необходимой и оставлена здесь только для того, чтобы облегчить сравнение с алгоритмом 10.2.1.
Критерий останова может также опираться на эвристические оценки для погрешности А-1 гк, получаемые с помощью аппроксимации || А "1 || 2 обратной величиной к наименьшему собственному значению трехдиагональной матрицы Тк вида (10.2.16).
Идея рассматривать сопряженные градиенты как итерационный метод берет начало в Reid (1971b). Итерационная точка зрения на метод полезна, но в этом случае центральное значение для успешного применения имеет скорость сходимости.
Сходимость метода
Этот параграф мы завершим изучением сходимости итераций {хк} метода сопряженных градиентов. Будут приведены два результата, и оба они говорят о том, что метод работает хорошо, когда матрица А близка к единичной - либо по норме, либо в том смысле, что отклонение имеет малый ранг.
п Тем не менее важно как-то различать pfc-1 и рк_2.-Прим, перев.
Теорема 10.2.4. Если А = I + В - симметричная положительно определенная п х п-матрица и rank (В) = г, то алгоритм 10.2.1 сходится не более чем за г шагов. Доказательство. Если Sk = span { b, Ab, ... , Ak~1 b}, то из равенства rank (Л — I) = г вытекает, что dim(5k) < г для всех к. Поскольку span{р1, ... , рк} = Sk и векторы pt независимы, отсюда следует, что итерации не могут продолжаться более чем г шагов. □
Из теоремы 10.2.4 вытекает важная метатеорема:
Если А близка к r-ранговой модификации единичной матрицы, то алгоритм 10.2.1 почти сходится за г шагов.
В следующем параграфе мы покажем, как используется это эвристическое утверждение.
Оценку погрешности в другом стиле можно получить в терминах Л-нормы, которая определяется следующим образом:
II w IIл =
Теорема 10.2.5. Предположим, что матрица Л eR” х ” симметричная положительно определенная и ЬеВ? . Пусть алгоритм 10.2.1 вырабатывает итерации {хк} и к = к2(А). Тогда
Ik - хк IIА ^ 2 Ik - хо II л -7=■V V к + 1
Доказательство. См. Luenberger (1973, р. 187).Ц
Точность приближений {хк} часто намного лучше, чем та, что предсказывается этой теоремой. Тем не менее оказывается очень полезной эвристическая версия теоремы 10.2.5:
Метод сопряженных градиентов сходится очень быстро по Л-норме, если к2(Л)«1.
В следующем параграфе мы покажем, каким образом мы иногда можем превратить заданную задачу Ах = b в связанную с ней задачу Ах = Б, где А близка к единичной матрице.
Задачи
Проверить, что в (10.2.1) невязки удовлетворяют соотношению г- rj = 0 при / = i + 1. 10.2.2. Проверить (10.2.2).
Проверить (10.2.3).
Проверить (10.2.13) и (10.2.14).
Дать формулы для элементов трехдиагональной матрицы Тк вида (10.2.16).
Сравнить требуемые объем вычислений и память для практических реализаций алгоритмов 9.3.1 и 10.2.1.
Замечания и литература к § 10.2
Метод сопряженных градиентов является представителем более широкого класса методов так называемых методов сопряженных направлений. В алгоритме сопряженных направлений направления поиска являются S-сопряженными для некоторой подходящим образом выбранной матрицы В. Обсуждение этих методов дается в
Dennis J. E.Jr. and Turner К. (1987). “Generalized Conjugate Directions”, Lin. Alg. and Its Applic. 88/89, 187-209.
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.
Фаддеев Д.К., Фаддеева В. H. (1963). Вычислительные методы линейной алгебры-М-Л.: Физматгиз.*
По поводу обсуждения характера сходимости метода сопряженных градиентов см.
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. К. (1971b). “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. А. (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). Линейная алгебра.-М.: Наука.
См. также
Воеводин В. В. (1979). О методах сопряженных направлений.-ЖВМ и МФ, 19, № 15, 1313-1317.
Марчук Г. И., Кузнецов Ю. А. (1980). Теория и применение обобщенного метода сопряженных градиентов.-Новосибирск: ВЦ СО АН СССР.
Кузнецов Ю. А. (1983). Метод сопряженных градиентов, его обобщения и применения. Вычислительные процессы и системы. Вып. 1.-М.: Наука.
Сопряженные градиенты с предобусловливанием
Предыдущий параграф мы закончили замечанием о том, что метод сопряженных градиентов работает хорошо для матриц, которые либо хорошо обусловлены, либо имеют лишь небольшое число различных собстенных значений. (Последнее относится к случаю, когда А есть малоранговое возмущение единичной матрицы). В этом параграфе мы покажем, как проводится предобусловливание линейной системы с тем, чтобы матрица коэффициентов приобретала одну из этих прекрасных особенностей. Наше изложение будет весьма сжатым и неформальным. Более основательно эти вопросы представлены в Golub, Meurant (1983) и Axelsson (1985).
10.3.1. Вывод
Рассмотрим симметричную положительно определенную п х «-систему Ах = Ь. Идея предобусловливания в сопряженных градиентах состоит в том, чтобы «стандартный» метод сопряженных градиентов применялся к преобразованной системе
Ах = В,(10.3.1)
где А = С-1 АС-1, х = Сх,Б = С-1 b, a С-симметричная положительно определенная матрица. Ввиду наших замечаний в § 10.2.8 нам следует попытаться выбрать С таким образом, чтобы А оказалась хорошо обусловленной матрицей или матрицей с кластеризованными собственными значениями. По причинам, которые скоро появятся, матрица должна быть к тому же «простой».
Применяя алгоритм 10.2.1 к (10.3.1), мы получим итерации
к = 0; х0 = 0; г0 = Б
while гк ф 0
к = к + 1
if к = 1
' А = 'о
else
^k = rX_A-ilfLTTk-2(10.3.2)
Рк = ?k-i + РкА-1
end
ак = гк-А-к1РкС~' АС~' рк
хк = хк_к + акрк_ _
rk = rk-i ~акС 'АС 'рк
end
х = хк
Здесь хк должно рассматриваться как приближение к х, а гк-невязка в преобразованных координатах, т. е. гк = Б — А хк. Конечно, получив х, мы можем найти х из уравнения х= С-1х. Однако можно избежать явного обращения к матрице С-1, записав рк = Срк, хк = Схк и гк = С"1 гк. Действительно, подставив эти выражения
в (10.3.2) и вспомнив, что Б = С 1 b и х = Сх, мы получим
к = 0; Сх0 = 0; С"1 г0 = С "1 b
while С ~1 гк / 0
к = к + 1
if к = 1
Qi = С"1^
else
^ = 1с-МЧс"МКс-МЧс-М(10.3.3)
сРк = С 1 гк_ 1 + Рк Cpk_Y
end
ак = (С-Чк_^(С-Чк_МСРкП^
Схк = Cxk_Y + акСрк
C"Yrk = C"xrk_x - аДС"1 AC'^Cpk
end
Cx = Cxk'
Если мы определим предобусловливатель М как М = С2 (это также положительно определенная матрица) и будем считать, что zk - решение системы Mzk = гк, то (10.3.3) упрощается следующим образом:
Алгоритм 10.3.1 (Сопряженные градиенты с предобусловливанием). Для заданной симметричной положительно определенной матрицы ЛеКлХл и вектора beRn следующий алгоритм решает линейную систему Ах = Ь, используя метод сопряженных градиентов с предобусловливателем MeRn х л.
к = 0; х0 = 0; r0 = b
while (гк Ф 0)
Решить Mzk = гк к = к + 1 if к = 1
Рх = ^О else ^k = rLlZk-J,-L2Zk-2 Рк = zk-l + $крк-1 end
4 = rLizk-JPk Арк
Хк=Хк-1 + «кРк
Ч = гк-х -а-кАрк end х = хк
Относительно этой процедуры следует сделать несколько важных замечаний:
Можно доказать, что невязки и направления спуска удовлетворяют соотношениям
rjM^r^O, z/У,(10.3.4)
рТДС"х AC"^Pi = ^ i^j-(10.3.5)
Знаменатели rk_2zk_2 = 2к_2 Mzk_2 не обращаются в нуль, так как М положительно определенная.
Несмотря на то что преобразование С играло главную роль при выводе алгоритма, его действие проявляется лишь через предобусловливатель М = С2.
Для того чтобы алгоритм 10.3.1 был эффективным для разреженных матриц,
должны легко решаться линейные системы Mz = г и сходимость должна быть быстрой.
Выбор хорошего предобусловливателя может оказать впечатляющее воздействие на скорость сходимости. Ниже мы обсудим некоторые возможности такого выбора.
Предобусловливатели, связанные с неполным разложением Холецкого
Одна из наиболее важных стратегий предобусловливания связана с вычислением неполного разложения Холецкого матрицы А. Этот подход в идейном плане предполагает вычисление нижней треугольной матрицы Н, которая обладает некоторой хорошо обрабатываемой структурой разреженности и в каком-то смысле «близка» к точному множителю G в разложении Холецкого для А. Предобусловли- ватель берется в виде М = ННТ. Чтобы оценить достоинства этого выбора, рассмотрим следующие факты:
Существует единственная симметричная положительно определенная матрица С, такая, что М = С2.
Существует ортогональная матрица Q, такая, что С = QHT, т.е. Нт-это верхний треугольный сомножитель в QT^-разложении матрицы С.
Следовательно, получаем эвристическое соотношение
А = С^ЛС1 = С"т АС"х =НО 3
= (HQTrxA(QHTYx =Q(H~XGGTH~T)QT ^1.( '
Таким образом, чем лучше Н аппроксимирует G, тем меньше обусловленность для А, и тем лучше работает алгоритм 10.3.1.
Легкий, но эффективный способ получения просто устроенной матрицы Н, которая аппроксимирует G, это подправить редукцию Холецкого, полагая Ьи равным нулю, если соответствующий элемент а^ нулевой. Проделав это с версией Холецкого, построенной на одноранговых модификациях, мы получаем
for к = 1: п _____
А (к, к) = УА(кД)
for i = к + 1: и
if А^к)^0
. А^к) = A(i,k)/A(k,k)
end(10.3.7)
end
for j = к + 1: n for i = j:n if АЩ^
A (i,j) = A (ij) - A (i,k) A (j,к) end end end
end'
На практике матрица А и множитель H неполного разложения Холецкого для нее хранятся в памяти с использованием каких-либо подходящих структур данных, и циклы приведенного выше алгоритма принимают при этом весьма специфический вид.
К несчастью, алгоритм (10.3.7) не всегда устойчив. Классы положительно определенных матриц, для которых неполный Холецкий устойчив, устанавливаются в Manteuffel (1979). См. также Elman (1986).
Неполные блочные предобусловливатели
Как почти все в этой книге, идеи неполного разложения, намеченные в общих чертах в предыдущем разделе, имеют блочный аналог. Для иллюстрации мы рассмотрим неполное блочное разложение Холецкого симметричной положительно определенной блочно-трехдиагональной матрицы
^i^iЕх0Ех0Е^ 0 л2 ет2 Ei ^з -
^i
^i
Ех0
Ех0
В интересах иллюстрации мы предположим, что блоки At трехдиагональные, а ^-диагональные. Матрицы такого строения возникают при стандартной 5-точечной дискретизации самосопряженных эллиптических дифференциальных уравнений на двумерной области.
Случай 3 х 3-матриц обладает достаточной общностью. Наше обсуждение будет основано на Concus, Golub, Мeurant (1985). Пусть
G =
Gx 00
Fi G2 0
_o f2 g3_
есть точный множитель в блочном разложении Холецкого для А. Хотя G разреженная, если ее рассматривать как блочную матрицу, отдельные блоки являются плотными, за исключением Gx. Это можно увидеть из требуемых вычислений:
GXGX=BX=AX, fx = exg^, G2Gt2=B2=A2-FxFtx=A2-ExB"x1Etx, F2 = E2G2V,
G3G3 = В3 = А3 — F2F2Т = А3 — Е2В2 1Е2.
Для блочного разложения Холецкого мы ищем, следовательно, приближенный множитель вида
5 =5 =ооО О " б2 о Fl Qi-
5 =
5 =
о
о
причем такой, чтобы легко решались системы для предобусловливателя М = ббт. Для этого вводится требование разреженности блоков в 6, и в данном случае это разумно, так как блоки А{ трехдиагональные, а блоки Et диагональные:
б,бТ,=5, = А,,
f, = e,5;y,
б2 57 = В2 = А2 — Е, Л, £7, Aj (трехдиагональная) я В, 1, Е2=Е2бгх,
G3G3 = В3 = А3 — Е2Х2Е2, Л2 (трехдиагональная) % В 2 1.
Заметим, что все В{ трех диагональные. Ясно, что Л; должны выбираться тщательно, чтобы обеспечить симметрию и положительную определенность для В{. Далее, отсюда следует, что матрицы Gt нижние двухдиагональные. Матрицы F, полные, но
использовать прямое исключение:
5,w, = г,,
G2W2 = Г2 - Flwl = г2 - Е1 ^W, ,G3 w3 = r3- F2 w2 = r3- E2 52 1 w2 .
Выбор Az требует деликатности, так как в итоге Bt должна быть положительно определенной. В нашей организации вычислений центральный вопрос, каким образом аппроксимировать обратную к симметричной положительно определенной трехдиагональной т х m-матрице Т = (t^) с помощью симметричной трехдиагональной матрицы Л. Есть несколько разумных подходов:
Положить Л = diag(l/r11, ... , 1Длл).
Взять в качестве Л трехдиагональную часть в Г "1. Это может вычисляться эффективно, так как существуют us ueRm, такие, что нижняя треугольная часть в Г"1 совпадает с нижней треугольной частью матрицы ш)т. См. Asplund (1959).
Положить Л = UTU, где [/-нижняя двухдиагональная часть матрицы G"1, такой, что Т = GGт-разложение Холецкого. Это можно найти за (Цт) флопов.
Эти аппроксимации и идущие от них свойства соответствующих предобусловлива- телей обсуждаются в Concus, Golub, Мeurant (1985).
Идеи декомпозиции области
Численное решение эллиптических уравнений в частных производных часто приводит к линейным системам вида
если неизвестные упорядочиваются подходящим образом. См. Meurant (1984). Здесь A t- симметричные положительно определенные, В{ - разреженные, а последний блочный столбец обычно намного уже остальных.
Наш пример с р = 2 служит для того, чтобы увязать (10.3.8) и его блочную структуру с геометрией соответствующей задачи и выбранной декомпозицией области. Предположим, что нам нужно решить эллиптическую задачу на области следующей формы:
IIРис. 10.3.1. Декомпозиция области.Рис. 10.3.1. Декомпозиция области.
I
I
Рис. 10.3.1. Декомпозиция области.
Рис. 10.3.1. Декомпозиция области.
Есть три «типа» переменных: внутренние для подобласти I (собранные в подвекторе xj, внутренние для подобласти II (собранные в подвекторе х^ и лежащие на границе между двумя областями (собранные в подвекторе z). Заметим, что внутренние неизвестные одной подобласти не взаимодействуют с внутренними неизвестными другой подобласти,-это и объясняет нулевые блоки в (10.3.8). Заметим также, что число граничных неизвестных обычно мало по сравнению с общим числом неизвестных.
Теперь давайте исследуем связанные с (10.3.8) возможности пред обусловливания. Для простоты будем по-прежнему считать, что р = 2. Если положить
М = L
~ м;1 о о ~ о м;1 о
008"!_
и
где
оВТоВТо ом2 оВ^ S
о
ВТ
о
ВТ
тотом ="м, 0 в/ о м2 в2В\ ВТ2 S*м ="м, 0 в/ о м2 в2В\ ВТ2 S*(10.3.9)(10.3.9)
то
то
м =
"м, 0 в/ о м2 в2
В\ ВТ2 S*
м =
"м, 0 в/ о м2 в2
В\ ВТ2 S*
(10.3.9)
(10.3.9)
при этом 5* = 5 + В{М Г1 Bv + В2 М2 В2 . Посмотрим, как мы могли бы выбрать блочные параметры Mv, М2 и S с тем, чтобы получить эффективный предобуслов- ливатель.
Если сравнить (10.3.9) и (10.3.8) в случае р = 2, то видно, что есть смысл в том, чтобы Mi аппроксимировало At, а 5* аппроксимировало Q. Последнее достигается, если S^Q —B^M^By —B2M2YB2. Имеется несколько подходов к выбору S, и все они навеяны тем фактом, что мы не можем формировать плотные матрицы В^Г1 В^. Например, как обсуждалось в предыдущем разделе, для Mf1 могли бы использоваться трехдиагональные аппроксимации. См. Meurant (1989).
Если подобласти устроены достаточно регулярно, а линейные системы с точ-
ными At легко решаются (скажем, с использованием быстрых процедур для уравнения Пуассона), то мы можем положить Mt = АГ Отсюда следует, что М = А + Е, причем rank(E) = m, где т-число граничных неизвестных. Таким образом, метод сопряженных градиентов с предобусловливанием теоретически будет сходиться за т шагов.
Независимо от того, какие аппроксимации будут включены в процесс, мы видим, что есть замечательные возможности для распараллеливания вследствие расщепления на независимые задачи для подобластей. Число подобластей на самом деле является обычно функцией геометрии задачи и в то же время числа доступных для вычислений процессоров.
Полиномиальные предобусловливатели
Вектор z, определяемый предобусловливающей системой Mz = г, до сих пор должен был рассматриваться как приближение к решению системы Az = г, поскольку М - приближение к А. Один из способов получения такого приближения к решению - применить р шагов стационарного метода MYzkk^u = Nxz(k) + г, z(0) = 0. Отсюда вытекает, что если G = Mf1 N\, то
z = z^ = (/ + G + ... + Gp'^M;xr.
Таким образом, если М = (I + G + ... + Gp_ t) М f1, то Mz = г, и мы можем рассматривать М как предобусловливатель. Важно, конечно, чтобы М была симметричной положительно определенной, и это ограничивает выбор М г, N Y и р. Матрица М является полиномом от G, и поэтому о ней говорят как о полиномиальном предобусловливателе. Этот тип предобусловливателя заманчив с точки зрения векторной или параллельной обработки, и, как следствие, он привлек к себе значительное внимание.
Заключительное предложение
Обсуждение полиномиального предобусловливателя указывает на важную связь между классическими итерациями и алгоритмом сопряженных градиентов с предобусловливанием. Многие итерационные методы имеют своим основным шагом
Хк = хк-2 + tokbkzk-i +^-1 -Хк-2),(10.3.10)
где MzkY = rk_x = b — Ахк_х. Например, если мы положим юк = 1 и yk = 1, то хк = М~ЧЬ - Ах^х^,
т.е. Мхк = Nxk_Y + b, где А = М — N. Таким образом, рассмотренные в § 10.1 методы Якоби, Гаусса-Зейделя, SOR и SSOR имеют вид (10.3.10). То же верно относительно по л у итерационного чебышевского метода (10.1.12).
Следуя Concus, Golub, O’Leary (1976), можно и алгоритм 10.3.1 организовать таким образом, чтобы его центральный шаг имел вид (10.3.10):
xY = 0; х0 = 0; к = 0; r0 = b
while гк ф 0
к = к + 1
Решить Mzk_x = гк_у относительно zk_v
Yt- 1 = 2к_ ! Mzk_ Jz^. J Azk_ !
if к = 1
if к = 1
0D1 = 1
else „ _Л 4k-i4-xMzk-i 1 V1 СО ь — I 1~I
V 4k-2Zl-2MZk-2tok-J(10.3.11)
end *к = Хк-2 +COli(Yli-1Zt_1 +Х*_! -Хк_2) гк = Ь- Ахк end х = хп
Итак, мы можем рассматривать скаляры сок и ук в (10.3.11) как ускоряющие параметры, которые могут выбираться для того, чтобы увеличить скорость сходимости итераций Мхк = Nxk_ t 4- b. Следовательно, любой итерационный метод, основанный на расщеплении А = М — N, может ускоряться с помощью алгоритма сопряженных градиентов, при условии что матрица М (предобусловливатель) симметрична и положительно определена.*
Задачи
Разобраться с процедурой неполного разложения, основанной на gaxpy-версии Холец- кого, т. е. на алгоритме 4.2.1.
Сколько и-векторов требуется хранить в памяти при практической реализации алгоритма 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 1’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 П”, Math. Comp. 49, 1-17.
ChinR.C., ManteuffeT. 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 Т. F., Jackson К. 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.
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.
В основе алгоритма сопряженных градиентов - функционал <р (х). Однако если вместо него рассматривается минимизация функционала НЛх — b\\2s то весь вывод подвергается небольшим изменениям. В результате получается так называемый метод миниминальных невязок, анализируемый в
Cline А. К. (1976b). “Several Observations on the Use of Conjugate Gradient Methods”, ICASE
Report 76, NASA Langley Research Center, Hampton, Virginia.
Его можно «вывести», заменив в алгоритме 10.2.1 все скалярные произведения иТ с на ит Аи. Метод минимальных невязок иногда приводит к несколько более быстрому уменьшению нормы невязки. Сходные модификации базового алгоритма сопряженных градиентов классифицируются в
Ashby S., Manteuffel ТА. and Saylor Р.Е. (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.
Jea К. 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 ДА)х = b Using Krylov Subspace Information Obtained for the Symmetric Positive Definite Matrix A”, J. Comp, and App. Math. 1g, 249-263.
Полиномиальные предобусловливатели обсуждаются в
Johnson О. 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 Preconditioners”, 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.
Dubois Р. 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 Decomposition 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. Birkoff 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 M. 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.
Добавления при переводе к § 10.3
Интересные свойства и различные способы предобусловливания с использованием матриц типа теплицевых изучаются в
Тыртышников Е. Е. (1989). Теплицевы матрицы, некоторые их аналоги и приложения.-М.:
ОВМ АН СССР.
Новый подход к построению многоуровневых предобусловливателей, связанных с многосеточными методами декомпозиции области, предложен в
Kuznetsov Yu. А. (1989). Algebraic multigrid domain decomposition-Sov. J. Numer. Anal. Modelling, 4, N 5, 351-379.
В основе широкого класса обобщений методов сопряженных направлений лежит понятие псевдоортогональности: упорядоченная система векторов Sj, ... , sm называется 7?-псевдо- ортогональной, если (Rsj, s.) = 0 при i <j^ т и (RSj, Sj) ^ 0. Общая схема метода сопряженных направлений для решения системы Ах = b должна описывать вычисление последовательных приближений Xi, соответствующих им невязок rt и вспомогательных векторов s^ образующих САВ-псведоортогональную систему для подходящих фиксированных матриц С и В. Нулевой шаг состоит из вектора начального приближения х0, вычисления невязки r0 = b — Ах0 и присваивания sY= г0. Далее, на z-м шаге выполняются такие действия:
СЦ = V>i_Y , Ki Y)/(C А В St, st\
'rt = ^-- i — OiABSi,
xi = Xt_Y + Qt В Si,
Si+l = 'l + £ Pi+l.J^>
(^rf,Si)(^rf,Si)где P, + ij находятся из треугольной системы (As,^)0P. + i.i
(^rf,Si)
(^rf,Si)
(ASj.sJ ...(/?S,,S,) Pi + l,i
Если г,- = 0, то процесс заканчивается на i-м шаге. Если гм / 0, то а( = 0 или (Кзи s^ = О, тогда процесс обрывается на i-м шаге. Указанная общая схема рассмотрена в
Воеводин В. В. (1979). О методах сопряженных направлений.-ЖВМ и МФ, 19, № 5, 1313-1317.
В этой же работе показано, что для двучленности соотношений, т. е. для того чтобы 0i+i,7 = О при j < i — 1 достаточным является условие (СЛ ВС1)* = а! + 0 А В, где а, 0-какие-то числа. Для ^-членности соотношений, т. е для того чтобы 0l +1 , = О при j< i — к, достаточным к *
является обобщенное условие Воеводина (СА ВС1)* = £ аДАВУ, где о^-какие-то числа.
7 = 0
Е. Тыртышников доказал следующую теорему о необходимости этого условия: пусть для всех начальных приближений, таких, что процесс не обрывается, выполняется условие Воеводина и хотя бы для одного начального приближения процесс заканчивается в точности на /7-м шаге. Предположим, что п > 1к + 3 и матрицы А, В, С невырожденные. Тогда 0,+ ij = О при j < i — 1. См..
Воеводин В. В., Тартышников Е. Е. (1981). Об обобщении методов сопряженных направлений.- Численные методы алгебры.-М.: Изд-во Москов. ун-та.
Глава 11
Функции от матриц
Задача вычисления функции У (Л) от матрицы А размера и х п часто встречается в теории управления и других прикладных областях. Грубо говоря, если скалярная функция f^ определена на спектре Х(Л), то функцию от матрицы У (Л) определяют, подставляя матрицу А вместо переменной z в «формулу» для f(z). Например, если УМ = (1 + z)/(l-z) и 1^Х(Л), то/(Л) = (/ +Л)(/-Л)-1.
Эти вычисления становятся особенно интересными, когда функция / трансцендентная. Один из подходов в этой более сложной ситуации состоит в вычислении какого-нибудь спектрального разложения А = YBY-1 и использовании формулы f(A) = Y/(B)Y-1. Если матрица В достаточно простая, то часто можно вычислить ДВ) непосредственно. Это показано в § 11.1 для разложений Жордана и Шура. Неудивительно, что на основе последнего разложения получается более устойчивая У (Л) процедура.
Другой подход к вычислению функции от матрицы состоит в аппроксимации требуемой функции У (Л), легко вычисляемой функцией д(А). Например, функция д может быть усеченным рядом Тейлора, аппроксимирующим функцию у. Оценки погрешности, связанной с такой аппроксимацией функции от матрицы, даны в § 11.2.
В последнем разделе мы обсуждаем специальную и очень важную задачу вычисления матричной экспоненты еА.
Спектральные методы
Для заданной матрицы А размера и х п и скалярной функции y(z) существует несколько способов определить функцию от матрицы j\A\ Неформальный способ определения - подставить матрицу А вместо переменной z в формулу для f(z). Например, если p(z) = 1 + z и r(z) = (l - (z/2))-1 (1 + (z/2)) при z ^ 2, то, конечно, разумно определить р(А) и г (Л) как
р^ = 1 У А
и
г(Л) =г(Л) =2^Х(Л).2^Х(Л).
г(Л) =
г(Л) =
2^Х(Л).
2^Х(Л).
Подстановка А вместо z также срабатывает и в случае трансцендентных функций, например,
сс дкеА = У —.
Однако для того чтобы сделать последующие алгоритмические разработки корректными, мы должны более аккуратно определить /(А).
Определение
Существует много способов строгого определения понятия функции от матрицы. Смотри [Rinehart, 1955]. Возможно, наиболее изящный подход основан на применении контурного интеграла. Пусть функция/(z) аналитична на замкнутом множестве, ограниченном замкнутым контуром Г, который окружает спектр Х(А). Определим f(A) как матрицу
JU) = ^-.№^I-Ay4z.(11.1.1)
2тп г
В этом определении можно сразу узнать матричный вариант интегральной теоремы Коши. Интеграл (11.1.1) определяется поэлементно:
/Ы) = (Л,) =>/kj = 2”. у^е{(zl - А)"1 e}dz.
Заметим, что элементы матрицы (zl — А)"1 аналитичны на Г и матрица /(А) определена в тех случаях, когда функция /(z) аналитична в окрестности Х(А).
Жорданова характеризация
Определение (11.1.1), совершенно бесполезное с вычислительной точки зрения, можно использовать для вывода более практичных характеризаций/(А). Например, если матрица /(А) определена, и
A = XBX"V = Xdiag(S1, ... , Вр^Х"\ В^С”-*”', то несложно проверить, что
ЯА^Хф^Х"1 =Х diag и кВ уДВ^ X ’1.(11.1.2)
Для случая когда матрицы ^-жордановы блоки, мы получаем следующий результат.
Теорема 11.1.1. Пусть X 1 АХ = diag(J1? ... , J р) - жорданова каноническая форма (JCF) матрицы АеСп Хп с матрицами
\ 1... О
о х; 1;
:1
- О ... О Х;-
являющимися жордановыми блоками размера т{ х т^ Если функция f(z) аналитична в некотором открытом множестве, включающем Х(Л), то
/(^) = 2fdiag(/(J1),...,/(Jp))X-1,
где
Юб =Юб =/(А.) /(1)(А,)О /(А,)/(А.) /(1)(А,)О /(А,)(т, — 1)!(т, — 1)!
Юб =
Юб =
/(А.) /(1)(А,)
О /(А,)
/(А.) /(1)(А,)
О /(А,)
(т, — 1)!
(т, — 1)!
/(1)(А.)/(А.)
Доказательство. Принимая во внимание замечания, предшествующие формулировке теоремы, достаточно рассмотреть матрицу /(G), где
G = XI -V Е, E = ^la_^
-жорданов блок размера q х q. Пусть матрица (zl — G) невырожденна. Так как
q-i pk
k = o Vz
то из интегральной теоремы Коши следует, что
q- 1Ж) = Lк = 0q- 1Ж) = Lк = 012iu12iuf -1^? (2-ХГ1f -1^? (2-ХГ1dz Ek =dz Ek =k = 0 K 'k = 0 K '
q- 1
Ж) = L
к = 0
q- 1
Ж) = L
к = 0
1
2iu
1
2iu
f -1^
? (2-ХГ1
f -1^
? (2-ХГ1
dz Ek =
dz Ek =
k = 0 K '
k = 0 K '
Заметив, что Ek = (6;j-kY получаем требуемый результат. □
Следствие 11.1.2. Если А е С" х ”, А = X diag(X1, .. , Х^Х"1, и матрица/(А) определена, то ДА) = Хdiag(ДХ^, ... , ДХп^X ’1.'
Доказательство. Здесь все жордановы блоки имеют размер 1 х !.□
Этот результат показывает тесную связь между функцией от матрицы /(Л) и собственной системой матрицы А. К несчастью, вычислительные достоинства JCF-подхода к проблеме функции от матрицы весьма сомнительны, если только матрица А не является диагонализуемой с хорошо обусловленной матрицей собственных векторов. В самом деле, можно ожидать, что погрешности округления порядка u/c2QO испортят результат вычисления, так как придется решать линейную систему с матрицей X. Следующий пример наводит на мысль, что плохо обусловленных преобразований подобия следует избегать при вычислении функции от матрицы.
Пример 11.1.1. Если
1 + Ю"51
О 1 - 10“5
то любая матрица собственных векторов является масштабированным по столбцам вариантом матрицы
О 2(1 — 10"5)
и имеет число обусловленности во второй норме порядка 105. Используя компьютер с машинной точностью и « 10 7, мы найдем, что
fl [X-1 diag (exp (1 + IO"5), exp (1 - 10“5))X] =fl [X-1 diag (exp (1 + IO"5), exp (1 - 10“5))X] =2.7183070.0000002.7183070.0000002.7500002.7182542.7500002.718254
fl [X-1 diag (exp (1 + IO"5), exp (1 - 10“5))X] =
fl [X-1 diag (exp (1 + IO"5), exp (1 - 10“5))X] =
2.718307
0.000000
2.718307
0.000000
2.750000
2.718254
2.750000
2.718254
хотя
2.7183092.718282
0.0000002.718255
Метод разложения Шура
Некоторые трудности, связанные с жордановым подходом к проблеме функции от матрицы, можно обойти, положившись на разложение Шура. Если А = QTQH-
разложение Шура матрицы А, то
/U) = QfmQH.
Для того чтобы этот подход был эффективным, нам нужен алгоритм вычисления функций от верхних треугольных матриц. К несчастью, явные выражения для /(Т), как показывает следующая теорема, очень сложные.
Теорема 11.1.3. Пусть Т = ^ц^-верхняя треугольная, матрица п х п с собственными значениями Х{ = 1Н) и пусть матрица / (Т) определена. Если / (Т) = (ДД то f^ = 0 при z > у, jV = f (XJ при i = j и для всех i < j имеем равенство
j ij^^so ’ S1 ^Sl ’ 52 ’ ’ ' ^Sk i Sk^ ^o ’ * * * ’ ^Sk -I ’
(50, ... , s^eS^
где S- означает множество всех строго возрастающих целочисленных последовательностей, начинающихся с i и заканчивающихся j, и f\Xss-« ,XS~\-разделенная разность k-го порядка функции / на сетке { Xs°, .. , Х^}.
Доказательство. Смотри [Descloux, 1963], [Davis, 1973], [Van Loan, 1975b].□
Вычисление матрицы /(T) в соответствии с теоремой 11.1.3 потребовало бы 0(2") флопов. К счастью, Парлетт [Parlett, 1974а] получил изящный рекуррентный метод для определения строго верхней треугольной части матрицы F =f(T). Он требует только 2п3/3 флопов и может быть выведен из следующего коммутационного свойства:
FT = TF.(11.1.3)
В самом деле, сравнивая элементы (zj) левой и правой частей этого уравнения, находим, что
зj
zL / ik ^kj^ ^ik /к j ’j C
k = ik=i
и, следовательно, если элементы tu и ty различны, то
=Y tikfk]~fik‘kj.(11.1.4)
^jj ^iik = i+l^jj ^ii
Из этого равенства мы заключаем, что элемент f- является линейной комбинацией своих соседей, стоящих левее и ниже в матрице F. Например, элемент/25 зависит от /22 ,/23 5/24 5/5 5 5/45 и/з5 • Поэтому вся верхняя треугольная часть матрицы F может быть вычислена диагональ за диагональю, начиная с /(GJ, .• • ,/(^п). Полная процедура имеет следующий вид:
Алгоритм 11.1.1. Этот алгоритм вычисляет функцию от матрицы F = f(T)9 где Т- верхняя треугольная матрица с различными собственными значениями и функция /определена на спектре Х(Т).
for z = 1: п
fu =Ж)
end
for р = 1: п — 1
for z = 1: п — р j=iFp s = lu ^й
for k = i + 1 :j — 1
S ^4" t^ f ^ j f t^ j
end
/у = sKtu - t^ end
end
Этот алгоритм требует 2«3/3 флопов. Предполагая, что Т = QAQH - форма Шура матрицы А, имеем f(A) = QFQH, где F = f(T). Понятно, что большую часть работы при вычислении ДА) этим способом составит вычисление разложения Шура.
Пример 11.1.2. Если
2 3
3 4
О 5
n/(z) = (1 + z)/z, то элементы матрицы F = (/и) = (Г) можно определить по формулам
/и =0 + 1)/1 =2,
/22 = (1 + 3)/3 = 4/3,
/зз = 0 +5)/5 = 6/5,
/12 = ^12 (/22 —/11 )/(^22 — ^11 ) = “2/3,
/гз = ^23 (/зз —/22)7(^33 — ^22) = — 4/15,
/13 = С ^1 3 (/зз — /11)4" (^12/23 —/12 ^23 )] /U33 — ^11 ) = — 1 /15.
Метод блочного разложения Шура
Если матрица А имеет близкие или кратные собственные значения, то алгоритм 11.1.1 приводит к плохим результатам. В этом случае разумно использовать блочную версию алгоритма 11.1.1. Мы обрисуем в общих чертах такую процедуру, следуя работе [Parlett, 1974а]. Первый шаг состоит в выборе матрицы Q в разложении Шура, такой, чтобы близкие или кратные собственные значения были собраны в блоках Ты,..., Трр, расположенных на диагонали матрицы Т. В частности, мы должны найти разбиение на блоки
>и
Т12 •
>и
^12‘
•• Flp
0
т22 •
- т2р
0
f22 .
f2p
т =
, F =
о
0.
трр_
О
0.
- Fpp
при котором Х(^) A *ЦТ^ ^ 0, i ^ j. Блочные размеры можно определить, используя методы §7.6.
Затем мы вычисляем подматрицы Fu =f^Tu) при i = 1 \р. Поскольку собственные значения блока Ти предположительно близкие, эти вычисления требуют специальных методов. (Некоторые возможности рассматриваются в двух следующих разделах.) Если диагональные блоки матрицы F известны, то блоки строго верхней треугольной части матрицы F могут быть найдены рекуррентно, как в скалярном случае. Для того чтобы вывести соответствующие формулы, мы приравняем (ij)
блоки левой и правой частей уравнения FT = TF при i <j и получим следующее обобщение равенства (11.1.4):
Е^и - ТиРц = TtjFn - F^ + X (TikFkj - FikTkJY(11.1.5)
k = I +1
Это линейная система, неизвестными которой являются элементы блоков Ftj и чья правая часть «известна», если мы вычисляем F^ по блочным наддиагоналям. Уравнение (11.1.5) можно решать по алгоритму Бартелса - Стюарта (алгоритм 7.6.2).
Описанный здесь блочный метод Шура удобен, когда вычисляются вещественные функции от вещественных матриц. После вычисления вещественной формы Шура А = QTQ1 блочный алгоритм можно использовать для того, чтобы справиться с выступами размера 2 х 2 на диагонали матрицы Т
Задачи
Используя определение (11.1.1), показать, что (а) АДА) =/(А)А, (Ь) матрица ДА) верхняя треугольная, если матрица А -верхняя треугольная, и (с) матрица ДА) эрмитова, если матрица А эрмитова.
Переписать алгоритм 11.1.1 так, чтобы матрицаДТ) вычислялась столбец за столбцом.
Пусть А = Xdiag(Xf) X-1, где X = [л^, ..., х„] и X"1 = [yt, ..., уп]я. Показать, что если матрица ДА) определена, то
Л^) = х дхму?.k = 1
Показать, что
Т=Т=Ти Т12О Т22 JТи Т12О Т22 J=»ДТ) = q=»ДТ) = qFxi ^22 -Fxi ^22 -Р q ’Р q ’
Т=
Т=
Ти Т12
О Т22 J
Ти Т12
О Т22 J
=»ДТ) = q
=»ДТ) = q
Fxi ^22 -
Fxi ^22 -
Р q ’
Р q ’
ррр q
р
р
где Fи = ДДД и F22 =ДТ22). Считать, что матрица ДТ) определена.
Замечания и литература к § 11.1
В следующих книгах проблема функции от матрицы изложена лучше, чем обычно:
Bellman R. (1969). Introduction to Matrix Analysis, McGraw-Hill, New York.
Гантмахер Ф. P. Теория матриц. T. 1, 2.-M.: Наука, 1967.
Mirsky L. (1955). An Introduction to Linear Algebra, Oxford University Press, London.
Представление матрицы ДА) контурным интегралом, приведенное в этом разделе, полезно в функциональном анализе благодаря универсальности этого представления. См.
Dunford N. and Schwartz J. (1958). Linear Operators, Part I, Interscience, New York. [Имеется перевод: Данфорд H., Шварц Дж. Линейные операторы. Т. 1. Общая теория.-М.: ИЛ, 1962.]
Как мы уже говорили, возможны другие определения f (А). Однако для матричных функций, обычно встречающихся на практике, все эти определения эквивалентны. См.
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. Следующие работы касаются разложения Шура и его связи с /(А) проблемой:
Davis D. (1973). “Explicit Functional Calculus”, Lin. Alg. and Its Applic. 6, 193-99.
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.
Компромис между методами Жордана и Шура для/(Т) проблемы достигается, если матрицу А привести к блочно-диагональной форме, как описано в § 7.6.3. Смотри
Kagstrom В. (1977). “Numerical Computation of Matrix Functions”, Department of Information
Processing Report UMINF-58.77, University of Umea, Sweden.'
Аппроксимационные методы
Теперь мы рассмотрим класс методов вычисления функций от матрицы, в которых собственные значения не играют главную роль. Эти методы основаны на следующей идее: если функция gU^ аппроксимирует/^ на спектре Х(Л), то матрица д(А) аппроксимирует матрицу /(Л), например
AqAqАг
Aq
Aq
Мы начнем с оценки нормы ||/(Л) — д (Л) || при помощи представлений Жордана и Шура функции от матрицы. И продолжим некоторыми замечаниями о величине матричных многочленов.
Жорданов анализ
Жорданово представление функции от матрицы (теорема 11.1.1) можно использовать для оценки погрешности аппроксимации матрицы /(Л) матрицей д(А).
Теорема 11.2.1. Пусть X~lAX = diag^, ..., J^ есть ЗСР-матрицы АеСпхп с матрицами
l/w(x,Wr)(Mll/w(x,Wr)(Mlявляющимися жордановыми блоками размера т{ х т{. Если функции /^ и g(z) аналитичны в открытом множестве, содержащем А, (Л), то
l/w(x,Wr)(Ml
l/w(x,Wr)(Ml
|| /(Л) - g (Л) II2 ^ k2 (X) max т,-
1
0 < г т — 1
Доказательство. Полагая h^ = f(z) — g(z\ имеем
ll/M-g^H^diag^Jj, ...,Л(^max ||Л(Л)П2-
Используя теорему 11.1.1 и уравнение (2.3.8), мы заключаем, что
, х|AW(M
II h (J^ || 2 < mtmax —,
O^m-l H
доказывая тем самым теорему. □
Анализ на основе разложения Шура
Если мы будем исходить из разложения Шура, а не Жордана, то получим альтернативную оценку.
Теорема 11.2.2. Пусть QHAQ = Т = diag(Xf) + N -разложение Шура матрицы АеСпхп с матрицей N, являющейся строго верхней треугольной частью Т. Если функции f(z} и g^z) аналитичны на замкнутом выпуклом множестве Q, внутренняя часть которого содержит Х(Л), то
„ ,(.х Z^n Vs 11|АГ,Г|1^||/(Л)-д(Л)||г< 2. §r;-
г = 0
где
^r = sup|/<r|(z) - 0<r)(z)|.
zeQ
Доказательство. Пусть h(z} = f^ — g (z) и H = (h^ = h (Л). Пусть S^ означает множество целочисленных строго возрастающих последовательностей ($0, ...,$г), таких, что 50 = i, sr = j. Заметим, что
8и = "и1 syг= 1
и, следовательно, из теоремы 11.1.3 для всех i<j мы получаем следующее равенство:
*hij = ^ ^2 ^$0,Si^,$2• •• и$ х,s А£Х$ , ..Х$ ].
r=i seS^
Теперь, так как множество Q выпуклое, а функция И аналитическая, мы имеем неравенство
IИ [Х$о, ..., Х$г] | ^ sup=(ц.2.1)
Более того, если | N |г = (п^ при г ^ 1, то можно показать, что
(г) J %У<' + ^(11.2.2)
Беря абсолютные величины в выражении для Иц и используя затем (11.2.1) и (11.2.2), завершаем доказательство. □
Оценки из вышеприведенных теорем наводят на мысль, что для аппроксимации /(Л) требуется нечто большее, чем просто аппроксимация /^ на спектре матрицы А. В частности, мы видим, что если собственная система матрицы А плохо обусловлена и/или отклонение матрицы А от нормальности велико, то различие между /(Л) и д(А) может быть значительно большим, чем максимум |/(z) — д^\ на Х(Л). Следовательно, хотя аппроксимационные методы избегают вычислений, связанных с собственными значениями, они оказываются подверженными влиянию структуры собственной системы матрицы А. Об этом мы еще будем говорить в следующем разделе.
Пример 11.2.1. Пусть
А =А =-0.010 0-0.010 011
А =
А =
-0.01
0 0
-0.01
0 0
01
0 0.01
Если /(z) = ez и g(z) = 1 4- z 4- z2/2, то ||/(Л) — д (Л) || % 105 и в норме Фробениуса, и во второй норме. Поскольку х2(Х)^Ю7, погрешность 0(1), предсказанная теоремой 11.2.1, пессимистична. С другой стороны, погрешность, предсказанная на основе разложения Шура, есть О(Ю 2).
Тейлоровы аппроксиманты
Популярный способ аппроксимации функции от матрицы, такой, как е\ состоит в усечении ее ряда Тейлора. Условия, при которых функцию от матрицы/(Л) можно представить рядом Тейлора, легко устанавливаются.
Теорема 11.2.3. Если функция J^z) представима степенным рядом
= Е Ck2k
k = 0
в открытом круге, содержащем А,(Л), то
/М) = Е Мк-
к = 0
Доказательство. Мы докажем теорему для случая, когда матрица А диагонализуе- ма. В задаче 11.2.1, мы подскажем, как обойтись без этого предположения. Пусть Xх АХ = D = diag^i, ..., Zn). Используя следствие 11.1.2, мы имеем
м = Xdiag^Xj,= ^diagf f с^,..., £ ^^T1 =
4 = 0k = 0/
= *( E= f ct(™-‘)‘ = ^ ckAk. □
4 = 0/k = 0k = 0
Некоторые важные трансцендентные функции от матрицы имеют особенно простые представления:
ос лк
1п(/-Л)=£—,|Х|<1, ХеХ(Л),
а = 1 X
$т(Л) = Е (-1)‘* = 0$т(Л) = Е (-1)‘* = 0л2‘+1(2Х+Т)!’л2‘+1(2Х+Т)!’coscos
$т(Л) = Е (-1)‘
* = 0
$т(Л) = Е (-1)‘
* = 0
л2‘+1
(2Х+Т)!’
л2‘+1
(2Х+Т)!’
cos
cos
Следующая теорема устанавливает границы погрешностей, возникающих, когда функции от матрицы, такие, как эти, аппроксимируют усеченными рядами Тейлора.
Теорема 11.2.4. Если функция /^ представима рядом Тейлора
j\zk = f a*z*
k = 0
в открытом круге, содержащем собственные значения матрицы АеСпхп, то
fU)-HMk </ ”n. max ||Л«+1/<4+1’(Л5)||2.
к = 02 W +о<$<1
Доказательство. Определим матрицу Е^ как
f{As) = X ak(As)k + £(s),0<s^ 1.(11.2.3)
k = 0
Если функция fij(s) есть (у)-й элемент матрицы [(А5), то она обязательно аналитична и, следовательно,
л(Н^?)+<Э^‘<1L24)
где ги удовлетворяет неравенствам 0 ^ 80 ^ 5 ^ 1.
Сравнивая степени 5 в (11.2.3) и (11.2.4), мы заключаем, что ец^-^уй элемент матрицы E(s\ имеет вид
djU) =djU) =C1N(9+1)!C1N(9+1)!
djU) =
djU) =
C1N(9+1)!
C1N(9+1)!
Функция Л^Ч5^ является (1Д)-м элементом матрицы Aq + 1 Л^Ч^ и’ следовательно,
(?+1)!(?+1)!k/j^)!^ max и v / ^ шах 0^5^ 1 \Z + к* 0^5^ 1
(?+1)!
(?+1)!
Применяя неравенство (2.3.8), завершаем доказательство. □
Пример 11.2.2. Если
-4924
_ -6431 J ’
то
-0.735759-1.471518-0.735759-1.4715180.05518191.1036380.05518191.103638
-0.735759
-1.471518
-0.735759
-1.471518
0.0551819
1.103638
0.0551819
1.103638
^ Ак п &»■ 2"(»+1)!^ Ак п &»■ 2"(»+1)!
^ Ак п &»■ 2"(»+1)!
^ Ак п &»■ 2"(»+1)!
Для q = 59 теорема 11.2.4 предсказывает, что
max M’ + 1eXs||2 < Ю’60.
ООС 1
Однако если использовать приближенную арифметику с Р = 16, г = 6, то мы найдем
-22.25880 -1.4322766
•к = О•к = О-61.49931 -3.474280
•к = О
•к = О
Проблема в том, что некоторые из частичных сумм имеют большие элементы. Например, матрица / + ... + Л17/17! имеет элементы порядка 107. Поскольку машинная точность равна примерно 10”7, при вычислениях появляются погрешности округления большие, чем норма решения.
Пример 11.2.2 отчетливо показывает недостаток аппроксимации усеченными рядами Тейлора: она хороша только при небольшом числе членов. Иногда эту проблему можно обойти, меняя скалярную функцию. Например, многократно применяя формулы двойных углов:
cos (2Л) = 2 cos (Л)2 — I, sin (2Л) = 2 sin (Л) cos (Л), можно «построить» синус и косинус от матрицы из подходящих аппроксимаций усеченными рядами Тейлора:
So = тейлорова аппроксимация sin (Л/2к)
Со = тейлорова аппроксимация cos (Л/2*)'
for j = 1: k
Sj = 2Sj-iCj_ x
^ = 2^-1
end
Здесь К - положительное целое, выбранное так, что, скажем, ||Л Ц^ ^ 2к. Смотри [Serbin, Blalock, 1979].
Оценка многочлена от матрицы
Коль скоро приближение трансцендентных функций матрицы так часто включает оценку многочленов, имеет смысл обратить внимание на детали вычисления многочлена вида
p^ = b0I FbxA + ... + bqA\
где скаляры Ьо,..., bq g R заданы. Самый очевидный подход состоит в использовании схемы Горнера:
Алгоритм 11.2.1. Для заданной матрицы А и вектора b^O:q^ следующий алгоритм вычисляет F = bqAq + ... + bvA + bol.
F = bqA F bq_J
for k = q — 2: — 1:0
F = AF + bkI
end
Это требует q — 1 матричных умножений. Однако в отличие от скалярного случая этот процесс суммирования не является оптимальным. Для того чтобы увидеть почему, положим q = 9. Можно заметить, что
р(А) = A3(A3(b9A3 + (b8A2 + ЬПА + Z?6/)) + (&5Л2 + b4A + b3I^ + b2A2 + bxA + Ьо1. Следовательно, матрицу F = р(А) можно оценить всего лишь за четыре матричных умножения:
А2 = Л2,
Л3 = ЛЛ2,
Г1 = Ь9А3 + Ь8А2 + Ь^А 4- Ьв1,
Г2 — ^3^1^5^2 “^ ^4^ “Ь М>
Fз = A^F2 + ^2^2 Ь^А + Ь^1.
В общем случае, если 5-произвольное целое, удовлетворяющее неравенству l^s^ ^/q, то
pU) = 1 BkW r = [q/S]1\(11.2.5)
k = 0
где
у _ J ^sk+s- iAs 1 + ... + bsk^ iA + bskI, k = 0: r — 1 k I bqAq"sr + ... + bsr+1A + bkL k = r.
Если степени Л2, ..., As вычислены, то правило Горнера можно применить к сумме (11.2.5). Окончательный результат состоит в том, что матрица р(А) может быть вычислена за s + г — 1 матричных умножений. Число матричных умножений примерно минимизирует s = [ x/q ]. Этот подход обсуждается в работе [Paterson, Stockmeyer, 1973]. Ван Лоан [Van Loan, 1978b] показал, как эту процедуру можно применять, не заводя массивов для хранения матриц Л2, ..., Л5.
Вычисление степеней матрицы
Задача возведения матрицы в заданную степень заслуживает особого внимания. Пусть требуется вычислить Л13. Замечая, что Л4 = (Л2)2, Л8 = (Л4)2 и Л13 = Л8Л4Л, мы видим, что это можно выполнить всего за 5 матричных умножений. В общем случае имеем
Алгоритм 11.2.2 (Двоичное возведение в степень). Для заданных положительного целого 5 и матрицы Л g R”х ” следующий алгоритм вычисляет матрицу F = As.
t
Пусть ^ = X Pk2k - двоичное представление числа 5 с Pf # О к = 0
Z = A; q = О
while Р9 = О
Z = Z2; q = q + 1 end Г = Z for k = q + 1: t
Z-Z1
if Pk # 0
F = FZ end end
Этот алгоритм требует не более 2|_log2(s) J матричных умножений. Если 5-степень двойки, то необходимо только log2(s) матричных умножений.
п Здесь и далее [х] - ближайшее целое большее либо равное х.-Прим. перев.
Интегральные функции от матрицы•
Мы закончим этот раздел некоторыми замечаниями об интегральных функциях от матрицы. Пусть матрица /(Лг) определена при всех ге[я, ЬЗ и мы хотим вычислить матрицу
ь
.F=VHdt.
Как и в (11.1.1), интегрирование является поэлементным.
Для вычисления матрицы F можно применять обычные квадратурные формулы. Например, применяя формулу Симпсона, имеем
h т
F kF =-£wkf(A(a + kh)),(11.2.6)
5 k = 0
где т четное, /г = (Л> — а^т и*
Г 1 к = 0, т,wk = < 4 к нечетное,[_ 2 к четное, к / 0, т.
Если производная ^/dz^f^zf) ^^zf} непрерывна при te\_a,b3 и если матрица /(4)(Лг) определена на том же самом интервале, то можно показать, что Г = Г + Е, где
II^Hz^^^^ max И,4)(Л/)||2.(11.2.7)
a^t^b
Пусть ftj и вц означают элементы (z, у) матриц F и Е соответственно. При сделанных выше предположениях мы можем применить стандартную оценку погрешности формулы Симпсона и получить, что
I в и | <max I e]fw М I •
18U
Неравенство (11.2.7) следует из неравенств || Е ||2 ^т?тах|е^| и
max |е,7/(4|(Лг)^| ^ max ||/(4,(Л?) ||2.a^t^ba^t^b
Конечно, в практических приложениях формулы (11.2.6), функцию, оценивающую /(А(а + kh^, обычно нужно аппроксимировать. Поэтому общая погрешность включает погрешность аппроксимации матрицы f^A^aFkh^ наряду с погрешностью формулы Симпсона.
Задачи
(а) Пусть G = XI + Е-жорданов блок размера р х р, где Е (о11Н). Показать, что min {/?— 1, А:}
•(XI + Е? = У (5)X‘"JEk
j = 0
(b) Использовать (а) и теорему 11.1.1 для доказательства теоремы 11.2.3.
Проверить (11.2.2).
Проверить, что если ||Л||2 < 1, то 1п(/ + А) существует и удовлетворяет следующей оценке ||1п(/ +Л)2|||| Л ||2/(1 - ||Л||2).
Пусть Л-симметричная положительно определенная матрица размера п х п.
(а) Показать, что существует единственная симметричная положительно определенная матрица X, такая, что А = X2. (Ь) Показать, что если Хо = I и Хк^х = (Хк + АХк1)/!» то Хк -► ^[а квадратично, где ^/а означает матрицу X из (а).
Специализировать алгоритм 11.2.1 для случая, когда матрица А симметричная. Сделать то же самое для случая, когда А верхняя треугольная. Для обоих случаев подсчитать число флопов.
Показать, что матрица X(г) = Сх cos(t^/A) + Сгх] А"х sin('УТ) решает задачу Коши Х^ = — ЛХ(Д Х(0) = Сх, Х(0) = С2. Считать, что матрица А симметричная, положительно определенная.
Используя теорему 11.2.4, оценить погрешность аппроксимаций:
qА2к+Х4А2к
sin(^)« У (-1)* cos (Л) % У (-1)*.
к = о(2^ 4- 1)! V , kto , (2к)!
Замечания и литература к § 11.2
Оптимизация схемы Горнера для оценки многочлена от матрицы обсуждается в работах
Knuth D. (1981). The Art of Computer Programming, vol. 2. Seminumerical Algorithms, 2nd ed., Addison-Wesley, Reading, Massachusetts. [Имеется перевод: Кнут Д. Искусство программирования для ЭВМ. Т. 2: Получисленные алгоритмы.-М.: Мир, 1977.]
Paterson M.S. and Stockmeyer 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 Trans. Auto. Cont.
AC-24, 320-21.•
Представления матрицы /(Л) многочленами Ньютона и Лагранжа и их связь с другими определениями функции от матрицы обсуждается в
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. Sci. Stat. Comp. 1, 198-204.
Квадратный корень является особенно важной матричной функцией и здесь возможны несколько подходов. Смотри
Bjorck A. and Hammarling S. (1983). “A Schur Method for the Square Root of a Matrix”, 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. (1987c). “Computing Real Square Roots of a Real Matrix”, Lin. Alg. and Its Applic. 88/89, 405-430.
11.3. Матричная экспонента
Одной из наиболее часто вычисляемых функций от матрицы является экспонента г=уУ к-0
Было предложено множество алгоритмов вычисления матрицы eAt, но, как указано в обзорной статье Молера и Ван Лоана [Moler, Van Loan, 1978], большинство из них обладают сомнительными вычислительными свойствами. Для того чтобы пояснить, какие имеются вычислительные трудности, мы приведем краткий анализ
возмущения матричной экспоненты и затем используем его для оценки одного из лучших eAt алгоритмов.
Теория возмущения
Исходной точкой является задача Коши
X^ = AX^t\ X^ = L
где А, X (r)eR"хп. Эта задача, имеющая единственное решение Х^ = еА\ представляет собой характеризацию, которая может быть использована для установления тождества
t
e(A4-E)t _ eAt _ J eA^-s>£e<A +E)Sc[s
0
Из этого тождества следует, что'
II pU+E)t _ At II п р II t11^ II <ЬпГ /11^112 IIе II2II е II2 О
Дальнейшие упрощения могут быть сделаны, если оценить нормы экспонент, стоящие под интегралом. Один из способов осуществить это - воспользоваться разложением Шура. Если QHAQ = diag(Xz) + N - разложение Шура матрицы АеСпхп, то можно показать, что
|| eAt || 2 eaUWs6\
где
а (Л) = шах{Ке(Х):ХеХ(Л)}
и
к = 0к = 0II Nt ||k2к\II Nt ||k2к\
к = 0
к = 0
II Nt ||k2к\
II Nt ||k2к\
Немного преобразованный, этот результат может быть использован для установления неравенства
и JA+E)t _ At ||
-—^ < t1| Е || 2MS (г)2 exp (tMs (?) || Е || 2).
Заметим, что Ms (г) = 1 в том и только том случае, когда матрица А нормальная; это подсказывает, что проблема матричной экспоненты «хорошо себя ведет», если матрица А нормальная. Это наблюдение подтверждает поведение числа обусловленности матричной экспоненты у(Л, t\ определенной как
у(Л,/) = max \eAkt"s^EeAsds " .
ц^ц^ 1 о 2 Ik II 2
Эта величина, рассмотренная в работе [Van Loan, 1977а], измеряет чувствительность отображения А -► eAt, поскольку для данного t существует матрица Е, для которой
у(Л /)у(Л /)11^112МН2‘11^112МН2‘|| e(A+EH_eAt || 2
у(Л /)
у(Л /)
11^112
МН2‘
11^112
МН2‘
II eAt || £
Следовательно, если величина v (Л, г) велика, то малые изменения в матрице А могут
привести к относительно большим изменениям EAt. К несчастью, трудно определить точно те матрицы А, для которых величина у(Л, г) большая. (Это контрастирует с системой линейных уравнений Ах = Ь, где плохая обусловленность матрицы А изящно описывается в терминах SVD.) Однако кое-что мы можем сказать, а именно, что у(Л, t^ tА, где равенство имеет место для всех неотрицательных t в том и только том случае, когда матрица А нормальная.
Метод аппроксимации Паде
Продолжаем обсуждение, начатое в § 11.2: если g^^ez, то д(А)%ел. Очень полезным классом аппроксимантов для этой цели являются функции Паде, определяемые как
^PQ (2) “ ^РЧ (2) 1 Npq (z),
где
(р + д — к)^’ ;7(р + д — к)^’ ;7p
(р + д — к)^’ ;7
(р + д — к)^’ ;7
Npq^= £k = 0
и
q
(р + q}! k! [q - к)!(р + q}! k! [q - к)!М^ = I
(р + q}! k! [q - к)!
(р + q}! k! [q - к)!
k = 0
Заметим, что функция Rpq^ = 1 4- z 4-... 4- zp/p\ - это многочлен Тейлора степени р.
К несчастью, как показывает следующее тождество, хороши только первые аппроксиманты Па де:
eA = ДИ(Л) + ^L^p + t+i^^)"1 jV(l -uYe^-^du. (11.3.1) + ^1 •0
Однако эту проблему можно обойти, используя тождество еА = ^еА,ту. В частности, мы можем масштабировать матрицу А путем деления на т, так, чтобы матрица Fpq = Rpq^A/m^ достаточно точно приближала матрицу еА,т. Затем мы вычислим F™q, используя алгоритм 11.2.2. Если т-степень двойки, то этот алгоритм сводится к многократному возведению в квадрат и, таким образом, является очень эффективным. Успех всей процедуры зависит от точности аппроксимации
F = I R I
1 pq \ixpq’
В работе [Moler, Van Loan, 1978] показано, что если
Т 2 ’
то существует матрица ЕеКпхп, такая, что
F = еА + Ег pq;
АЕ = ЕА,
II^L^e^^ML,
е(^, q) = 23-^+q1е(^, q) = 23-^+q1р'д'-
е(^, q) = 23-^+q1
е(^, q) = 23-^+q1
(р + ?)!(р + ? + 1)!
Эти результаты составляют основу эффективной еА процедуры с контролем
погрешности округления. Используя приведенную выше формулу, легко установить неравенство:
\\еА - F II
-„
Ik Ноо
Параметры р и q могут быть определены, исходя из некоторой заданной относительной погрешности. Заметим, что вычисление матрицы Fpq требует примерно j + max (р, q^ матричных умножений, поэтому имеет смысл положить р = q, так как этот выбор минимизирует е(р,^) при заданном числе операций. Собирая вместе эти идеи, мы получим'
Алгоритм 11.3.1. Для заданного 5>0 и матрицы ЛбЯ”х" следующий алгоритм вычисляет матрицу F = еА4Е, где || Е || ^ 5 || А || .
у = max (О, 1 +Llog2(M||JJ),
А = А^.
Пусть ^-наименьшее неотрицательное целое, такое, что D = I; N = I; X = I; с = 1
for k = 1: q
c = c\q-U l)/[(2?-k + l)k]
X = АХ; N = N + сХ; D = D 4-(-1)ксХ end
Решить систему DF = N относительно F, используя исключение Гаусса.
for к = 1 :j
F = F2 end
Этот алгоритм требует примерно 2(</ + у + 1/3) л3 флопов.
Для того чтобы сделать быстрыми вычисления матриц D = Dqq (Л) и N = Nqq (А), можно обратиться к методу Горнера из § 11.2. Например, если ^ = 8, мы имеем Nqq^ = U 4- AV и D^A) = U — AV, где
U = с01 + с2А2 + (с4/ + с6Л2 + с8Л4)Л4 и
V = cj 4- с3Л2 4- (с5/ 4- с7Л2) А4.
Понятно, что матрицы N и D можно найти за 5 матричных умножений вместо 7, требуемых алгоритмом 11.3.1.
Свойства погрешностей округления алгоритма 11.3.1, в основном, были исследованы Бардом [Ward, 1977]. Оценки, которые он вывел, удобны для вычисления и включены в фортрановскую подпрограмму.
Некоторые выводы об устойчивости
Есть несколько интересных вопросов, относящихся к устойчивости алгоритма 11.3.1. Одна из возможных проблем может возникнуть в процессе возведения в квадрат, если матрица А является матрицей, чья экспонента растет, прежде чем начнет затухать. Если
G = R4l^eAi21'
то можно показать, что погрешность округления порядка
У = u || G2 ||2|| G4 ||2|| G8 ||2...|| G2'"1!!,, вероятно, испортит вычисленную матрицу G2J. Если || eAt || 2 имеет существенный начальный рост, то это может быть именно тот случай, в котором
у » и || G2' ||2 %и|| еА ||2,
что практически исключает возможность малых относительных погрешностей.
Если матрица А нормальная, то такой же будет матрица G и поэтому || Gm || 2 = = || G || J для всех положительных целых. Следовательно, у % u || G2* ||2 « и || еА ||2 и, таким образом, проблема начального роста отпадает. По существу алгоритм может гарантировать получение малой относительной погрешности, когда матрица А нормальная. Значительно сложнее сделать выводы об этом методе, когда матрица А не является нормальной, так как связь между величиной у(Л, z) и явлением начального роста не ясна. Однако, судя по некоторым экспериментам, представляется, что алгоритм 11.3.1 не в состоянии получить относительно точную матрицу еА, только когда величина у(Л, 1) достаточно велика.
Задачи
Показать, что e(A + BV = eAteBt для всех t в том и только том случае, когда АВ = ВА. (Подсказка: выразить обе части через степенные ряды по t и сравнить коэффициенты при г.)
Показать, что lim eAt = 0 в том и только том случае, когда а(Л)<0, где а(Л) определена как а(Л) = max {Ке(Х):ХеХ(Л)}.
Предположим, что матрица А кососимметричная. Показать, что матрица еА и (1,1)-аппроксимация Паде Ац(Л) ортогональные. Существуют ли какие-нибудь другие значения р и q, при которых матрица Bpq(A) ортогональная?
Показать, что если матрица А невырожденная, то существует матрица X, такая, что А = ех. Единственна ли матрица X?
Показать, что если
/Г - АТР~1АГ FxxРХДп
ехр ллz= АГ ’
\L 0AjJ ОF22 J
п п
то
^Г1 ^12 = eAT‘PeAtdt.о
Замечания и литература к § 11.3
Большую часть того, о чем упоминается в этом разделе, и обширную библиографию можно найти в следующей обзорной статье:
Moler С. В. and Van Loan С. F. (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 У. (1970). “Fade Approximations to the Operator Exponential”, Numer. Math. 14, 379-82.
Van Loan С. F. (1977а). “On the Limitation and Application of Fade Approximation to the Matrix Exponential”, in Fade and Rational Approximation, ed. E. B. Safi 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. 11, 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 Caglayan А. К. (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.
Понимание отображения А -►ехр(Лг) и его чувствительности будет правильным, если оценить производительность алгоритмов вычисления матричной экспоненты. Работа в этом направлении включает
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 мы рассмотрим, как может быть аппроксимирован вектор b некоторым подмножеством столбцов матрицы А. Этот способ иногда применяют, если матрица А неполного ранга. В § 12.3 мы рассматриваем вариант обычной регрессии, известной как общая задача наименьших квадратов, которая возникает, если матрица А искажена ошибками. Другие приложения метода SVD обсуждаются в § 12.4, где рассмотрены различные подобласти вычислений. В § 12.5 обсуждаются некоторые варианты симметричной проблемы собственных значений. В § 12.6 мы исследуем изменение QR-разложения, когда к матрице А = QR добавляется матрица ранга один.
Задача наименьших квадратов с ограничениями
Задачу наименьших квадратов иногда естественно рассматривать как минимизацию величины Ц Ах — Z>||2 на некотором подмножестве R”. Например, мы хотим определить вектор Ь, как наилучшее приближение для Ах, с ограничением, что х является единичным вектором. Или, возможно, решение определяет подходящую функцию/(г), которая описывается значениями в конечном числе узлов. Это может привести к задаче наименьших квадратов с ограничениями типа равенств. В этом разделе мы покажем, как эти задачи могут быть решены с использованием QR-разложения и SVD.
Задача LSQI
Минимизация в смысле наименьших квадратов с ограничениями типа квадратных неравенств - задача LSQI -это подход, который можно использовать, когда решение обычной LS-задачи должно быть регуляризовано. Простой задачей LSQI, которая возникает при стремлении приблизить функцию с искаженными данными, является следующая:
минимизировать || Ах — b ||2 при условии || Вх ||2 ^ а, (12.1.1)
где А е Rm х п, be Rw, Ве Rn х п (не вырождена) и а > 0. Ограничения определяют гиперэллипсоид в R" и обычно выбираются так, чтобы уменьшить сильные колебания в подходящей функции. Это может быть достигнуто, например, если матрица В является дискретным оператором второй производной.
В более общем случае мы имеем задачу
минимизировать Ц Ах — 6||2 при условии || Вх — d ||2 ^ а, (12.1.2) где ЛеЯтХл (т ^ п^ ЬеВГ, ВеКрх*\ deW и а >0. Обобщение сингулярного разложения в § 8.7.3 отвечает на вопрос о разрешимости задачи (12.1.2). Действительно, если
I7r^ = diag(a1,...,a„), UTU = Im,(12.1.3)
VTBX = diag(Plt..., pj, VTV=Ip, q = rmn^,n^
является обобщением сингулярного разложения матриц А и В, то (12.1.2) преобразуется к виду
минимизировать || DAy — Б\\г при условии || DBy — 3||2 ^ a, где В = UTb, Э = VTd и у = Х-1х. Простой вид целевой функции
II^J - Лг = £ («<Л - ^)2 + Е ^?(12.1.4)
i=li = n+l
и уравнений ограничения гР
110^-3111= £ (Р(Л-^)2+ Ё з^а2(12.1.5)
i=li = r+l
облегчает анализ задачи LSQI. Здесь г = rank (В) и мы предполагаем, что Рг+1 = = ... = Р, = 0.
Во-первых, задача имеет решение тогда и только тогда, когда
£ 3? а2 .i = r+l
Если в этом выражении имеется равенство, рассмотрение формул (12.1.4) и (12.1.5) показывает, что вектор, определяемый соотношением
Г^/р(i = 1: г,
У( =]bjaii = г + 1:п,az/О,(12.1.6)
I0i =г+1: п,dj=О
разрешает задачу LSQI. В противном случае
£ 3?^а2(12.1.7)
i = r+ 1
и мы имеем несколько альтернатив для продолжения. В этой ситуации вектор у eRn, определяемый соотношением
f^./a, а. / О,
^. = \i = 1: п
Wf/pf af = О,
будет минимизатором выражения || DAу — Б || 2. Если такой вектор существует, то мы имеем решение задачи (12.1.2). (Однако, это не является необходимым условием минимума 2-нормы.) Поэтому мы допускаем, что
q / Б- V р
£3?>а2.(12.1.8)
i=l' i = e+l
a^o
Отсюда следует, что решение задачи LSQI имеет место на границе допустимого
множества. Таким образом, наша окончательная цельминимизировать || DAy — 51|2 при условии || DBy — 3||2 = а.Для решения этой задачи используем метод лагранжевых множителей. Определивй(Х, у) = || DAy - 51|| + Х(|| Вву-Э\\^ - а2),мы видим, что уравнения 0 = Sh/dy^ i = 1: л, приводят к линейной системе №>А + XDBDB^y = DBB + XD^3.В предположении, что матрица коэффициентов невырожденна, система имеет решение ^(Х), гдемножества. Таким образом, наша окончательная цельминимизировать || DAy — 51|2 при условии || DBy — 3||2 = а.Для решения этой задачи используем метод лагранжевых множителей. Определивй(Х, у) = || DAy - 51|| + Х(|| Вву-Э\\^ - а2),мы видим, что уравнения 0 = Sh/dy^ i = 1: л, приводят к линейной системе №>А + XDBDB^y = DBB + XD^3.В предположении, что матрица коэффициентов невырожденна, система имеет решение ^(Х), гдеУх W =Ух W =аД + ХД5,-аД + ХД5,-а,2 + Х^ Ejai,а,2 + Х^ Ejai,z = 1:9,z = 1:9,/ = q 4- 1:«./ = q 4- 1:«.Для определения множителей Лагранжа обозначимф (X) = II Вву^ -2(11= £ а,- ^ “‘^ + £ 3?i=lQ,r+ KPii=r+1и потом найдем решения уравнения ф(Х) = а2. Уравнения такого вида называются секулярными уравнениями. (См. § 8.6.) Из формулы (12.1.8) мы видим, что ф (0) > а2. Функция ф (X) является монотонно убывающей при X > 0, и поэтому из формулы (12.1.8) вытекает существование единственного положительного X*, для которого ф (X*) = а2. Легко показать, что это необходимый корень. Он может быть найден применением какого-либо из стандартных методов нахождения корней, таких, как метод Ньютона. Тогда решением исходной задачи LSQI является вектор х = Ху(Хф).Для определения множителей Лагранжа обозначимф (X) = II Вву^ -2(11= £ а,- ^ “‘^ + £ 3?i=lQ,r+ KPii=r+1и потом найдем решения уравнения ф(Х) = а2. Уравнения такого вида называются секулярными уравнениями. (См. § 8.6.) Из формулы (12.1.8) мы видим, что ф (0) > а2. Функция ф (X) является монотонно убывающей при X > 0, и поэтому из формулы (12.1.8) вытекает существование единственного положительного X*, для которого ф (X*) = а2. Легко показать, что это необходимый корень. Он может быть найден применением какого-либо из стандартных методов нахождения корней, таких, как метод Ньютона. Тогда решением исходной задачи LSQI является вектор х = Ху(Хф).12.1.2. LS-минимизация на сфереДля возможного случая минимизации на сфере мы имеем следующую процедуру (В = /„, d=0\Алгоритм 12.1.1. Для данной матрицы Л eRmxn, где т > п, вектора Z>eRm и параметра а > 0 следующий алгоритм вычисляет вектор xeR", такой, что || Лх — Ь\\2 достигает минимума при ограничении || х ||2 < а.Вычислить SVD Л = U^V7 и запомнить И= [v^ vj.b = U7b; г = rank (Л)if Z >a12.1.2. LS-минимизация на сфереДля возможного случая минимизации на сфере мы имеем следующую процедуру (В = /„, d=0\Алгоритм 12.1.1. Для данной матрицы Л eRmxn, где т > п, вектора Z>eRm и параметра а > 0 следующий алгоритм вычисляет вектор xeR", такой, что || Лх — Ь\\2 достигает минимума при ограничении || х ||2 < а.Вычислить SVD Л = U^V7 и запомнить И= [v^ vj.b = U7b; г = rank (Л)if Z >aНайти X*, такое, что £i= 1Найти X*, такое, что £i= 1оДоДо? + X*.о? + X*.2= а2.2= а2.
множества. Таким образом, наша окончательная цель
минимизировать || DAy — 51|2 при условии || DBy — 3||2 = а.
Для решения этой задачи используем метод лагранжевых множителей. Определивй(Х, у) = || DAy - 51|| + Х(|| Вву-Э\\^ - а2),
мы видим, что уравнения 0 = Sh/dy^ i = 1: л, приводят к линейной системе №>А + XDBDB^y = DBB + XD^3.
В предположении, что матрица коэффициентов невырожденна, система имеет решение ^(Х), где
множества. Таким образом, наша окончательная цель
минимизировать || DAy — 51|2 при условии || DBy — 3||2 = а.
Для решения этой задачи используем метод лагранжевых множителей. Определивй(Х, у) = || DAy - 51|| + Х(|| Вву-Э\\^ - а2),
мы видим, что уравнения 0 = Sh/dy^ i = 1: л, приводят к линейной системе №>А + XDBDB^y = DBB + XD^3.
В предположении, что матрица коэффициентов невырожденна, система имеет решение ^(Х), где
Ух W =
Ух W =
аД + ХД5,-
аД + ХД5,-
а,2 + Х^ Ejai,
а,2 + Х^ Ejai,
z = 1:9,
z = 1:9,
/ = q 4- 1:«.
/ = q 4- 1:«.
Для определения множителей Лагранжа обозначим
ф (X) = II Вву^ -2(11= £ а,- ^ “‘^ + £ 3?
i=lQ,r+ KPii=r+1
и потом найдем решения уравнения ф(Х) = а2. Уравнения такого вида называются секулярными уравнениями. (См. § 8.6.) Из формулы (12.1.8) мы видим, что ф (0) > а2. Функция ф (X) является монотонно убывающей при X > 0, и поэтому из формулы (12.1.8) вытекает существование единственного положительного X*, для которого ф (X*) = а2. Легко показать, что это необходимый корень. Он может быть найден применением какого-либо из стандартных методов нахождения корней, таких, как метод Ньютона. Тогда решением исходной задачи LSQI является вектор х = Ху(Хф).
Для определения множителей Лагранжа обозначим
ф (X) = II Вву^ -2(11= £ а,- ^ “‘^ + £ 3?
i=lQ,r+ KPii=r+1
и потом найдем решения уравнения ф(Х) = а2. Уравнения такого вида называются секулярными уравнениями. (См. § 8.6.) Из формулы (12.1.8) мы видим, что ф (0) > а2. Функция ф (X) является монотонно убывающей при X > 0, и поэтому из формулы (12.1.8) вытекает существование единственного положительного X*, для которого ф (X*) = а2. Легко показать, что это необходимый корень. Он может быть найден применением какого-либо из стандартных методов нахождения корней, таких, как метод Ньютона. Тогда решением исходной задачи LSQI является вектор х = Ху(Хф).
12.1.2. LS-минимизация на сфере
Для возможного случая минимизации на сфере мы имеем следующую процедуру (В = /„, d=0\
Алгоритм 12.1.1. Для данной матрицы Л eRmxn, где т > п, вектора Z>eRm и параметра а > 0 следующий алгоритм вычисляет вектор xeR", такой, что || Лх — Ь\\2 достигает минимума при ограничении || х ||2 < а.
Вычислить SVD Л = U^V7 и запомнить И= [v^ vj.
b = U7b; г = rank (Л)
if Z >a
12.1.2. LS-минимизация на сфере
Для возможного случая минимизации на сфере мы имеем следующую процедуру (В = /„, d=0\
Алгоритм 12.1.1. Для данной матрицы Л eRmxn, где т > п, вектора Z>eRm и параметра а > 0 следующий алгоритм вычисляет вектор xeR", такой, что || Лх — Ь\\2 достигает минимума при ограничении || х ||2 < а.
Вычислить SVD Л = U^V7 и запомнить И= [v^ vj.
b = U7b; г = rank (Л)
if Z >a
Найти X*, такое, что £
i= 1
Найти X*, такое, что £
i= 1
оД
оД
о? + X*.
о? + X*.
2
= а2.
2
= а2.
^jb;
— 1):
<з^ + X*/
и=и=else х = £
и=
и=
i=l end
Ha процедуру SVD приходится преобладающая часть вычислений в этом алгоритме.
Пример 12.1.1. Характеристическое уравнение задачи
minII X II 2 = 1minII X II 2 = 12 00 1О о2 00 1О о%1*2 _%1*2 _42_3_42_3_22
min
II X II 2 = 1
min
II X II 2 = 1
2 0
0 1
О о
2 0
0 1
О о
%1
*2 _
%1
*2 _
4
2_3_
4
2_3_
2
2
задается выражением
/ 2 У\Х + 1// 2 У\Х + 1/
/ 2 У
\Х + 1/
/ 2 У
\Х + 1/
Для этой задачи находим X* = 4.57132 и х = (0.93334, 0.35898)т.
Гребневая регрессия
Задача, решаемая алгоритмом 12.1.1, эквивалентна проблеме множителей Лагранжа для определения X > 0, такого, что
(ЛГЛ + Х/)х = АТЬ(12.1.9)
и ||х||2 = а. Здесь формула (12.1.9) является точным нормальным уравнением, сформулированным для задачи гребневой регрессии
. Г а 1* LVx/J LoJДля обобщенной задачи гребневой. Г а 1* LVx/J LoJДля обобщенной задачи гребневой2
. Г а 1
* LVx/J LoJ
Для обобщенной задачи гребневой
. Г а 1
* LVx/J LoJ
Для обобщенной задачи гребневой
' = min || Ах - b ||i + X || х||Г
2 х
регрессии есть некоторый способ выбора
гребневого параметра X, например ||х(Х)||2 = а при некотором заданном а. Мы опишем процедуру Х-выбора, которая обсуждается в работе Golub, Heath и Wahba (1979).
Пусть Dk = I — екек = diag(l, ..., 1, 0, 1, ..., l)eRmxm, и пусть xk(X) разрешает задачу
min || D^Ax - b) Щ + X || x ||i .(12.1.10)
Таким образом, хк(Х)-это решение задачи гребневой регрессии при вычеркнутых /с-й строки матрицы А и /с-й компоненты вектора Ь, т. е. /с-й эксперимент игнорируется. Теперь рассмотрим выбор такого X, которое минимизирует квадрат ошибки кроссвалидации с весами С(Х)1}, задаваемый формулой
тС^ = ~ a ^М*^ - bky.
Здесь со1,..., сош-неотрицательные веса и ак-это /с-я строка матрицы А. Замечая, что || Axk(X) - b Hi = || Dk^Axk^ — A ||i + (a^W - ЬкУ
мы видим, что слагаемое Mxfc(X) — bk32 увеличивает результирующую сумму квадратов, если /с-я строка «восстановлена». Минимизация С(Х) равносильна выбору такого X, что окончательная модель не зависит от какого-либо одного эксперимента.
Более строгий анализ может сделать это утверждение точным и предложить также метод для минимизации С(Х). При условии что X > 0, алгебраические
1} Кросс-валидация называется также перекрестной проверкой или перекрестным экзаменом.- Прим. перев.
преобразования дают формулупреобразования дают формулу^к^М~ Ькхк (X) = х(Х) + г2к , 1 ^к ^к^к^М~ Ькхк (X) = х(Х) + г2к , 1 ^к ^к(12.1.1)(12.1.1)где zk = (АТА + X/) 1 ак и х(Х) = (АТА + XI) 1 АТЬ. Умножение формулы (12.1.11) на — а! и прибавление Ьк к каждой части текущего уравнения даютгде zk = (АТА + X/) 1 ак и х(Х) = (АТА + XI) 1 АТЬ. Умножение формулы (12.1.11) на — а! и прибавление Ьк к каждой части текущего уравнения даютк kkW ek(I — A(ATA+XI)-1AT)ekк kkW ek(I — A(ATA+XI)-1AT)ek(12.1.12)(12.1.12)Замечая, что невязка г = (г19 ..., г^ = b — Ах^ задается = U — А^АТА + XiyYAT3b, мы видим, чтоЗамечая, что невязка г = (г19 ..., г^ = b — Ах^ задается = U — А^АТА + XiyYAT3b, мы видим, чтоформулойформулойг =г =1 m /\2см^;И^)1 m /\2см^;И^)Отношение rk/(drk/db^ может рассматриваться как обратная величина «попадания» к-ro наблюдения Ьк на модель. Когда дгк/дЬк мало, это говорит о том, что ошибка в модельном предсказании Ьк является в некотором смысле независимой от Ьк.Практическое определение параметра X* осуществляется простым вычислением SVD-матрицы А. Действительно, если UTAV = diag(c19 . ..9 сл) при сх > ... > сп и b = UTb, тогда можно показать с учетом формулы (12.1.12), чтоОтношение rk/(drk/db^ может рассматриваться как обратная величина «попадания» к-ro наблюдения Ьк на модель. Когда дгк/дЬк мало, это говорит о том, что ошибка в модельном предсказании Ьк является в некотором смысле независимой от Ьк.Практическое определение параметра X* осуществляется простым вычислением SVD-матрицы А. Действительно, если UTAV = diag(c19 . ..9 сл) при сх > ... > сп и b = UTb, тогда можно показать с учетом формулы (12.1.12), что1 mС^ = -1 ^m к=11 mС^ = -1 ^m к=1j=lj=l1 - Z uki j=l1 - Z uki j=lМинимизация этого выражения обсуждается в работе Golub, Heath и Wahba (1979).12.1.4. Задача наименьших квадратов с ограничениями типа равенствМы завершаем раздел рассмотрением задачи наименьших квадратов с ограничениями типа линейных равенств:‘min \\Ах — Ь\\2.(12.1.13)Bx = dЗдесь AeRmxn, BeRpxn, beRm, deRp и rank (В) = p. Мы называем задачу (12.1.13) задачей LSE. Полагая а = 0 в задаче (12.1.2), мы видим, что задача LSE является частным случаем задачи LSQI. Однако проще решать задачу LSE непосредственно, а не через множители Лагранжа.Предположим для ясности, что обе матрицы А и В имеют полный ранг. ПустьМинимизация этого выражения обсуждается в работе Golub, Heath и Wahba (1979).12.1.4. Задача наименьших квадратов с ограничениями типа равенствМы завершаем раздел рассмотрением задачи наименьших квадратов с ограничениями типа линейных равенств:‘min \\Ах — Ь\\2.(12.1.13)Bx = dЗдесь AeRmxn, BeRpxn, beRm, deRp и rank (В) = p. Мы называем задачу (12.1.13) задачей LSE. Полагая а = 0 в задаче (12.1.2), мы видим, что задача LSE является частным случаем задачи LSQI. Однако проще решать задачу LSE непосредственно, а не через множители Лагранжа.Предположим для ясности, что обе матрицы А и В имеют полный ранг. ПустьQTBT =QTBT =R0.R0.Р п-рР п-р
преобразования дают формулу
преобразования дают формулу
^к^М~ Ьк
хк (X) = х(Х) + г2к , 1 ^к ^к
^к^М~ Ьк
хк (X) = х(Х) + г2к , 1 ^к ^к
(12.1.1)
(12.1.1)
где zk = (АТА + X/) 1 ак и х(Х) = (АТА + XI) 1 АТЬ. Умножение формулы (12.1.11) на — а! и прибавление Ьк к каждой части текущего уравнения дают
где zk = (АТА + X/) 1 ак и х(Х) = (АТА + XI) 1 АТЬ. Умножение формулы (12.1.11) на — а! и прибавление Ьк к каждой части текущего уравнения дают
к kkW ek(I — A(ATA+XI)-1AT)ek
к kkW ek(I — A(ATA+XI)-1AT)ek
(12.1.12)
(12.1.12)
Замечая, что невязка г = (г19 ..., г^ = b — Ах^ задается = U — А^АТА + XiyYAT3b, мы видим, что
Замечая, что невязка г = (г19 ..., г^ = b — Ах^ задается = U — А^АТА + XiyYAT3b, мы видим, что
формулой
формулой
г =
г =
1 m /\2
см^;И^)
1 m /\2
см^;И^)
Отношение rk/(drk/db^ может рассматриваться как обратная величина «попадания» к-ro наблюдения Ьк на модель. Когда дгк/дЬк мало, это говорит о том, что ошибка в модельном предсказании Ьк является в некотором смысле независимой от Ьк.
Практическое определение параметра X* осуществляется простым вычислением SVD-матрицы А. Действительно, если UTAV = diag(c19 . ..9 сл) при сх > ... > сп и b = UTb, тогда можно показать с учетом формулы (12.1.12), что
Отношение rk/(drk/db^ может рассматриваться как обратная величина «попадания» к-ro наблюдения Ьк на модель. Когда дгк/дЬк мало, это говорит о том, что ошибка в модельном предсказании Ьк является в некотором смысле независимой от Ьк.
Практическое определение параметра X* осуществляется простым вычислением SVD-матрицы А. Действительно, если UTAV = diag(c19 . ..9 сл) при сх > ... > сп и b = UTb, тогда можно показать с учетом формулы (12.1.12), что
1 m
С^ = -1 ^m к=1
1 m
С^ = -1 ^m к=1
j=l
j=l
1 - Z uki j=l
1 - Z uki j=l
Минимизация этого выражения обсуждается в работе Golub, Heath и Wahba (1979).
12.1.4. Задача наименьших квадратов с ограничениями типа равенств
Мы завершаем раздел рассмотрением задачи наименьших квадратов с ограничениями типа линейных равенств:
‘min \\Ах — Ь\\2.(12.1.13)
Bx = d
Здесь AeRmxn, BeRpxn, beRm, deRp и rank (В) = p. Мы называем задачу (12.1.13) задачей LSE. Полагая а = 0 в задаче (12.1.2), мы видим, что задача LSE является частным случаем задачи LSQI. Однако проще решать задачу LSE непосредственно, а не через множители Лагранжа.
Предположим для ясности, что обе матрицы А и В имеют полный ранг. Пусть
Минимизация этого выражения обсуждается в работе Golub, Heath и Wahba (1979).
12.1.4. Задача наименьших квадратов с ограничениями типа равенств
Мы завершаем раздел рассмотрением задачи наименьших квадратов с ограничениями типа линейных равенств:
‘min \\Ах — Ь\\2.(12.1.13)
Bx = d
Здесь AeRmxn, BeRpxn, beRm, deRp и rank (В) = p. Мы называем задачу (12.1.13) задачей LSE. Полагая а = 0 в задаче (12.1.2), мы видим, что задача LSE является частным случаем задачи LSQI. Однако проще решать задачу LSE непосредственно, а не через множители Лагранжа.
Предположим для ясности, что обе матрицы А и В имеют полный ранг. Пусть
QTBT =
QTBT =
R
0.
R
0.
Р п-р
Р п-р
-QR-разложение матрицы В1, и пусть
Р п-рР п-рQTx =QTx =У Р _zj п — рУ Р _zj п — р
Р п-р
Р п-р
QTx =
QTx =
У Р _zj п — р
У Р _zj п — р
Очевидно, что с учетом этих преобразований формула (12.1.3) переходит в соотношение
min ЦЛ^ + ATz - b ||2. RTy = d
Таким образом, вектор у определяется из уравнения ограничений RTy = d, а вектор z получается решением задачи LS без ограничений
min \\А22-ЦЬ-А^\\2.
v
разрешает задачуразрешает задачуКомбинируя полученное выше, видим, что вектор х = Q ' (12.1.13).
разрешает задачу
разрешает задачу
Алгоритм 12.1.2. Пусть ЛеКтхл, BeRpxn, beRm и deRp. Если гапк(Л)'=п и rank (В) = р, тогда следующий алгоритм минимизирует величину || Ах — b || 2 при ограничении Вх = d.
Вт = QR (QR-разложение)
Решить R(1 :р, 1 *рУ у = d относительно у.
A = AQ
Найти z, такое, что || А (:, р + 1: п) z — (b — А (:, 1: р) ^) || 2 является минимальным x = Ql;., I:p)y + Q^p + l:«)z
Отметим, что такой подход к задаче LSE включает два разложения и матричное умножение.
Метод взвешивания
Интересным способом получения приближенного решения задачи (12.1.13) является решение задачи LS без ограничений
. Р1
ПИП л _ х — л , хкВkd
(12.1.14)
для больших X. Обобщенное сингулярное разложение из § 8.7.3 отвечает на вопрос о качестве приближения. Пусть
UTAX = diag(04, ..., а„) = DAеRm х\
VTBX = diag(р,, ..., рр) = DBеRpх”
суть GSVD пары матриц (А, В), и предположим для ясности, что обе матрицы имеют полный ранг. Если U = [и^ ..., мш],
7=^,...,^],Х^х,,...^
то легко показать, что
р d" uf b
Х'^ТХ‘ + Л^Х‘
является точным решением для задачи (12.1.13), тогда как
, х £ щи^Ь + k2^vjd”ujb
= > Т+> X:
Х ' ^«?+ Vp? ' (=f+1 а,- 1
(12.1.15)
(12.1.16)
рх(Х)-х = Xрх(Х)-х = Xразрешает (12.1.14). Так как
р
х(Х)-х = X
р
х(Х)-х = X
а((р(и(г6 — а.^ с^p.-^ + Vp?) ^
отсюда следует, что х(Х) -► х при X оо.
Привлекательность этого подхода к задаче LSE состоит в том, что не требуются специальные подпрограммы: используется только подпрограмма решения обыкновенной LS-задачи. Однако при больших значениях X могут возникнуть численные проблемы и необходимо быть осторожным. См. Powell и Reid (1968) и Van Loan (1982а).
Пример 12.1.2. Задача
имеет решение х = (0,3407821, 0.3407821). Оно может быть приближено решением задачи
которое имеет решение х = (0.3407810, 0.3407829).
Задачи
(а) Показать, что если null (^) П null (5) ^ {0}, то (12.1.2) не может иметь единственное решение.
(Ь) Построить пример, который показывает, что обратное неверно. (Подсказка: допустимо А+Ь.)
Пусть /?о(х)’ •••’ Рп(х)~ заданные полиномы, (х0, у0), ..., (xm, ym) заданное множество координатных пар, где х^^а, Z>] Требуется найти полином р(х) = Й=о«^(^), такой, что D^o^k) — У,)2 является минимальной при ограничении
} [/ (Х)]2 dx « h„2,
ai = Q\"/
где zf = a + th и b = a + Nh. Показать, что такая постановка приводит к задаче LSQI вида (12.1.1)/
Пусть матрица У = [у^ ..., yk]eRmxk обладает следующим свойством
YTY = diag(t/f, ..., d£), dx > d2> ... > dk> 0.
Показать, что если Y = QR является QR-разложением матрицы У, тогда R- диагональная матрица, причем | г» | = dv
(а) Показать, что если (А1А + XI) х = ATb, X > 0 и || х ||2 = а, то вектор z = ^Ах — Ь)/Х разрешает двойственные уравнения (ААТ + XI) z = — b, где || ATz ||2 = а.
(Ь) Показать, что если (ААТ + XI)z = — b, || ATz ||2 = а, то вектор х = — ATz удовлетворяет уравнению (АТА + XI) х = АТЬ, || х ||2 = а.
Пусть /1-это m х 1 матрица из единиц, и пусть Z>eRm. Показать, что метод кроссвалидации с единичными весами предписывает оптимальное X, задаваемое соотношением
где F = ^ЬХ + ... + b^/т и 5 = £ (bi — 5)2/(т — 1).
i= 1
Вывести уравнение (12.1.15) из формулы (12.1.17).
Получить SVD-версию алгоритма 12.1.2, которая может работать с матрицами А и В неполного ранга.
Пусть
где >l1eR"x" является невырожденной и A2eR(m-n) х п. Показать, что
^min (-^)\/1 ‘Т ^min (-^ 2^1 ^ ^min (-^ 1) •
Рассмотрим задачу
min ||/1л:-^||2, ^eRmXn, />eRm, В, СеНпХп.
хт Вх = р2
хтСх = Ч2
Предположим, что матрицы В и С положительно определенные и что zeR"x" невырожденная матрица, удовлетворяющая условию ZT BZ = diag(Xt, ..., Х„) и ZTCZ = 1п. И пусть Xj > ... > Х„. (а) Показать, что множество допустимых х пусто, если не выполнено условие Х„ < Р2/у2 ^ Х^ (Ь) Используя Z, показать, как задача с двумя ограничениями может быть сведена к задаче с одним ограничением вида
min ||Ях-/?||2,
уТ^у = р2_Хпу2 где W = diag^, ..., Х„) - Хп1.
Замечания и литература к § 12.1
Грубо говоря, регуляризация - это способ преобразования плохо обусловленной задачи к устойчивой. Важным примером является задача наименьших квадратов с квадратичными ограничениями. См. работы
Elden L. (1977а). “Algorithms for the Regularization of III - 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 M., 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, 48 7-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 Decompositions”, Math. Comp. 43, 483 490.
Другие вычислительные аспекты задачи 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.
Выбор подмножества при помощи SVD
Как упоминалось в § 5.5, LS-задача неполного ранга тш||Лх — Z>||2 может быть заменена аппроксимацией решения минимальной нормы
r ujbxLS = У ^, г = rank (Л),
с вектором
X и]Ь ~Ху = ) УН г ^ г,i = i °,
где
.A = ULVT= X ^^Г(12.2.1)
i = 1
SVD-разложение матрицы А и г-вычисленная оценка для г. Отметим, что вектор Ху минимизирует || Аух — b || 2, где матрица
А у = У сг^иГ
i= 1
является приближением матрицы А ранга г. См. теорему 2.5.2.
Замена матрицы А на матрицу А у в LS-задаче выполняется для фильтрации малых сингулярных значений и имеет большой смысл в ситуациях, когда матрица А получается из возмущенных данных. Однако в других приложениях неполнота ранга означает избыточность факторов, которые содержит лежащая в основе модель. В этом случае для создателя модели может быть неинтересным такое приближение, как АуХу, которое учитывает все п избыточных факторов. Вместо этого можно найти приближение Ау, где у имеет около г ненулевых компонент.
Позиции ненулевых элементов вектора определяют некоторые столбцы матрицы А, т. е. некоторые факторы модели, которые используются для приближения вектора наблюдений Ь. Задача выбора этих столбцов называется выбором подмножества и составляет содержание данного раздела.
Метод QR со столбцовым выбором
Метод QR со столбцовым выбором можно рассматривать как метод выбора независимого подмножества столбцов матрицы А, которыми приближается вектор Ь. Предположим, мы применяем алгоритм 5.4.1 к матрице AeRmxn и вычисляем ортогональную матрицу Q и перестановочную матрицу П, такие, что матрица R = QTАП является верхней треугольной. Если Я(1 :r, 1 :r)z = 5(1 :г), где Ь = QTb, то полагаем
+ = П+ = Пz.0.z.0.
+ = П
+ = П
z
.0.
z
.0.
тогда вектор Ау является LS-приближением вектора Ь, содержащим первые г столбцов матрицы АП.
Использование метода SVD
Хотя метод QR со столбцовым выбором является достаточно надежным способом для решения задач, близких к задачам неполного ранга, иногда по причинам, рассмотренным в § 5.5, более предпочтительным является метод SVD. Поэтому мы опишем процедуру выбора подмножества, основанного на SVD, в соответствии с тем, что предложили Golub, Klema и Stewart (1976):
• Вычислить SVD, матрицы А = ULVT, использовать его для определения
оценки ранга г.
Вычислить перестановочную матрицу Р, такую, что столбцы матрицы B1eRmxr в представлении АР = [Вп В^\ «достаточно независимы».
Приблизить вектор b вектором Ау, где у = РПриблизить вектор b вектором Ау, где у = Рzzи вектор zeW минимизируети вектор zeW минимизирует
Приблизить вектор b вектором Ау, где у = Р
Приблизить вектор b вектором Ау, где у = Р
z
z
и вектор zeW минимизирует
и вектор zeW минимизирует
II BYz-b\\2.
Второй шаг является ключевым. Так как
min || BYz — Ь\\2 = \\ Ay — b\\2^ min || Ax — b || 2, zeB7xgRh
то можно сделать вывод, что матрицу перестановок Р необходимо выбирать так, чтобы сделать невязку (1 — BYB^b предельно малой. К несчастью, такой способ
решения является неустойчивым. Например,
А =А =1101101 01+е 10 11 01+е 10 11-101-10
А =
А =
1
1
0
1
1
0
1 0
1+е 1
0 1
1 0
1+е 1
0 1
1
-1
0
1
-1
0
г = 2 и Р = I, тогда min || Bxz — b ||2 = 0, но || B^b ||2 = О(1/е). С другой стороны, любое подмножество, содержащее третий столбец матрицы А, является строго независимым, но приводит к значительно худшей невязке. Этот пример показывает, что возможно противоречие между независимостью выбранных столбцов и нормой невязки, которую они порождают. Для принятия решения при возникновении
подобных противоречий требуется дополнительный математический аппарат в виде приемлемых оценок для ^(Bj, наименьшего сингулярного значения матрицы Bv
Теорема 12.2.1. Пусть SVD матрицы AeRmxn задается соотношением (12.2.1), определим матрицу BxeRmxr, г ^ rank (Л) следующим образом
АР — E^i В23 ,г п — ггде PeRnxn матрица перестановок. Если
PTV =PTV ="ЙцЛ1"ЙцЛ1й 21 Г Й221й 21 Г Й221(12.2.2)(12.2.2)
PTV =
PTV =
"Йц
Л1
"Йц
Л1
й 21 Г Й221
й 21 Г Й221
(12.2.2)
(12.2.2)
г п — г
и Vxx невырожденна, то
<$гИII ЙГ/ II2<$гИII ЙГ/ II2^ ст^) ^ стг-(Л).^ ст^) ^ стг-(Л).
<$гИ
II ЙГ/ II2
<$гИ
II ЙГ/ II2
^ ст^) ^ стг-(Л).
^ ст^) ^ стг-(Л).
Доказательство. Верхняя оценка следует из минимаксных характеристик сингулярных значений, полученных в § 8.3.1.
Чтобы установить нижнюю оценку, разобьем диагональную матрицу сингулярных значений следующим образом:
Z = ^ 0 "-О Е2_Z = ^ 0 "-О Е2_гт — ггт — г
Z = ^ 0 "
-О Е2_
Z = ^ 0 "
-О Е2_
г
т — г
г
т — г
г п — г
Если со6Rr-единичный вектор, удовлетворяющий условию || Вхю ||2 = 0^(5^, то оДв^2 = II s1(o Hi = U^VTP
= Н^ЙПсоНг + II Е2ЙГ2со И!-
Теорема верна, потому что || Е^иО ||2 > оДЛ)/|| Ий1||2 □.
Этот результат предполагает, что, стремясь получить достаточно независимое подмножество столбцовыми! выбираем матрицу перестановок Р, такую, что результирующая подматрица Иц является предельно хорошо обусловленной. Эвристическое решение этой задачи может быть получено вычислением QR-разложения со столбцовым выбором матрицы [VhVlil, где
Ki и12 г
-^ 1.^22- п~^
П — Г
является разбиением матрицы V из (12.2.1). В частности, если применить QR со столбцовым выбором (алгоритм 5.4.1) для вычисления
гп — г
где матрица Q ортогональная, Р перестановочная, а/?ы верхняя треугольная, то из
(12.2.2) следует, что(12.2.2) следует, чтоК1-^21-К1-^21-Яп QT"-Rai Qt_ 'Яп QT"-Rai Qt_ '
(12.2.2) следует, что
(12.2.2) следует, что
К1
-^21-
К1
-^21-
Яп QT"
-Rai Qt_ '
Яп QT"
-Rai Qt_ '
Отметим, что матрица RYY невырожденна и || VYY ||2 = || Rh1 ||2- Эвристически, столбцовый выбор позволяет получить хорошо обусловленную матрицу Яи, и поэтому в целом процесс позволяет получить хорошо обусловленную матрицу VYY. Поэтому имеем
Алгоритм 12.2.1. Для заданных матрицы Ле1Гх" и вектора beRm следующий алгоритм вычисляет матрицу перестановок Р, оценку ранга г и вектор z g Rr, такие, что первые г столбцов матрицы В = АР независимы и величина || В(:, 1 :r)z — b ||2 является минимальной.
Вычислить SVD UTAV = diag(at, ..., п„) и сохранить У.'
Определить г ^ rank (Л).
Применить метод QR со столбцовым выбором: QTV(:, 1 :г)тР = [ЯИЯ12] и положить AP=^ByB21, где BYeRmxF и B2eRmx^"^.
Определить вектор zeW, такой, что || b — BYz ||2 = min.
Пример 12.2.1. ПустьПример 12.2.1. Пусть
Пример 12.2.1. Пусть
Пример 12.2.1. Пусть
rank (Л) = 2 и xLS = [0.0815, 0.1545, 0.0730]т. Если применяется алгоритм 12.2.1, то мы находим Р [^2^1^зЗ и решение х = [0.0845, 0.2275, 0.0000]г. Заметим: || b — AxLS || « || b — Ах ||2 = 0.1966.
Еще раз о противоречии между независимостью столбцов и невязкой
Вернемся к обсуждению противоречия между независимостью столбцов и нормой невязки. В частности, чтобы оценить описанный выше метод выбора подмножества, необходимо оценить невязку, которую задает вектор у: ry = b — Ау = = b — BYz = (/ — BYBt^b. Здесь матрица BY = В^:, 1 :г), где В = АР. С этой целью проведем сравнение невязок гу и rXf = b — Аху, поскольку А является г-ранговой матрицей и вектор х7 разрешает задачу, приближенную к г-ранговой LS-задаче, а именно, min \\ А^х — b\\2.
Теорема 12.2.2. Если невязки гу и гх? определены как описано выше, и если VY х является ведущей гхг главной подматрицей матрицы РТУ, то
IIII ^Гх1 Н2 цг>112.
Доказательство. Отметим, что гх? = (/ — UYUY^b и гу = (/ — QYQX^b, где
и = IUY и21
г т — г
является разбиением матрицы U из (12.2.1) и где QY = BY(B^BY)"Y,2. Из § 2.6 мы
получаем
II rx? - ry ||2 < II U^ - Q^r II2 IWI2 = II U2QY ||2 II b II2, в то же время из теоремы 12.2.1 можно сделать вывод, что
II UXQx II2 < II UT2BX II2II (srs,)-^2 II2 < СТг-+1(Л)—^ < ^^ II 7г/ ||2
Замечая, что || rx. — ry ||2 = || BYy — £ (и[Ь)щ ||2, мы видим из теоремы 12.2.2 насколько хорошо вектор BYy может приблизить «устойчивую» компоненту вектора Ь, т. е. U^b. Попытка аппроксимировать U^b может привести к решению с большой нормой. Кроме того, теорема утверждает, что если су^ j (Л) « суДЛ), то умеренно независимое подмножество столбцов порождает очень близкую невязку. С другой стороны, если не существует хорошей разделенности между сингулярными значениями, то определение г затрудняется, и усложняется вся задача выбора подмножества.
Задачи
Предположим, что матрица Л eR"^" и что || ит А ||2 = а, где ити = 1. Показать, что если ит^Ах — 6) = О для xeR” и 6eRm, то || х ||2\ итЬ\/о.
Показать, что если матрица BYeRmXk содержит к столбцов матрицы А е Rm х ”, то оДВД <
Из уравнения (12.2.2) видно, что матрица
рТ у _^12
L ^21^22 J И- Г
г п — г
является ортогональной. Поэтому || И^1 || = || F~2 ||2 согласно CS-разложению (теорема 2.4.1). Показать, как можно вычислить Р, применяя QR-алгоритм со столбцовым выбором главного
элемента к матрице [Р^• (Для г > - эта процедура будет более экономичной, чем способ,
рассмотренный в тексте.) Учтите это замечание в алгоритме 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.
Общая задача наименьших квадратов
Задача минимизации || D (Лх — Z?) || 2, где матрица AeRmxn, а матрица D = = diag^, ..., d^ является невырожденной, может быть переформулирована следующим образом:
min || Dr || 2, 6 +rerange (Я)min || Dr || 2, 6 +rerange (Я)reR”.reR”.(12.3.1)(12.3.1)
min || Dr || 2, 6 +rerange (Я)
min || Dr || 2, 6 +rerange (Я)
reR”.
reR”.
(12.3.1)
(12.3.1)
В этой задаче по умолчанию существует предположение, что ошибки заключены в векторе «наблюдений» Ь. Когда ошибка также присутствует в «данных» матрицы А, то более естественно рассмотреть задачу
min6 + rerange (Л + £)min6 + rerange (Л + £)|| D [Sr] Т ||F£'eRmx”, reRm,|| D [Sr] Т ||F£'eRmx”, reRm,(12.3.2)(12.3.2)
min
6 + rerange (Л + £)
min
6 + rerange (Л + £)
|| D [Sr] Т ||F£'eRmx”, reRm,
|| D [Sr] Т ||F£'eRmx”, reRm,
(12.3.2)
(12.3.2)
где матрицы D = diag^, ..., d^ и Т = diag(zt, ..., Zn+1) невырожденны. Эта задача, рассмотренная в работе Golub и Van Loan (1980), была названа общей задачей
наименьших квадратов (TLS).
Если минимизатор С^огоЗ может быть найден для задачи (12.3.2), то любой вектор х, удовлетворяющий системе (А + Е^х = b + rQ, называется TLS-решением. Однако следует понимать, что задача (12.3.2) может не иметь совместного решения.
Например, если
А =А =1 0 о1 0 о00000011о оо оЬ= 11Ь= 11D = I3, Т=13, Ег =D = I3, Т=13, Ег =0 е0 е0 е0 е
А =
А =
1 0 о
1 0 о
0
0
0
0
0
0
1
1
о о
о о
Ь= 1
1
Ь= 1
1
D = I3, Т=13, Ег =
D = I3, Т=13, Ег =
0 е
0 е
0 е
0 е
то для всех е>0 derange (Л + £е). Тем не менее не существует наименьшего значения || [£r] ||F, для которого b + г е range (А + Е\
Обобщение задачи (12.3.2) получается, если мы допускаем наличие многих правых частей. В частности, если матрица BeRmx\ то мы имеем задачу
min\\ D^ER^T \\F,min\\ D^ER^T \\F,(12.3.3)(12.3.3)
min\\ D^ER^T \\F,
min\\ D^ER^T \\F,
(12.3.3)
(12.3.3)
range(B + l?) с range (Л + £)
где EeRmxn и ReRmxk, а матрицы D = diag^, ..., d^ и Т= diag(zt, ..., tn+k) невырожденны. Если [£о^о] разрешает задачу (12.3.3), то любой XeR"1^, удовлетворяющий системе (А 4- £0) X = [В + R^, называется TLS-решением для задачи (12.3.3). В этом разделе мы рассмотрим некоторые из математических свойств общей задачи наименьших квадратов и покажем, как она может быть решена с использованием SVD.
Математическая основа
Следующая теорема дает условия существования и единственности TLS-решения в задаче со многими правыми частями.
Теорема 12.3.1. Пусть А, В, D и Т-это матрицы, определенные выше, и пусть п + к. Предположим, что матрица
C = D\AB"\T = [Сх С2]п к
имеет SVD вида UTCV = diag^, ..., ол+к) = Е, где матрицы U, V и 'L разбиты
следующим образомследующим образомu = \uv и2з, п кu = \uv и2з, п кИ121 п^22- к кИ121 п^22- к к
следующим образом
следующим образом
u = \uv и2з, п к
u = \uv и2з, п к
И121 п
^22- к к
И121 п
^22- к к
5^ 0 п
_О Z2J к*п к
Если аДС^ > <7л + 1(С), то матрица [^o^ol, заданная соотношением
D £E0R03 Т= — U^ [У [2 У22],(12.3.4)
разрешает задачу (12.3.3). Если TY = diag^, ..., t^ и Т2 = diag(/„+1? ...,/л+к), то матрица
Xtls= "Т^У^Т^
существует и является единственным решением системы (А + Ец)X = В -V Ro.
Доказательство. Сначала установим два результата, вытекающие из предположения oJCj > стл+1(С). Из уравнения СУ = UIL имеем СгУ12 + С2У22 = U2X2. Мы хотим показать, что матрица У22 невырожденна. Пусть У22х = 0 для некоторого единичного в 2-норме вектора х. Из соотношения И[2И12 + И22И22 = 7 следует, что II У12х II2 = 1- Но тогда
<Vi (О > II CJ2S2x ||2 = II С^х ||2 > ^(СД
получаем противоречие. Следовательно, подматрица У22 является невырожденной.
Другой факт, следующий из предположения ^(Cj > стл+1(С), касается строгой разделенности стл(С) и стл+1(С). Из следствия 8.3.3 имеем сул(С) > ^(Cj, и поэтому аДО^^СОхг^ЛС)-
^D^AB^T -V D^ER3 Т}Т^D^AB^T -V D^ER3 Т}ТXXТеперь мы можем доказать теорему. Если range (В + R^ a range (А 4- Ё^ то существует X (п х /с), такой, что (А + Е) X = В + R, т. е.
^D^AB^T -V D^ER3 Т}Т
^D^AB^T -V D^ER3 Т}Т
X
X
(12.3.5)
Поэтому матрица в фигурных скобках имеет, самое большее, ранг п. Следуя доказательству теоремы 2.5.2, можно показать, что
л + к
||P[£A]T||f> X ^(С)2
I = Л + 1
и что нижняя оценка достигается на множестве [Е7?] = [^о^о! • Неравенство стл(С) > стл+1(С) гарантирует, что [Ео7?о] является единственным минимизатором. Ядро матрицы
{О[Л5] Т+ D£E0R03 Т} = U^ [У^ У^]
задается множествомзадается множеством"^12"-^22-"^12"-^22-Поэтому из (12.3.5) имеемПоэтому из (12.3.5) имеемT-iT-iL-/JL-/J"^12"-^22-"^12"-^22-55
задается множеством
задается множеством
"^12"
-^22-
"^12"
-^22-
Поэтому из (12.3.5) имеем
Поэтому из (12.3.5) имеем
T-i
T-i
L-/J
L-/J
"^12"
-^22-
"^12"
-^22-
5
5
для некоторой к х к матрицы S. Из уравнений Тг хХ = E12S и — Т2 1 = V22S видно, что S = — V22T2 ^ Поэтому мы должны получить
X = TYvY2s = - ТуУ12у^т^ = XTLS.
Если on(C) = стп+1(С), то TLS-задача может иметь решение, хотя оно может и не быть единственным. В этом случае, желательно выбрать решение «минимальной нормы». С этой целью рассмотрим т-норму, определенную на R”xk следующим образом: || Z||T = || Ту YZT2 ||2. Если X задан соотношением (12.3.5), то из теоремы 2.4.1 имеем
\\X\\2T = \W12V^f2=
° к V22,
Это предполагает такой выбор матрицы У в теореме 12.3.1, чтобы g*(F22) было максимальным.
Вычисления для случая k = 1
Покажем для важного случая к = 1 как максимизировать У22. Пусть сингулярные значения матрицы С удовлетворяют условию стп_р>стп_р+1 = ... = стп+1, и пусть У = [v19 ..., г„+1]-столбцовое разбиение матрицы У. Если Q является матрицей Хаусхолдера, такой, что
И(:, п + 1 -р.п + 1)2 =И(:, п + 1 -р.п + 1)2 =W z~\ п_0 aj 1’W z~\ п_0 aj 1’
И(:, п + 1 -р.п + 1)2 =
И(:, п + 1 -р.п + 1)2 =
W z~\ п_0 aj 1’
W z~\ п_0 aj 1’
Р 1
то векторто векторимеет наибольшую (п 4- 1)-ю компоненту для всех векторов из
то вектор
то вектор
span{r„ + 1_p, ..., г„ + 1}. Если а = 0, то задача TLS не имеет решения. В противном случае xTLS = — Tyz/(tn+ya). Более того,
L-1ОL-1ООQ-ОQ-UT(J) \_Ab"\ Т^УUT(J) \_Ab"\ Т^Ук-р О"-О Q_к-р О"-О Q_= 2,= 2,
L-1
О
L-1
О
О
Q-
О
Q-
UT(J) \_Ab"\ Т^У
UT(J) \_Ab"\ Т^У
к-р О"
-О Q_
к-р О"
-О Q_
= 2,
= 2,
и поэтому
DlEorolT= — D^Ab^TDlEorolT= — D^Ab^T№№
DlEorolT= — D^Ab^T
DlEorolT= — D^Ab^T
№
№
В целом, мы имеем следующий алгоритм.
Алгоритм 12.3.1. Для заданных матрицы AeRmxn^m > п\ вектора beRm и невырожденных матриц D = diag(dY, ...,d^ и Т = diag^, ...,/л+1) следующий алгоритм вычисляет (если возможно) вектор XtlsgR", такой, что (А 4- Ео^ х = (Ь 4- г0) и II ^UVo] T\\F является минимальной.
Вычислить SVD вида итф^АЬ1 T^V = diag(n1, ..., Q„+i)
Сохранить У.
Определить р, такое, что Су> ...> ап_р > сп-р-ц =^ • • = сти+1 _
Вычислить матрицу Хаусхолдера Р, такую, что если У = VP, то У^п 4- \, п— р -V + 1:л) = 0
if »в+1,л+1^0
for i = 1: п
^i^/^i, и + 1/(^и + 1Ти + 1, и + 1)
end
end
Этот алгоритм требует около 2тп2 + 12и3 флопов и большая часть из них связана с вычислением SVD.
Пример 12.3.1. Задача TLS
min || [er] || f,
где а = [1, 2, 3, 4]г и b =[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)т. Отметим: для этих данных xLS = 2.0197.
Геометрическая интерпретация
Можно показать, что TLS-решение xTLS минимизирует функционал т I х — Ь- Р
У
где aj-это /-я строка матрицы А, а Ь(-1-я компонента вектора Ь. Геометрическая интерпретация задачи TLS может быть сделана при помощи этих сведений. Действительно,
\а{х — Ь^2хТт;2х + t;^Y
является квадратом расстояния от вектораявляется квадратом расстояния от вектораatЬьatЬьgrh+1grh+1до ближайшей точки поддо ближайшей точки под
является квадратом расстояния от вектора
является квадратом расстояния от вектора
at
Ьь
at
Ьь
grh+1
grh+1
до ближайшей точки под
до ближайшей точки под
пространства
: а е R”, b е R, b = хта: а е R”, b е R, b = хта
: а е R”, b е R, b = хта
: а е R”, b е R, b = хта
здесь расстояние Rn + 1 измеряется по норме || z || = || Tz ||2. Об этом способе выравнивания было много написано. См. Pearson (1901) и Madansky (1959).
Задачи
Рассмотрим задачу TLS (12.3.2) с невырожденными матрицами D и Т. (а) Показать, что если гапк(Л)<и, то задача (12.3.2) имеет решение в том и только в том случае, если derange (Л). (Ь) Показать, что если гапк(Л) = л, то задача (12.3.2) не имеет решения, если ATD2b = 0 и | tn+x 11| Db ||2 оДПАТ.У где Тх = diag^, ..., tn\
Показать, что если С = D [Л/>] Т = [Л t^] и ой(С) > ои +х (С), то TLS-решение удовлетворяет системе (Л[Л t — оп+1 (С)2 Г^х = A? d.
Покажите, как можно решить задачу (12.3.2) с дополнительным ограничением, что первые р столбцов минимизатора Е нулевые.
Замечания и литература к § 12.3
Этот раздел основывается на работе
Golub G. Н. and Van Loan С. F. (1980). “An Analysis of the Total Least Squares Problem5’, 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-KUL-88/3, Department of Electrical Engineering, K. U. Leuven.
Если некоторые столбцы матрицы А известны точно, то имеет смысл изменить матрицу TLS-возмущения Е так, чтобы аналогичные столбцы в ней были нулевыми. Детали решения задачи TLS с подобным условием рассматриваются в статьях
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.
Van Huffel S. and Vandewalle 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”, Technometrics 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.
Linnik 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.
Сравнение подпространств при помощи SVD
Иногда необходимо исследовать связь между двумя заданными подпространствами. Насколько они близки? Пересекаются они или нет? Может ли одно быть «повернутым» в другое? И так далее. В этом разделе мы покажем, как можно ответить на подобные вопросы при помощи сингулярного разложения.
Поворот подпространств
Пусть матрица А е Rm х р содержит данные, полученные при обработке некоторого множества экспериментов. Если такое же множество экспериментов провести повторно, то будет получена другая матрица BeRmxp. В ортогональной задаче Прокруста возможность поворота матрицы В в матрицу А устанавливается решением следующей задачи:
минимизировать || А — BQ ||F при условии QTQ = 1р.(12.4.1)
Заметим, что если матрица QeRpxp является ортогональной, то
\\ А — BQ\\f = trace (Л ТА) 4- trace (ВТВ) — 2trace (QTBT А).
Поэтому задача (12.4.1) эквивалентна задаче максимизации trace (QTBTA).
Максимизатор Q может быть найден вычислением SVD матрицы ВтА. Действительно, если UT(BTA) V= X = diag(а 19 ..., ар)-это SVD данной матрицы и мы определим ортогональную матрицу Z следующим образом: Z = VTQTU; то
рр
trace (QTBTA) = trace^7^!77) = trace (ZZ) = £ ziioi ^ £ <?/ .
i=li = 1
Очевидно, что верхняя граница достигается при Q = UVT для Z = 1р. Это дает следующий алгоритм:
Алгоритм 12.4.1. Для данных матриц А и В из Rmxp следующий алгоритм находит ортогональную матрицу QeRpxp, такую, что || А — BQ ||F минимальная.
С = Вт А
Вычислить SVD вида UTCV = Z. Сохранить U и V. Q = UVT
Найденная матрица Q является ортогональным полярным множителем матрицы ВтА. См. задачу 4.2.9.
Пример 12.4.1. Если
1 21.2 2.1
л _ 3 4_ 2.4 4.3
А 5 6 И В 5.2 6.1 ’
7 86.8 8.1
то матрица
Г 0.9999 -0.0126 "
0.01260.9999 _
минимизирует || А — BQ ||F на множестве всех 2x2 ортогональных матриц Q и значение минимума равно 0.4661.
Пересечение ядер
Пусть заданы матрицы ЛGRWXЛ и BeRpxn; рассмотрим задачу нахождения ортогонального базиса для пп11(Л) A null (В). Один подход состоит в вычислении ядра матрицы
поскольку Сх = 0<=> хе null (Л) n null (В). Однако если предварительно мы докажем следующую теорему, то из нее вытекает более экономичная процедура.
Теорема 12.4.1. Пусть матрица AeRmxn, пусть {z1,...,zj будет ортогональным базисом null (Л). Определим матрицу Z = [zt, ..., zj, и пусть {w1# ..., wq^ будет ортогональным базисом null(SZ), где ВеКрХп. Если матрица W = [и^, ..., wj, то столбцы матрицы ZW задают ортогональный базис для null (Л) П null (В).
Доказательство. Так как AZ = 0 и (BZ) W = 0, то мы очевидно имеем, что range (ZIV) cz null (Л) A null (В). Теперь предположим, что вектор х принадлежит
и null (Л), и null (В). Отсюда следует, что х = Za для некоторого O^sg^. Но поскольку 0 = Вх = BZa, то мы имеем а= Wb для некоторого beRq. Поэтому х = ZWbexavv%e^ZW\ •
Если для вычисления ортогонального базиса в данной теореме используется SVD, то мы получаем следующую процедуру:
Алгоритм 12.4.2. Для данных матриц ЛGRmxn и BeRpxn следующий алгоритм вычисляет целое 5 и матрицу У = [ylf ..., yj, имеющую ортогональные столбцы, которые задают подпространство null (Л) П null (В). Если пересечение тривиально, то 5 = 0.
Вычислить SVD вида UaAVa = diag^). Сохранить VA и положить
г = rank (Л) if г < п C = BVA^ г + 1:и)
Вычислить SVD вида UcCVc = diag(y1). Сохранить Vc и положить
q = rank (С)
if q < п — г
s = п — г — q
Y = УА(:, г + 1 :п) Vc^ q -V \ ;п — г^
else
5 = 0 end
else
5 = 0 end
Объем работы, требующийся для этого алгоритма, зависит от относительных размеров т, п, р и г.
Отметим, что практическая реализация данного алгоритма требует специального подхода для решения задачи, когда вычисленное сингулярное значение 6; мало. Использование для этих целей барьера 5 (т. е. az < 5 => di = 0) приводит к тому, что столбцы вычисленной матрицы У «почти» задают общее ядро матриц А и В в том смысле, что ,1 Л У ||2 ~ || ВY ||2 ~ 5.
Пример 12.4.2. Если
Л =
1 -1 1
1 -1 1
1 -1 1
и В =
4 2 0
2 1 0
0 3 0
то null (Л) n null (5) = span{x}, где х = (1 — 2 — 3)г. Применяя алгоритм 12.4.2, находим
-0.8165
0.0000
" 0.3273 "
_ 0.9449 _
0.2673
1
V V =
V 2А* 2С
-0.4082
0.7071
0.5349
% 0.2673
-2
0.4082
0.7071
0.8018
-3
Углы между подпространствами
Пусть F и G - подпространства в Rw, размерности которых удовлетворяют условию
р = dim (F) > dim (С) = q ^ 1.
Главные углы 01, ..., O^g [0, л/2] между F и G определяются рекурсивно следующим образом:
cos (0 J = max max uTv = uTukueF veG
при условии:
II M II = II y II = 1
uT u^ = 0i = 1: к — 1
иТи( = 0i = 1: к — 1
Отметим, что главные углы удовлетворяют условию 0^0^Отметим, что главные углы удовлетворяют условию 0^0^<0,<0,^ -. Векторы^ -. Векторы
Отметим, что главные углы удовлетворяют условию 0^0^
Отметим, что главные углы удовлетворяют условию 0^0^
<0,
<0,
^ -. Векторы
^ -. Векторы
{z^, ..., mJ и {t^, ..., rj называются главными векторами между подпространствами F и G.
Главные углы и векторы возникают во многих статистических приложениях. Наибольший главный угол связан с понятием расстояния между подпространствами одинаковой размерности, что мы обсуждали в § 2.6.3. Если р = q, то dist(F, G) = = yr^cos^p = sin(0p).
Если столбцы матриц QFeRmxp и QGeRmxq определяют ортогональные базисы для F и G соответственно, то
max max uTv = max max уТ^гйс^2-ueF veGyeRp zeR4
IM2 = 1 И2 = 1II^II2 = i IM2 = i
Из минимаксных характеристик собственных значений, полученных в § 8.3.1, следует, что если
YT(QfQg)z = diag^!, ..., nJзадает SVD матрицы QfQg^ to можно определить uk, vk и ^k следующим образом
[Vl, • • ^] = Qgz.
cos(0J = ок, к = 1 :q.
Обычно пространства F и G задаются как области определения матриц AeRmxp и BeRmxq. В этом случае необходимые ортогональные базисы могут быть получены вычислением QR-разложений этих двух матриц.
Алгоритм 12.4.3. Для данных матриц AeRmxp и BeRmxq^p ^ q^ с независимыми линейными столбцами следующий алгоритм вычисляет ортогональные матрицы U = [«!,..., и^ и У= [г15 ..., гД и cos(0j, ..., cos(0j, такие, что 0-главные углы между range (Л) и range (В), а ик и ^-соответствующие главные векторы.
А = QaRa,В = Qb^А = QaRa,В = Qb^Используя алгоритм 5.2.1, вычислить QR-разложение
А = QaRa,
В = Qb^
А = QaRa,
В = Qb^
QtaQa = Ip RAeRpxp,QtoB = Iq, RBeR^“,
С = qXqb
Вычислить SVD вида YTCZ = diag(cos(0j)
Qay^ 1:?) = [«n •••. «43; Qbz= ["i, •••, fj-
Этот алгоритм требует около 4т(q2 4- 2/?2) 4- Ipq^m 4- g) 4- 12#3 флопов.
Идея использовать SVD для вычисления главных углов и векторов предложена в работе Bjorek и Golub (1973). В этой статье также рассматривается задача для матриц А и В неполного ранга.
Пересечение подпространств
Алгоритм 12.4.3 также может использоваться для вычисления ортогонального базиса для range (Л) П range (В), где AeRmxp и BeRmxq.
Теорема 12.4.2. Пусть {cos(0k), ик, vk^=i определены при помощи алгоритма 12.4.3. Если индекс s задается условием 1 = cos^J = ... = cos(0s) > cos(0s+1), то имеем range (Л) П range (В) = span{«15 ..., и^ = span{r15 ..., rs}.
Доказательство. Доказательство следует из того факта, что если cos(0k)= 1, то ик = Ч*’
В приближенной арифметике приходится вычислять приближенную кратность единичных косинусов алгоритма 12.4.3.
Пример 12.4.3. Если
то косинусы главных углов между range (Л) и range (В) равны 1.000 и 0.856.
Задачи
Показать, что если А и В т х р-матрицы, причем р ^ т, то
min \\ А — BQ ||2 = £ (о, (Л)2 - 2а,(5тЛ) + а,(5)2).
i=l
Обобщить алгоритм 12.4.2, так, чтобы он мог вычислить ортогональный базис для null (A J П ... П пи11(Л5).
Обобщить алгоритм 12.4.3, чтобы использовать его для случая, когда матрицы А и В неполного ранга.
Установить связь главных углов и векторов между range (Л) и range (В) с собственными значениями и собственными векторами обобщенной задачи на собственные значения
" 0АТ В1 Г у 1Г Ат А01 Г у "
_ ВТА0J L 2 JL 0ВТВJ L Z _ ''
Замечания и литература к § 12.4
Задача минимизации || А — BQ ||F на множестве всех ортогональных матриц возникает в психометрии. См. работы
Bar-Itzhack L. У. (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 MJ. (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”, Psychometrika 31, 1 10.
Если В = 1, то данная проблема равносильна нахождению ортогональной матрицы, ближайшей к А. Это эквивалентно задаче полярного разложения (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.
Если матрица А достаточно близка к матрице, ортогональной самой себе, то метод Bjorck и Bowie более эффективен, чем SVD-алгоритм. Было бы интересно расширить их подход на случай, когда b не является единичной.
Задача минимизации Ц АХ — B\\F при ограничении, что X - симметричная матрица, исследована в работе
Higham N.J. (1988b). “The Symmetric Procrustes Problem”, BIT 28, 133 43.
Использование SVD для решения канонической корреляционной задачи было оригинально предложено в статье
Bjorck A. and Golub G. Н. (1973). “Numerical Methods for Computing Angles Between Linear Subspaces”, Math. Comp. 27, 579-94.
Модифицированные задачи на собственные значения
В этом разделе рассматриваются некоторые варианты стандартной задачи на собственные значения. В обсуждении широко используются матричные методы, описанные в этой книге.
Стационарные значения квадратичной формы с ограничениями
Пусть матрица ЛбНлхл будет симметричной. Градиент г (х) = хТАх/хТх равен нулю в том и только том случае, если х является собственным вектором матрицы А. Поэтому стационарными значениями г(х) являются собственные значения матрицы А.
QTCZ =QTCZ =S.0S.0В некоторых приложениях необходимо находить стационарные значения г^ при наличии ограничений вида Стх = 0, где СеКлхр и п^ р. Пусть
QTCZ =
QTCZ =
S
.0
S
.0
0 г
, г = rank (С),0J п — г
р-г
является полным ортогональным разложением матрицы С. Определим матрицу ВеКл*л следующим образом:
QTAQ = В =QTAQ = В =ВВ-ВВ--22J ^ ” г-22J ^ ” г
QTAQ = В =
QTAQ = В =
В
В-
В
В-
-22J ^ ” г
-22J ^ ” г
п — г
и положим
Так как условие Стх = 0 преобразуется к виду STu = 0, то исходная задача переходит в задачу нахождения стационарных значений г (у) = ут By/угу при ограничении и = 0. Но это равносильно просто нахождению стационарных значений (собственных значений) симметричной (п — г) х (п - г) матрицы В22.
Обратная задача на собственные значения
Рассмотрим задачу нахождения стационарных значений градиента хтАх/хтх при ограничении стх = 0, где матрица A eR"x" симметричная, а вектор cgR” ненулевой. С учетом сказанного выше легко показать, что необходимые стационарные значения Х15 ..., Хп_1 лежат между собственными значениями \ матрицы А.
Теперь предположим, что матрица А имеет различные собственные значения и что нам даны значения Х15 ..., ^n_Ys удовлетворяющие условию
^л < ^л- 1 <^1-1 < • • • < ^2 < ^1 < ^1 •
Наша задача - определить единичный вектор cgR", такой, что ^ являются стационарными значениями для хтАх при условии хтх = 1 и стх = 0.
Для определения свойств вектора с используем метод множителей Лагранжа. Приравнивая градиент'
ф (х, X, р) = хтАх — Х(хтх — 1) + 2цхтс
к нулю, мы получим важное уравнение (А — Х1)х = — рс, из которого вытекает, что X = хтАх, т. е. X является стационарным значением. Поэтому матрица А — XI является невырожденной и х = — р (А — XI) ~1. Умножая обе стороны равенства на ст и подставляя спектральное разложение QTAQT = diag(X/), получаем
где d = QTc, т. е.
p(?i> £ d^ П (Х;-Х) = 0.i=l 7=1
Заметим, что 1 = || с Ц2 = || d ||2 = d^ + ... + d„ является коэффициентом при (— Х)л" i. Так как р (X) - полином, имеющий нули Х15 ..., ^n_Ys получаем
р(х)= п (Х7-х).
7=1
Из этих двух формул для р^ следует, что
п (X,. - х.)
d^ = ^.
п (Х7-Ч)
7=1
Так как для d возможны два знака, то существует 2” различных решений этой задачи.
Одноранговая модификация задачи на собственные значения
При заданных qgR, ueW и D = diag^, ..., d^, удовлетворяющих условию dY ^ ... ^ dn, иногда требуется вычислить собственные значения XY ^ ... ^ Хп матрицы
С = D + guut.
Мы обсуждали эту задачу в §8.6 и сейчас выскажем несколько дополнительных замечаний. Используя минимаксные характеристики собственных значений, можно показать, что
if и ^ О
dk^ Х/ ^ dt _ t i = 2: п
d2 ^li ^ dY + gutu
if и О
di +1 ^ lj ^ dt i = 1: n — 1
dn + gutu ^ Xn ^ dn
Один подход к вычислению X (С) связан с применением метода Ньютона к функции р^Х) = det(D + сииТ — XI). Можно показать, что если
Г1М=1
Pi М = (^1 - X) + ои2
fork = 2:n(12.5.2)
ГкМ = ^к-1 -^-Ук-М
Рк М = К -^Pk-i 00 + <™Ук (X) end
то рДХ) = р^Х). Поэтому вычисление обоих многочленов р^Х) и р'^Х) осуществляется непосредственно. Переплетение свойств может быть использовано для получения хорошего начального значения.
Альтернативный метод для нахождения Х(С) приводит к обобщенной трехдиагональной задаче на собственные значения. Пусть Р- перестановочная матрица, такая, что если г = Ри, то
fl = ••• = vs = о, 0 < I vs+11 < ... < |и„|.
Далее, пусть К - двухдиагональная матрица
Оz = l:s—1
— viAt+i i = s:n — 1
Заметим, что Kv = vnen и поэтому уравнение
^D + guut)x = Хх
преобразуется к виду (KPDPTKT + v^ene„)y = ХККту, где х = РКту. Обе матрицы KPDPTKT + ои^епе^ и ККТ симметричные и трехдиагональные. Для нахождения требуемых собственных значений может быть применен обобщенный метод бисекций из § 8.4.1.
115А* Вторая обратная задача на собственные значения
Рассмотрим задачу нахождения трехдиагональной матрицы
' «1
91■■•0 '
а2:
т =
. 0
0П-1
* * ’Зп — 1 ^п .
3
такой, что матрица Т и ее ведущая (п — 1)-го порядка главная подматрица Т имеют заданные собственные значения. ^Другими словами, ищем матрицу Т, заданную условием к (Г) = {Х15 ..., Х„} и Х(Т) = {Хп..., Хи_х}, причем
Хх > Хх > Х2 > ... > Хп_ 1 > Хп_ 1 > Хп. ,
Для выполнения этих соотношений должна существовать ортогональная матрица Q, такая, что QTTQ = Л = diag(Xx, ..., Х„), и такая, что стационарные значения для
хтТххтТхпри условии е^х = Опри условии е^х = О
хтТх
хтТх
при условии е^х = О
при условии е^х = О
достигаются на Хх, ..., Xn_t. Другими словами, ^ являются стационарными значениями для
,И А
—-— при условии а1 у = О,У У'
где d = QTex, первый столбец матрицы Q. С учетом сказанного выше мы знаем, что
^ = ^ к=\;п.
"п (X, - X»)
Рассмотрим применение метода Ланцоша (9.1.3) для матрицы А = Л и qY = d. Если алгоритм пробегает все п итераций, мы получаем ортогональную матрицу Q, такую, что матрица QTAQ = Т является трехдиагональной. Так как первым столбцом матрицы Q является вектор d, отсюда следует, что матрица Т удовлетворяет необходимым свойствам.
Задачи
Пусть матрица ЛбРшх”, рассмотрим задачу нахождения стационарных значений для
утАх1Ы121М2утАх1Ы121М2yeRw, xeR",yeRw, xeR",
утАх
1Ы121М2
утАх
1Ы121М2
yeRw, xeR",
yeRw, xeR",
при ограничениях
Стх = 0DTy = 0Стх = 0DTy = 0CeRnXpDeRmXqCeRnXpDeRmXqР,Р,m^ q.m^ q.
Стх = 0
DTy = 0
Стх = 0
DTy = 0
CeRnXp
DeRmXq
CeRnXp
DeRmXq
Р,
Р,
m^ q.
m^ q.
Покажите, как решить эту задачу, сначала вычислив полное ортогональное разложение матриц С и D и потом вычислив SVD некоторых подматриц преобразованной матрицы А.
VahaVahaminВх = ОminВх = ОПусть матрица ^eRwx” и матрица BeRpXn. Допустим, что rank (Л) = п и rank (5) = р. Используя методы этого раздела, покажите, как решить задачу
Vaha
Vaha
min
Вх = О
min
Вх = О
. II ь — Ах II \minВх = О II Х II 2 + 1
L-1J 2
Покажите, что это задача TLS с ограничением. Всегда ли она разрешима?
Пусть матрица ЛеК"х" симметричная и матрица BeRpx" имеет ранг р. Пусть deRp. Покажите, как решить задачу минимизации хТАх с ограничениями типа ||х||2 = 1, Вх = d. Укажите, когда решение может не существовать.
Замечания и литература к § 12.5
Многие из задач, рассмотренных в данном разделе, появились в следующих обзорных статьях:
Boley D. and Golub G.H. (1987). “A Survey of Matrix Inverse Eigenvalue Problems”, Inverse Problems 3, 595-622.
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. Н. (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.
Новые исследования по развитию алгоритмов содержатся в работах
Friedlahd 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.
Еще один важный класс обратных задач на собственные значения связан с нахождением диагональной матрицы D, такой, что матрица AD (иногда матрица А + D) имеет заданные собственные значения. См. работу
Friedland S. (1975). “On Inverse Multiplicative Eigenvalue Problems for Matrices”, Lin. Alg. and Its Applic. 12, 127-38.
Модификация QR-разложения
Во многих приложениях требуется заново вычислить разложение заданной матрицы AeRmxn после того, как матрица была незначительно изменена. Например, нам задано QR-разложение матрицы Л и требуется вычислить QR-разложение матрицы А, которая получается (а) прибавлением произвольной одноранговой матрицы к Л, (б) добавлением строки (столбца) к матрице А, (в) удалением строки (столбца) из матрицы А. В данном разделе мы покажем, что в ситуациях, подобных этой, гораздо эффективнее «модифицировать» QR-разложение матрицы А, чем выполнить его заново.
Перед началом упомянем, что существуют также способы для модификаций разложений РА = LU, А = GGT и А = LDLT. Однако эти разложения могут быть довольно чувствительны к модификациям, потому что требуется выбор ведущего элемента и, кроме того, когда мы изменяем положительно определенную матрицу, то результат может не быть положительно определенным. См. Gill, Golub, Murray и Saunders (1974) и Stewart (1979с). Следуя этим результатам, мы кратко обсудим гиперболические преобразования и их использование в задаче модификации разложения Холецкого после удаления строки.
Одноранговые модификации
Пусть мы имеем QR-разложение QR = ВеКшхп и нам надо вычислить разложение вида В + uvT = QXRV где m^gR” заданы. Заметим, что
В -V udt = Q^R -V wdt\(12.6.1)
где w = QTu. Предположим, что мы уже вычислили матрицы вращения Jn_Y, ..., J2. JY, такие, что
J1...JL1W = + || Wll^!.
(12.6.2)(12.6.2)Здесь каждая матрица Jk выполняет вращение в плоскости к и к + 1. (Для ознакомления с деталями см. алгоритм 5.3.1.) Если эти же самые матрицы вращения Гивенса применить к матрице R, то можно показать, что матрица
(12.6.2)
(12.6.2)
н = JTY...JTn_iR
является верхней хессенберговой. Например, в случае п = 4 мы начинаем с матрицей
и вектороми векторомR ='XXXX0ххх00хх_000хR ='XXXX0ххх00хх_000хR = jJ R =" XXXX0ххх00хх00ххR = jJ R =" XXXX0ххх00хх00ххи потом изменяем их следующим образом:и потом изменяем их следующим образом:х х х хх х х хJjw =Jjw =R = J^R =" XXXX "0ххх0ххх00ххw = w =’ X "X 0 07R = J^R =" XXXX "0ххх0ххх00ххw = w =’ X "X 0 07X X XОX X XО
и вектором
и вектором
R =
'XXXX
0ххх
00хх
_000х
R =
'XXXX
0ххх
00хх
_000х
R = jJ R =
" XXXX
0ххх
00хх
00хх
R = jJ R =
" XXXX
0ххх
00хх
00хх
и потом изменяем их следующим образом:
и потом изменяем их следующим образом:
х х х х
х х х х
Jjw =
Jjw =
R = J^R =
" XXXX "
0ххх
0ххх
00хх
w = w =
’ X "
X 0 0
7
R = J^R =
" XXXX "
0ххх
0ххх
00хх
w = w =
’ X "
X 0 0
7
X X X
О
X X X
О
Н = J^R =Н = J^R =XXXXXXXXXОххООхXXXОххООхW = J^w =W = J^w =XО ООXО ОО
Н = J^R =
Н = J^R =
XXX
XXX
XXX
Охх
ООх
XXX
Охх
ООх
W = J^w =
W = J^w =
X
О О
О
X
О О
О
Соответственно матрица
(J[... ^(Д + wi)^ = H+\\w \\2eYvT = HY(12.6.3)
является также верхней хессенберговой.
В § 5.2.3 было показано, как вычислить QR-разложение верхней хессенберговой матрицы за О (л2) флопов. В частности, можно найти матрицы вращения Гивенса Gk, к = 1 :п — 1, такие, что матрица
(12.6.4)(12.6.4)G^_Y...G^HY = RY
(12.6.4)
(12.6.4)
является верхней треугольной. Комбинируя (12.6.1) и (12.6.4), мы получаем QR-разложение В + uvT = QYRYs где
Qi = 1 • • • . Gn_Y.
Тщательная проверка объема работы показывает, что требуется около 26п2 флопов. Вектор w = QTu требует 2п2 флопов. Вычисление Н и объединение матриц Jk в матрицу Q требуют 12л2 флопов. Наконец, вычисление RY и умножение матриц Gk на матрицу Q требуют 12л2 флопов.
Метод легко обобщается на случай прямоугольной матрицы В. Он также может быть легко обобщен для вычисления QR-разложения матрицы В + UVT, где rank((7Kr) = р > X.
Добавление или удаление столбца
Допустим, что имеется QR-разложение
(12.6.5)(12.6.5)QR = А = [а1? ..., ап], а^Кт,
(12.6.5)
(12.6.5)
и разбиение верхней треугольной матрицы ReRmxn выполнено следующим образом:
г Д13Гкк wTО К33г Д13Гкк wTО К33к-1
г Д13
Гкк wT
О К33
г Д13
Гкк wT
О К33
1
т — к
к—1 1 п — к
Теперь допустим, что мы хотим вычислить QR-разложение матрицы Л = [a1...at_1at+1...aJeR”x(""11.
Заметим, что матрица А такая же, как и матрица А с убранным к-м столбцом и при этом матрица
QTA =QTA =^и
QTA =
QTA =
ОО
является верхней хессенберговой, т.е.
' X
X
X
X
X "
0
X
X
X
X
0
0
X
X
X
н =
0
0
X
X
X
т = 7, п = 6, к = 3
0
0
0
X
X
0
0
0
0
X
0
0
0
0
0 _
Очевидно, что нежелательные поддиагональные элементы hk+lk, ..., hnn_Y могут быть обнулены последовательностью вращений Гивенса: G^_x...GkH = Rx. Здесь матрица Gt выполняет вращение в плоскости i и i + 1 для i = к: п — 1. Поэтому если Qv = QGk...Gn_x, то Л = QXRY является QR-разложением матрицы Л.
Приведенная выше процедура может быть выполнена за О^п2^ флопов и очень полезна в некоторых задачах наименьших квадратов. Например, при желании проверить важность к-го фактора в исходной модели исключением к-го столбца в соответствующих матричных данных и решением получившейся LS-задачи. Аналогично, бывает полезным умение эффективно вычислять решение задачи LS после добавления столбца к матрице А. Пусть мы имеем QR-разложение (12.6.5) и хотим вычислить QR-разложение матрицы
А = Vav..akzak+1...a^,
где вектор z е Rm задан. Отметим, что если w = QTz, то матрица
QTA = [Q7^... QTakwQTak +:... Qra„] = Л
является верхней треугольной, исключая присутствие «клина» в к + 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
} m = 7, n = 5, & = 3
0
0
0
X
0
X
0
0
0
X
0
0
0
0
0
X
0
0 _
Можно определить матрицы вращения Гивенса Jm_Y, ..., Jk+Y, такие, что
W1
0’
0
где матрица Jk+Y... J^„ ХА = R верхняя треугольная. Проиллюстрируем это на
приведенном выше примере
" X
0
0
X X
0
X
X
X
X
X
X
X
X
X
X "
X
X
Н = Ji А =
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
Н = Ji н =
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
н = Ji н =
0
0
0
X
X
X
0
0
0
0
X
X
0
0
0
0
0
X
0
0
0
0
0
0 _
Модификация требует О^тп^ флопов.
Добавление или исключение строки
Пусть у нас имеется QR-разложение QR = A eRmxn, и мы хотим получить разложение матрицы
где weR". Заметим, что матрица
wГ wT
diag(l, 6Г)Л= =Н
является верхней хессенберговой. Поэтому матрицы вращения Гивенса могут быть определены так, что J„ ... JTXH = Rx является верхней треугольной. Отсюда следует, что
A = QXRX
является искомым QT^-разложением, где Qx = diag(l, Q)JX... Jn.
Результат существенно не усложняется, если новая строка добавляется между строками к и к 4- 1 матрицы А. Мы просто применим приведенный выше алгоритм с заменой матрицы А на матрицу РА и матрицы Q на PQ, где
Р =Р =L к оL к о
Р =
Р =
L к о
L к о
На выходе матрица diag (1, PT^QX является искомым ортогональным сомножителем.
И в конце мы рассмотрим, как модифицировать QR-разложение QR = Л е Rm х \ когда исключена первая строка матрицы А. В частности, мы хотим вычислить QR-разложение подматрицы Ах в матрице
1
т — 1
(Процедура аналогична, если исключается произвольная строка.) Пусть qT будетпервой строкой матрицы Q, и вычисленные матрицы вращения Гивенса таковы, чтоGx .. .G^_xq = аех,
где а = + 1. Отметим, что матрица
Н = G^.. .G^_XR =
J m — 1
является верхней хессенберговой и что
а О
ес- -Мо
где матрица Qx е R(m"1} х (т~1} ортогональна. Поэтому
А =А == (QGm-x. ..GX)(GX.. ^_ХР) == (QGm-x. ..GX)(GX.. ^_ХР) =а Оа ОLo qJ IMLo qJ IM
А =
А =
= (QGm-x. ..GX)(GX.. ^_ХР) =
= (QGm-x. ..GX)(GX.. ^_ХР) =
а О
а О
Lo qJ IM
Lo qJ IM
отсюда мы заключаем, что Ах = QXRX есть искомое QR-разложение.
Методы гиперболического преобразования
Напомним, что R в разложении А = Q/^-это есть множитель Холецкого из разложения АТА = GGT. Поэтому существует тесная связь между только что рассмотренными модификациями QR-разложения и аналогичными модификациями разложения Холецкого. Проиллюстрируем это на задаче модификации разложения Холецкого, которая соответствует удалению Л-строки в QR-разложении. В задаче модификации разложения Холецкого после удаления строки, нам дано разложение Холецкого
GGT = АТА =GGT = АТА =тит г^т-тит г^т-(12.6.6)(12.6.6)
GGT = АТА =
GGT = АТА =
тит г^т-
тит г^т-
(12.6.6)
(12.6.6)
где Л е Rm х л при m > п и ze R”. Наша цель найти нижний треугольник Gx, такой, что G^f = АХАХ. Существует несколько подходов к этой интересной и важной задаче. Мы представим только процедуру модификации, которая основывается на гиперболических преобразованиях, поскольку это дает удобный случай ввести несколько новых идей.
‘In 01 VGT' _0 ijlz^‘In 01 VGT' _0 ijlz^Начнем с определения. Матрица HeRmxm является псевдоортогональной относительно сигнатурной матрицы S = diag(± l)6Rmxm, если HTSH = 5. Теперь из (12.6.6) имеем АТА = АХАХ У zzT = GGT и поэтому
‘In 01 VGT' _0 ijlz^
‘In 01 VGT' _0 ijlz^
Атх Ах = АТА — zzT = GGT — zzT = [Gz]
Определим сигнатурную матрицу
5 =5 =LO -1JLO -1J(12.6.7)(12.6.7)
5 =
5 =
LO -1J
LO -1J
(12.6.7)
(12.6.7)
и предположим, что мы можем найти матрицу Не R(n +1} х(п +1}, такую, что HTSH = S, при условии, что матрица
Г^ПГ^ПLO JLO J(12.6.8)(12.6.8)
Г^П
Г^П
LO J
LO J
(12.6.8)
(12.6.8)
является верхней треугольной. Отсюда следует, что
АТХАХ = ^GzlHTSHАТХАХ = ^GzlHTSHСПСП= [^015= [^015
АТХАХ = ^GzlHTSH
АТХАХ = ^GzlHTSH
СП
СП
= [^015
= [^015
является искомым разложением Холецкого.
Теперь покажем, как построить матрицу гиперболического преобразования Н из (12.6.8), использующую гиперболические вращения. Матрица 2x2 гиперболического вращения имеет вид
H =H =ch (9) — sh(9)_ — sh (0) ch (9)_ch (9) — sh(9)_ — sh (0) ch (9)_c — sc — s_ — s c__ — s c_
H =
H =
ch (9) — sh(9)
_ — sh (0) ch (9)_
ch (9) — sh(9)
_ — sh (0) ch (9)_
c — s
c — s
_ — s c_
_ — s c_
Заметим, что если ZfeR2x2 является матрицей гиперболического вращения, то HTSH = S, где 5 = diag( — 1, 1). Проводя аналогию с нашими исследованиями вращений Гивенса, давайте рассмотрим, как гиперболические вращения могут быть использованы для обнуления. Из сотношения
с —sс —s_ — 5 С__ — 5 С_с2 — s2 = 1,с2 — s2 = 1,
с —s
с —s
_ — 5 С_
_ — 5 С_
с2 — s2 = 1,
с2 — s2 = 1,
получаем уравнение сх2 = sxx. Отметим, что решения для этого уравнения не существует, если хх = х2 ^ 0; можно сделать вывод, что гиперболические вращения не так численно устойчивы, как их двойники - вращения Гивенса. Если хх х2, то возможно вычислить пару ch — sh:
if х2 = 05 = 0; с = 1if х2 = 05 = 0; с = 1else. if I ^21 < I Ielse. if I ^21 < I Iт = Хг/х^ c = 1/V1 — t2> s = ct elseif | xx | < | x21 т = Хг/х^ c = 1/V1 — t2> s = ct elseif | xx | < | x21 (12.6.9)(12.6.9)endendт = xx(x2; s = 1/^/1 — t2; c = stт = xx(x2; s = 1/^/1 — t2; c = st
if х2 = 0
5 = 0; с = 1
if х2 = 0
5 = 0; с = 1
else
. if I ^21 < I I
else
. if I ^21 < I I
т = Хг/х^ c = 1/V1 — t2> s = ct elseif | xx | < | x21
т = Хг/х^ c = 1/V1 — t2> s = ct elseif | xx | < | x21
(12.6.9)
(12.6.9)
end
end
т = xx(x2; s = 1/^/1 — t2; c = st
т = xx(x2; s = 1/^/1 — t2; c = st
end
Отметим, что норма матрицы гиперболического вращения, полученной при помощи этого алгоритма, настолько велика, насколько хх близок к х2.
Любая матрица Н = Н(р, п 4- 1, 0) eR(n + 1) х(п+1\ которая совпадает с единичной за исключением элементов hp р = hn+Xn+x = ch(9) и hp п+х = hn+x р = — sh(9) удовлетворяет условию HTSH = S, где 5-матрица из (12.6.7). Используя алгоритм (12.6.9), мы попытаемся создать гиперболические вращения Нк = Я(1, к, 9к) для к = 2: п 4- 1, такие, что
Нп...НхНп...НхГ(7Г1Г(7Г1GT"_0 _GT"_0 _
Нп...Нх
Нп...Нх
Г(7Г1
Г(7Г1
GT"
_0 _
GT"
_0 _
Это оказывается возможным, если матрица А имеет полный столбцовый ранг. Гиперболическое вращение Нк обнуляет элемент (к 4- 1, к\ Другими словами, если матрица А имеет полный столбцовый ранг, тогда можно показать, что каждое обращение к алгоритму (12.6.9) дает пару ch — sh. См. Alexander, Pan и Flemmons (1988).
Задачи
Пусть нам известно QR-разложение матрицы 4eRmX" и требуется минимизировать || (Л + UvT)x — b ||2, где и, ЬеКт и veR” заданы. Предложить алгоритм для решения этой задачи, требующий О {тп) флопов. Предположить, что матрица Q должна модифицироваться.
Пусть нам известно QR-разложение QR = Л g Rm х ”. Предложить алгоритм для ры- числения QR-разложения матрицы Л, полученной вычеркиванием k-й строки из А. Ваш алгоритм должен требовать О^тп^ флопов.
Пусть матрица ТеКпхп является трехдиагональной и симметричной, и пусть вектор veR". Предложить О^п2^ метод для вычисления ортогональной матрицы QeR"x", такой, что матрица QT^T + vvT^Q = Т является также трехдиагональной.
Пусть
ссА =L в JА =L в JceR", SgR^"1^",ceR", SgR^"1^",
с
с
А =
L в J
А =
L в J
ceR", SgR^"1^",
ceR", SgR^"1^",
где m > п. Используя формулу Sherman-Morrison-Woodbury, показать что
1<1 il Иг^)~‘с|^
СТт1п(5)"СТт1пИ)+ 1 -CTUTAYXC'
Каково поведение 2-нормы матрицы гиперболического вращения, полученной алгоритмом (12.6.9) как функции от ,v1 и х2?
Показать, что гиперболическая редукция из § 12.6.4 не обрывается, если матрица А имеет полный столбцовый ранг.
Замечания и литература к § 12.6
Численные аспекты задачи модификации представлены в работе
GillP. Е., Golub G. Н., Murray W., and Saunders М. А. (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.
Goldfarb D. (1976). “Factored Variable Metric Methods for Unconstrained Optimization”, Math. Comp. 30, 796-811.
Фортран-программы для модификации QR-разложения и разложения Холецкого включены в Unpack (гл. 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.
Гиперболические преобразования аналогичны преобразованиям Гивенса, но основаны на ch
и sh вместо cos и sin. Использование гиперболических преобразований для модификации разложений описано в статьях
Alexander S. Т., Pan С. Т., and Flemmons 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 Computation, ed., Milton R. C. and Nelder J. A., Academic Press, New York, pp. 365-97.
Работа по распараллеливанию процедур модификации с пополнением и модификации с удалением только началась. Смотри
Henkel С. S., Heath М.Т., and Flemmons 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 multiplicity) 305
Алгоритмы: (algorithms)
Аазена (Aassen’s) 155
барьерный метод Якоби (threshold Jacobi) 403
бисекция (bisection) 393
блочная циклическая редукция (block cyclic reduction) 162-164
блочный Ланцоша (block Lanczos) 438 быстрое вращение Гивенса (fast Givens rotation) 210
возведение в квадрат ехр(А) (squaring) 498, 499
Гаусса-Зейделя (Gauss-Seidel) 454
двоичное возведение в степень (binary powering) 493
двухдиагонализация Хаусхолдера (Haushol- der bidiagonalization) 218
диагонального выбора (diagonal pivoting) 156
Дулитла (Doolittle reduction) 99
жорданово разложение (Jordan decomposition) 350
исключение Гаусса (Gauss elimination) блочный (block) 113
полный выбор ведущего элемента (complete pivoting) 114
с внешним произведением (outer product) 96
с частичным выбором: версия с внешним произведением (outer product with pivoting) 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 forward substitution) 143
матричная операция gaxpy (matrix-matrix gaxpy operation) 22
метод Арнольди (Arnoldi method) 448
метод Бартельса - Стюарта (Bartels-Stewart method) 486
метод оценки обусловленности (condition estimator) 124
метод gaxpy с обратным ходом (backward gaxpy) 458
неявный симметричный QR-шаг co сдвигом Уилкинсона (implicit symmetric QR step with Wilkinson shift) 380
нормальные уравнения (normal equations) 207
обратная подстановка (backward substitution) 88, 89
ортогонализация Грама-Шмидта (Gram- Schmidt orthogonalization) 202
ортогональные итерации (orthogonal iterations) 318
Парт лета - Рида (Partlett-Reid) 151
параллельная кольцевая факторизация (parallel 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
решение симметричной трехдиагональной
положительно определенной системы (positive definite tridiagonal system solver) 147
решение систем Вандермонда (Vandermond system solving) 169
симметричный метод SOR (symmetric successive over-relaxation) 459
скалярное произведение (dot product) 18 скалярное произведение матриц (matrixmatrix dot) 23, 25
сопряженные градиенты с предобусловли- ванием (preconditioned conjugate gradients) 472, 473
стационарные значения квадратичной формы с ограничениями (stationary values with constraints) 523
степенные итерации (power iterations) 316
Тренча (Trench) 177
углы между подпространствами (angles between subspaces) 521
умножение матриц с использованием внешних произведений (matrix-matrix outer product) 25, 26
умножение матрицы на вектор (matrix-vector row) 19
умножение на матрицу Гивенса (Givens rotation times matrix) 188
умножение на матрицу Хаусхолдера слева (Hausholder refletion times matrix) 184
умножение треугольных матриц "(triangular matrix multiplication) 30
функция от треугольной матрицы (function of triangular matrix) 486
Хаусхолдера трехдиагонализация (Hausholder triangularization) 377
Хаусхолдера QR-разложение с выбором верхнего столбца (Hausholder QR) 216 хессенбергово-треугольное преобразование (Hessenberg-triangular reduction) 356— 358
Холецкого параллельная реализация (Cliolesky parallel) 273, 275, 284, 285
Холецкого разложение А — хВ (Cholesky decomposition) 420
Холецкого сопряженных направлений (conjugate 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-шаг (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
Аппроксимация матричной функции (approximation of a matrix function) 488
Арифметика с округлением (rounded arithmetic) 66
с отбрасыванием разрядов (shopped arithmetic) 66
База (base) 66
Базис (basis) 56
Бисекция (bisection) 393
Блочная матрица (block matrix) 36, 37
Блочное диагональное доминирование (block diagonal dominance) 161
Блочные алгоритмы (block algorithms) 36, 53 двухдиагональные системы (bidiagonal systems) 161
Ланцоша (Lanczos) 438
повторное использование данных (data re-use) 53
тридиагональные системы (tridiagonal systems) 159
циклическая редукция (cyclic reduction) 163, 164
Якоби (Jacobi) 407, 408
Быстрое преобразование Гивенса (fast Givens transformation) 192, 193
Вектор (vector)
Гаусса (Gauss) 93
Хаусхолдера (Hausholder) 183
Векторно-конвейерные вычисления (vector pipeline computing) 45
Векторно-конвейерный компьютер (vector pipeline computer) 45
Векторные вычисления (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 permutations) 107
Взвешивание по столбцам (column weighting) 230
— строкам (row weighting) 230
Внедиагональный элемент (off-diagonal elements) 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 orthogonalization) 437
Вычисление ортонормированного базиса (orthonormal basis computation) 203 - скалярного произведения с накоплением (dot product accumulation) 69 погрешности округления (roundoff errors) 66
Гауссово исключение (Gaussian elimination) 23
ошибки округления (roundoff errors) 102
Геометрическая кратность (geometric multiplicity) 305
Гиперболические преобразования (hyperbolic transformations) 532, 533
Главные векторы и углы между подпространствами (principal angles and vectors) 521
Гребневая регрессия (ridge regression) 504
Двоеточие (colon) 21, 32
Двоичное возведение в степень (binary powering) 493
Двойная точность (double precision) 69
Двухдиагонализация (bidiagonalization) 218
метод Ланцоша (Lanczos) 446
с приведением матрицы к верхнедиагональному виду (upper triangularizing first) 219
Двухдиагональная матрица (bidiagonal matrix) 30
Декомпозиция области (domain decomposition) 475, 476
Детерминант (determinant) 51, 52, 58
, вырожденность (singularity) 83
Диагональная форма (diagonal form) 305
Динамическое распределение работы (dynamically sheduled algorithms) 257, 261
Динамический резерв задач (pool of task) 256, 270
Дифференцирование матрицы (differentiation) 58.
Длина вектора (vector length) 47
Добавление или исключение строки (row addition or deletion) 531
Доминирующее собственное значение (dominant eigenvalue) 317
Доминирующий собственный вектор (dominant 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
решение с минимальной нормой (minimum norm solution) 222
с ограничениями (constrained least squares) 501, 503
типа равенств (equality constrained LS) 505
чувствительность к возмущениям (perturbation sensitivity) 223
Прокруста (Procrust problem) 518, 519
Юла-Уолкера (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 iterations) 507
предобусловливатель (preconditioner) 477, 478
при решении уравнения Пуассона (solving Poisson equation) 456
- с одинарным сдвигом (single shift iterations) 377
— отношением Релея (Rayleigh quotient iterations) 395
QR-алгоритм (QR) 396
симметрично-определенный пучок (symmetric-definite pencil) 421
Итерационная матрица (iteration matrix) 455
Итерационное уточнение (iterative improvement) 232
— для метода наименьших квадратов (for LS) 232
— линейных систем (for linear systems) 121, 122
— с фиксированной точностью (fixed precision) 123
— co смешанной точностью (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
Конфлюэнтные системы Вандермонда (confluent Vandermonde matrix) 170
Косинус матрицы (cosine of a matrix) 490
Кратность алгебраическая (algebraic multiplicity) 305
геометрическая (geometric) 305
собственного значения (multiplicity of eigenvalues) 305
Кратные собственные значения (multiple eigenvakues) 305
матричная функция 486
триангуляции Ланцоша 439
Критический разрез алгоритма (critical section) 257
Кросс-валидации (cross-validation) 504
Круговое распределение (wrap mapping) 274
Крылова матрица (Krylov matrix) 330
подпространство (Krylov subspace) 426, 427
Ленточное LU-разложение (band LU factorization) 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-
ling) 30, 121
— строкам (row scaling) 30, 120
Матрица (matrix)
блочная (block) 36
- верхняя двухдиагональная (upper bidiagonal) 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 transformation) 93
простая (nonderogatory) 331
симметричная (symmetric) 33
строго диагонально доминирующая (diagonal 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
— аппроксимации Паде (Fade approximation) 497
— чувствительность (sensitivity) 495, 496
Матричные операции (operations with matrices) 17, 18
Машинная точность (machine precision) 67
Метод см. также Алгоритм
Метод Аазена (Aasen’s method) 152-156
Арнольди (Arnoldi) 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 gradient method) 464-467
связь с алгоритмом Ланцоша 468
- Холецкого блочный (block) 136
— с внешним произведением (outer product) 135
Холецкого: gaxpy-версия 134
чебышевских полуитераций (Chebyshev semiatteration method) 457, 458
Штрассена (Strassen) 42, 43
Якоби для линейных систем (Jacobi) 453
Методы для неопределенных систем (indefinite system methods) 127
линейного уравнения для блочных трехдиагональных систем (linear equation method for block tridiagonal systems) 159
ленточных систем (band systems) 141, 142
положительно определенных систем (positive definite systems) 132
симметричных неопределенных систем (symmetric indefinite systems) 150
систем Вандермонда (Vandermonde) 166
тёп лицевых систем (Toeplitz) 171
треугольных систем (triangular systems) 86
Минимальная невязка (minimal residual) 206
Многочлен Чебышева (Chebyshev polynomial) 206
Множитель Лагранжа (Lagrange multiplier) 503
Модель с распределенной памятью (distributed 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 singular 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 decompositions) 306
Неприводимые матрицы Хессенберга (unre- dused Hessenberg matrices) 329
Неравенство Коши-Шварца (Cauchy - Schwartz inequality) 60
Несимметричная проблема собственных значений (unsymmetric eigenproblem) 299
Несимметричный метод Ланцоша (unsymmetric 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
Обобщение сингулярного разложения (generalized singular value decomposition) 502
Обобщенная задача наименьших квадратов с ограничениями (generalized constrained 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
— ортогональная итерация (inverse orthogonal iteration) 322, 323
Обратные задачи о собственных значениях (inverse eigenvalue problems) 532, 533
Обратный метод последовательной верхней релаксации (Backward successive overrelaxation) 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 complement) 73
Ортогональные векторы (orthogonal vectors) 73
Ортогональный проектор (orthogonal projection) 77
Ортогональное матричное представление (orthogonal matrix representation) 186 вращение Гивенса (Givens rotation) 189 факторизованное (factorized form) 185 Ортогональные итерации (orthogonal iterations) 318
Ортонормированный базис (orthonormal basis) 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 computations)
— асинхронная тороидальная процедура (systolic torus) 269
— матричное умножение, кольцевой алгоритм (matrix multiplication) 273
- - - общая память динамическая (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 matrices) 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 projection) 77
пересечение (intersection) 522
— ядер (null-space intersection) 519
поворот (rotation) 518
понижающее (deflating) 364
прямая сумма (direct sum) 56
расстояние между (distance) 77
размерность (orthogonal projection) П
сингулярное (syngular) 385, 386
угол между 520, 521
Полиномиальный предобуславливатель (polynomial preconditioner) 477
Полное ортогональное пространство (comple
te orthogonal space) 217
Полные ортогональные разложения (complete orthogonal decomposition) 217
Положительно определенные системы (positive definite systems) 132, 133, 443 алгоритм Ланцоша (Lanczos) 442
— итерации Гаусса - Зейделя (Gauss-Seidel iterations) 455
- - несимметричные (unsymmetric) 133 свойства (properties) 132, 133
симметричные (symmetric) 134
LDLT 134
Полярное разложение (polar decomposition) 140
Понижающее подпространство (deflating subspace) 364
Последовательная верхняя релаксация (successive over-relaxation), SOR 456 - предобусловливатель (preconditioner)
477
симметричная задача собственных значений (symmetric eigenproblem) 364
SSOR 458
симметричные неопределенные системы (symmetric indefinite systems) 150
Последовательность Штурма (Sturm sequence) 393
Потеря ортогональности (loss of orthogonality) 437
— в методе Грама-Шмидта (in Gram- Schmidt) 203
Ланцоша (in Lanczos) 434, 435
точности (cancellation) 67
Правило Симпсона (Simpson’s rule) 494
Предобусловливатели (preconditioners) 473
неполного разложения Холецкого (incomplete Cholesky) 473
неполные блочные (incomplete block) 474
Преобразование Гаусса (Gauss transformations) 93
Гаусса-Жордана (Gauss-Jordan) 101-102
Кэли (Cayley transform) 194
- матриц (transformation of matrices)
— быстрое Гивенса (fast Givens) 191
—, вращения Гивенса (Givens rotations) 191
— Гаусса (Gauss) 93
— гиперболические (hyperbolic) 532
— отражение Хаусхолдера (Hausholder reflections) 182
подобия (similarity transformation) 300
неунитарное (nonunitary) 306
определение (definition) 301
— условия (conditions) 306
Принцип «разделяй и властвуй» (“divide and conquer” principle) 42
Проблема собственных значений (eigenproblem) 368
- - несимметричная (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
обобщенное вещественное Шура (generalized 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
Распределенные структуры данных (distributed data structures) 242
Расщепление (splitting) 454
Релаксационный параметр (relaxation parameter) 456, 457
Решение задачи наименьших квадратов (least squares solutions)
методом быстрых вращений Гивенса (fast Givens) 209, 210
Ланцоша (Lanczos method) 447
модифицированным методом Г рама -
Шмидта (modified Gram-Schmidt method) 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
Симметрично-определенный пучок (symmetric-definite pencil) 418
Сингулярное разложение (singular value decomposition (SVD)) 74
- - алгоритм 383, 387
— доказательство (proof) 74
— метод Ланцоша 446
наименьших квадратов с ограничением (constrained least squares) 503
общая задача (total least squares) 514
— обобщенное (generalized) 422
— пересечение подпространств (subspace intersection) 522
— поворот подпространств (subspace rotation) 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
Скалярное произведение (dot product) 18 След (trace) 300
Сложение (addition) 17
Собственное значение
— внутреннее (interior) 432
— дефектное (defective eigenvalue) 305
Собственные значения (eigenvalues) 305
— детерминант (determinant) 317
— доминирующие (dominant) 317
— комплексно сопряженные (complex conjugate) 325, 326
— обобщенные (generalized) 354
— последовательность Штурма (Sturm sequence) 369
— симметрические матрицы (symmetric matrices) 369
— след (trace) 300
— упорядочение в вещественной форме Шура (ordering in Schur form) 345, 346 — характеристический многочлен (characteristic polynomial) 299, 300
Собственный вектор (eigenvector) 300
— возмущение (perturbation) 311
— дефектная матрица (defective matrix) 306
— левый (left) 300
— плохо обусловленная матрица (ill-conditioned matrix) 306
— правый (right) 300
— формула Шура (Shur form) 303
— чувствительность (sensitivity) 311
Сопряженное транспонирование (conjugate transposition) 27
Сопряженные направления (conjugate directions) 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 Стоимость обмена информацией (communication cost) 246
Структура данных для блочных матриц (block data structure) 41, 42
--ленточной матрицы (bandedness data structure) 143
— при векторной обработке (vector computers) 51, 52
Сходимость (convergence)
итераций Якоби (Jacobi iterations) 344
итерационных методов (iterative methods) 454
метода бисекций (bisection) 393
— Гаусса-Зейде л я (Gauss - Seidel) 455 — итераций с отношениями Рэлея (Rayleigh
quotient iterations) 396
— Ланцоша (Lanczos) 430
— наискорейшего спуска (steepest descent) 461
— сопряженных градиентов (conjugate gradients) 468, 469
— Якоби для симметрической задачи собственных значений (Jacobi’s method for the symmetric eigenproblem) 401
- чебышевских полуитераций (Chebyshev semi-iterative) 457
обратных итераций (inverse iterations) 344
ортогональной итерации (orthogonal iteration) 318
симметричного QR-шага co сдвигом (symmetric 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
— для инвариантных подпространств (invariant subspaces) 313
— для недоопределенных систем (underdetermined systems) 236
псевдообратной матрицы (pseudo inverse) 223
собственных векторов (eigenvectors) 310, 311
значений (eigenvalues) 307
— инвариантные подпространства симметричных матриц (invariant subspaces of symmetric matrices) 371
— линейной системы (linear equation problem) 80, 81
— обобщенное собственное значение (generalized eigenvalues) 355
— пара сингулярных подпространств (singular subspace paire) 385, 386
— сингулярные значения (singular values) 384, 385
— собственные значения симметричной матрицы (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
— случай нескольких правых частей (multiple) 89
Трех диагональная матрица (tridiagonal matrix) 475
— обратная (inverse) 475
Трехдиагональные системы (tridiagonal systems) 146
Трех диагонализация (tridiagonalization) 376, 427
- Ланцоша (Lanczos) 427, 428
— блочный вариант (block version) 438
— внутренние собственные значения (interior eigenvalues) 432
— с выборочной ортогонализацией (selective orthogonalization) 437
полной переортогонализацией (complete reorthogonalization) 436
— s-шаговый (s-step) 440
— сопряженные градиенты (conjugate gradients) 439
— степенной метод (power method) 431
подпространство Крылова (Krylov subspace) 426
Хаусхолдера (Hausholder) 377
Умножение блочных матриц (block matrix multiplication) 39
матриц по Штрассену (Strassen multiplication) 43
блочная версия (block version) 19
матрицы на вектор (matrix - vector) 20
матрицу (matrix-matrix) 17, 23
число (scalar matrix multiplication) 39
Уравнение Сильвестра (Sylvester equation) 347
Уравновешивание строчностолбцевое (rowcolumn 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 eigenproblem) 354
Хессенбергова форма и итерация Арнольди (Arnoldi process and Hessenberg form) 448
преобразования Хаусхолдера (Hausholder 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 — по Шкеелю (Skeel condition number) 85 - с плавающей точкой (floating point number) 65
Чистка (sweep) 402
Чувствительность. См. Теория возмущения Чувствительность линейного уравнения (linear equation sensitivity) 83-85
Ширина ленты (bandwidth) 30
— верхняя (upper bandwidth) 30
— нижняя (liwer bandwidth) 30
Штрассена алгоритм (Strassen algorithm) 42
Эквивалентность норм (equivalence of norms) 63
Эффективность (effeciency) 247
Ядро (нуль-пространство) матрицы (null-space) 57
пересечение (intersection) 519
A-норма (A-norm) 526
А-сопряженное направление спуска (A conjugate 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
Ы)Мт-разложение (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 defficient 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
Оглавление
Предисловие редактора перевода 5
Предисловие к первому изданию 7
Предисловие ко второму изданию 11
Глава 1. Умножение матриц 16
Основные алгоритмы и обозначения 16
Учет структуры матриц 29
Блочные матрицы и алгоритмы 36
Некоторые аспекты векторно-конвейерных вычислений 45
Глава 2. Матричный анализ 56
Основные сведения из линейной алгебры 56
Векторные нормы 59
Матричные нормы 61
Матричные вычисления с конечной точностью 65
Ортогональность и сингулярное разложение 73
Проекции и CS-разложение 77
Чувствительность квадратных систем к возмущениям 80
Глава 3. Линейные системы общего вида 87
Треугольные системы 87
LU-разложение 92
Анализ ошибок округления в методе исключенияГаусса 102
Выбор ведущего элемента 106
Уточнение и оценивание точности 119
Глава 4. Линейные системы специального вида 127
Разложения типа LDMT и LDLT 127
Положительно определенные системы 132
Ленточные системы 141
Симметричные неопределенные системы 150
Блочные трехдиагональные системы 159
Системы Вандермонда 166
Тёплицевы системы 171
Глава 5. Ортогонализация и метод наименьших квадратов 181
Матрицы Хаусхолдера и Гивенса 181
QR-разложение 195
Задача наименьших квадратов: случай полного ранга205
Другие ортогональные разложения215
Задача LS неполного ранга221
Взвешивание и итерационное уточнение230
Квадратные и недоопределенные системы234
548 Оглавление
Глава 6. Параллельные матричные вычисления238
Операция gaxpy на распределенной памяти238
Операция gaxpy на общей памяти252
Параллельное умножение матриц262
Кольцевые процедуры разложения273
Сеточные процедуры разложения281
Методы разложения на общей памяти290
Глава 7. Несимметричная проблема собственных значений299
Свойства и разложения300
Теория возмущения307
Степенные итерации316
Хессенбергова форма и вещественная форма Шура .. .324
Практический QR-алгоритм334
Методы вычисления инвариантных подпространств343
QZ-метод для Ах = ХВх353
Глава 8. Симметричная проблема собственных значений368
Математические основы368
Симметричный QR-алгоритм376
Вычисление SVD383
Некоторые специальные методы392
Методы Якоби399
Метод «разделяй и властвуй»412
Более общие проблемы собственных значений418
Глава 9. Методы Ланцоша426
Выводы свойства сходимости426
Практические процедуры Ланцоша433
Приложения и обобщения442
Глава 10. Итерационные методы для линейных систем452
Стандартные итерации452
Метод сопряженных градиентов461
Сопряженные градиенты с предобусловливанием471
Глава И. Функции от матриц482
Спектральные методы482
Аппроксимационные методы488
Матричная экспонента495
Глава 12. Специальные разделы501
Задача наименьших квадратов с ограничениями501
Выбор подмножества при помощи SVD509
Общая задача наименьших квадратов514
Сравнение подпространств при помощи SVD518
Модифицированные задачи на собственные значения523
Модификация QR-разложения528
Предметный указатель536
Научное издание
Джин X. Голуб, Чарльз Ф. Ван Лоун
МАТРИЧНЫЕ ВЫЧИСЛЕНИЯ
Заведующий редакцией академик В.И. Арнольд
Зам. зав. редакцией А.С. Попов
Ведущий редактор А.А. Бряндинская
Редакторы Т.А. Денисова, Н.С. Полякова
Художник Ю.С. Урманчиев
Художественный редактор В.И. Шаповалов
Технический редактор М.А. Страшнова Корректор Н.С. Курлова
Лицензия ЛР № 010174 от 20.05.97 г.
Подписано к печати 05.01.99 г. Формат 70 х 100V16- Бумага офсетная. Печать офсетная. Гарнитура тайме. Объем 17,2 5 бум. л. Усл. печ. л. 44,85. Уч. -изд. л. 42,77. Изд. № 1/8085. Тираж 5000 экз. Зак. 63. С 002
ИЗДАТЕЛЬСТВО «МИР» Государственного Комитета Российской Федерации по печати
129820, Москва, И-110, 1-й Рижский пер., 2
Отпечатано в полном соответствии с качеством предоставленных диапозитивов в ОАО «Можайский полиграфический комбинат» 143200, г. Можайск, ул. Мира, 93
ДЖ. ГОЛУБ, Ч. ВАН ЛОУН
МАТРИЧНЫЕВЫЧИСЛЕНИЯ
ИЗДАТЕЛЬСТВО «МИР»
ДЖ. ГОЛУБ, Ч. ВАН ЛОУН
МАТРИЧНЫЕВЫЧИСЛЕНИЯ
Перевод с английскогоЮ. М. Нечепуренко,А. Ю. Романова,А. В. Собянина и Е. Е. Тыртышникова
под редакциейВ. В. Воеводина
МОСКВА «МИР»
1999
Matrix Computations
SECOND EDITION
Gene H. Golub
Department of Computer ScienceStanford University
Charles F. Van LoanDepartment of Computer ScienceCornell University
The John Hopkins University PressBaltimore and London
УДК 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 (англ.)ISBN 6-03-002406-9 (русск.)ISBN 0-8018-3739-1 (англ.)© 1989 The John Hopkins University Press All rights reserved
ISBN 6-03-002406-9 (русск.)
ISBN 0-8018-3739-1 (англ.)
ISBN 6-03-002406-9 (русск.)
ISBN 0-8018-3739-1 (англ.)
© перевод на русский язык, коллектив переводчиков, 1999