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

如何在R中绘制带约束的二元线性方程z = wx1 - (1-w)x2?

问题分析与代码改进

原代码无法运行的核心问题:

  • x1和x2未被赋值,仅写x1<=19266669.5只会生成一个逻辑值TRUE/FALSE,无法参与后续计算。
  • 约束条件x1<=19266669.5和x2<=52575341.065需要转化为给变量设定符合范围的具体数值,才能代入公式计算z。

方案1:固定符合约束的x1、x2值绘图

先给x1、x2指定约束范围内的具体值(比如取最大值,或任意符合条件的数值),再计算z并绘图:

# 生成w序列
w <- seq(0, 1, 0.1)

# 给x1、x2赋值(符合约束条件)
x1 <- 19266669.5  # 取约束上限,也可以设为比如10000000
x2 <- 52575341.065 # 取约束上限,也可以设为比如30000000

# 计算z值
z <- w * x1 - (1 - w) * x2

# 绘图
plot(w, z, type = "l", lwd = 2, col = "red", 
     main = "z = w*x1 - (1-w)*x2",
     xlab = "w", ylab = "z")

方案2:绘制多组x1、x2组合的曲线

如果想展示不同x1、x2(均符合约束)下的曲线变化,可以用循环生成多条线:

w <- seq(0, 1, 0.1)

# 定义多组符合约束的x1、x2组合
x_values <- list(
  list(x1 = 10000000, x2 = 20000000),
  list(x1 = 15000000, x2 = 40000000),
  list(x1 = 19266669.5, x2 = 52575341.065)
)

# 初始化绘图区域
plot(w, w*0, type = "n", 
     ylim = range(sapply(x_values, function(x) w*x$x1 - (1-w)*x$x2)),
     main = "z = w*x1 - (1-w)*x2 (不同x1、x2组合)",
     xlab = "w", ylab = "z")

# 循环绘制每条曲线
colors <- c("red", "blue", "green")
for (i in seq_along(x_values)) {
  x1 <- x_values[[i]]$x1
  x2 <- x_values[[i]]$x2
  z <- w * x1 - (1 - w) * x2
  lines(w, z, lwd = 2, col = colors[i])
}

# 添加图例
legend("topleft", legend = sapply(x_values, function(x) paste0("x1=",x$x1,"\nx2=",x$x2)),
       col = colors, lwd = 2)

内容的提问来源于stack exchange,提问作者Chouette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:13