在R中解决线性方程组

5
我不知道在以下情况下该怎么做,因为最后一个方程没有所有4个变量。所以我使用了方程式下面的代码,但这是错误的...有人知道如何继续吗?
方程式:
3a + 4b - 5c + d = 10

2a + 2b + 2c - d = 5

a -b + 5c - 5d = 7

5a + d = 4

代码:

 X <- matrix(c(3,4,-5,1,2,2,2,-1,1,-1,5,-5,5,0,0,1), 4, 4)
 y <- matrix(c(10,5,7,4), 4, 1)
 solve(X)%*%y #equivalent to solve(X, y)

matrix() 默认按列主序工作(值是沿着每列定义的)。看起来您正在尝试使用行主序(沿着行走)定义系数矩阵。请查看 byrow 参数以解决此问题。 - Artem Sokolov
X = matrix(c(3,2,1,5,4,2,-1,0,-5,2,5,0,1,-1,-5,1),4,4)y = c(10,5,7,4)sol = solve(X,y) 谢谢,伙计。 - Afonso O. Lenzi
1个回答

4
matrix()函数的参数byrow设置为TRUE即可实现此功能。
X <- matrix(c(3, 4,-5, 1,
              2, 2, 2,-1,
              1,-1, 5,-5,
              5, 0, 0, 1), 4, 4, byrow=TRUE)
y <- c(10, 5, 7, 4)
sol <- solve(X, y)

请检查是否正确:

c(X %*% sol)
[1] 10  5  7  4

顺便提一下,solve(X,y)的计算效率比solve(X) %*% y高。

X <- matrix(c(3,2,1,5,4,2,-1,0,-5,2,5,0,1,-1,-5,1),4,4) y <- c(10,5,7,4) sol=solve(X,y) #相当于solve(X,y) sol[1] 1.2477876 1.0176991 -0.8849558 -2.2389381 - Afonso O. Lenzi
我已经改变了matrix()的方法这是该课程的一个练习 https://courses.edx.org/courses/course-v1:HarvardX+PH525.2x+1T2018/course/ - Afonso O. Lenzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接