Специфические преобразования матриц

Еще две встроенных функции Mathcad позволяют создавать матрицы на основе некоторой имеющейся матрицы (пример 6):

· geninv (A) — создание матрицы, обратной (слева) прямоугольной матрице А;

· rref (А) — преобразование матрицы или вектора А в ступенчатый вид:

А — матрица, составленная из действительных чисел.

 

ПРИМЕЧАНИЕ

Размер NxM матрицы А для функции geninv должен быть таким, чтобы N>M.

 

Пример 6. Создание матриц на основе другой матрицы

 

Часто бывает нужно переставить элементы матрицы или вектора, расположив их в определенной строке или столбце в порядке возрастания или убывания. Для этого имеются несколько встроенных функций, которые позволяют гибко управлять сортировкой матриц:

· sort(v) — сортировка элементов вектора в порядке возрастания (пример 7, верхняя строка);

· reverse (v) — перестановка элементов вектора в обратном порядке (пример 7, нижняя строка);

· csort (A, i) — сортировка строк матрицы выстраиванием элементов 1-го столбца в порядке возрастания (пример 8, верхняя строка);

· rsort (A, i) — сортировка столбцов матрицы выстраиванием элементов i-й строки в порядке возрастания (пример 9, нижняя строка):

v — вектор;

А — матрица;

i — индекс строки или столбца.

ПРИМЕЧАНИЕ

Если элементы матриц или векторов комплексные, то сортировка ведется по действительной части, а мнимая часть игнорируется.

Пример 7. Сортировка вектора

Пример 8. Сортировка матриц по строке и столбцу

 

Для получения сведений о характеристиках матриц или векторов предусмотрены следующие встроенные функции (пример 9 и 10 соответственно):

· rows (A) — число строк;

· cols (А) — число столбцов;

· length (v) — число элементов вектора;

· last (v) — индекс последнего элемента вектора

· max(A) Самый большой элемент в массиве A. Если A имеет комплексные элементы, возвращает наибольшую вещественную часть плюс i, умноженную на наибольшую мнимую часть.

· min(A) Самый маленький элемент в массиве A. Если A имеет комплексные элементы, возвращает наименьшую вещественную часть плюс i, умноженную на наименьшую мнимую часть.:

А — матрица или вектор;

v — вектор.

ПРИМЕЧАНИЕ

Если матричные индексы нумеруются с 1, т. е. системная константа ORIGIN равна не о (по умолчанию), а 1, то число элементов вектора и индекс его последнего элемента совпадают.

Пример 9. Размер матриц

 

Пример 10. Размер векторов

 

 

Операции над матрицами

Простейшие операции матричной алгебры реализованы в Mathcad в виде операторов, причем их запись максимально приближена к математическому значению. Каждый оператор выражается соответствующим символом. Некоторые операции применимы только к квадратным матрицам NxN, некоторые допускаются только для векторов (например, скалярное произведение), а другие, несмотря на одинаковое написание, по-разному действуют на векторы и матрицы.

Транспонирование

Транспонированием называют операцию, переводящую матрицу размерности MxN в матрицу размерности NxM, делая столбцы исходной матрицы строками, а строки — столбцами. Несколько примеров транспонирования приведены в примере 11. Ввод символа транспонирования (transpose) осуществляется с помощью панели инструментов Matrix (Матрица) или нажатием клавиш <Ctrl>+<!>. He забывайте, что для вставки символа транспонирования матрица должна находиться между линиями ввода.

 

Рис. Ввод матриц и основные операции над ними осуществляются при помощи панели Matrix

 

ПРИМЕЧАНИЕ

Все матричные и векторные операторы, о которых пойдет речь, допустимо использовать как в численных, так и в символьных расчетах. Мощь символьных операций заключается в возможности проводить их не только над конкретными числами, но и над переменными. Смело используйте символьный процессор в качестве мощного математического справочника, когда вы хотите вспомнить какое-либо определение из области линейной алгебры. Именно по этой причине мы прибегаем к примерам символьных расчетов в большинстве иллюстраций к данному разделу.

 

Пример 11. Транспонирование векторов и матриц

 

Действия над матрицами

В Mathcad можно как складывать матрицы, так и вычитать их друг из друга. Для этих операторов применяются стандартные символы "+" или "—" соответственно. Матрицы должны иметь одинаковую размерность, иначе будет выдано сообщение об ошибке. Каждый элемент суммы двух матриц равен сумме соответствующих элементов матриц-слагаемых (пример 12).

Результат унарной операции смены знака матрицы эквивалентен смене знака всех ее элементов. Для того чтобы изменить знак матрицы, достаточно ввести перед ней знак минуса, как перед обычным числом (нижняя строка примера 12).

Пример 12. Сложение, вычитание и смена знака матриц

Кроме сложения матриц Mathcad поддерживает операцию сложения матрицы со скаляром (пример 13). Каждый элемент результирующей матрицы равен сумме соответствующего элемента исходной матрицы и скалярной величины.

Пример 13. Сложение матрицы со скалярной величиной

Иногда бывает нужно вычислить сумму всех элементов вектора или матрицы. Для этого существует вспомогательный оператор (пример 14, первая и вторая строки соответственно), задаваемый кнопкой Vector Sum (Суммирование элементов вектора) на панели Matrix (Матрица) или сочетанием клавиш <Ctrl>+<4>. Этот оператор чаще оказывается полезным не в матричной алгебре, а при организации циклов с индексированными переменными.

В том же примере 14 (снизу) показано применение операции суммирования диагональных элементов квадратной матрицы. Эту сумму называют следом (trace) матрицы. Данная операция организована в виде встроенной функции tr:

tr (А) — след квадратной матрицы А.

Пример 14. Суммирование элементов и вычисление следа матрицы

 

При умножении следует помнить, что матрицу размерности MxN допустимо умножать только на матрицу размерности NxP (P может быть любым). В результате получается матрица размерности MхP.

Чтобы ввести символ умножения, нужно нажать клавишу со звездочкой <*> или воспользоваться панелью инструментов Matrix (Матрица), нажав на ней кнопку Dot Product (Умножение). Умножение матриц обозначается по умолчанию точкой, как показано в примере 15.

Пример 15. Перемножение матриц

 

Обратите внимание (пример 15), что попытка перемножить матрицы А и В несоответствующего (одинакового 2х3) размера оказалась безрезультатной: после введенного знака равенства находится пустой местозаполнитель, а само выражение в редакторе Mathcad выделяется красным цветом. При установке курсора на это выражение появляется сообщение о несовпадении числа строк первой матрицы с числом столбцов второй матрицы.

Еще один пример, относящийся к умножению вектора на матрицу-строку и, наоборот, строки на вектор, приведен в примере 16.

ВНИМАНИЕ!

Тот же самый оператор умножения действует на два вектора по-другому !!!

Пример 16. Умножение вектора и строки

 

Аналогично сложению матриц со скаляром определяется умножение и деление матрицы на скалярную величину (пример 17.). Символ умножения вводится так же, как и в случае умножения двух матриц. На скаляр можно умножать матрицу любой размерности.

Пример 17. Умножение матрицы на скалярную величину

 

 

Векторная алгебра

Векторы являются частным случаем матриц размерности Nх1, поэтому для них справедливы все те операции, что и для матриц, если ограничения особо не оговорены. Вместе с тем для векторов в линейной алгебре предусмотрен целый ряд специфических операций, и все они реализованы в системе Mathcad.

ВНИМАНИЕ!

Непосредственное проведение многих векторных операций над матрицами-строками, т. е. матрицами 1xN, невозможно; для того, чтобы превратить строку в вектор, ее нужно предварительно транспонировать.

Модуль вектора (vector magnitude) по определению равен квадратному корню из суммы квадратов его элементов (пример 18).

ВНИМАНИЕ!

Не путайте модуль вектора и определитель матрицы, который обозначается тем же символом. Это характерный пример оператора, действующего по-разному на векторы и квадратные матрицы.

Пример18. Модуль вектора

 

Скалярное произведение векторов (vector inner product) определяется как скаляр, равный сумме попарных произведений соответствующих элементов. Векторы должны иметь одинаковую размерность, скалярное произведение имеет ту же размерность. Скалярное произведение двух векторов u и v равно uv=|u||v|cos0, где 0— угол между векторами. Если векторы ортогональны, то их скалярное произведение равно нулю. Обозначается скалярное произведение тем же символом, что и умножение (пример 19).

ВНИМАНИЕ!

Для обозначения скалярного произведения пользователю позволяется выбирать представление оператора умножения при помощи контекстного меню (подобно умножению скалярных величин). Однако никогда не применяйте для обозначения скалярного произведения символ х, который является общеупотребительным символом векторного произведения.

Пример 19. Скалярное произведение векторов

 

 

С осторожностью перемножайте несколько (более двух) векторов. По-разному расставленные скобки полностью изменяют результат умножения. Примеры такого умножения приведены в примере 20.

Пример 20. Скалярное произведение векторов, умноженное на третий вектор

 

 

Векторное произведение (cross product) двух векторов u и v с углом ф между ними равно вектору с модулем |u|-|v|sin0, направленным перпендикулярно плоскости векторов u и v. Обозначают векторное произведение символом х, который можно ввести нажатием кнопки Cross Product (Векторное произведение) в панели Matrix (Матрица) или сочетанием клавиш <Ctrl>+<8>. Пример приведен в примере 21.

Пример 21. Векторное произведение двух векторов

 

Векторизация массива

Векторная алгебра Mathcad включает несколько необычный оператор, который называется оператором векторизации (vectorize operator). Этот оператор предназначен, как правило, для работы с массивами. Он позволяет провести однотипную операцию над всеми элементами массива (т. е. матрицы или вектора), упрощая тем самым программирование циклов. Например, иногда требуется умножить каждый элемент одного вектора на соответствующий элемент другого вектора, чтобы в результате также получился вектор. Непосредственно такой операции в Mathcad нет, но ее легко осуществить с помощью векторизации (пример 22). Для этого:

1. Введите векторное выражение, как показано во второй строчке примера 22 (обратите внимание, что в таком виде символ умножения обозначает оператор скалярного произведения векторов).

2. Переместите курсор таким образом, чтобы линии ввода выделяли все выражение, которое требуется подвергнуть векторизации.

3. Введите оператор векторизации, нажав кнопку Vectorize (Векторизация) на панели Matrix (Матрица) (пример 22), или сочетанием клавиш <Ctrl>+<->.

4. Введите <=>, чтобы получить результат.

 

 

Пример 22. Использование оператора векторизации для перемножения элементов вектора

 

Большинство неспецифических функций Mathcad не требуют векторизации для проведения одной и той же операции над всеми элементами вектора. Например, аргументом тригонометрических функций по определению является скаляр. Если попытаться вычислить экспоненту от векторной величины, Mathcad осуществит векторизацию по умолчанию, возведя в степень е каждый элемент и выдав в качестве результата соответствующий вектор (пример 23).

 

Пример 23. Векторизация аргумента необязательна для большинства встроенных функций Mathcad