【问题标题】:Solve a linear system of equations in R求解 R 中的线性方程组
【发布时间】:2018-11-01 01:05:40
【问题描述】:

我不知道在以下情况下如何进行,因为最后一个方程没有全部 4 个变量。所以使用方程式下面的代码,但这是错误的......有谁知道如何进行?

Euqations:

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 参数来解决这个问题。
  • 感谢人 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)

标签: r matrix


【解决方案1】:

将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 更高效。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
相关资源
最近更新 更多