基于矩阵求解线性方程组 ("Matrix dimension must agree")
solve linear equation system based on matrix ("Matrix dimension must agree")
我有一个大小为 NxN
的给定矩阵(称为 M
)、一个 Nx1
的向量(称为 V
)和两个标量(称为 a
和 b
)。我想求解 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)
我有一个大小为 NxN
的给定矩阵(称为 M
)、一个 Nx1
的向量(称为 V
)和两个标量(称为 a
和 b
)。我想求解 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)