Решить комплексное матричное уравнение - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть сложное уравнение с участием матриц:

R = expm(X)*A + (expm(X)-I)*inv(X)*B*U; 

, где R, B и U - известные матрицы.
I - это единичная матрица.

Мне нужно решить для X. Есть ли способ решить эту проблему в MATLAB?

1 Ответ

0 голосов
/ 29 апреля 2019

Если ваше уравнение нелинейное и у вас есть доступ к панели инструментов оптимизации MATLAB, вы можете использовать функцию fsolve (вы все равно можете использовать ее для линейного уравнения, но это может быть не самый эффективный подход).Вам просто нужно переформатировать ваше уравнение в форму F (x) = 0, где x - это вектор или матрица.Например, если X является вектором длины 2:

Определите свою функцию для решения:

function F = YourComplexEquation(X)
Fmatrix = expm(X)*A + (expm(X)-I)*inv(X)*B*U - R
% This last line is because I think fsolve requires F to be a vector, not a matrix
F = Fmatrix(:);

Затем вызовите fsolve с начальным предположением:

X = fsolve(@YourComplexEquation,[0;0]);
...