Материал: 6386

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Профессиональные математические пакеты

Для частного случая выделения подматрицы – выделения столбца с заданным номером – в 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

Источник: https://studfile.net/preview/16438534/