Кирьянов. Самоучитель MathCad 11. Кирьянов д в
Скачать 10.75 Mb.
|
Листинг 0.21. Создание матриц специального вида d e n t i t y (2) А = 0 0 2 0 0 0 3 -1.333 -0.333 / r r e f (о -0.417 geninv (A) АО о о 3 4 5 6 0 9.2.2. Слияние и разбиение матриц Из матрицы или вектора можно выделить либо подматрицу, либо вектор- столбец, либо отдельный элемент. И обратно, можно "склеить" несколько матриц в одну. Выделение части матрицы Часть матрицы вьщеляется одним из следующих способов для выделения одного элемента предназначен оператор нижнего индекса (подробнее об этом операторе рассказано е разд. "Доступ к элементам массива" гл. 4). Оператор вводится нажатием кнопки (Нижний Часть III. Численные методы индекс) со значком на панели Matrix (Матрица, либо нажатием клавиши (листинг 9.22, вторая строка сверху для выделения из матрицы столбца примените оператор выделения столбца нажатием кнопки Matrix с изображением угловых скобок Она панели Matrix, либо сочетанием клавиш оператором верхнего индекса; О чтобы выделить из матрицы строку, примените тот же оператор О к транспонированной матрице (листинг 9.22, снизу для выделения подматрицы используйте встроенную функцию jc), возвращающую часть матрицы А, находящуюся между строками i r , jr и столбцами i c , jc включительно (листинг 9.23). Примечание Выделить из матрицы один столбец или строку можно и с помощью функции Листинг 9.22. Доступ к отдельным элементам, столбцами строкам матрицы 3 4 5 6 . 1 = Листинг 9.23. Выделение подматрицы submatrix , 0 , 1 , 0 , 1 1 2 4 5 0 - 1 -3 -4 , 0 , 0, 0 , 1 ( 1 Те же операции применимы к и Следует помнить только, что размер их составляет И но (листинг 9.24). Глава 9. Матричные вычисления Листинг 9.24. Выделение частей из векторов и о, 0 , 1 , 0 , Слияние матриц Для того чтобы составить из двух или более матриц в предусмотрены две матричные функции (листинг 9.25): — матрица, сформированная слиянием матриц- аргументов слева направо — матрица, сформированная слиянием матриц- аргументов сверху вниз векторы или матрицы соответствующего размера. Листинг 9.25. Примеры слияния матриц ( А , В) = augment (А, В 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 4 5 6 0 0 0 г А. В 0 0 0 0 0 9.2.3. Вывод размера матриц Для получения сведений о характеристиках матриц или векторов предусмотрены следующие встроенные функции (листинг 9.26): rows (A) число строк Часть III. Численные методы О cols (A) — число столбцов length (v) — число элементов вектора last(v) — индекс последнего элемента вектора — матрица или вектор — вектор Примечание bЧисло элементов вектора и индекс его последнего элемента совпадают, если индексы нумеруются ст. е. системная константа O R I G I N равна 1 (см. гл. Листинг 9.26. Размер матриц и векторов А 2 fl 3 4 , 3 ) rows А) =3 cols {A) = 2 length 3 last = 2 v := 2 rows ( =3 ( v) = 1 rows (w) cols {w} = 3 9.2.4. Сортировка матриц Часто бывает нужно переставить элементы матрицы или вектора, расположив их в определенной строке или столбце в порядке возрастания или убывания. Для этого имеются несколько встроенных функций, которые позволяют гибко управлять сортировкой матриц sort(v) — сортировка элементов вектора в порядке возрастания листинг сортировка строк матрицы выстраиванием элементов го столбца в порядке возрастания (листинг 9.28); • rsort(A,i} — сортировка столбцов матрицы выстраиванием элементов строки в порядке возрастания (листинг 9.29); (v) — перестановка элементов вектора в обратном порядке (листинг 9.27); • v вектор; • А — матрица — индекс строки или столбца Глава 9. Матричные вычисления 233 Примечание Если элементы матриц или векторов комплексные, то сортировка ведется по действительной части, а мнимая часть игнорируется. Листинг 9.27. Сортировка векторов v Листинг Сортировка матриц по столбцу 9 3 О 8 1) = 2 8 1 9 csort (A, 0) = 1 9 2 8 3 Листинг 9.29. Сортировка матриц по строке (матрица А из листинга 9.28) r s o r t ( A , 1 ) = 0 3 8 2 r s o r t (A, 2 ) = 1 9 3 О 8 9.2.5. Норма квадратной матрицы В линейной алгебре используются различные матричные нормы (norm), которые ставят в соответствие матрице некоторую скалярную числовую характеристику. Норма матрицы отражает порядок величины матричных элементов. В разных специфических задачах линейной алгебры применяются различные виды норм. Mathcad имеет четыре встроенные функции для расчета разных норм квадратных матриц (A) — норма в пространстве (А) — норма в пространстве L2; — евклидова норма (euclidean norm); • normi (A) — норма, или (infinity А — квадратная матрица 234 Часть III. Численные методы Примеры расчета различных норм двух матриц Аи в с различающимися на два порядка элементами приведены в листинге 9.30. В последней строке этого листинга пояснено определение евклидовой нормы, которое похоже на определение длины вектора. Совет В большинстве задач неважно, какую норму использовать. Как видно, в обычных случаях разные нормы дают примерно одинаковые значения, хорошо отражая порядок величины матричных элементов. Определение остальных норм заинтересованный читатель отыщет в справочниках по линейной алгебре или в справочной системе Mathcad (раздел Mathcad Листинг 9.30. Нормы матриц 6 — 5 - 7 — 5 .465 .477 100 200 300 400 norml (B) =600 (B) normi ( B) =700 547.723 1 +2 + 3 + 4 = 5.477 9.2.6. Число обусловленности квадратной матрицы Еще одной важной характеристикой матрицы является ее число обусловленности (condition number). Число обусловленности является мерой чувствительности системы линейных уравнений Ах ь, определяемой матрицей А, К погрешностям задания вектора правых частей уравнений. Чем больше число обусловленности, тем сильнее это воздействие и тем более неустойчив процесс нахождения решения. Число обусловленности связано с нормой матрицы и вычисляется по-разному для каждой из норм — число обусловленности в норме L1; cond2 (A) — число обусловленности в норме L2; conde(A) — число обусловленности в евклидовой норме — число обусловленности в • А — квадратная матрица Глава 9. Матричные вычисления Расчет чисел обусловленности для двух матриц показан в листинге. Обратите внимание, что первая из матриц является хорошо обусловленной, а вторая — плохо обусловленной (две ее строки определяют очень близкие системы уравнений, с точностью до множителя з. Вторая строка листинга дает формальное определение числа обусловленности как произведения норм исходной и обратной матриц. В других нормах определение точно такое же. Примечание Как нетрудно понять, матрицы Аи виз предыдущего листинга 9.30 обладают одинаковыми числами обусловленности, т. к И, следовательно, обе матрицы определяют одну и туже систему уравнений Листинг Числа обусловленности матриц cond2 : ) (A) • = = 1 5 ( A ) = 2 1 (A) ( A ) = 2 1 { 15 conde cond2 condi 6.01 J ( B ) = 5 . ( B ) = 7 . ( B ) 5 . ( B ) = 7 . 0 1 2 217 012 2 1 7 X X X X 1 0 3 1 0 3 9.2.7. Ранг матрицы Рангом (rank) матрицы называют наибольшее натуральное число к, для которого существует неравный нулю определитель порядка подмат- рицы, составленной из любого пересечения столбцов и к строк матри- цы. Для вычисления ранга в Mathcad предназначена функция rank. (А) — ранг матрицы; • А — матрица Листинг 9.32. Ранг матрицы 1 2 = | 2 6 J 4 236 Часть III. Численные методы rank = 2 9.3. Системы линейных алгебраических уравнений Центральным вопросом вычислительной линейной алгебры является решение систем линейных алгебраических уравнений (СЛАУ), те. систем уравнений вида • • (В матричной форме СЛАУ записывается в эквивалентном виде (где А — матрица коэффициентов СЛАУ размерности X — вектор неизвестных вектор правых частей уравнений. Примечание К системам линейных уравнений сводится множество, если не сказать большинство, задач вычислительной математики Один из таких примеров приведен в разд. "Разностные схемы для ОДУ" гл. СЛАУ имеет единственное решение, если матрица А является невырожден- или, по-другому, несингулярной те. ее определитель неравен нулю. С вычислительной точки зрения, решение СЛАУ не представляет трудностей, если матрица Ане очень велика. С большой матрицей проблем также не возникнет, если она не очень плохо обусловлена. В Mathcad СЛАУ можно решить как в более наглядной форме (1), таки в более удобной для записи форме (2). Для первого способа следует использовать вычислительный блок (см. гл. 8), а для второго — встроенную функцию lsolve. lsolve — решение системы линейных уравнений; • А — матрица коэффициентов системы — вектор правых частей. Применение функции lsolve показано в листинге 9.33. При этом матрица А может быть определена любым из способов (см. разд гл. 4), необязательно явно, как во всех примерах этого раздела. Встроенную функцию lsolve допускается применять и при символьном решении СЛАУ (листинг 9.34). Примечание Соответствующая матрице Аи вектору ь система уравнений выписана явно в листинге 9.35. Глава 9. Матричные вычисления 237 Листинг А:= 2 0 . 7 12 5 0 4 ЛЬ 3 . 1 Ь- 0 . 1 2 9 Листинг 9.34. Символьное решение СЛАУ (продолжение листинга 9.33) lsolve ( А, Ь 648648 648649 -.12 8 64864864864864865 .9148 В некоторых случаях, для большей наглядности представления СЛАУ, его можно решить точно также, как систему нелинейных уравнений (см. гл. Пример численного решения СЛАУ из предыдущих листингов показан в листинге 9.35. Не забывайте, что причисленном решении всем неизвестным требуется присвоить начальные значения (это сделано впервой строке листинга 9.35). Они могут быть произвольными, т. к. решение СЛАУ сне- вырожденной матрицей единственно. С Примечание При решении СЛАУ с помощью функции Find Mathcad автоматически выбирает линейный численный алгоритм, в чем можно убедиться, вызывая на имени контекстное меню Листинг 9.3S. Решение СЛАУ с помощью вычислительного блока уху З х + +• 4z 3 . 1 ' - 0 . 1 8 6 ( х , у , z) = -0.12 9 0.915 Часть III. Численные методы. Собственные векторы и собственные значения матриц Вторая по частоте применения задача вычислительной линейной алгебры это задача поиска собственных векторов хи собственных значений Я матрицы Ат. е. решения матричного уравнения Такое уравнение имеет решения в виде собственных значений и соответствующих им собственных векторов . .. Для решения таких задач на собственные векторы и собственные значения в Mathcad встроено несколько функций, реализующих довольно сложные вычислительные алгоритмы — вычисляет вектор, элементами которого являются собственные значения матрицы А eigenvecs (A) — вычисляет матрицу, содержащую нормированные собственные векторы, соответствующие собственным значениям матрицы п-й столбец вычисляемой матрицы соответствует собственному вектору п-го собственного значения, вычисляемого eigenvals; — вычисляет собственный вектор для матрицы Аи заданного собственного значения А квадратная матрица. Применение этих функций иллюстрирует листинг 9.36. Проверка правильности нахождения собственных векторов и собственных значений приведена в листинге 9.37. Причем проверка правильности выражения проведена дважды — сначала на числовых значениях хи а потом путем перемножения соответствующих матричных компонентов. Листинг 9.36. Поиск собственных векторов и собственных значений АО А 3.024 13.037 -0.27605 0.3989 0.26171 -0.45121 0.90738 .84865 .13242 Глава 9. Матричные вычисления i g e n v e c (A, 0.938) = e i g e n v e c ( А , ) = - 0 . 6 8 9 3 6 - 0 . 2 6 1 7 1 0.6755 - 0 . 4 5 1 2 1 0 . 8 4 8 6 Листинг 9.37. Проверка правильности нахождения собственных векторов собственных значений (продолжение листинга 9.36) 2 0 . 7 12 5 3 0 4 0.68936 0.26171 -0.6755 0 . 6 4 7 0 . 2 4 6 - 0 . 6 3 4 0.938 0.26171 -0.6755 (A) 0.647 0.245 0.647 0.246 -0.634 ( { о Помимо рассмотренной проблемы поиска собственных векторов и значений, иногда рассматривают более общую задачу, называемую задачей на обобщенные собственные значения В ее формулировке помимо матрицы А присутствует еще одна квадратная матрица в. Для задачи на обобщенные собственные значения имеются еще две встроенные функции, действие которых аналогично рассмотренным (листинги 9.38 и 9.39): genvals(A,B) — вычисляет вектор v собственных значений, каждый из которых удовлетворяет задаче на обобщенные собственные значения genvecs(A,B} вычисляет матрицу, содержащую нормированные собственные векторы, соответствующие собственным значениям в векторе v, который вычисляется с помощью В этой матрицей столбец является собственным вектором х, удовлетворяющим задаче на обобщенные собственные значения в — квадратные матрицы Часть III. Численные методы Листинг 9.38. Поиск обобщенных собственных и собственных А : = 2 0 . 7 12 О В 3 4 5 6 7 8 9 g e n v a l s (A, = g e n v e c s А, В) = 0.5 - 0 . 6 7 4 - 0 . 3 0 6 7 - 0 . 7 0 5 4 4 0 . 1 5 5 7 1 - 0 . 2 3 7 1 5 - 0 . 9 3 8 9 8 Листинг 9.39. Проверка правильности нахождения собственных векторов и собственных значений (продолжение листинга 9.38) -1 - 3 - 4 . 4 0 6 . 0 4 1 . 6 7 6 ( A , В (А, В) В • genvecs (А, В 6 (А, В 0 0.555 genvals В) В • genvecs (А, В- 0 . 5 5 5 0 0.555 9.5. Матричные разложения Современная вычислительная линейная алгебра — бурно развивающаяся наука. Главная проблема, рассматриваемая ею, — это проблема решения систем линейных уравнений. В настоящее время разработано множество методов, упрощающих эту задачу, которые, в частности, зависят от структуры матрицы СЛАУ. Большинство методов основано на представлении матрицы в виде произведения других матриц специального вида или матричных разложениях. Как правило, после определенного разложения матрицы задача линейной алгебры существенно упрощается. В Mathcad имеется несколько Глава 9. Матричные вычисления 241 встроенных функций, реализующих алгоритмы наиболее популярных матричных разложений. 9,5.1. Разложение Разложением Холецкого симметричной матрицы А является представление вида • где L — треугольная матрица (те. матрица, по одну из сторон от диагонали которой находятся одни нули. Алгоритм Холецкого реализован ВО Встроенной cholesky. — разложение Холецкого; • А — квадратная, положительно-определенная матрица. Пример разложения Холецкого приведен в листинге 9.40. Обратите внимание, что в результате получается верхняя треугольная матрица (нули сверху от диагонали, а транспонированная матрица является нижней треугольной. В последней строке листинга приведена проверка правильности найденного разложения. Листинг 9.40. Разложение Холецкого \ 13 7 АО. разложение матрицы А называется разложение вида • R, где ортогональная матрица, a R — верхняя треугольная матрица qr(A) —QR-разложение; • А — вектор или матрица любого размера. Результатом действия функции qr(A) является матрица L, составленная из матриц и R, соответственно. Чтобы выделить сами матрицы QR- разложения, необходимо применить функцию выделения подматрицы matrix (листинг 9.41). Часть III. Численные методы Листинг .3 7 4 A : = 7 ( A ) 0 . 8 5 0 . 1 2 2 0.513 0 . 4 5 8 - 0 . 6 5 4 - 0 . 6 0 3 0 . 2 6 1 0 . 7 4 7 - 0 . 6 1 2 Q :- L , 0 , rows ( L) '0.85 0.122 0.513 15.297 9.283 4.38 0 -7.268 0 0 -1.646 cols (L) - = 0 . 4 5 8 - 0 . 6 5 4 - 0 . 6 0 3 0 . 2 6 1 0 . 7 4 7 R := L , 0 , rows ( L) - 1 + 1 R = 15.297 13 9.283 -7.268 0 7 4 9 -3 -3 9 , cols (L) - 1 4.38 9.171 -1.646 9.5.3. Ш-разложение LU-разложением матрицы А, ИЛИ треугольным разложением, называется матричное разложение вида р • A=L - где и — нижняя и верхняя треугольные матрицы, соответственно — квадратные матрицы одного порядка — матрицы; • А — квадратная матрица Примечание bФактически, треугольное разложение матрицы системы линейных уравнений производится при ее решении численным методом Гаусса. Функция подобно предыдущей функции выдает составную матрицу в (листинг 9.42). Выделить матрицы P , L , U несложно ПОМОЩИ ВСТроеННОЙ фуНКЦИИ submatrix. Глава 9. Матричные вычисления 243 Листинг 9.42. разложение 3 7 4 7 9 - 3 4 - 3 В : = l u ( А ) 0 1 0 0 . 5 3 8 0 0 1 0 . 3 0 8 - 0 . 9 8 5 Р := В , 0 , rows ВО (В) - РО О 0 0 1 В, 0, rows (В) - 1 , (В) + 1 (В) - 1 • 2 0 0 1 .538 .308 - 0 0 1 .985 0 0 1 L = ( cols { В) + 1 := В , 0 , rows (В) - 1 , 2 , cols - 1 U = 13 7 4 0 5.231 -5.154 РО. Сингулярное разложение Сингулярным разложением (singular value decomposition) матрицы А размера (причем является разложение вида где и v — ортогональные матрицы размером NXN И соответственно — диагональная матрица с сингулярными числами матрицы на диагонали svds(A) — вектор, состоящий из сингулярных чисел — сингулярное разложение; • А — действительная матрица Часть Численные методы Примеры поиска сингулярных чисел невырожденной и сингулярной матрицы приведены в листингах 9.43 и 9.44, соответственно. Проверка правильности сингулярного разложения приведена в листинге 9.45. Вычисленные сингулярные числа находятся на главной диагонали средней матрицы (ее остальные элементы, по определению, равны нулю. Сравнивая матрицы из листингов 9.44 и 9.45, Вы без труда разберетесь, каким образом следует выделять искомые матрицы сингулярного разложения из результата, поставляемого функцией Листинг 9.43. Сингулярные числа и собственные значения невырожденной матрицы А:= 13 |