使用 "curve" 绘制函数:一个棘手的表达式?
Using "curve" to plot a function: a tricky expression?
我的问题应该很简单,但我做不到。我的意思是您可以计算 x
和 y
,然后使用 plot
函数绘制它们。但这可以使用 curve
函数来完成吗?
我想绘制以下 R
函数 f2
:
n <- 1
m <- 2
f2 <- function(x) min(x^n, x^(-m))
但是这段代码失败了:
curve(f2, 0, 10)
有什么建议吗?
是否需要 curve
功能或者这个功能是否有效?
n <- 1 # assumption
m <- 2 # assumption
f2 <- function(x) min(x^n, x^(-m))
x.range <- seq(0, 10, by=.1)
y.results <- sapply(x.range, f2) # Apply a Function over a List or Vector
# plot(x.range, y.results) old answer
plot(x.range, y.results, type="l") # improvement per @alistaire
您需要使用矢量化 pmin
而不是 min
(查看 ?pmin
以了解差异)
f2 = function(x, n = 1, m = 2) {
pmin(x^n, x^(-m))
}
curve(f2, from = 0, to = 10)
附带说明一下,我会使用 f2
的 n
和 m
参数来避免全局变量。
更新
要为 不同的 参数 n
和 m
绘制 f2
你会做
curve(f2(x, n = 2, m = 3), from = 0, to = 10)
如前所述,调用 curve
失败的主要原因是 curve
需要一个向量化函数(在本例中输入一个结果向量并输出一个向量结果),而您的 f2() 函数仅输入和输出标量。您可以使用 Vectorize
动态矢量化您的 f2
n <- 1
m <- 2
f2 <- function(x) min(x^n, x^(-m))
curve(Vectorize(f2)(x), 0, 10)
我的问题应该很简单,但我做不到。我的意思是您可以计算 x
和 y
,然后使用 plot
函数绘制它们。但这可以使用 curve
函数来完成吗?
我想绘制以下 R
函数 f2
:
n <- 1
m <- 2
f2 <- function(x) min(x^n, x^(-m))
但是这段代码失败了:
curve(f2, 0, 10)
有什么建议吗?
是否需要 curve
功能或者这个功能是否有效?
n <- 1 # assumption
m <- 2 # assumption
f2 <- function(x) min(x^n, x^(-m))
x.range <- seq(0, 10, by=.1)
y.results <- sapply(x.range, f2) # Apply a Function over a List or Vector
# plot(x.range, y.results) old answer
plot(x.range, y.results, type="l") # improvement per @alistaire
您需要使用矢量化 pmin
而不是 min
(查看 ?pmin
以了解差异)
f2 = function(x, n = 1, m = 2) {
pmin(x^n, x^(-m))
}
curve(f2, from = 0, to = 10)
附带说明一下,我会使用 f2
的 n
和 m
参数来避免全局变量。
更新
要为 不同的 参数 n
和 m
绘制 f2
你会做
curve(f2(x, n = 2, m = 3), from = 0, to = 10)
如前所述,调用 curve
失败的主要原因是 curve
需要一个向量化函数(在本例中输入一个结果向量并输出一个向量结果),而您的 f2() 函数仅输入和输出标量。您可以使用 Vectorize
n <- 1
m <- 2
f2 <- function(x) min(x^n, x^(-m))
curve(Vectorize(f2)(x), 0, 10)