我试图绘制这个公式。当x从右边接近0时,y应该接近无穷大,所以我的曲线应该向上靠近y轴。相反,它会在y = 23左右时被切断。
my_formula = function(x){7.9*x^(-0.5)-1.3}
curve(my_formula,col="red",from=0 ,to=13, xlim=c(0,13),ylim=c(0,50),axes=T, xlab=NA, ylab=NA)
我试着和from= parameter
一起玩,实际上得到了我需要的东西
放from=-4.8
,但我不知道为什么会这样。事实上x并不小于0,并且from / to应该代表x值的范围,是吗?如果有人能向我解释,这将是惊人的!谢谢!
答案 0 :(得分:1)
默认情况下,curve
仅选择(from, to)
范围内的101个x值,由n
参数的默认值设置。在您的情况下,这意味着没有多少值足够接近0以显示函数的完整行为。增加使用n=500
之类的值绘制的值的数量有助于:
curve(my_formula,col="red",from=0 ,to=13,
xlim=c(0,13),ylim=c(0,50),axes=T, xlab=NA, ylab=NA,
n=500)
答案 1 :(得分:1)
这主要是因为my_formula(0)
是Inf
:
因此在from=0, to=13
中绘制curve
表示默认情况下您的前2个值(@Marius注释为101分):
# x
seq(0, 13, length.out=101)[1:2]
#[1] 0.00 0.13
# y
my_formula(seq(0, 13, length.out=101)[1:2])
#[1] Inf 20.61066
并且R不会绘制无限值来连接从第一个点到第二个点的线。
如果您的x轴上的0
尽可能接近系统上的curve(my_formula, col="red", xlim=c(0 + .Machine$double.eps, 13), ylim=c(0,50))
,那么您可以将此工作做好。例如:
Cleaners