Как решить 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.

Другие вопросы по тегам