【问题标题】:Solve complex matrix equation求解复矩阵方程
【发布时间】:2019-09-17 09:29:02
【问题描述】:
我有一个涉及矩阵的复杂方程:
R = expm(X)*A + (expm(X)-I)*inv(X)*B*U;
其中R、B 和U 是已知矩阵。
I 是单位矩阵。
我需要解决X。有什么办法可以在 MATLAB 中解决这个问题?
【问题讨论】:
标签:
matlab
matrix
equation
equation-solving
【解决方案1】:
如果您的方程是非线性的并且您可以访问 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]);