You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中求解满足a*t-t*f=b*k的4×4未知矩阵t

MATLAB求解矩阵方程at - tf = b*k的实现方法

你给出的方程属于Sylvester矩阵方程,并非标准形式的Lyapunov方程,在MATLAB中可以通过以下两种方法求解得到4×4未知矩阵t的全部元素。

第一步:定义已知参数

首先在MATLAB中录入所有给定的已知矩阵:

a = [0 1 0 0;0 0 -1 0;0 0 0 1;0 0 5 0];
f = [-1 1 0 0;-1 -1 0 0;0 0 -1.5 0.5;0 0 -0.5 -1.5];
b = [0;1;0;-2];
k = [1 0 1 0];

求解方法

方法1:调用内置sylvester函数(推荐,代码最简洁)

MATLAB控制系统工具箱提供的sylvester函数用于求解标准形式Sylvester方程:A*X + X*B = C。
你的待解方程a*t - t*f = b*k可以通过参数变形适配标准形式:令标准方程中A=a、B=-f、C=b*k,直接调用函数即可得到结果:

t = sylvester(a, -f, b*k)

说明:该函数适用于R2014a及以上版本MATLAB,需要提前安装控制系统工具箱。

方法2:克罗内克积转化为线性方程组求解(无工具箱依赖,兼容所有版本)

如果没有安装控制系统工具箱,可以利用克罗内克积的矩阵向量化性质,把矩阵方程转化为普通线性方程组求解:对于A*X - X*B = C形式的方程,可通过克罗内克积变换将矩阵运算转化为线性方程组,对应MATLAB实现代码如下:

% 获取矩阵维度
n = size(a, 1);
m = size(f, 1);
% 构造线性方程组系数矩阵
coeff = kron(eye(m), a) - kron(f.', eye(n));
% 求解向量化结果后重构为4×4矩阵
t = reshape(coeff \ (b*k)(:), n, m);

结果校验

求解完成后可以代入原方程计算残差,验证结果正确性:

residual = norm(a*t - t*f - b*k)

正常情况下残差值会在1e-15量级,属于双精度浮点计算的正常误差范围,说明求解结果准确。

内容的提问来源于stack exchange,提问作者Trickk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 20:09:35