You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中求解给定的线性方程组?

在R中求解带约束的线性方程组

首先将原方程整理为标准线性形式,把所有未知量移到左侧,常数项移到右侧:

g + v₁ = 8 + (1/2)v₁ + (1/4)v₂ + (1/4)v₃
g + v₂ = 16 + (1/2)v₁ + 0*v₂ + (1/2)v₃
g + v₃ = 7 + (1/4)v₁ + (1/4)v₂ + (1/2)v₃

移项后得到:

  • g + (1/2)v₁ - (1/4)v₂ - (1/4)v₃ = 8
  • g - (1/2)v₁ + v₂ - (1/2)v₃ = 16
  • g - (1/4)v₁ - (1/4)v₂ + (1/2)v₃ = 7

当设定v₃=0时,方程组简化为仅含g、v₁、v₂的三元一次方程组:

  1. g + 0.5v₁ - 0.25v₂ = 8
  2. g - 0.5v₁ + v₂ = 16
  3. g - 0.25v₁ - 0.25v₂ = 7

将其转化为矩阵形式 M * x = b,其中x = [g, v₁, v₂]^T,在R中可以用solve()函数直接求解:

# 构建系数矩阵M,每行对应一个方程中g、v1、v2的系数
M <- matrix(c(1,  0.5,  -0.25,
              1, -0.5,   1,
              1, -0.25, -0.25), 
            nrow = 3, byrow = TRUE)

# 常数项向量b
b <- c(8, 16, 7)

# 求解方程组
solution <- solve(M, b)
# 输出结果,对应g、v1、v2的解
solution

运行后得到的结果会与给定的解一致(浮点数计算可能存在微小误差):

[,1]
[1,] 9.2000
[2,] 1.3333
[3,] 7.4667

如果你想基于你已定义的矩阵A和向量q推导,可以从原方程的变形入手:原方程等价于 g + v = q + A %*% v(其中v = [v1, v2, v3]^T),移项得 g*rep(1,3) + (diag(3) - A) %*% v = q。当v3=0时,提取对应行和列,同样能得到上述的系数矩阵M和常数项b。

内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:47:46