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

如何在R语言中求解含正整数约束的三维非线性不等式组

求解正整数非线性不等式组及可视化

一、生成所有解的元组列表

针对不等式组:

x*y >= 420
x*z >= 14
x*y*z < 5000

其中x、y、z为正整数,可通过R语言遍历筛选符合条件的组合,代码如下:

# 初始化空列表存储解
solutions <- list()
index <- 1

# 由x*y≥420、x*y*z<5000推导z≤11
for (z in 1:11) {
  # 由x*z≥14确定x的最小取值
  min_x <- ceiling(14 / z)
  # 由x*y*z<5000、y≥1确定x的最大取值
  max_x <- floor(4999 / z)
  if (min_x > max_x) next
  
  for (x in min_x:max_x) {
    # y的最小取值:满足x*y≥420的最小正整数
    min_y <- ceiling(420 / x)
    # y的最大取值:满足x*y*z<5000的最大正整数
    max_y <- floor(4999 / (x * z))
    if (min_y > max_y) next
    
    # 生成所有符合条件的y值并组合成元组
    for (y in min_y:max_y) {
      solutions[[index]] <- c(x, y, z)
      index <- index + 1
    }
  }
}

# 转换为数据框方便查看
sol_df <- do.call(rbind, solutions)
colnames(sol_df) <- c("x", "y", "z")
# 查看前几行解
head(sol_df)

运行后,sol_df即为所有符合条件的(x,y,z)元组数据框,可直接查看或导出。

二、三维可视化

静态三维散点图

使用scatterplot3d包绘制静态图:

# 首次运行需安装包
# install.packages("scatterplot3d")
library(scatterplot3d)

scatterplot3d(sol_df$x, sol_df$y, sol_df$z,
              xlab = "x", ylab = "y", zlab = "z",
              color = "darkblue", pch = 16,
              main = "正整数解的三维分布")

交互式三维散点图

使用plotly包生成可交互的可视化图:

# 首次运行需安装包
# install.packages("plotly")
library(plotly)

plot_ly(sol_df, x = ~x, y = ~y, z = ~z,
        type = "scatter3d", mode = "markers",
        marker = list(color = "darkblue", size = 3)) %>%
  layout(title = "正整数解的三维分布",
         scene = list(xaxis = list(title = "x"),
                      yaxis = list(title = "y"),
                      zaxis = list(title = "z")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:30:51