Профессиональные математические пакеты
Для частного случая выделения подматрицы – выделения столбца с заданным номером – в MathCAD имеется специальный оператор M< >. Строку матрицы A можно выделить как при помощи функции submatrix, так и при помощи оператора M< >
(Листинг 23).
Приведенный ниже пример (Листинг 23) иллюстрирует применение оператора МT
– транспонирования матрицы или вектора. Оператор транспонирования делает строки матрицы столбцами, а столбцы – строками, визуально эта операция соответствует зеркальному отражению относительно диагонали.
Листинг 23. Выделение столбца и строки матрицы
Матричные и векторные арифметические операции
В среде MathCAD операции над матрицами производятся в соответствии с правилами математики.
При умножении матрицы (или вектора) на константу K, все элементы матрицы (вектора) умножаются на K.
При сложении (вычитании) матриц (или векторов) суммирование производится покоординатно. Складывать и вычитать можно только матрицы (вектора) совпадающей размерности.
Произведение матриц производится по правилу «строка на столбец» – каждый элемент матрицы-произведения есть скалярное произведение вектора-строки первой матрицы на вектор-столбец второй:
|
n 1 |
|
C A B : |
ci, j ai,k bk, j , |
(1) |
где A m n , B n p , C m p . |
k 0 |
|
Напомним, что элементы |
матриц в MathCAD |
|
нумеруются с нуля, поэтому индексы изменяются так: i 0...m 1, |
j 0... p 1 . |
|
Естественно в формуле (1) требовать, чтобы количество столбцов матрицы А совпадало с количеством строк матрицы B – такие матрицы называются
согласованными или сцепленными.
Листинг 24. Арифметические операции с матрицами
Нельзя забывать, что в отличие от произведения чисел, матричное произведение некоммутативно, т.е., в общем случае A B B A , подтверждение этому легко построить (см., например Листинг 25):
41
Глава 6. Операции матричной алгебры в MathCAD
Листинг 25. Матричное произведение некоммутативно
Для создания единичной и диагональной матриц заданного размера n×n в MathCAD можно использовать функции identity(n). и diag(x) соответственно (Листинг 26), здесь вектор x – вектор диагональных элементов создаваемой матрицы.
Единичная матрица Е выполняет роль единицы при матричном умножении, а нулевая матрица 0 – роль нуля. Обучаемому предлагается проверить свойства этих матриц: А E A, E A A и А 0 0, 0 A 0 .
Листинг 26. Создание единичной и диагональной матриц
Функции определения размеров матриц
Возможны ситуации, когда для вычислительного процесса необходимы сведения о размерах матриц, которые становятся известны только после их формирования в ходе вычислений. Для получения такой информации используются функции определения количества строк и столбцов в матрицах rows и cols.
Листинг 27. Использование функций rows и cols
На Листинг 27 приведен пример довольно сложного формирования матрицы С из матриц А и В с использованием функций rows и cols для определения размеров промежуточных матриц.
Применение функций rows и cols повышает универсальность выражений, использующих матричные операции, они становятся менее зависимыми от конкретных размеров исходных матриц.
При программировании нестандартных пользовательских операций с элементами матриц особенно важно знать их размерность для организации циклов.
Оператор | x |
Листинг 28. Вычисление определителя квадратной матрицы
Расчет определителя квадратной матрицы в MathCAD производится оператором |A|. Попытка применить этот оператор к неквадратной матрице с количеством столбцов более одного вызывает ошибку.
42
Профессиональные математические пакеты
Формирование матрицы или вектора на основе заданной функции
В ряде случаев значения элемента матрицы ai, j можно связать со значениями его индексов некоторой функцией от двух целочисленных аргументов: ai, j F(i, j) . В
этом случае матрицу произвольного размера можно сформировать при помощи встроенной функции matrix(m, n, F), где m и n – число строк и столбцов в создаваемой матрице, F – имя функции.
Листинг 29. Формирование матриц функцией matrix
Матрицу произвольного размера можно сформировать, задавая значение каждому элементу с помощью оператора назначения (Листинг 30). Перебор множества индексов может быть произведен с помощью ранжированных переменных (создание матрицы A), либо с использованием операторов цикла в программном блоке (создание матрицы B). Как видно из приведенного примера, результат одинаков.
Листинг 30. Поэлементное формирование матриц
Сохранение матриц и векторов в файле
Для сохранения матриц в текстовых файлах и чтения их них в системе MathCAD имеется семейство встроенных функций:
READPRN("путь_к_файлу") – чтение данных в матрицу из текстового файла;
WRITEPRN("путь_к_файлу") – запись данных из матрицы в новый текстовый файл;
APPENDPRN("путь_к_файлу") – дозапись данных из матрицы в уже существующий текстовый файл.
Рис. 18 – Работа с файлами в MathCAD
Функции WRITEPRN и APPENDPRN отличаются тем, что при записи матрицы в файл первой функцией прежнее содержимое файла (если оно есть) будет стерто, а функция APPENDPRN допишет матрицу в конец адресуемого текстового файла.
Текстовая строка "путь_к_файлу" может содержать как полный путь к файлу, так и сокращенный – только имя файла, который должен в этом случае размещаться в рабочем каталоге.
43
Глава 6. Операции матричной алгебры в MathCAD
6.2.Матричные функции
Целочисленные степени квадратных матриц
В среде MathCAD целочисленная степень матрицы (в том числе отрицательная) задается точно так же, как и степень обычных числовых переменных (Листинг 31). В том случае, когда матрица не имеет обратной, попытка вычислить ее какую-либо отрицательную степень блокируется с выдачей соответствующего сообщения. Нулевая и положительная степень квадратной матрицы вычисляются всегда.
Листинг 31. Целочисленная степень матрицы
Матричные ряды
Существование целочисленных степеней квадратной матрицы (Листинг 31) позволяет ввести матричные степенные ряды с числовыми коэффициентами. Из математики известно, что некоторые функции одной переменной f (x) представляются степенными рядами, в общем случае бесконечными, по неотрицательным степеням x:
f (x) k xk . (2)
k 0
Если в таком ряду формально заменить скалярную переменную x на квадратную матрицу A, то получим обобщение функции f (x) в матричную функцию матричного аргумента:
|
|
f (A) k Ak , |
(3) |
k 0 |
|
где k – постоянные коэффициенты.
Здесь мы не будем касаться принципиального вопроса сходимости матричного ряда, поскольку это специальный раздел теории матриц, изложение которого выходит за пределы настоящего курса.
В приложении к решению систем дифференциальных уравнений и в теории устойчивости А.М. Ляпунова, которые будут изучаться на последующих семестрах курса «Высшая математика», важную роль играет матричная экспонента:
|
Ak tk |
|
|
eAt |
|
, |
(4) |
|
|||
k 0 |
k ! |
|
|
|
|
|
|
где A – квадратная матрица, t – скалярная переменная.
Через матричную экспоненту выражается аналитическое решение системы однородных дифференциальных уравнений с постоянными коэффициентами.
Оператор векторизации функций
В наборе инструментов матричных операций имеется оператор векторизации функций. Пусть f (x) определена как функция скалярного аргумента и задана M –
матрица произвольных размеров с элементами Mi, j .
Листинг 32. Целочисленная степень матрицы
44
Профессиональные математические пакеты
Операция векторизации функции f (x) вызывает появление матрицы с элементами f (Mi, j ) , т.е. происходит поэлементное функциональное преобразование
матрицы-аргумента в матрицу-результат того же размера.
Как видно из приведенных примеров, векторизованный оператор |x| выполняет замену элементов матрицы их абсолютными величинами, причем для комплексных чисел берется модуль. Матрица-аргумент может быть произвольного размера.
6.3. Практическая работа № 4 Матричные операции. Линейная алгебра
Продолжительность – 2 часа.
Цель работы
Освоение умений, навыков и компетенций работы с матрицами и векторами в MathCAD. Закрепление знаний, полученных в курсе «Высшая математика» в разделах «Линейная алгебра», «Аналитическая геометрия» и «Векторный анализ».
Задание на практическую работу
1.Создать программу в среде MathCAD и произвести перечисленные ниже исследования в соответствии со своим вариантом индивидуального задания (Таблица 8, Таблица 9, см. Приложение 4). Продемонстрировать преподавателю выполнение программы.
2.Запрограммировать вычисление определителя матрицы А [4×4] путем разложения матрицы по соответствующему столбцу (или строке) в соответствии с индивидуальным заданием (Таблица 8). Сравнить результаты с вычислением
определителя при помощи встроенного оператора A .
3.Вычислить ранг матрицы A, после чего:
•если rank(A)=cols(A)=rows(A), построить обратную матрицу А-1 и доказать, что она построена правильно;
•если rank(A)<cols(A), то доказать что какой-то из столбцов (или какая-то из строк) матрицы А является линейно-зависимой от других – построить его (её) линейную комбинацию (Листинг 34, Листинг 35).
4.Сформировать матрицу В заданной размерности [m×n] одним из изученных способов (Листинг 29, Листинг 30) в соответствии с индивидуальным заданием
(Таблица 9).
5.Задать вектор x и матрицу С требуемой размерности и произвести с ними описанные в индивидуальном задании вычисления. Результаты продемонстрировать преподавателю.
6.Выполнить над заданной матрицей В действия, заданные в шестом столбце таблицы индивидуального задания (Таблица 9), сводящиеся к объединению матриц и выделению подматриц, строк и столбцов.
7.Произвести над элементами матрицы D расчеты, заданные в седьмом столбце таблицы индивидуального задания (Таблица 9).
8.При выполнении операций матричной алгебры размерности векторов и матриц задавать таким образом, чтобы была возможность требуемые операции производить. Организовать проверку корректности размерностей матриц при помощи функций rows и cols: при произведении – проверять согласованность матриц, при сложении – совпадение размерностей.
9.Матрицы-результаты сохранить в текстовых файлах (Рис. 18).
10.Доказать свойство некоммутативности матричного произведения – составить
свои матрицы P и Q так, чтобы P×Q=Q×P, изменить матрицы так, чтобы P×Q Q×P.
11. Составить отчет, в котором отразить листинг программного кода с комментариями и привести скриншоты с результатами работы программ.
45