求解基于矩阵的线性方程组(“矩阵维必须一致”)

时间:2017-01-19 13:54:21

标签: matlab equation-solving

我有一个大小为NxN的矩阵(称为M),Nx1的向量(称为V)和两个标量(称为ab)。我想解决alpha的线性方程组。尺寸是在MATLAB使用函数size(-)报告它们时给出的。

  

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

1 是一个只有1s的矩阵。

我认为最简单的方法是

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

然而,我收到错误

  

使用==
时出错   矩阵维度必须达成一致

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

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

1 个答案:

答案 0 :(得分:2)

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

我建议只使用MATLAB的内置功能,使用\运算符(mldivide

来解决线性方程组,而不是完全使用符号工具箱。
alpha = Mprep \ V;

作为旁注,请不要使用length,因为结果不明确,因为它只返回第一个非单一维度。如果您希望ones的大小等于M,请使用ones(size(M)),或者如果您特别希望M中的行数或列数使用第二个输入到size指定您要查询的维度:nRows = size(M, 1)nCols = size(M, 2)