Mathematica, решение нелинейной системы уравнений с большим количеством уравнений и переменных

Мне нужно найти квадратную матрицу A, удовлетворяющую уравнению

A.L.A = -17/18A -2(A.L.L + L.A.L + (L.L).A) + 3(A.L + L.A) -4L.L.L + 8L.L - 44/9L + 8/9*(ID)

,где L — диагональная матрица L = {{2/3,0,0,0},{0,5/12,0,0},{0,0,11/12,0},{0,0 ,0,2/3}}.

Я могу найти ответы в случае, если A имеет размерность 2 и 3, но есть проблема с размерностью 4 и выше.

На самом деле, матрица A также должна удовлетворять уравнению A.A = A, но с подходящей матрицей L достаточно только приведенного выше уравнения.

Это мой код;

A = Таблица[a[i,j],{i,1,4},{j,1,4}]

B = A.L.A

ID = IdentityMatrix[4]

M = -17/18A -2(A.L.L + L.A.L + (L.L).A) + 3(A.L + L.A) -4L.L.L + 8L.L - 44/9L + 8/9*(ID)

diff = (B - M)//ExpandAll//Flatten (так что здесь я получаю 16 нелинейных систем уравнений)

A1 = A/.Решить[diff == 0][[1]]

После запуска этого кода в течение некоторого времени возникает ошибка: недостаточно памяти для вычислений.

В этом случае имеется 16 уравнений и 16 переменных. Некоторые записи являются параметрами, но я просто не знаю, какой из них, пока не получу результат.

Я не уверен, есть ли способ решить эту проблему. Мне нужно, чтобы ответ был рациональным (возможно, целым числом), что теоретически возможно.

Можно ли решить эту задачу матричным уравнением или любым другим методом? Я вижу здесь одну проблему: слишком много уравнений и переменных.


person user3053271    schedule 30.11.2013    source источник


Ответы (1)


Это оценивается довольно быстро и со скромной памятью для задачи такого размера.

L = {{2/3, 0, 0, 0}, {0, 5/12, 0, 0}, {0, 0, 11/12, 0}, {0, 0, 0, 2/3}};
A = {{a, b, c, d}, {e, f, g, h}, {i, j, k, l}, {m, n, o, p}};
Reduce[{A.L.A == -17/18 A - 2 (A.L.L + L.A.L + (L.L).A) + 3 (A.L + L.A) - 
   4 L.L.L + 8 L.L - 44/9 L + 8/9*IdentityMatrix[4]},
   {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, Backsubstitution->True
]

Затем вам просто нужно отсортировать 143 потенциальных решения, которые он возвращает. Возможно, вы сможете выбрать из тех, которые удовлетворяют вашему А.А==А. Вы также можете использовать ToRules для результата, возвращаемого из функции «Уменьшить», чтобы привести его к форме, аналогичной той, которая возвращается из «Решения», но тщательно проверьте это, чтобы убедиться, что он делает то, что вы ожидаете.

Проверьте это очень внимательно, чтобы убедиться, что я не сделал никаких ошибок.

person Bill    schedule 01.12.2013
comment
Большое спасибо, это очень помогло - person user3053271; 04.12.2013