如何用R求解含不同z值的二元线性方程组?
用R语言求解多组z值对应的二元线性方程组
针对你给出的方程组:
x + y = 1 4.5x + 9y = z
下面提供两种高效的求解方法:
方法1:代数推导后直接向量运算
先通过代数变形得到x和y关于z的表达式:
- 从第一个方程得
y = 1 - x,代入第二个方程化简:4.5x + 9(1 - x) = z→-4.5x = z - 9→x = (9 - z)/4.5 = 2 - z/4.5 - 再代入y的表达式得:
y = 1 - x = z/4.5 - 1
利用R的向量运算特性,可以直接批量计算所有z对应的x和y:
# 定义z的取值 z <- c(4.1, 5.5, 9.9, 7.3, 5.2, 3.5, 5.4, 4.2) # 计算x和y x <- 2 - z / 4.5 y <- z / 4.5 - 1 # 整理为数据框查看结果 result <- data.frame(z = z, x = round(x, 4), y = round(y, 4)) print(result)
运行后会输出每个z对应的x、y值(保留4位小数方便阅读)。
方法2:矩阵求解法
将方程组转化为矩阵形式 (A\mathbf{x} = \mathbf{b}):
[
A = \begin{bmatrix}1 & 1 \ 4.5 & 9\end{bmatrix}, \quad \mathbf{x} = \begin{bmatrix}x \ y\end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix}1 \ z\end{bmatrix}
]
利用R的solve()函数求解线性方程组,批量处理所有z值:
# 定义系数矩阵A A <- matrix(c(1, 4.5, 1, 9), nrow = 2, byrow = TRUE) # 定义z的取值 z <- c(4.1, 5.5, 9.9, 7.3, 5.2, 3.5, 5.4, 4.2) # 批量求解每个z对应的x和y solutions <- lapply(z, function(val) solve(A, c(1, val))) # 整理结果为数据框 result_matrix <- data.frame( z = z, x = sapply(solutions, function(v) round(v[1], 4)), y = sapply(solutions, function(v) round(v[2], 4)) ) print(result_matrix)
两种方法得到的结果完全一致,代数方法计算效率更高,矩阵方法则更通用,适合扩展到更复杂的线性方程组。
内容的提问来源于stack exchange,提问作者Kenji
相关产品推荐
相关产品推荐

