我有一个大小为NxN
的矩阵(称为M
),Nx1
的向量(称为V
)和两个标量(称为a
和b
)。我想解决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中解决这个问题的最佳方法是什么?
答案 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)