gpt4 book ai didi

r - R 中不等式系统的解决方案

转载 作者:行者123 更新时间:2023-12-03 23:38:31 25 4
gpt4 key购买 nike

假设我有以下不等式系统:

  -2x + y <= -3
1.25x + y <= 2.5
y >= -3
我想找到 (x, y) 的多个元组满足上述不等式。
library(Rglpk)

obj <- numeric(2)
mat <- matrix(c(-2, 1, 1.25, 1, 0, 1), nrow = 3)
dir <- c("<=", "<=", ">=")
rhs <- c(-3, 2.5, -3)

Rglpk_solve_LP(obj = obj, mat = mat, dir = dir, rhs = rhs)
使用上面的代码似乎只返回 1 个可能的解决方案元组 (1.5, 0) .是否可以返回其他解决方案元组?
编辑:根据评论,我有兴趣了解是否有任何功能可以帮助我找到角点。

最佳答案

实际上,为了理解给定问题的可能答案,我们可以尝试以图形方式解决不等式系统。
有一个不错的answer concerning plotting of inequations in R在 stackowerflow。使用给定的方法,我们可以绘制下图:

library(ggplot2)

fun1 <- function(x) 2*x - 3 # this is the same as -2x + y <= -3
fun2 <- function(x) -1.25*x + 2.5 # 1.25x + y <= 2.5
fun3 <- function(x) -3 # y >= -3
x1 = seq(-1,5, by = 1/16)
mydf = data.frame(x1, y1=fun1(x1), y2=fun2(x1),y3= fun3(x1))
mydf <- transform(mydf, z = pmax(y3,pmin(y1,y2)))
ggplot(mydf, aes(x = x1)) +
geom_line(aes(y = y1), colour = 'blue') +
geom_line(aes(y = y2), colour = 'green') +
geom_line(aes(y = y3), colour = 'red') +
geom_ribbon(aes(ymin=y3,ymax = z), fill = 'gray60')
enter image description here
所有可能的(无限的)元组都位于灰色三角形内。
可以使用以下代码找到顶点。
obj <- numeric(2)
mat <- matrix(c(-2, 1.25, 1, 1), nrow = 2)
rhs <- matrix(c(-3, 2.5), nrow = 2)

aPoint <- solve(mat, rhs)

mat <- matrix(c(-2, 0, 1, 1), nrow = 2)
rhs <- matrix(c(-3, -3), nrow = 2)

bPoint <- solve(mat, rhs)

mat <- matrix(c(1.25, 0, 1, 1), nrow = 2)
rhs <- matrix(c(2.5, -3), nrow = 2)

cPoint <- solve(mat, rhs)
备注 矩阵参数的顺序。
你得到坐标:
> aPoint
[,1]
[1,] 1.6923077
[2,] 0.3846154
> bPoint
[,1]
[1,] 0
[2,] -3
> cPoint
[,1]
[1,] 4.4
[2,] -3.0

关于r - R 中不等式系统的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67747669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com