Кривая
Как я уже упоминал в своем комментарии, я не понимаю, почему вы хотите использовать curve
, так как он построен для приема одного диапазона чиселнапример, 1,2,3,4, а затем применяет формулу к нему.Это упрощает построение графика, поскольку входные числа образуют ось X (таким образом, 1,2,3,4 ...), а результаты формулы отображаются на оси Y.В вашем случае у вас нет одного входного диапазона (на самом деле у вас есть четыре диапазона: x1
, x2
, x3
и x4
), и вы не можете построить график в 5D, поэтому вам нужно выбрать один из x1:x4
для отображения на оси х.Также у вас есть 2 * x2 * x4 + x3 ( x1 - 2 * x4)
в качестве формулы, однако .. x3 ( ..
не может быть напрямую интерпретировано R, поэтому я добавил *, чтобы сделать 2 * x2 * x4 + x3 * ( x1 - 2 * x4)
, однако, если вы имели в виду, что X3 следует умножать на числа в скобках, вы должны отредактировать формулу вприведенный ниже код .
Альтернатива
Как вы упомянули, "x1 x2 x3 и x4 также должны иметь разные минимальные и максимальные значения", я бы предложил простонапишите свою собственную функцию построения графика, вот так (я теперь отобразил x1
на оси X):
range.plot <- function( func, x1.range, x2.range, x3.range, x4.range ) {
# Apply formula
res <- data.frame(x = x1.range, y = func(x1.range, x2.range, x3.range, x4.range))
# Plot using ggplot2
ggplot(res, aes(x, y)) + geom_line()
}
fun <- function(x1,x2,x3,x4){2 * x2 * x4 + x3 * ( x1 - 2 * x4)} # note the added *
range.plot(fun, seq(1,10), seq(10,29), seq(5,14), seq(1,10))
, которая будет создавать этот график: