二次曲線 \(ax^2+2bxy+cy^2=1\) は、
2次曲面 \(z= ax^2+2bxy+cy^2\) の \(z=1\) による切断面です。
2変量関数の空間表示を体験しておくことは、後出の2変量正規分布のイメージづくりに役立ちます。
rglパッケージを用いると、plot3D(
)関数を用いて3Dグラフィックスを作成することができます。
ブラウザ上ではグラフィックスの回転も可能です。サイト「ひょっこり統計」の高校生の統計学を参照してください。
options(rgl.printRglwidget = TRUE)
library(rgl)
x <- runif(5000, min = -1, max = 1)
y <- runif(5000, min = -1, max = 1)
z <- 5*x^2-4*x*y+5*y^2
plot3d(x, y, z, type = "s", col = "pink", size = 0.3,xlim=c(-1,1),ylim=c(-1,1),zlim=c(0,1))
close3d()
library(rgl)
x <- runif(5000, min = -1, max = 1)
y <- runif(5000, min = -1, max = 1)
z <- 1*x^2-4*x*y+1*y^2
plot3d(x, y, z, type = "s", col = "pink", size = 0.3,xlim=c(-1,1),ylim=c(-1,1),zlim=c(-1,0.5))
グラフィックスに平面を追加し、切断面をイメージすることもできます。
x <- runif(10000, min = -1, max = 1)
y <- runif(10000, min = -1, max = 1)
z <- 5*x^2 -4*x*y + 5*y^2
close3d()
plot3d(x, y, z, col = "lightblue", alpha = 0.8, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(0, 1))
planes3d(a = 0, b = 0, c = -1, d = 0.5, col = "pink", alpha = 0.2)
円錐は \(x^2+y^2=z^2\) で表されます。
陽関数として表示すると、
\(z=\sqrt{x^2+y^2}\).
この円錐の切断面として2次曲線を考えることができます。
\(z=0.3x+0.5\) は空間における平面を表します。
円錐をこの平面で切った切り口は楕円になります。
# 曲面データの生成
x <- runif(10000, min = -1, max = 1)
y <- runif(10000, min = -1, max = 1)
z <- sqrt(x^2 + y^2)
# 新しい3Dウィンドウを開く
close3d()
#options(rgl.printRglwidget = TRUE)
# 曲面を描画
plot3d(x, y, z, col = "lightblue", alpha = 0.3, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(0, 1))
# 切断面(平面)を描画
planes3d(a = 0.3, b = 0, c = -1, d = 0.5, col = "pink", alpha = 0.2)
# 曲面データの生成
x <- runif(10000, min = -1, max = 1)
y <- runif(10000, min = -1, max = 1)
z <- sqrt(x^2 + y^2)
# 新しい3Dウィンドウを開く
#options(rgl.printRglwidget = TRUE)
# 曲面を描画
plot3d(x, y, z, col = "lightblue", alpha = 0.3, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(-1, 1))
plot3d(x, y, -z, col = "lightblue", alpha = 0.3, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(-1, 1), add = TRUE)
# 切断面(平面)を描画
planes3d(a = 0.5, b = 0.5, c = 0, d = 0.5, col = "pink", alpha = 0.5)
平面の傾きを変えることで切り口は、
楕円、放物線、双曲線.
と変化します。
close3d()
# 新しい3Dウィンドウを開く
#options(rgl.printRglwidget = TRUE)
# 曲面を描画
plot3d(x, y, z, col = "lightblue", alpha = 0.3, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(-1, 1))
plot3d(x, y, -z, col = "lightblue", alpha = 0.3, type = 's', size = 0.3, xlim = c(-1, 1),ylim = c(-1, 1), zlim = c(-1, 1), add = TRUE)
# 切断面(平面)を描画
planes3d(a = 1, b = 0, c = -1, d = 0.5, col = "pink", alpha = 0.8)