2017-04-07 28 views
1

我試圖繪製這個公式。當x從右邊接近0時,y應該接近無窮大,所以我的曲線應該向上靠近y軸。相反,它在y = 23左右被切斷。當在R中繪製曲線時,一段曲線被切斷,不知道爲什麼

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) 
+0

非常感謝你@Marius!這工作完美! –

1

這主要是由於這樣的事實,my_formula(0)Inf

所以在curve繪製from=0, to=13意味着你的第一個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)) 
+0

謝謝,這工作!即使是「from = 0.0001」而不是from = 0的簡單版本也有所不同,我的功能作爲一個整體顯示。 –