Mathcad: найти коммутативную матрицу для заданной
Матрицы A и B перестановочны (коммутативны), если A*B = B*A
.
Например, нам нужно по заданной матрице
` | a b | A = | | | c d |
найти элементы матрицы B
той же размерности
` | e f | B = | | | g h |
то есть, подобрать такие e
, f
, g
, h
, что A*B = B*A
.
Так как эта система уравнений имеет бесконечно много решений (соответственно, перестановочная с данной матрица определена с точностью до постоянного множителя), один элемент искомой матрицы надо зафиксировать, например, положив e=1
. В остальном всё решится в символьном виде обычным блоком Given-Find:
поиск перестановочной матрицы в символьном виде (Mathcad)
А вот с дополнительными ограничениями вида "a,b,...,h не равны 0", или "определители A и B не равны 0", ничего не выйдет. Mathcad просто возьмёт "ближайшее" решение, состоящее из всех нулей.
Сказанное не значит, что Mathcad найдёт "наиболее короткое" или ещё в каком-то смысле "лучшее" решение задачи, имеющей бесконечное множество вариантов ответа. Например, такую простую перестановочную матрицу как
` | a-d b | B = | | | c 0 |
он не найдёт, если поставить до Given оператор h:=0
и искать значения e
, f
, g
. Будут выданы всё те же нули, как "ближайшее подходящее" решение.
Если же матрица A задана не символьно, а в числах, всё ещё тривиальней (для удобства использован "дробный" формат при выводе матриц):
поиск перестановочной матрицы в аналитическом виде (Mathcad)
Скачать этот пример в архиве .zip с документом Mathcad 15 .xmcd (21 Кб)
23.12.2015, 01:00 [14878 просмотров]