我把R中的矩阵方程写成这样
m1 <- rbind(c(1,-2,-1,3), c(-2,4,5,-5), c(3,-6,-6,8)) m2 <- c(0,3,2) sol <-solve(m1, m2)
但结果表明:
Error in solve.default(m1, m2) : 'a' (3 x 4) must be square
我可以写代码如何解方程,非常感谢
dohp0rv51#
没有解,我们可以通过将m2回归到m1上来确定,并注意到偏差(=残差平方和)不为零--如果有解,那么残差将为零,因此它们的平方和也为零,但即使在这种情况下,给定有4列而只有3行,解也不是唯一的。我们从非NA系数中看到,列的线性组合跨越2维空间,即平面,并且另一种陈述方式是m2不位于该平面中。
fm <- lm(m2 ~ m1 + 0) fm ## ## Call: ## lm(formula = m2 ~ m1 + 0) ## ## Coefficients: ## m11 m12 m13 m14 ## 3.222 NA 1.556 NA deviance(fm) ## [1] 8.333333
还应注意,第二列和第四列与NA所示的其他列呈线性关系。事实上,第二列是第一列的-2倍
fm2 <- lm(m1[, 2] ~ m1[, -2] + 0) ## ... ## Coefficients: ## m1[, -2]1 m1[, -2]2 m1[, -2]3 ## -2 0 NA deviance(fm2) ## [1] 0
第四列是第一列的3.3333倍加上第三列的0.3333倍。
fm4 <- lm(m1[, 4] ~ m1[, -4] + 0) fm4 ## ... ## Coefficients: ## m1[, -4]1 m1[, -4]2 m1[, -4]3 ## 3.3333 NA 0.3333 deviance(fm4) ## [1] 9.321501e-32
如果我们将m2投影到m1的值域上得到m2 a,并用m2 a代替m2,那么第1列和第3列将有唯一的解,而所有4列将有无限多个解,请看https://stats.stackexchange.com/questions/241025/why-is-mathbfy-mathbf-haty-perpendicular-to-the-subspace-spanned-by的第一个答案中的图表。这里的x1和x2向量对应于m1的第1列和第3列,黄色部分是它们跨越的平面。这里的y对应于m2,y是m2 a,m2在平面上的投影。m1的第2列和第4列位于第1列和第4列跨越的黄色区域中,而m2不在其中,这就是为什么使用m2求解时没有解的原因,而m2 a(投影)位于黄色平面中,这就是为什么存在解的原因。下面我们可以看到,3.222乘以第1列加上1.556乘以第3列等于m2 a,即m2在m1的值域上的投影。
m2a <- fitted(fm) # projection of m2 onto range of m1 fma <- lm(m2a ~ m1[, c(1, 3)] + 0) fma ## ... ## Coefficients: ## m1[, c(1, 3)]1 m1[, c(1, 3)]2 ## 3.222 1.556 deviance(fma) ## [1] 4.930381e-32
1条答案
按热度按时间dohp0rv51#
没有解,我们可以通过将m2回归到m1上来确定,并注意到偏差(=残差平方和)不为零--如果有解,那么残差将为零,因此它们的平方和也为零,但即使在这种情况下,给定有4列而只有3行,解也不是唯一的。
我们从非NA系数中看到,列的线性组合跨越2维空间,即平面,并且另一种陈述方式是m2不位于该平面中。
还应注意,第二列和第四列与NA所示的其他列呈线性关系。事实上,第二列是第一列的-2倍
第四列是第一列的3.3333倍加上第三列的0.3333倍。
如果我们将m2投影到m1的值域上得到m2 a,并用m2 a代替m2,那么第1列和第3列将有唯一的解,而所有4列将有无限多个解,请看https://stats.stackexchange.com/questions/241025/why-is-mathbfy-mathbf-haty-perpendicular-to-the-subspace-spanned-by的第一个答案中的图表。这里的x1和x2向量对应于m1的第1列和第3列,黄色部分是它们跨越的平面。这里的y对应于m2,y是m2 a,m2在平面上的投影。m1的第2列和第4列位于第1列和第4列跨越的黄色区域中,而m2不在其中,这就是为什么使用m2求解时没有解的原因,而m2 a(投影)位于黄色平面中,这就是为什么存在解的原因。
下面我们可以看到,3.222乘以第1列加上1.556乘以第3列等于m2 a,即m2在m1的值域上的投影。