Матрицы — вещь важная, а потому было бы просто непростительно отводить на них всего одну статью из нашего цикла о работе в среде MathCAD. Узнав о том, как можно транспонировать матрицы, вычислять определители, обратные матрицы, а также перемножать и складывать их, сегодня мы с вами продолжим издевательства над этими важными в математике объектами. Думаю, что изложенные ниже сведения будут полезны и в практических вычислениях, производимых в среде MathCAD, ведь матрицы очень часто встречаются в реальных задачах.
Еще о вспомогательных функциях
В прошлый раз мы немного поговорили о специальных MathCAD’овских функциях, позволяющих разрезать матрицы на составные части или же склеивать их. Это не единственные из вспомогательных функций, действующих над матрицами, которые могут пригодиться в практике повседневной работы. Пришло время познакомиться с некоторыми другими функциями, которые также имеют неплохой шанс оказаться весьма и весьма полезными. Особую роль в матричном исчислении играют единичные матрицы. На всякий случай напомню, что единичной называется такая матрица, у которой все недиагональные элементы равны нулю, а элементы, расположенные на главной диагонали (от верхнего левого угла к нижнему правому), равны единице. Единичные матрицы могут иметь самые разные размеры. Чтобы пользователь не тратил свое время на вбивание нулей и единиц в строки и столбцы такой матрицы, в MathCAD’е имеется специальная функция Identity, создающая единичную матрицу заданного размера. У этой функции есть единственный аргумент, задающий размерность матрицы.
Еще она по своему действию довольно близкая к Identity функция называется Diag. Она создает не матрицы, а векторы, состоящие из диагональных элементов квадратных матриц (т.е. из тех элементов, которые стоят на ее главной диагонали). Стоит при этом отметить, что размер вектора, получаемого на выходе, автоматически определяется размером входной матрицы.
Для определения размера матриц можно использовать функции Rows и Cols. Каждая из них имеет один-единственный входной параметр, которым является сама матрица, а на выходе выдают значения числа строк и столбцов соответственно. Для определения размера вектора можно использовать функцию length, которая работает аналогично указанным для матриц функциям.
Интересной также является предоставляемая MathCAD’ом функция для сортировки элементов векторов. Называется она просто и незатейливо — Sort. В качестве входного параметра этой функции нужно передать вектор, сортировкой которого мы будем заниматься, и на выходе получим почти такой же вектор, только его элементы будут упорядочены по возрастанию. Для сортировки строк и столбцов матрицы можно воспользоваться соответственно функциями Rsort и Csort, которым нужно передать в качестве параметров саму матрицу и номер того столбца или строки, которые должны быть отсортированы. Правда, работают эти функции несколько загадочно, иногда сортируя не только нужный столбец (строку), но и все остальные (см. соответствующую иллюстрацию). Чтобы изменить порядок следования чисел в векторе или порядок строк в матрице на противоположный, нужно воспользоваться функцией Reverse, в качестве аргумента для которой нужно передать изменяемые матрицу или вектор.
Ранг и норма матрицы
Два фундаментальных понятия, играющих очень важную роль в линейной алгебре — это ранг и норма матрицы. MathCAD позволяет пользователю вычислять эти характеристики матриц без лишних усилий, и сейчас я расскажу, как именно это делается.
Минором матрицы порядка k называется определитель, вычисленный для матрицы, образованной из k столбцов и k строк данной матрицы. Главным минором называется минор, для которого номера выбранных столбцов совпадают с номерами выбранных строк. Понимаю, это определение звучит несколько громоздко, но я думаю, если вы прочитаете его внимательно еще раз, то все станет просто и понятно. Рангом матрицы называется наибольший порядок среди всех ее ненулевых миноров. Ранг матрицы характеризует число линейно независимых столбцов или строк матрицы, а потому в матричной алгебре эта характеристика используется весьма широко. Для вычисления ранга матрицы в MathCAD’е используется функция Rank, которой в качестве аргумента передается та самая матрица, ранг которой нужно вычислить.
Норма матрицы — понятие более расплывчатое, чем ранг. Для полного определения нормы матрицы используется система ограничений, которым должен подчиняться строящийся по определенным правилам функционал. Вы можете найти подробное определение нормы матрицы в любом учебнике по линейной алгебре. Мы же сейчас удовлетворимся знанием того, что норма матрицы — это некоторый аналог величины, который для векторов называют длиной (норма вектора как раз и есть его длина). Впрочем, в отличие от длины вектора, где все понятно и определенно, норма матрицы может вычисляться несколькими разными способами, и в зависимости от способа вычисления ее величина может быть различной. Всем функциям для вычисления нормы матрицы, о которых здесь идет речь, требуется в качестве аргумента передавать ту матрицу, для которой будет вестись вычисление нормы. Функция Norm1 определяет норму путем складывания модулей элементов для каждого из столбцов и выбором наибольшей из получившихся для столбцов сумм. Функция Normi работает аналогичным образом, только для вычисления сумм там используются не столбцы, а строки. Функция Norme вычисляет норму матрицы по тому же алгоритму, по какому вычисляется норма вектора: квадраты всех элементов матрицы суммируются, а затем из полученного числа извлекается корень.
Собственные вектора и собственные значения матриц
Собственным вектором x и собственным значением ? матрицы X называются такие вектор и число соответственно, которые удовлетворяют соотношению xX = ?x. Обычно матрица имеет несколько собственных векторов и соответствующих им собственных значений, а потому мы будем рассматривать именно этот случай. Конечно, в MathCAD’е не слишком сложно с помощью некоторых преобразований рассчитать необходимые числа и вектора самостоятельно, однако можно еще больше упростить себе жизнь, воспользовавшись встроенными в эту среду функциями.
Функция Eigenvecs принимает в качестве входного параметра некоторую матрицу, а возвращает другую, содержащую собственные вектора исходной. При интерпретации результатов работы этой функции необходимо помнить, что в MathCAD’е вектора записываются в виде столбцов, так что и в этой матрице каждый из столбцов является собственным вектором первоначальной матрицы. Другая функция, Eigenvals, также принимает на вход некоторую матрицу, однако выдает для нее уже не собственные вектора, а собственные значения. Записываются они также в виде столбика. В этом столбце они идут в том же порядке, что и столбцы в матрице, возвращаемые первой функцией. То есть i-му столбцу матрицы, получаемой на выходе функцией Eigenvecs, соответствует i-е собственное значение в векторе. Впрочем, проследить соответствие собственных векторов и собственных значений для матрицы можно и более наглядным образом. Для этого существует специальная функция Eigenvec (не путайте с Eigenvecs), которой на вход передаются матрица и одно из ее собственных значений, а она уже вычисляет соответствующий этому собственному значению собственный вектор.
Скалярное и векторное произведение векторов
Напоследок поговорим о вещах довольно простых, но очень распространенных в практике решения задач, а потому особенно важных. Сейчас мы рассмотрим, как с помощью MathCAD’а вычислять скалярное и векторное произведение векторов. Напомню, что скалярным произведением x.y называется число, равное x0y0 + x1y1 + x2y2 + … + xnyn, а вот с векторным все несколько сложнее. Оно определяется только для трехмерных векторов и вычисляется как определитель матрицы, составленной из базисных векторов (i, j и k) и элементов тех векторов, для которых вычисляется векторное произведение. Традиционно в математике векторное произведение обозначают c помощью крестика, который ставится между двумя перемножаемыми векторами.
Для вычисления скалярного и векторного произведения векторов обратимся снова к панели матричных вычислений, неоднократно выручавшей нас в наших упражнениях с MathCAD’ом. Скалярное произведение называется на ней Dot Product и обозначается как точка между двумя векторами, а векторное — Cross Product и обозначается крестиком, как я уже говорил выше. Чтобы перемножить два вектора, вы можете сначала обозначить их с помощью каких- либо символьных обозначений, а можете сразу записывать произведения между столбцами чисел.
Теперь, пожалуй, о матрицах самое основное и важное сказано. Как видите, в плане работы с векторами и матрицами MathCAD ничуть не менее мощный, чем во всем остальном. Поэтому использовать эту среду для матричных вычислений можно и нужно. Ну а как это делать, вы теперь уже знаете.
SF, spaceflyer@tut.by
Компьютерная газета. Статья была опубликована в номере 24 за 2008 год в рубрике soft
Изучение квадратичных форм закончено.
F1 |
F2 |
F3 |
а) Положительно опреде- |
б) Отрицательно опре- |
в) Неопределенная квадратич- |
ленная квадратичная форма |
деленная квадратичная |
ная форма – график в форме |
– график «дном вниз» |
форма – график «дном |
… (догадайтесь сами, как на- |
вверх» |
зывается фигура) |
Рис. 2.35. Графические образы различных квадратичных форм.
Как известно, рангом прямоугольной матрицы называется наибольший порядок неравного нулю определителя (из всех возможных вырезок определителей из данной матрицы. Для вычисления ранга используется функция rank (идентификатор_матрицы)
Рассмотрите пример вычисления ранга матриц:
0 |
0 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
0 |
|||
R1 := |
||||||||||||
R := |
0 |
0 |
1 |
0 |
0 , |
0 |
1 |
0 |
0 |
0 |
||
0 |
2 |
0 |
3 |
0 |
. |
§7. Некоторые применения матриц и векторов
7.1. Нахождение всех корней уравнения n-й степени
Согласно Основной теореме алгебры (Нильс Хенрик Абель) уравнение n-й степени имеет n корней. Среди них могут быть действительные и комплексные. Каждый комплексный корень обязательно имеет свою пару – сопряженный корень, у которого такая же вещественная часть, а мнимая имеет противоположный знак. Для нахождения всех корней используется встроенная Mathcad-функция polyroots( ) (переводится «много корней»). Научимся пользоваться этой очень полезной функцией.
ДАНО: уравнение n—й степени:
a0 y n + a1 y n−1 + a2 yn−2 +… + an−1 y + an = 0 , (n+1) его коэффициентов ai, i = 0, …, n–1 заданы.
ПОЛУЧИТЬ: все корни yi, i = 1, …, n, удовлетворяющие заданному уравнению.
54
Способ решения: Сформируем (n+1)-мерный вектор, элементами которого являются коэффициенты уравнения. Важное замечание: если в уравнении отсутствуют некоторые промежуточные степени переменной, в соответствующий слот вектора следует вставить 0. Порядок ввода коэффициентов – с «конца» уравнения к началу, так что нулевому элементу вектора нужно присвоить значение an, а n-му – значение a0. Идентификатор этого вектора и будет аргументом функции polyroots( ).
Пример показан на рис. 2.36. Выполните его по шагам и обязательно сделайте про-
верку. Вы увидите небольшие вычислительные неточности (это и не удивительно: выразить корни через коэффициенты уравнения можно точно только в том случае, когда его порядок
– не выше четвертого: этот результат получил юный гений Эварист Галуа в 21 год, за сутки до дуэли, на которой он был убит).
Уравнение, корни которого нужно найти:
7 y7 + 3 y4 − 5y + 17 0
Шаг 1. Формируем 8-ми |
Жирный знак равенства |
|||||||||||||||||||
мерный вектор D |
17 |
исключает вычисления |
||||||||||||||||||
Элементы вектора, соот- |
−5 |
<Ctrl>+<=> |
||||||||||||||||||
ветствующие несущест- |
||||||||||||||||||||
вующим в уравнении сте- |
0 |
|||||||||||||||||||
пеням переменной y, счита- |
0 |
|||||||||||||||||||
ем равными нулю |
D := |
3 |
||||||||||||||||||
Шаг 2. Используем функ- |
||||||||||||||||||||
0 |
−1.231 |
|||||||||||||||||||
цию polyroots(…), которая |
||||||||||||||||||||
возвращает вектор корней |
0 |
|||||||||||||||||||
уравнения: |
−0.688 − 0.895i |
|||||||||||||||||||
z := polyroots(D) |
7 |
−0.688 + 0.895i |
||||||||||||||||||
Шаг 3. Выводим значения корней на экран: |
z = |
0.348 + 1.11i |
||||||||||||||||||
Шаг 4. Делаем проверку. Для этого: |
0.348 − 1.11i |
|||||||||||||||||||
0.955 + 0.48i |
||||||||||||||||||||
а) Вводим счетчик индексов корней j := 0 .. 6 |
||||||||||||||||||||
0.955 − 0.48i |
||||||||||||||||||||
б) Рассчитываем, чему |
равна |
левая |
часть |
|||||||||||||||||
− 6 |
||||||||||||||||||||
уравнения при подстановке |
каждого |
j-го |
||||||||||||||||||
4.742× 10 |
||||||||||||||||||||
корня (должна быть равна правой части, т.е. |
||||||||||||||||||||
− 9 |
− 8 |
|||||||||||||||||||
нулю) |
||||||||||||||||||||
7 |
4 |
9.646× 10 |
+ 8.726i× 10 |
|||||||||||||||||
verifyj := 7 (zj) |
+ 3 (zj) |
− 5zj + 17 |
||||||||||||||||||
1.899× 10− 8 + 2.191i× 10− 8 |
||||||||||||||||||||
−1.736× 10− |
8 + 5.121i× 10− 9 |
|||||||||||||||||||
в) Выводим на экран вектор значений левой |
verify = |
|||||||||||||||||||
части уравнения, в которое подставлены най- |
6.856× 10− 6 − 1.1i× 10− 6 |
|||||||||||||||||||
денные корни: |
||||||||||||||||||||
− 6 |
− 7 |
|||||||||||||||||||
Имеют место незначительные |
4.549× 10 |
− 1.159i× 10 |
||||||||||||||||||
вычислительные погрешности |
− 8 |
− 8 |
||||||||||||||||||
−4.996× 10 |
+ 6.16i |
× 10 |
||||||||||||||||||
Рис. 2.36. Использование функции polyroots(…) для нахождения корней уравнения.
55
7.2. Применение матриц и векторов для решения систем линейных уравнений
7.2.1. Теоретические сведения. Традиционно решение систем линейных уравнений рассматривается в терминах матричной алгебры. Пусть задана система из n линейных уравнений. Коэффициенты этих уравнений – не обязательно постоянные, они могут зависеть от какоголибо внешнего параметра (на практике чаще всего – от времени), но не должны зависеть от искомых переменных (в этом случае уравнения были бы нелинейными).
Система уравнений, записанная в обычной форме, имеет вид: a11(t) x1+a12 (t) x2+L+ a1n (t) xn = b1(t)
a21(t) x1+a22 (t) x2 +L+ a2n (t) xn = b2 (t)
LLLLLLLLLLLLLLL
an1(t) x1+an2 (t) x2 +L+ ann (t) xn = bn (t)
Здесь t – некоторый параметр, от которого зависят коэффициенты уравнения.
Сформируем квадратную n×n матрицу из коэффициентов левой части и n-мерный вектор из значений bi(t), i = 1, … , n, входящих в правую часть. Эти матрицы будут иметь вид:
a11(t) |
a12 (t) L a1n (t) |
b1(t) |
||
A(t) = |
a21(t) a22 (t) L a2n (t) |
, B(t) = |
b2 (t) |
|
L |
L L L |
L |
||
an1(t) an2 (t) L ann (t) |
bn (t) |
Согласно правилам матричной алгебры решение системы линейных уравнений для случая, когда правая часть – не нулевой вектор, возможно тогда и только тогда, когда определитель матрицы не равен 0 ни для одного значения параметра t из диапазона, на котором он задан. В этом случае решение будет n—мерным вектором, зависящим от параметра t:
x(t) =[A(t)]−1 B(t). Как видим, для получения решения используются следующие матричные операции:
Обращение квадратной матрицы;
Умножение матрицы на вектор;
Диагностика отличия определителя матрицы от 0 (для установления существования решения).
7.2.2.Пример. Найдем значения двумерного вектора x(t) при изменении параметра t в диапазоне 0,…,5 с шагом 0.01. Пусть каждый элемент матрицы A(t) – экспонента с заданным показателем степени, а каж-
56
дый элемент вектора B(t) – синусоидальная функция. Решение показано на рис. 2.37, 2.38. Воспроизведите его. Попутно Вы научитесь делать массовые операции над всеми элементами матриц (рис. 2.37).
7.2.2.1. Векторизация. Термин «векторизация» означает применение
одной и той же функции тотально ко всем элементам матрицы. Этот прием часто экономит время и при вводе, и при вычислениях за счет параллельных действий над всеми элементами матрицы сразу. Освоим технику векторизации на примере, показанном на рис. 2.37, 2.38 Для того чтобы над всеми элементами матрицы выполнялась одна и та же операция, нужно:
1.Ввести матрицу с постоянными элементами, которые будут использоваться как коэффициенты в формулах для операций с матрицей;
2.Ввести идентификатор матрицы с указанием ее зависимости от параметра (можно – тот же, что и для матрицы коэффициентов), присвоить ему значение функции, которую мы хотим применить ко всем элементам матрицы.
3.Результат охватить синим контуром и нажать клавиши <Ctrl>+<(минус)>. Над функцией появится горизонтальная стрелка – символ векторизации.
Изучение операции векторизации закончено.
Шаг 1. Задаем матрицу и вектор коэффициентов. |
A := |
1 |
1.5 |
B := |
5 |
||||
2 4 |
7 |
||||||||
Шаг 2. Проводим векторизацию матрицы А. Каждый |
→ |
||||||||
Для осуществления |
|||||||||
элемент ее превратится в экспоненту. Показателем |
A(t) := (eA t) |
векторизации нажмите |
|||||||
будет соответствующий элемент матрицы А |
<Ctrl>+<(минус)> |
||||||||
Шаг 3. Для контроля проведем вычисление экспонент |
1 t |
e |
1.5 t |
||||||
непосредственно (должен быть получен тот же |
A1(t) := |
e |
|||||||
2 t |
4 t |
||||||||
результат, что и при векторизации): |
e |
e |
|||||||
Шаг 4. Проводим векторизацию вектора В. Каждый |
→ |
||||||||
его элемент должен превратиться в синус с |
|||||||||
B(t) := sin(B t) |
|||||||||
сомножителем-элементом вектора В: |
|||||||||
Шаг 5. Для контроля вводим функцию синуса |
B1(t) := |
sin(5 t) |
|||||||
непосредственно: |
sin(7 t) |
||||||||
Шаг 6. Проверяем, действительно |
A(t) = |
1.649 |
2.117 |
A1(t) = |
1.649 |
2.117 |
|||
ли выполнилась векторизация, |
2.718 |
7.389 |
2.718 |
7.389 |
|||||
например, при t := 0.5 |
|||||||||
0.598 |
0.598 |
||||||||
B(t) = |
B1(t) = |
||||||||
−0.351 |
−0.351 |
||||||||
Рис. 2.37. Векторизация матриц и векторов.
57
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Функции для работы с векторами и матрицами в маткад
Mathcad содержит функции для обычных в линейной алгебре действий с массивами. Эти функции предназначены для использования с векторами и матрицами. Если явно не указано, что функция определена для векторного или матричного аргумента, не следует в ней использовать массивы как аргумент. Обратите внимание, что операторы, которые ожидают в качестве аргумента вектор, всегда ожидают вектор-столбец, а не вектор-строку. Чтобы заменить вектор-строку на вектор-столбец, используйте оператор транспонирования [Ctrl]1.
Если Вы используете Mathcad PLUS, Вы будете также иметь несколько дополнительных функций, определенных для векторов. Эти функции скорее предназначены для анализа данных, чем для действий с матрицами. Они обсуждены в Главе “Встроенные функции”.
Следующие таблицы перечисляют векторные и матричные функции Mathcad. В этих таблицах
- A и B — массивы (векторы или матрицы).
- v — вектор.
- M и N — квадратные матрицы.
- z — скалярное выражение.
- Имена, начинающиеся с букв m, n, i или j — целые числа.
Размеры и диапазон значений массива
В Mathcad есть несколько функций, которые возвращают информацию относительно размеров массива и диапазона его элементов. Рисунок 10 показывает, как эти функции используются.
Имя функции | Возвращается. |
rows(A) | Число строк в массиве A. Если А — скаляр, возвращается 0. |
cols(A) | Число столбцов в массиве A. Если A скаляр, возвращается 0. |
length(v) | Число элементов в векторе v. |
last(v) | Индекс последнего элемента в векторе v. |
max(A) | Самый большой элемент в массиве A. Если A имеет комплексные элементы, возвращает наибольшую вещественную часть плюс i, умноженную на наибольшую мнимую часть. |
min(A) | Самый маленький элемент в массиве A. Если A имеет комплексные элементы, возвращает наименьшую вещественную часть плюс i, умноженную на наименьшую мнимую часть. |
Рисунок 10: Векторные и матричные функции для нахождения размера массива и получения информации относительно диапазона элементов.
Специальные типы матриц
Можно использовать следующие функции, чтобы произвести от массива или скаляра матрицу специального типа или формы. Функции rref, diag и geninv доступны только в Mathcad PLUS.
Имя функции | Возвращается. |
identity(n) | n x n единичная матрица (матрица, все диагональные элементы которой равны 1, а все остальные элементы равны 0). |
Re(A) | Массив, состоящий из элементов, которые являются вещественными частями элементов A. |
Im(A) | Массив, состоящий из элементов, которые являются мнимыми частями элементов A. |
Е diag(v) | Диагональная матрица, содержащая на диагонали элементы v. |
Е geninv(A) | Левая обратная к A матрица L такая, что LA = I, где I — единичная матрица, имеющая то же самое число столбцов, что и A. Матрица А — m x n вещественная матрица, где m>=n. |
Е rref(A) | Ступенчатая форма матрицы A. |
Рисунок 11: Функции для преобразования массивов. Обратите внимание, что функции diag и rref являются доступными только в Mathcad PLUS.
Специальные характеристики матрицы
Можно использовать функции из следующей таблицы, чтобы найти след, ранг, нормы и числа обусловленности матрицы. Кроме tr, все эти функции доступны только в Mathcad PLUS.
Имя функции | Возвращается. |
tr(M) | Сумма диагональных элементов, называемая следом M. |
Е rank(A) | Ранг вещественной матрицы A. |
Е norm1(M) | L1 норма матрицы M. |
Е norm2(M) | L2 норма матрицы M. |
Е norme(M) | Евклидова норма матрицы M. |
Е normi(M) | Равномерная норма матрицы M. |
Е cond1(M) | Число обусловленности матрицы M, основанное на L1 норме. |
Е cond2(M) | Число обусловленности матрицы M, основанное на L2 норме. |
Е conde(M) | Число обусловленности матрицы M, основанное на евклидовой норме. |
Е condi (M) | Число обусловленности матрицы M, основанное на равномерной норме. |
Формирование новых матриц из существующих
В Mathcad есть две функции для объединения матриц вместе — бок о бок, или одна над другой. В Mathcad также есть функция для извлечения подматрицы. Рисунки 12 и 13 показывают некоторые примеры.
Имя функции | Возвращается. |
augment (A, B) | Массив, сформированный расположением A и B бок о бок. Массивы A и B должны иметь одинаковое число строк. |
stack (A, B) | Массив, сформированный расположением A над B. Массивы A и B должны иметь одинаковое число столбцов. |
submatrix (A, ir, jr, ic, jc) | Субматрица, состоящая из всех элементов, содержащихся в строках с ir по jc и столбцах с ic по jc. Чтобы поддерживать порядок строк и-или столбцов, удостоверьтесь, что ir |
Рисунок 12: Объединение матриц функциями stack и augment.
Рисунок 13: Извлечение субматрицы из матрицы при помощи функции submatrix.
Собственные значения и собственные векторы
В Mathcad существуют функции eigenval и eigenvec для нахождения собственных значений и собственных векторов матрицы. В Mathcad PLUS также есть функция eigenvecs для получения всех собственных векторов сразу. Если Вы используете Mathcad PLUS, Вы будете также иметь доступ к genvals и genvecs для нахождения обобщенных собственных значений и собственных векторов. Рисунок 14 показывает, как некоторые из этих функций используются.
Возвращается.
Имя функции | |
eigenvals (M) | Вектор, содержащий собственные значения матрицы M. |
eigenvec (M, z) | Матрица, содержащая нормированный собственный вектор, соответствующий собственному значению z квадратной матрицы M. |
Е eigenvecs (M) | Матрица, содержащая нормированные собственные векторы, соответствующие собственным значениям квадратной матрицы M. n-ный столбец возвращенной матрицы — собственный вектор, соответствующий n-ному собственному значению, возвращенному eigenvals. |
Е genvals (M,N) | Вектор v собственных значений, каждое из которых удовлетворяет обобщенной задаче о собственных значениях . Матрицы M и N — вещественнозначные квадратные матрицы одного размера. Вектор x — соответствующий собственный вектор. |
Е genvecs (M,N) | Матрица, содержащая нормализованные собственные векторы, соответствующие собственным значениям в v, векторе, возвращенном genvals. n-ный столбец этой матрицы — собственный вектор x, удовлетворяющий обобщенной задаче о собственных значениях . Матрицы M и N — вещественнозначные квадратные матрицы одного размера. |
Рисунок 14: Нахождение собственных значений и собственных векторов.
Рисунок 15: Использование eigenvecs для одновременного нахождения всех собственных векторов.
Если Вы используете Mathcad PLUS, Вы будете иметь доступ к некоторым дополнительным функциям для выполнения специальных разложений матрицы: QR, LU, Холесского, и по сингулярным базисам. Некоторые из этих функций возвращают две или три матрицы, соединенные вместе в одну большую матрицу. Используйте submatrix, чтобы извлечь эти две или три меньшие матрицы. Рисунок 16 показывает пример.
Имя функции | Возвращается. |
Е cholesky(M) | Нижняя треугольная матрица L такая, что LL T =M. Матрица M должна быть симметричной положительно определенной. Симметрия означает, что M=M T , положительная определённость — что x T Mx>0 для любого вектора x 0. |
Е qr(A) | Матрица, чьи первые n столбцов содержат ортогональную матрицу Q, а последующие столбцы содержат верхнюю треугольную матрицу R. Матрицы Q и R удовлетворяют равенству A=QR. Матрица A должна быть вещественной. |
Е lu(M) | Матрица, которая содержит три квадратные матрицы P, L и U, расположенные последовательно в указанном порядке и имеющие с M одинаковый размер. L и U являются соответственно нижней и верхней треугольными матрицами. Эти три матрицы удовлетворяют равенству PM=LU . |
Е svd(A) | Матрица, содержащая две расположенные друг над другом матрицы U и V. Сверху находится U — размера m x n, снизу V — размера n x n. Матрицы U и V удовлетворяют равенству A=Udiag(s)V T , где s — вектор, возвращенный svds(A). A должна быть вещественнозначной матрицей размера m x n, где m>=n. |
Е svds(A) | Вектор, содержащий сингулярные значения вещественнозначной матрицы размера m x n, где m>=n. |
Рисунок 16: Использование функции submatrix для извлечения результата из функции rq. Используйте submatrix, чтобы извлечь подобным образом результаты из функций lu и svd. Обратите внимание, что эти функции доступны только в Mathcad PLUS.
Решение линейной системы уравнений
Если Вы используете Mathcad PLUS, Вы сможете использовать функцию lsolve для решения линейной системы уравнений. Рисунок 17 показывает пример. Обратите внимание, что M не может быть ни вырожденной, ни почти вырожденной для использования с lsolve. Матрица называется вырожденной, если её детерминант равен нулю. Матрица почти вырождена, если у неё большое число обусловленности. Можно использовать одну из функций, описанных на странице 204, чтобы найти число обусловленности матрицы.
Возвращается.
Имя функции | |
Е lsolve (M, v) | Вектор решения x такой, что Mx=v. |
Если Вы не используете Mathcad PLUS, Вы всё-таки можете решать систему линейных уравнений, используя обращение матрицы, как показано в нижнем правом углу Рисунка 9.
Рисунок 17: Использование lsolve для решения системы из двух уравнений с двумя неизвестными.
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Векторы и матрицы в MathCAD
Нижняя граница индексации в MathCAD определена системной переменной ORIGIN. По умолчанию ORIGIN=0. Значение переменной можно переопределить. Например, ORIGIN=1.
Векторы и матрицы в MathCAD можно задавать путем ввода их элементов. Для ввода индекса элемента массива используется символ – [.
Поэлементный ввод массива Х
Вводимые символы | Отображаемые символы |
X [ 1 Shift+: 5 | X1:=5 |
X [ 2 Shift+: 8 | X2:= 8 |
X [ 3 Shift+: 10 | X3:= 10 |
Поэлементный ввод матрицы А
Вводимые символы | Отображаемые символы |
A [ 1,1 Shift+: 0.1 | A11 := 0.1 |
A [ 1,2 Shift+: -2.5 | A12 := -2.5 |
A [ 2,1 Shift+: -1.0 | A21 := -1.0 |
A [ 2,2 Shift+: 5.2 | A22 := 5.2 |
Для операций с матрицами и векторами предназначена панель Matrix, которая открывается щелчком по кнопке в панели математических инструментов.
ПанельMatrix содержит следующие кнопки:
– определение размеров матрицы;
– ввод элемента массива ;
– вычисление матрицы, обратной к данной ;
– вычисление определителя матрицы ;
– оператор векторизации (поэлементные операции с векторами и матрицами) ;
– определение столбца матрицы ;
– транспонирование матрицы ;
– определение ранжированной переменной;
– вычисление скалярного произведения векторов;
– вычисление векторного произведения векторов;
– вычисление суммы компонент вектора.
– визуализация цифровой информации.
Действия, которые необходимо выполнить, чтобы ввести матрицу в рабочий документ при помощи кнопки панели Matrix:
1. Ввести с клавиатуры имя матрицы и знак присваивания;
2. Щелчком по кнопке открыть окно диалога:
3. Определить число строк (Rows) и число столбцов (Columns) будущей матрицы;
4. Закрыть окно диалога, щелкнув по кнопке OK;
5. Ввести элементы матрицы, установив курсор в поле ввода, которое появится справа от знака присваивания:
Функции определения матриц и операции с блоками матриц:
matrix(m,n,f) – создает и заполняет матрицу A=ij> размерности m на n, каждый элемент которой aij равен значению функции f(i,j);
diag(v) – создает диагональную матрицу, элементы главной диагонали которой хранятся в векторе v;
identity(n) – создает единичную матрицу порядка n;
augment(A,B) – из матриц А и В формируется третья матрица, первые столбцыкоторой содержат матрицу А, а последние — матрицу В (матрицы А и В должны иметь одинаковое число строк);
stack(A,B) – из матриц А и В формируется третья матрица, первые строкикоторой содержат матрицу А, а последние — матрицу В (матрицы А и В должны иметь одинаковое число столбцов);
submatrix(A,l,k,p,r) – формирует матрицу, которая является блоком матрицы А, расположенным в строках с l по k и в столбцах с p по r (l
Re(A) – возвращает матрицу (вектор) действительных частей матрицы (вектора) А с комплексными элементами;
Im(A) – возвращает матрицу (вектор) мнимых частей матрицы (вектора) А с комплексными элементами;
Функции вычисления различных числовых характеристик матриц:
last(v) – вычисление номера последнего элемента вектора v;
length(v) – вычисление количества элементов вектора v;
rows(A) – вычисление числа строк в матрице А;
cols(A) – вычисление числа столбцов в матрице А;
max(A) – вычисление наибольшего элемента в матрице (векторе) А;
min(A) – вычисление наименьшего элемента в матрице (векторе) А;
mean(A) – вычисление среднего значения матрицы (вектора) А;
tr(A) – вычисление следа (суммы диагональных элементов) квадратной матрицы А;
ranc(A) – вычисление ранга матрицы А;
Функции, реализующие численные алгоритмы:
rref(A) – приведение матрицы А к ступенчатому виду;
geninv(A) – вычисляет матрицу, левую обратную к матрице А, L∙A=E, где Е – единичная матрица размером n×n, L – прямоугольная матрица размером n×m, А – прямоугольная матрица размером m×n;
lsolve(A,b) – решение системы линейных алгебраических уравнений A∙x=b.
lu(A) – выполняет треугольное разложение матрицы А: A=С∙L∙U, где L и U – соответственно нижняя и верхняя треугольные матрицы, все четыре матрицы квадратные и одного порядка;
qr(A) – выполняет разложение матрицы А: A=Q∙R, где Q – ортогональная матрица, а R – верхняя треугольная матрицы;
cholesky(A) – выполняет разложение матрицы А по схеме Холецкого: А=L∙L T , где А — квадратная, симметричная, положительно определенная матрица, L – треугольная матрица;
sort(v) – сортировка элементов вектора v в порядке возрастания их значений;
reverse(v) – перестановка элементов вектора v в обратном порядке;
csort(A,n) – перестановка строк матрицы А таким образом, чтобы отсортированным оказался n-й столбец;
rsort(A,n) – перестановка столбцов матрицы А таким образом, чтобы отсортированной оказалась n-я строка.
ЗАДАЧА 1. Сформировать матрицу H из элементов матрицы D, исключив третий столбец и вторую строку.
ЗАДАЧА 2. Сформировать матрицу H следующим образом. Первая и последняя строки равны строкам матрицы D, остальные совпадают с матрицей C.
ЗАДАЧА 3. Сформировать матрицу таким образом, чтобы элементы на главной диагонали были равны 1, выше главной диагонали – 2, а ниже – 3.
ЗАДАЧА 4. Элементы матрицы формируются по формуле . Сформировать вектор из максимальных элементов столбцов матрицы А. Найти сумму элементов матрицы, расположенных в четных строках.
ЗАДАЧА 5. Выполнить действия над матрицами А, В, С:
ЗАДАЧА 6. Решить систему линейных уравнений при помощи правила Крамера:
Для решения поставленной задачи необходимо выполнить следующие действия:
1. Сформировать матрицу системы А и вектор правых частей b.
2. Вычислить главный определитель ∆.
3. Сформировать вспомогательные матрицы (удобно скопировать матрицу А несколько раз и последовательно заменять в ней столбцы на вектор b) для вычисления определителей ∆i;
4. Вычислить определители ∆i;
5. Найти решение системы по формуле xi=∆i/∆.
ЗАДАЧА 7. Решить систему линейных уравнений методом обратной матрицы.
1. Сформировать матрицу коэффициентов и вектор свободных членов системы.
2. Решить систему, представив вектор неизвестных как произведение матрицы, обратной к матрице системы и вектора свободных членов.
ЗАДАЧА 8. Решить систему линейных уравнений методом Гаусса.
Порядок решения задачи:
1. Сформировать матрицу коэффициентов и вектор свободных членов заданной системы.
2. Сформировать расширенную матрицу системы при помощи функции augment(A,b);
3. Используя функцию rref(A), привести расширенную матрицу к ступенчатому виду.
4. Получить решение системы, выделив последний столбец матрицы, полученной в предыдущем пункте.
5. Выполнить проверку Ax-B=0.
ЗАДАЧА 9. Решить систему при помощи функции lsolve:
Пример системы, которая не имеет решений:
Пример системы, которая имеет бесконечное множество решений
ЗАДАЧА 10. Решить систему при помощи решающего блока.
Решающий блок начинается с ключевого слова Given (Дано), которое необходимо ввести с клавиатуры.
Правее и ниже ключевого слова записываются уравнения системы.
Знак равенства в уравнениях вводится при помощи клавиш Ctrl+= или выбирается на панели инструментов Boolean.
Правее и ниже последнего уравнения системы вводится функция Find(x1,x2,…xn) (Найти), в скобках перечисляются имена переменных, значения которых нужно найти.
Численное решение системы можно получить, поставив знак равенства после функции Find(x1,x2,…xn).
Символьное решение получится, если после функции Find(x1,x2,…xn) указать знак стрелки, который находится в панели инструментов Symbolic (Ctrl+.).
Векторы и матрицы в MathСad
Вы уже наверняка не раз сталкивались с такими понятиями как векторы и матрицы. Вектор – это обыкновенный столбец с числами. Матрица представляет собой сборный блок с объектами. Именно на работе с этими элементами построен принцип функционирования программы Excel. В этом уроке мы расскажем о том, как работать с такими вычислениями в программе Маткад и акцентируем внимание на том, почему процесс работы в данном ПО куда проще и удобнее.
Мы уже рассказывали в своих уроках о том, что все наши векторы начинались с элемента с нулевым значением. Сейчас же мы поставим номером первого элемента цифру один, ведь так нам гораздо проще будет сориентироваться в учебном материале.
Данное значение можно внести прямо в рабочее поле.
Посмотрите на матрицы на рисунке ниже.
Как вы можете заметить, в них входят и числа, и функции. Помимо этого, сюда можно внести и текст. Чтобы вывести элемент матрицы, воспользуйтесь подстрочным индексом.
Матрицы, описанные на скрине повыше, относятся к квадратному типу. Тем не менее, пользователь может самостоятельно устанавливать их размерные рамки.
Примите во внимание, что первое число обозначает общую нумерацию строчки, а второе – номер столбика.
Для векторного столбца второй индекс можно удалить. Для строки же он является обязательным.
Нужные команды, для всевозможного выделения строчек или столбиков вы всегда сможете отыскать во вкладке «Математика».
Большинство операций для векторных и матричных конструкций вполне соответствуют работе со стандартными числами и функциями. Для того, чтобы отыскать обратную матрицу, потребуется действовать по аналогии с операциями деления. Пользователь может записать операторы, задав им наименования матриц и векторов. Например, это может выглядеть так:
Более подробно мы рассмотрим данный опционал немного погодя. Стоит отметить, что такая функция нуждается в девяти операциях умножения и в таком же количестве деления. Согласитесь, что расписывать все эти процессы достаточно скучно. К тому же, с большими матрицами такой подход нерациональный.
Методика применения векторов отличается значительным разнообразием. Чтобы разработать вектор или матрицу, понадобится открыть вкладку «Вставить матрицу». На экране появится сетка с изображением маленьких квадратиков.
Перемещаем указатель на эту сетку. Настраиваем курсор на нужные габариты матрицы. Кликаем дважды ЛКМ.
На экране появляется новая матрица.
Матрица может быть переименована, после того, как пользователь дважды кликнет по левой скобке.
Чтобы быстро вставить или удалить строчки да столбцы, можно вызвать контекстное меню «Операторы с векторамиматрицами» на одноименной вкладке.
Работа с матрицами
Эффекты от матриц или вектором гораздо проще сообразить, пользуясь специально разработанными символами. Обратите внимание на скрин ниже.
Оператор транспортировки вызывается посредством выполнения операции Математика –> Операторы –> Векторы и матрицы:
Кликаем по правой стороне матрицы и применяем оператор. Он подходит как для символьных, так и численных матриц.
Операции в векторах часто выполняются по одному элементу. В этой ситуации можно воспользоваться очень удобным оператором, который отвечает за разработку вектора. Чтобы перемножить два вектора, понадобится выполнить простой пример.
Теперь нам нужно выбрать нужные параметры и активировать векторизацию.
Вычисляем заданные параметры и смотрим на результат. Первый элемент приумножился на второй, и так далее.
Еще примеры таких опций.
Операции поэлементного типа могут применяться исключительно к массивам одинакового размера.
Добавление и вычитание
Данные операции относятся к поэлементному типу.
Она также применяется к массивам одинакового размерного типа.
Пользуясь оператором, предназначенным для суммирования, можно отыскать сумму всех векторных частей.
Скалярное произведение работает по представленному ниже принципу.
При таком типе умножения матриц, программа занимается умножением данных элементов по столбцам. Данная операция может применяться исключительно к тем матрицам, которые характеризуются равным количеством строчек и столбцов.
Обратите внимание, что немалая роль отводится поочередности множителей.
Только в редких случаях скалярное произведение может стать коммутативным.
Скаляр двух векторов показывает результат как на фотографии ниже.
Данная опция может использоваться исключительно для двух векторных столбов из трех элементов.
Векторное произведение часто используется для механики, гидродинамики и огромного количества подобных сфер деятельности.
Обратная матрица может быть применима для квадратных матриц:
В результате у нас получится матрица единичного типа
Если произвести матрицу и единичную матрицу, мы получим первоначальный вариант.
Определитель может быть разработан исключительно для матрицы квадратного типа. Он может быть нулевым в любых условиях. Обратная матрица имеет в своей структуре дроби, в состав которых входит определитель.
В ситуациях, когда определитель установлен на ноль, к нему нереально подобрать обратную матрицу. Сама матрица автоматически становится сингулярной. О таких изменениях пользователь узнает из оповещения программы.
В ситуациях со скалярами, определитель соответствует их модулям
Команда «определитель» помогает отыскать длину вектора .
Уважаемые пользователи, хотим Вас проинформировать о том, что некоторые антивирусные программы и браузеры ложно срабатывают на дистрибутив программы MediaGet, считая его зараженным. Данный софт не содержит никаких вредоносных программ и вирусов и многие из антивирусов просто Вас предупреждают, что это загрузчик (Downloader). Если хотите избежать подобных проблем, просто добавьте MediaGet в список доверенных программ Вашей антивирусной программы или браузера.
Выбрав нужную версию программы и кликнув ссылку, Вам на компьютер скачивается дистрибутив приложения MediaGet, который будет находиться в папке «Загрузки» для Вашего браузера. Находим этот файл с именем программы и запускаем его. И видим первый этап установки. Нажимаем унопку «Далее»
Далее Вам предлагается прочитать и одобрить лицензионное соглашение. Нажимаем кнопку «Принимаю»
В следующем окне Вам предлагается бесплатное полезное дополнительное программоное обеспечение, будь то антивирус или бразуер. Нажимаем кнопку «Принимаю». Также Вы можете отказаться от установки дополнительного ПО, нажав кнопку «Отклоняю»
Далее происходит процесс установки программы. Вам нужно выбрать папку, в которую будут скачиваться нужные Вам файлы.
Происходит завершение установки. Программа автоматически открывается и скачивает нужные Вам исходные файлы.
Обратите внимание, что предоставляемое программное обеспечение выкладывается исключительно для личного использования и ознакомления. Все файлы, доступные для скачивания, не содержат вирусов и вредоносных программ.
http://poisk-ru.ru/s7928t3.html
http://stylingsoft.com/sapr/mathcad/uroki-mathcad/1429-vektory-i-matritsy-v-mathsad