我刚刚开始在课堂上使用R,并且尝试绘制此函数:



首先,这是我的定义尝试。

> f<-function(x)
+ if(x<0) {
+ sin(x)
+ } else if (x>=2) {
+ 4*exp(x-2)
+ } else {
+ x^2 }


考虑到我得到的结果,我认为这是正确的:

> f(1)
[1] 1
> f(0)
[1] 0
> f(-1)
[1] -0.841471
> f(2)
[1] 4
> f(3)
[1] 10.87313


所以现在我要绘制它,但是我不确定哪个命令正确地执行了。我试过plot(f,x,y)是x&y,例如(-4,4)或(-2,3)的任何值,但是R给我警告消息。

最佳答案

1)尝试curve并确保首先对其进行矢量化:

fv <- Vectorize(f)
curve(fv, -4, 4)


给(截图后续):

r - 在R中绘制函数-LMLPHP

2)从一开始就以向量化方式替代定义f

g <- function(x) ifelse(x < 0, sin(x), ifelse(x >= 2, 4 * exp(x-2), x^2))
curve(g, -4, 4)


3)使用fvg也可以:

x <- seq(-4, 4, .1)
plot(x, fv(x), type = "l")

10-07 13:28