基于矩阵求解线性方程组 ("Matrix dimension must agree")

solve linear equation system based on matrix ("Matrix dimension must agree")

我有一个大小为 NxN 的给定矩阵(称为 M)、一个 Nx1 的向量(称为 V)和两个标量(称为 ab)。我想求解 alpha 的线性方程组。维度是在 MATLAB 使用函数 size(-).

报告它们时给出的

(M + a * b * 1) alpha == V

其中 1 是一个只有 1 的矩阵。

我认为最简单的方法是

syms alpher; 
Mprep = (M + a * b * ones(length(M),length(M))); 
eqn = Mprep * alpher == V;
alpha = solve(eqn,alpher)

但是,我得到了错误

Error using ==
Matrix dimensions must agree

我不确定这个错误是由于 Matlab 不知道 alpher 的正确大小还是我的方法完全错误。根据matlab,错误发生在倒数第二行。

在 MATLAB 中解决这个问题的最佳方法是什么?

如果要求解符号变量数组,实际上必须创建一个 数组 符号变量。目前 MATLAB 将 alpher 视为 标量 并且这在执行矩阵乘法时显然存在维数问题,因为 N x N 矩阵乘以标量不等于 N x 1数组。

与其完全使用符号工具箱,我建议简单地使用 MATLAB 的 built-in 功能来使用 \ 运算符 (mldivide)[= 求解线性方程组25=]

alpha = Mprep \ V;

作为旁注,请避免使用 length,因为结果不明确,因为它只是 returns 第一个 non-singleton 维度.如果您希望 ones 的大小等于 M,只需使用 ones(size(M)),如果您特别希望 M 中的行数或列数,则使用第二个输入到 size 以指定您要查询的维度:nRows = size(M, 1)nCols = size(M, 2)