{ "cells": [ { "cell_type": "markdown", "id": "ce1b1289", "metadata": {}, "source": [ "# テンソル微分によるベクトル解析\n", "\n", "勾配、ヤコビ行列、発散、回転は、同じ偏微分を異なる形に組み合わせた\n", "ものです。Egisonのテンソル記法を使うと、その組み合わせを明示しながら、\n", "記号式を読みやすく保てます。\n" ] }, { "cell_type": "markdown", "id": "2aa3e747", "metadata": {}, "source": [ "## スカラー場とベクトル場\n", "\n", "$\\mathbb R^3$ 上の多項式スカラー場とベクトル場を使います。これにより、\n", "すべての微分を記号的に保ちつつ、結果を容易に解釈できる形にします。\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "3cd7f5c8", "metadata": {}, "outputs": [], "source": [ "declare symbol x, y, z : MathValue\n", "\n", "def coords : Vector MathValue := [| x, y, z |]\n", "def f : MathValue := x ^ 2 * y + y ^ 2 * z + z ^ 2 * x\n", "def A : Vector MathValue := [| x * y, y * z, z * x |]\n" ] }, { "cell_type": "markdown", "id": "d1330125", "metadata": {}, "source": [ "## 勾配\n", "\n", "スカラーを座標ベクトルで微分すると、1階偏微分を成分とする共変ベクトルが\n", "得られます。\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "2430d10f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} z^{2} + 2 x y \\\\ 2 y z + x^{2} \\\\ y^{2} + 2 x z\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "∂/∂ f coords\n" ] }, { "cell_type": "markdown", "id": "aef47cfc", "metadata": {}, "source": [ "## ヤコビ行列\n", "\n", "微分演算子のベクトルをベクトル場に作用させると、完全なヤコビ行列が\n", "得られます。各行はそれぞれ $x$、$y$、$z$ による微分に対応します。\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "4e9a48d3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} y & 0 & z \\\\ x & z & 0 \\\\ 0 & y & x \\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "[| (\\e -> ∂/∂ e x), (\\e -> ∂/∂ e y), (\\e -> ∂/∂ e z) |] A\n" ] }, { "cell_type": "markdown", "id": "ae4a3e89", "metadata": {}, "source": [ "## 発散\n", "\n", "発散は、微分の添字とベクトル成分の添字を縮約したものです。\n", "\n", "$$\\nabla\\cdot A=\\partial_x A_x+\\partial_y A_y+\\partial_z A_z.$$\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "594092a2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$z + y + x$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "div A coords\n" ] }, { "cell_type": "markdown", "id": "6524bb7f", "metadata": {}, "source": [ "## 回転\n", "\n", "回転は、ヤコビ行列をレヴィ・チヴィタテンソルと縮約したもので、\n", "$(\\nabla\\times A)_i=\\varepsilon_{ijk}\\partial_jA_k$ となります。\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "596409cc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\begin{pmatrix} -y \\\\ -z \\\\ -x\\\\ \\end{pmatrix}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rot A coords\n" ] }, { "cell_type": "markdown", "id": "6e7a53a2", "metadata": {}, "source": [ "## 局所的な級数としての見方\n", "\n", "テンソル計算と級数展開は、同じ記号微分の仕組みを共有しています。\n", "$f$ を $x$ について0のまわりで展開すると、$y$ と $z$ は\n", "パラメーターとして扱われます。\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "9dd62aed", "metadata": {}, "outputs": [ { "data": { "text/html": [ "$\\{y^{2} z, x z^{2}, x^{2} y, 0\\}$" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "take 4 (taylorExpansion f x 0)\n" ] }, { "cell_type": "markdown", "id": "62bed616", "metadata": {}, "source": [ "勾配はすべての1階微分を保持し、発散はヤコビ行列のトレースを取り出し、\n", "回転はその反対称部分を取り出します。したがって、これらは互いに無関係な\n", "演算子ではありません。1つの微分テンソルから、縮約や対称性を異なる形で\n", "取り出したものです。\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 }