{ "cells": [ { "cell_type": "markdown", "id": "6b84cd39", "metadata": {}, "source": [ "# グラフ曲面のガウス曲率と平均曲率\n", "\n", "3次元ユークリッド空間内の曲面を、次のグラフとして表します。\n", "\n", "$$\n", "X(x,y)=(x,y,f(x,y)).\n", "$$\n", "\n", "このNotebookでは、第一基本形式と第二基本形式を導出し、ガウス曲率$K$と\n", "平均曲率$H$を計算します。Egisonは任意関数$f$の導関数を記号のまま\n", "扱います。\n" ] }, { "cell_type": "markdown", "id": "20fedc81", "metadata": {}, "source": [ "## 接平面\n", "\n", "座標接ベクトルは次のとおりです。\n", "\n", "$$\n", "X_x=(1,0,f_x),\\qquad X_y=(0,1,f_y).\n", "$$\n", "\n", "その外積は$(-f_x,-f_y,1)$なので、ノルムは\n", "$W=\\sqrt{1+f_x^2+f_y^2}$となります。\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "646ca5b2", "metadata": {}, "outputs": [], "source": [ "declare symbol x, y: MathValue\n", "\n", "def f : MathValue := function (x, y)\n", "def X : Vector MathValue := [| x, y, f x y |]\n", "\n", "def vx : Vector MathValue := [| 1, 0, ∂/∂ (f x y) x |]\n", "def vy : Vector MathValue := [| 0, 1, ∂/∂ (f x y) y |]\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "05ae2f83", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} 1 \\\\ 0 \\\\ \\frac{\\partial f}{\\partial 1}\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vx\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "0b25d70b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} 0 \\\\ 1 \\\\ \\frac{\\partial f}{\\partial 2}\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vy\n" ] }, { "cell_type": "markdown", "id": "3a274d02", "metadata": {}, "source": [ "## 向き付けられた単位法線\n", "\n", "上向きの法線を選びます。\n", "\n", "$$\n", "n=\\frac{X_x\\times X_y}{\\lVert X_x\\times X_y\\rVert}.\n", "$$\n", "\n", "この向きを反転すると$H$の符号は変わりますが、$K$は変わりません。\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "e6d2b7e5", "metadata": {}, "outputs": [], "source": [ "def normalNumerator : Vector MathValue := crossProduct vx vy\n", "def W : MathValue := sqrt (V.* normalNumerator normalNumerator)\n", "def normal : Vector MathValue := normalNumerator / W\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "cfbc0b09", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} -\\frac{\\partial f}{\\partial 1} \\\\ -\\frac{\\partial f}{\\partial 2} \\\\ 1\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "normalNumerator\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "ab6a31ad", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} -\\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial f}{\\partial 1} \\\\ -\\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial f}{\\partial 2} \\\\ \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1}\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "normal\n" ] }, { "cell_type": "markdown", "id": "e9ad7a25", "metadata": {}, "source": [ "## 第一基本形式と第二基本形式\n", "\n", "次のようにおくと、\n", "\n", "$$\n", "I=E\\,dx^2+2F\\,dx\\,dy+G\\,dy^2,\n", "\\qquad\n", "II=L\\,dx^2+2M\\,dx\\,dy+N\\,dy^2,\n", "$$\n", "\n", "各係数は、接ベクトルどうしの内積、および接ベクトルの導関数と\n", "選んだ法線との内積として求められます。\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "b7d717ed", "metadata": {}, "outputs": [], "source": [ "def E : MathValue := V.* vx vx\n", "def F : MathValue := V.* vx vy\n", "def G : MathValue := V.* vy vy\n", "\n", "def L : MathValue := V.* (∂/∂ vx x) normal\n", "def M : MathValue := V.* (∂/∂ vx y) normal\n", "def N : MathValue := V.* (∂/∂ vy y) normal\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "c0c97a16", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$(\\frac{\\partial f}{\\partial 1}^{2} + 1, \\frac{\\partial f}{\\partial 1} \\frac{\\partial f}{\\partial 2}, \\frac{\\partial f}{\\partial 2}^{2} + 1)$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(E, F, G)\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "08c7dbf4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$(\\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 1^2}, \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 1 \\partial 2}, \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 2^2})$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(L, M, N)\n" ] }, { "cell_type": "markdown", "id": "81e8100a", "metadata": {}, "source": [ "## 曲率\n", "\n", "形作用素の行列式とトレースから、次の式が得られます。\n", "\n", "$$\n", "K=\\frac{LN-M^2}{EG-F^2},\\qquad\n", "H=\\frac{EN-2FM+GL}{2(EG-F^2)}.\n", "$$\n", "\n", "これらの公式は、グラフ座標が正則なすべての点で成り立ちます。\n", "グラフ曲面では$EG-F^2=1+f_x^2+f_y^2$は常に正です。\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "5ac914cc", "metadata": {}, "outputs": [], "source": [ "def K : MathValue := (L * N - M^2) / (E * G - F^2)\n", "def H : MathValue := (E * N - 2 * F * M + G * L) / (2 * (E * G - F^2))\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "c0fe438c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\frac{-\\frac{\\partial^2 f}{\\partial 1 \\partial 2}^{2} + \\frac{\\partial^2 f}{\\partial 1^2} \\frac{\\partial^2 f}{\\partial 2^2}}{\\frac{\\partial f}{\\partial 2}^{4} + \\frac{\\partial f}{\\partial 1}^{4} + 2 \\frac{\\partial f}{\\partial 1}^{2} \\frac{\\partial f}{\\partial 2}^{2} + 2 \\frac{\\partial f}{\\partial 2}^{2} + 2 \\frac{\\partial f}{\\partial 1}^{2} + 1}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "K\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "d7f9d8da", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\frac{\\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 1^2} \\frac{\\partial f}{\\partial 2}^{2} + \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial f}{\\partial 1}^{2} \\frac{\\partial^2 f}{\\partial 2^2} - 2 \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial f}{\\partial 1} \\frac{\\partial^2 f}{\\partial 1 \\partial 2} \\frac{\\partial f}{\\partial 2} + \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 2^2} + \\sqrt{\\frac{\\partial f}{\\partial 2}^{2} + \\frac{\\partial f}{\\partial 1}^{2} + 1}^{-1} \\frac{\\partial^2 f}{\\partial 1^2}}{2 \\frac{\\partial f}{\\partial 2}^{2} + 2 \\frac{\\partial f}{\\partial 1}^{2} + 2}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "H\n" ] }, { "cell_type": "markdown", "id": "488fe260", "metadata": {}, "source": [ "## 幾何学的な意味\n", "\n", "$K$は内在的な量であり、曲面上で測った距離だけから完全に復元できます。\n", "その値が正、0、負である場合は、それぞれ局所的な楕円型、放物型、\n", "双曲型の振る舞いに対応します。一方、$H$は外在的な量で、埋め込みと\n", "向きに依存します。方程式$H=0$はグラフ曲面の極小曲面方程式です。\n" ] } ], "metadata": { "kernelspec": { "display_name": "Egison", "language": "egison", "name": "egison" }, "language_info": { "codemirror_mode": "egison", "file_extension": ".egi", "mimetype": "text/x-egison", "name": "egison" } }, "nbformat": 4, "nbformat_minor": 5 }