gpt4 book ai didi

r - 如何找到使等式成立的所有变量组合(在 2 个阈值之间)?

转载 作者:行者123 更新时间:2023-12-05 01:03:40 24 4
gpt4 key购买 nike

给定方程:10 = 2x + 3y + 2z,我想找到使方程成立的 2 个阈值(例如 -100 和 100)之间的 x、y 和 z 的所有组合是的。

到目前为止,我已经尝试了以下但没有成功(请参阅评论):

set.seed(333)

result = 10

# sample random values from uniform distribution
x = runif(100, -100, 100)
y = runif(100, -100, 100)
z = runif(100, -100, 100)

# store the vectors in a single dataframe
df = data.frame(x, y, z)

# find all the combinations of x, y and z
expanded = expand.grid(df)

# calculation with all the combinations
expanded$result = ((expanded$x * 2) + (expanded$y * 3) + (expanded$z * 2)) == result

# show the data where result is 10
expanded[expanded$result, ]

[1] x y z result
<0 rows> (or 0-length row.names)

我将如何实现这一目标?

最佳答案

三个变量的线性方程可以被认为是 3D 空间中的一个平面。求解 z 的方程式,我们有:

z = 5 - x - 1.5 * y

所以我们至少可以看到解决方案的样子。让我们检查 x 和 y 的所有有效整数值:

df <- expand.grid(x = seq(-100, 100), y = seq(-100, 100))

然后我们可以得到对应的z值:

df$z <- 5 - df$x - 1.5 * df$y

但我们需要禁止任何低于 -100 或高于 100 的 z 值:

df$z[abs(df$z) > 100]  <- NA

我们可以绘制结果平面,z 值显示为填充颜色:

ggplot(df, aes(x, y, fill = z)) +
geom_raster() +
scale_fill_viridis_c() +
coord_equal()

enter image description here

这些一目了然,是你的方程在给定约束条件下的所有 25,184 个整数解(正如其他人所指出的,当然有无限多的非整数解),它是整个系统的合理近似.您可以使用

查看所有这些组合
df[!is.na(df$z),]

关于r - 如何找到使等式成立的所有变量组合(在 2 个阈值之间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73900804/

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