スマホ用は別頁
=== 読者が配色を変更したい場合 ===
◎外側の色を変えるには,次の色をクリック
◎内側の色を変えるには,次の色をクリック
標準文字色を変えるには,次の色をクリック
《体験・入門レベル》
== Rによるグラフの表示 ==
R version 4.0.3, 4.0.4Patched
----- 最終更新年月日:2021.4.04
この教材は,体験・入門のレベルで,30分から1時間ほどで「そこそこ分かる」ことを目指す.
関数のグラフ
具体例からスタート
(1) Rのコンソール画面で,次のように入力すると,y=sinxのグラフが表示される.
curve(sin)
• Rに組み込まれている関数は,curve( )の中に関数名を書く[sinなど]かxを変数として関数を書けば[sin(x)など],その関数の概形が表示される.
• この例のように,区間を省略すれば0.0≦x≦1.0の区間で関数が表示される.
(2) 第2引数,第3引数として数値を記入すれば,各々グラフを表示する区間の下端と上端を表す.
curve(sin(2*x), 0, pi)
• 正弦関数を省略せずに書くときはsin(x)と書く.sin2xはsin(2*x)と言う形で定数との積で書く
• 円周率は記号定数piで表す.この他,自然対数の底[ネイピア数]を表す記号定数はないので,指数関数を使ってexp(1)とすればよい.
 from= , to= という名前付きタグによって区間の下端と上端を表す場合は,第2第3引数以外の場所に記入してもよい.
curve(cos(x/2),to=pi,from=-pi)

関数の例:一覧
 関数は,xの関数として書かなければならない.ただし,変数名そのものの「x」だけというものは受け付けられないが,「1*x」や「x+0」はよい.
1 多項式,分数式
(1.1) 1次関数書き方(区間は例)
curve(1*x, -1, 1)

-- グラフ1.1 --
(1.2) 1次関数書き方(区間は例)
curve(-1/2*x+1, from=-1, to=2)

-- グラフ1.2 --
(1.3) 2次関数書き方(区間は例)
curve(x^2-4*x+3,0,5,col="#0000ff")

-- グラフ(1.3) --
col="#0000ff"により,線の色を青に指定
(1.4) 3次関数書き方(区間は例)
curve((x+1)*(x-1)*(x-2),-2,3,col="red")

-- グラフ(1.4) --
col="red"により,線の色を赤に指定

(1.5) 分数関数書き方(区間は例)
curve(1/((x-1)*(x-2)), 0,3, ylim=c(-10, 10))

-- グラフ(1.5) --
 そのまま表示するとy方向は極端に大きな値が表示される.
 ylim=c(下端, 上端)により,y座標のうちで表示する範囲を指定できる
 なお,縦線は漸近線ではなく,−∞から∞を結んでしまった「失敗の線」
2 無理関数
(2.1) 無理関数書き方(区間は例)
curve(sqrt(x), 0, 4)

-- グラフ2.1 --
• curve(x^(1/2), 0, 4)でも同じグラフが描ける.
• x<0のときこの関数は定義されないが,描画区間として負のx座標を指定した場合
curve(sqrt(x), −1, 1)⇒警告付きだがグラフは表示される
curve(x^(1/2), −1, 1)⇒警告なしでグラフが表示される
いずれもx≧0の区間においてのみグラフがある

*** 読み物 ***
 高校数学Uでは,累乗根について,次のように教える.
 は実数,は正の整数とするとき,となる実数乗根という.
(@) が奇数のとき

【例1】

(A) が偶数のとき
のとき,乗根は正負の2つ存在する.

【例2】

(B) は正の整数とするとき,

が成り立つ.また,このとき

が成り立つ.
 以上が,高校数学Uの教科書に書かれている公式見解であるが,逆に言えば次のことは何も書かれていない・・・つまり,何も決まっていないのだから.各コンピュータ・ソフトなどが,別の解釈をしていても,どれかが正しくて,どれかが間違っているということではない(と,この教材の筆者は考える).
【例A】
について
• @高校数学Uの教科書の立場では,になる.この結果は,AMaxima, BExcelにおいて(-1)^(1/3)と入力したときの結果と一致する.
• CPythonでは累乗の記号は**となっており,(-1)**(1/3)と入力したときの結果は,[実際には小数表示であるが]になる.高校数学Uの累乗根は,実数の範囲で結果を求めているのに対して,Pythonでは複素数の範囲で求めて,ド・モアブルの定理を使って,正の最小偏角を持つ原始n乗根を解としている.
• DRでは,nが偶数であろうが奇数であろうがのときのの値は,問答無用で定義されない・・・統計では,使わないということかも.

【例B】
について

maximaExcel数U
−1−1*定義されない
−1定義されない定義されない
111
−1−1−1

*定義されないの箇所について:
 筆者は,少なくとも30年間,高校でこの問題は教えていない.教科書的にも,
ならば,は言えるが,
のとき,の話はあるが,は決まっていない.さらに,などは全然言えない.
• CPython:
• DR:定義されない
【例C】
について

maximaExcel数U
条件付
1
定義されない定義されない
1定義されない定義されない
1定義されない定義されない
111
111

以上から,予想される各ソフトの傾向(筆者の予想)
• 各ソフトにおいて,という演算はないから,で代用する.
のときの結果は
AMaxima:小数の場合も,分数の場合も,分数を約分した結果で答える.
BExcel:指数が小数の場合は定義されない.指数の分子が1でない分数の場合も定義されない.指数の分子が1の分数の場合は,数学Uの定義と一致する.
 Excelのワークシート関数は,高校数学Uで教えることにかなり忠実に一致する.
 決まっていないことには,不用意に答えない.
CPython:実数の累乗根が定まる場合でも,解を複素数の範囲で求め,ド・モアブルの定理を使って,正の最小偏角を持つ原始n乗根を返す.
DR:負の数に対する累乗根は,すべて定義されないものとする.

3 指数関数
(3.1) 指数関数書き方(区間は例)
curve(exp(2*x), -1, 1)

--グラフ(3.1)--
※自然対数の底(ネイピア数)は記号定数にされていないが,exp(1)が使える.
(3.2) 関数 curve(exp(-0.5*x))
curve(exp(-0.5*x), from=-2, to=2, col="#ff0000",
xlim=c(-2,2),ylim=c(-1,3)) par(new=T) lines(c(-2,2),c(0,0),lty="dotted",col="gray") par(new=T) lines(c(0,0),c(-1,3),lty="dotted",col="gray")

--グラフ(3.2)--
• 線の太さは
 lwd=1,2,3,・・・
などで指定できる(大きいほど太くなる)
• 線種(line-style)は
 lty=番号またはlty="solid"
の形で指定できる.
lty=1 または lty="solid" (実線)
lty=2 または lty="dashed" (ダッシュ)
lty=3 または lty="dotted"(鎖線ドット)
・・・
lty=6 または lty="twodash"(2点鎖線)


4 対数関数
(4.1) 対数関数
curve(log(x),xlim=c(0,3),ylim=c(-5,2),n=500) #・・・(1)
par(new =T)                                  #・・・(2)
curve(log10(x),col="#009900",xlim=c(0,3),
ylim=c(-5,2),n=500) #・・・(3) par(new =T) curve(log2(x),col="red",xlim=c(0,3),
ylim=c(-5,2),n=500) #・・・(4) par(new =T) curve(log(x,base=10)+0.1,col="#009900",xlim=c(0,3),
ylim=c(-5,2),n=500) #・・・(5) par(new =T) curve(log(x, 2)+0.1,col="red",xlim=c(0,3),
ylim=c(-5,2),n=500) #・・・(6)
(1) 対数関数のグラフは,curve(log(x, base=...))の形で書かれる.base=で底を示すが,これが省略された場合は,base=exp(1)すなわち自然対数の底(ネイピア数)が底となる.
(2) この例のように,2つ以上のグラフを上書きするときは,後から描くグラフの前にpar(new=T)を付ける.
 また,グラフを重ねて描くためには,x座標の値の範囲xlim=c(left,right)およびy座標の値の範囲ylim=c(bottom,top)を各グラフで共通にしておく必要がある.
(3) 底が10の対数は,log10(x)と書くか,または,(5)のように log(x, base=10)と書く.(3)(5)は同じグラフになり,完全に重なるため見えなくなるので,(5)の方のy座標を+0.1だけ上げてある.
(4)(6) 底が2の対数は,log2(x)と書くか,または,log(x, base=2)と書く.(6)の方はのy座標を+0.1だけ上げてある.
※ n=という名前タグ付き引数は,「与えられた区間を何個のx座標に区切って表すか」を示す=実際には,関数のグラフは「微細な区間に区切った折れ線」で表されており,「何等分して表示するか」ということをこのn=という引数が示す.区間と点の数は「植木算」の関係にあるから,区間がm個なら点はm+1個になる.n=という点の数が省略された場合はn=101すなわち100等分した点を結んで折れ線が作られることになる.
 このグラフのように,x≒0のとき「グラフが急傾斜になる場合」,デフォルト設定のn=101では,うまく曲線が描けないので,n=500に増やした.


5 三角関数
(5.1) 三角関数書き方(区間は例)
curve(sin(3*x-pi/2), 0, 2*pi)
• 単に sin と書けば,sin(x)の省略形と解される.
はsin(3*x),
sin(3*x-pi/2)と書く.
(5.2) のグラフ(黒色)とその振幅を表す関数および を重ねて表示する.
curve(exp(x)*cos(4*x), -pi/2, pi/2,
xlim=c(-pi/2,pi/2),ylim=c(-5,5)) par(new=T) curve(exp(x),-pi/2,pi/2, col="blue",
xlim=c(-pi/2,pi/2),ylim=c(-5,5)) par(new=T) curve(-exp(x),-pi/2,pi/2, col="red",
xlim=c(-pi/2,pi/2),ylim=c(-5,5))


6 逆三角関数
【逆三角関数とは】
[1] のグラフは,次の図の内で黒色の部分になる.
 この関数の逆向きの対応は

になるが,これをについて解きなおした関数を次の形で書き,逆三角関数という.
またはまたは

 (上の図の赤線の部分になる)
 Rでは asin(x)を使う.
[2][3] 同様にしてy=cos(x), y=tan(x)に対応する逆三角関数を,acos(x), atan(x)で表す.
(6.1)
curve(acos(x), 1, -1, xlim=c(-1,1),
ylim=c(-1,pi)) par(new=T) lines(c(-1,1),c(0,0),col="blue", xlim=c(-1,1),
ylim=c(-1,pi)) par(new=T) lines(c(0,0),c(-1,pi),col="red", xlim=c(-1,1),
ylim=c(-1,pi))
• 黒色は



のグラフ
• 青はx軸,赤はy軸

7 双曲線関数
【双曲線関数とは】
 指数関数を使って次のように定義される関数を双曲線関数という.
…(1)
…(2)
…(3)
(7.1)
curve(sinh(x), -3,3,xlim=c(-3,3),ylim=c(-3,3),
col="red") par(new=T) curve(cosh(x), -3,3,xlim=c(-3,3),ylim=c(-3,3),
col="blue") par(new=T) curve(tanh(x), -3,3,xlim=c(-3,3),ylim=c(-3,3),
col="green") par(new=T) lines(c(-3,3),c(0,0),col="gray") par(new=T) lines(c(0,0),c(-3,3),col="gray")
• 赤はのグラフ
• 青はのグラフ
• 緑はのグラフ
• 灰色は座標軸

8 逆双曲線関数
【逆双曲線関数とは】
 をyについて解いた関数をで表す.も同様
 逆双曲線関数については,次の関係が成り立つ.
・・・@
・・・A
(ただし第1象限だけ)
・・・B
 これらを確かめるために,左辺の関数のグラフ,右辺の関数のグラフを別々に描いた.ただし,完全に重なると見えなくなるから,y方向に+0.05だけ移動した
(8.1)
curve(asinh(x), -2,2,xlim=c(-2,2),
ylim=c(-2,2),col="red") par(new=T) curve(acosh(x), -2,2,xlim=c(-2,2),
ylim=c(-2,2),col="blue") par(new=T) curve(atanh(x), -2,2,xlim=c(-2,2),
ylim=c(-2,2),col="darkgreen") par(new=T) curve(log(x+sqrt(x^2+1))+0.05, -2,2,
xlim=c(-2,2),ylim=c(-2,2),col="red") par(new=T) curve(log(x+sqrt(x^2-1))+0.05, -2,2,
xlim=c(-2,2),ylim=c(-2,2),col="blue") par(new=T) curve(1/2*log((1+x)/(1-x))+0.05, -2,2,
xlim=c(-2,2),ylim=c(-2,2),col="darkgreen") par(new=T) lines(c(-2,2),c(0,0),col="gray") par(new=T) lines(c(0,0),c(-2,2),col="gray")
• 赤はおよびのグラフ
• 青はおよびのグラフ
(ただし第1象限だけ)
• 緑はおよびのグラフ
• 灰色は座標軸

9 正規分布関数
(9.1)
正規分布の確率密度関数 dnorm
curve(dnorm(x, mean = 0, sd = 1, log = FALSE),xlim=c(-3,3))
(9.2)
正規分布の累積密度関数 pnorm
curve(pnorm(x, mean = 0, sd = 1, log = FALSE),xlim=c(-3,3))
...(PC版)メニューに戻る