2017-04-07 3 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より小さくならず、/からはxの値の範囲を表す必要がありますか?もし誰かがそれを私に説明できたら、これはすばらしいことになるでしょう!ありがとうございました!

+0

質問にチェックマークを付けることで、あなたの質問にマークを付けてください。 –

答えて

1

デフォルトでは、curve(from, to)の範囲内の101 x値を選択し、n引数のデフォルト値で設定します。あなたの場合、これは、関数の完全な振る舞いを示すために0に近い値を多く持たないことを意味します。 n=500のようなものでプロットされる値の数を増やすことができます:

のでcurvefrom=0, to=13をプロットすると、あなたの最初の2つの値がデフォルトであることを意味:

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

ありがとう@マリアス!これは完全に機能しました! –

1

これは主にmy_formula(0)Infであるという事実によるものです(@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は二番目の第1の点から線を結合するために無限の値をプロットしないであろう。

システム上で可能な限りx軸に0に近づけば、この作業を大丈夫にすることができます。たとえば:

curve(my_formula, col="red", xlim=c(0 + .Machine$double.eps, 13), ylim=c(0,50)) 
+0

ありがとう、これは働いた!! = 0の代わりに "from = 0.0001"を作るより単純なバージョンでさえ、違いがあり、私の関数は全体として表示されます。 –

関連する問題