Как решить A*X - X*A' = 0
У меня есть уравнение вида A*X = X*A'
где A и X - действительные, квадратные матрицы (3x3 в этом случае), и A известен, а A'представляют транспонирование A. Как решить для X использование MATLAB? (с точностью до масштабного коэффициента)
2 ответа
Это уравнение Сильвестра. Однако это единственное число, потому что собственные значения A и A'одинаковы. Но вы можете использовать формулы [I⊗A-A'⊗I]X(:)=C(:):
m=kron(eye(3),a)+kron(-a,eye(3))
v=null(m)
x1=reshape(v(:,1),[3 3])
x2=reshape(v(:,2),[3 3])
x3=reshape(v(:,3),[3 3])
Теперь решением является span{x1,x2,x2}, т.е. любая матрица вида b x1 + c x2 +d x3, где b,c,d - любые действительные числа
Я не думаю, что у Matlab есть возможности для символической алгебры.
Если вы расширите A и X и проработаете выражение, вы получите матрицу 3x3 с уравнением в нескольких неизвестных, причем все они равны нулю. Вы тогда решаете это.
Но я не думаю, что Matlab позволяет вам устанавливать матрицу для символа, а не значение и расширять его для вас. Для этого простого случая вы могли бы легко написать такую функцию, которая умножает матрицу строк на числовую матрицу. Загвоздка в том, что ее трудно масштабировать до общего случая, не бросая в нее весь движок Maple / Mathematica.