1 2次曲面との関係.

二次曲線 \(ax^2+2bxy+cy^2=1\) は、

 2次曲面 \(z= ax^2+2bxy+cy^2\) の \(z=1\) による切断面です。

  • 切断面が楕円ならば、2次曲面は楕円放物面.
  • 切断面が双曲線ならば、2次曲面は双曲放物面になります。

2変量関数の空間表示を体験しておくことは、後出の2変量正規分布のイメージづくりに役立ちます。

rglパッケージを用いると、plot3D( )関数を用いて3Dグラフィックスを作成することができます。
ブラウザ上ではグラフィックスの回転も可能です。サイト「ひょっこり統計」の高校生の統計学を参照してください。

1.1 楕円放物面.

  • \(z=5x^{2}+4xy+5y^{2}\).
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))

1.2 双曲放物面.

  • \(z=x^{2}-4xy+y^{2}\).
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))

1.3 平面による切断.

グラフィックスに平面を追加し、切断面をイメージすることもできます。

  • 平面 \(ax+by+cz+d=0\) をplanes3d( )関数で描画.
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)

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)