Masahiro Takahashi @LeapMind

LeapMind の高橋がいろいろ書く予定の場所です。

Heart Curve の面積を求めよう。

LeapMind の高橋雅裕です。

この記事は、LeapMind Advent Calendar 2019 の 2 日目の記事です。

 

クリスマスですからね、カップルで楽しめる楽しめない、楽しいクイズと解説をお届けします。

果たして、2 人で愛の大きさは測れるのか?

 

世の中には Heart Curve と呼ばれる素敵な方程式 が存在します。私がネット上で見つけた、式が簡単で、かつ美しい Heart Curve は次の式で与えられます。

\begin{gather} \vec{r} (t) = (16 \sin^3 t, 13 \cos t - 5 \cos 2 t - 2 \cos 3 t - \cos 4 t),\\t: 0 \rightarrow 2 \pi. \end{gather}

 

美しいですね。

 

これは、つまり、\(t\) を \(0\) から \(2\pi\) まで動かしたときに、\(\vec{r} (t)\) はハートを描く位置ベクトルとなる、ということを言っています。

Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 -20 -15 -10 -5 0 5 10 15 -15 -10 -5 0 5 10 15 y x gnuplot_plot_1

問題は、このハートの面積を求めよ!です。

順番にステップバイステップで考えていきましょう。

実際に解くには、たくさん計算する根気と正確さが必要なので、力を合わせて頑張りましょう。

第 1 問

この経路でハートを描くと、ハートはどちら回りに描かれるか?

第 2 問

この経路を逆向きに進む位置ベクトル \(\vec{r} (t)\) はどの様に表されるか? ただし、\(t: 0 \rightarrow 2\pi\)。

第 3 問

この経路の各点での接線ベクトルはどう表されるか?

第 4 問

このハートの面積を求めたい。経路の接線ベクトルが分かっているので、面積分と線積分を繋ぎ合わせる「あの公式」を用いて求められそうだ。実際に求めてみよ!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

はい、ではここから解説です。これ以降は、実際に自分達の頭で考えた人のみ見てくださいね。ネタバレ注意!

 

(長いので知っているところは飛ばしてくださいね。)

 

高校数学の知識でも気合いで解けますが、以下の方がエレガントだったりして・・・?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

この問題は、ストークスの定理を使うとエレガントに解くことができます。線積分と面積分を関連づけるあの定理です。え、知らないですか? 大丈夫です。この記事で勉強しちゃいましょう。

 

ストークスの定理を説明する前に、線積分を知らない人のために、線積分の説明から始める。

積分について

積分を言葉だけで説明すれば、
「進む経路を決めて、ベクトル の中を進み、進行方向のベクトルの成分を全部足す」
ということである。

これだけ理解すれば全て終わりである。

とは言っても、各ことばをまずは理解する必要がある。簡単なことの積み重ねが必要である。以下、順番に用語の説明等を行いながら線積分の理解を試みる。

ベクトル場

ベクトル場というのは、空間上にベクトルがたくさんある状況をイメージすればよい。以下、簡単のために 2 次元で話を進める。

簡単なベクトル場の例として、以下のベクトル (\vec{v}_i (x,y)) を考える。

例 1) \(\quad\vec{v}_1 (x,y) = (x,y)\)

例 2) \(\quad\vec{v}_2 (x,y) = (y,x)\)

例 3) \(\quad\vec{v}_3 (x,y) = (\sin \theta, -\cos \theta), ~(x = r \cos \theta, ~y = r \sin \theta)\)

例 4) \(\quad\vec{v}_4 (x,y) = \frac{1}{\sqrt{x^2+y^2}} (y, -x)\)

上記のベクトルを順番に 2 次元座標に描いていくと、空間上のベクトルをイメージできるので、手順を追って順番に進める。

これを行うときに注意することは、「位置」と「ベクトル」をきちんと区別することである。手続きとしては、以下となる。

  1. 適当な座標 [(1,1) とか] を決める。その点に黒丸を描く。(図1, 3)
  2. 上で選んだ座標をベクトルの式に代入し、ベクトルを得る。
  3. 1 で選んだ座標から、2 で得たベクトルを描く。(図2, 4)
  4. 1 から繰り返す。

以下で、それを具体的にやってみるので、参考にして欲しい。 上の例についての解を以下に置いておくので、まずは自分でやってみて、答を確認してほしい。以上が自分でできるようになれば、とりあえず必要なことは理解できているはずだ。

例 1 の場合について具体的に上記の手続きを実行する。

f:id:MasaYan24:20191201213026p:plain

ベクトル場の描画方法

例 2-4 を同様に図示すると以下のようになる。

f:id:MasaYan24:20191201213309p:plain

ベクトル場の描画例2−4

※ \(\vec{v}_3\) と \(\vec{v}_4\) は描いているベクトルの場所が違うだけで同じベクトル場である。

経路

経路について説明する。図10 のように、青色で示した適当な曲線を考える。この線に沿って計算をするなら、この青色の曲線を経路と呼ぶ。経路の各点は \(\vec{r} (t)\) のように位置ベクトルで表される。そして、パラメーター \(t ~(\in \mathbb{R})\) を変えることで位置ベクトル \(\vec{r} (t)\) の先端は青色の経路の上を \(\vec{r}_0\) から \(\vec{r}_1\) まで動くものとする。\(\vec{r}_0\) を始点、\(\vec{r}_1\) を終点と呼ぶ。

f:id:MasaYan24:20191201213724p:plain

次に、具体的に線積分を行う経路を決める。もちろん後で線積分が計算できるように、数式で表さなければならない。例えば、図11 の経路 \(C_1\) (原点 \(O\) から (1, 0) へ直線的に動く経路) は次のように表すルールにしよう (経路 \(C_1\) なので位置ベクトルを \(\vec{r}_1 (t)\) と表すことにする。)。

f:id:MasaYan24:20191201213758p:plain

\[C_1: \vec{r}_1 (t) = (t, 0), ~t: 0 \rightarrow 1\] パラメーター \(t\) を \(0\) から \(1\) まで連続的に動かすと、\(\vec{r}_1 (t)\) は \(\vec{r}_1 (0) = (0,0)\) から \(\vec{r}_1 (1) = (1,0)\) まで連続的に動くことが分かる。経路の各点はもちろん位置ベクトルで表せるので経路自体も位置ベクトル \(\vec{r}_1\) で表されていることに気づいて欲しい。面倒でも、経路をきちんと書く習慣を付けた方がいいだろう。

他の経路について、必ず自分で経路の式を書こう。ちなみに答えは以下である。

\[C_2: \vec{r}_2 (t) = (1, t), ~t: 0 \rightarrow 1 \]

\[C_3: \vec{r}_3 (t) = (\cos t, \sin t), ~t: 0 \rightarrow \pi/4 \]

\[C_4: \vec{r}_4 (t) = (t,t), ~t: 1 \rightarrow 0 \]

\[C_4': \vec{r}_4' (t) = (t,t), ~t: 1/\sqrt{2} \rightarrow 0 \]

※ 答えは全て一案であり、他のたくさんのパラメーターの指定ができる。 例えば、 \[C_4: \vec{r}_4 (t) = (1 - t, 1 - t), ~t: 0 \rightarrow 1. \]

接線ベクトル

次に、経路に沿って進むときの方向ベクトル、つまり経路の接線ベクトルを求めることを考えよう。図のように、経路のパラメーター \(t\) を少し \(\Delta t\) だけ動かしたときの位置ベクトルの変化を考えれば良い。今、2 次元面内の移動を考えているので、各軸の方向 (\(x\) 方向と \(y\) 方向) の変化率を計算すれば良い。\(\vec{r} (t)\) から \(\vec{r} (t + \Delta t)\) へ動いたときの変位の \(x\) 成分と \(y\) 成分はそれぞれ、\(\Delta x (t) = x (t+\Delta t) - x (t)\)、\(\Delta y (t) = y (t + \Delta t) - y (t)\) なので、ベクトルの変位は、 \[\Delta \vec{r} (t) = \vec{r} (t + \Delta t) - \vec{r} (t) = (\Delta x (t), \Delta y (t)).\] そして変化率は、\(\Delta t\) 動く間の変位 (の \(\Delta t \rightarrow 0\) の極限値) なので、 \[\lim_{\Delta t \rightarrow 0} \frac{x (t+\Delta t) - x (t)}{\Delta t} = \frac{dx}{dt}, \quad \lim_{\Delta t \rightarrow 0} \frac{y (t+\Delta t) - y (t)}{\Delta t} = \frac{dy}{dt},\] を用いて、接線ベクトルは \[\frac{d\vec{r}}{dt} = \lim_{\Delta t \rightarrow 0} \frac{\Delta \vec{r}}{\Delta t} = \left ( \frac{dx}{dt}, \frac{dy}{dt} \right ).\]

f:id:MasaYan24:20191201213831p:plain

内積

内積の復習を行っておく。

内積はどういうものだったかというと、図13 のように片方のベクトルを基準に見たときの射影成分のかけ算という意味だった。射影というのは、ベクトルにライトを当てたときにできる影である。

f:id:MasaYan24:20191201213849p:plain

図では \(\vec{r}_1\) の射影成分 (影) を青線で表し、\(\vec{r}_2\) の射影成分を赤線で表している。2 つの図では光の当たる方向が違う。しかし、どちらで考えても、 \[\vec{r}_1 \cdot \vec{r}_2 = \left | \vec{r}_1 \right | \left ( \left | \vec{r}_2 \right | \cos \theta \right ) = \left ( \left | \vec{r}_1 \right | \cos \theta \right ) \left | \vec{r}_2 \right |. \] (つまり、赤線の長さ \(\times\) 青線の長さ)となり、値は変わらない。

そして、線積分の問題と関連づけると、片方のベクトルを進行方向の接線ベクトル、もう片方のベクトルをその場所でのベクトル場と思えば、「進行方向のベクトルの成分」はこれらのベクトルの内積に等しいことが分かる。

変数変換

念のため、変数変換も復習しておこう。

\(x\) の関数 \(f = f(x)\) を考える。次の積分 \[I = \int_{x_0}^{x_1} f (x) ~dx \] を考えるとき、実は \(x\) が \(t\) の関数であったとするなら \(x = x (t)\)、変数変換を行うと、上の積分は、 \[I = \int_{t_0}^{t_1} f (x(t)) \frac{dx}{dt} dt\] と書ける。ここで、\(t (x_0) = t_0\)、\(t (x_1) = t_1\) とおいた。

積分

結局、最初に文章で書いた内容を数式で表すと、線積分 \(I\) は以下になる。

\[I = \int_C \vec{v} (\vec{r}) \cdot d\vec{r}.\]

つまり、位置 \(\vec{r}\) での進行方向のベクトル \(d\vec{r}\) とベクトル場 \(\vec{v} (\vec{r})\) の内積を、経路 \(C\) 全体にわたって足し合わせる (\(\int_C\)) 計算を行うことを意味する。ここで、\(\vec{v} (\vec{r})\) と \(d\vec{r}\) は内積を行っているので、内積記号「\(\cdot\)」を忘れずに書こう。

\(d\vec{r}\) がどういうベクトルか復習することが重要である。接線ベクトルのところで学んだように、ある位置 \(\vec{r}\) とすぐそのとなりの位置 \(\vec{r} + d\vec{r}\) を考えると、\(d\vec{r}\) はその接線ベクトルである。

一方で、このままでは抽象的過ぎて、実際に計算するときには、以下の変数変換を行う。 \[I = \int_{t_0}^{t_1} \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r}(t)}{dt}dt\] ここで、経路 \(C\) の始点をパラメータで \(t_0\)、終点を \(t_1\) で表した。変数変換を、単純にベクトルのそれぞれの成分について行っている。この時点では、\(\frac{d\vec{r}(t)}{dt}\) はベクトルであることに注意すること。よって内積の記号「\(\cdot\)」を忘れず書こう。

再び、簡単な例として、ベクトル場が、\(\vec{v} (x,y) = (x, y)\)、経路を図11 の \(C_1\) として線積分を計算してみよう。前にやったように、\(C_1: \vec{r}_1 (t) = (t,0), t:0 \rightarrow 1\) である。形式的には線積分は、 \[I = \int_{(0,0)}^{(1,0)} \vec{v} (\vec{r}) \cdot d\vec{r} = \int_0^1 \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r} (t)}{dt} dt\] となる。変数変換の部分は、 \[\frac{d\vec{r} (t)}{dt} = \frac{d}{dt} (t, 0) = (1,0)\] となり、それに合わせてベクトルは、\(\vec{v} (x,y) = (x,y)\) なので、 \[\vec{v} (\vec{r} (t)) = \vec{v} (t,0) = (t, 0)\] となる。これらを代入して、 \begin{align*} I =& \int_0^1 \vec{v} (\vec{r} (t)) \cdot \frac{d\vec{r} (t)}{dt} dt \\=& \int_0^1 (t, 0) \cdot (1,0) ~dt = \int_0^1 t ~dt \\=& \left [ \frac{1}{2} t^2 \right ]_0^1 = \frac{1}{2}. \end{align*}

 

やっと、ストークスの定理が説明できる・・・(長い orz)。

ストークスの定理について

周回線積分と面積分をつなぎ合わせるストークスの定理について説明する。

概要

ストークスの定理は以下の式で表される。 \begin{equation} \oint_C \vec{A} (\vec{r}) \cdot d\vec{r} = \iint_S \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) ~d^2 S \end{equation}

つまり、ベクトル場 \(\vec{A} (\vec{r}) \) が与えられたとき、閉経路 (閉じた経路: スタートとゴールが同じで途中で交わらない経路) に沿って行った線積分 (左辺) は、ベクトル場 \(\vec{A} (\vec{r})\) のローテーション (回転) が閉経路 \(C\) の作る面 \(S\) を垂直に貫く成分の和 (右辺) に等しい、ということを言っている。

導出

まずは、閉経路 \(C\) の線積分はそれを小さく分割した閉経路 \(c_1, c_2, \dots\) の線積分の和に等しいことに気づくだろう。 図のように隣り合う \(c_i, c_{i+1}\) の線積分の重なる部分の寄与は打ち消しあうからである。

図: 経路の分割

つまり、線積分は以下のように分解できる。 \begin{align} \oint_C \vec{A} (\vec{r}) \cdot d\vec{r} & = \oint_{c_1} \vec{A} (\vec{r}) \cdot d\vec{r} + \oint_{c_2} \vec{A} (\vec{r}) \cdot d\vec{r} + \dots \\& = \sum_n \oint_{c_n} \vec{A} (\vec{r}) \cdot d\vec{r} \end{align}

つぎに、各経路 \(c_i\) を十分小さくとって、一辺 \(\epsilon ~(\ll 1)\) の正方形にする。

すると、この線積分は \(\vec{A} (\vec{r})\) の経路に対する回転具合を表すのではないだろうか。ベクトル場の局所的な回転具合 (回転の勢い) を表す計算はローテーションである。

次にこれを説明する。

まず、今考えている微小な正方形 (1 辺 \(\epsilon)\) の中心の位置を \(\vec{r}\) とする。分かりやすいように、\(x\) 軸と \(y\) 軸ににそれぞれ並行な 2 辺で囲まれる正方形を考えよう。これは適当に座標系を変換すれば一般的な話に拡張可能だ。各辺上のベクトル場は、辺の中点の値を用いよう。つまり、下右上左の各辺上のベクトル場は、\(\vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_y)\)、\(\vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_x)\)、\(\vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_y)\)、\(\vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_x)\) と表される。ここで、\(\vec{e}_x, \vec{e}_y\) は \(x, y\) 方向の単位ベクトルである。

これを用いると、この微小正方形の一周線積分はどうなるかというと、 \begin{align} &\oint_{c_i} \vec{A} (\vec{r}) \cdot d\vec{r}\\&\simeq \vec{A} (\vec{r} - \frac{\epsilon}{2} \vec{e}_y) \cdot \epsilon \vec{e}_x + \vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_x) \cdot \epsilon \vec{e}_y + \vec{A} (\vec{r} + \frac{\epsilon}{2} \vec{e}_y) \cdot (- \epsilon) \vec{e}_x + \vec{A} ( \vec{r} - \frac{\epsilon}{2} \vec{e}_x) \cdot (- \epsilon) \vec{e}_y \\&= \epsilon \left [ A_x (\vec{r} - \frac{\epsilon}{2} \vec{e}_y) + A_y (\vec{r} + \frac{\epsilon}{2} \vec{e}_x) - A_x (\vec{r} + \frac{\epsilon}{2} \vec{e}_y) - A_y ( \vec{r} - \frac{\epsilon}{2} \vec{e}_x) \right ] \end{align} ここで、\(A_x, A_y\) は \(\vec{A}\) の \(x, y\) 成分を表す。

さらに、\(\epsilon\) の 1 次までで近似すると、\begin{align} &\oint_{c_i} \vec{A} (\vec{r}) \cdot d\vec{r} \\ &\simeq \epsilon \left [ A_x (\vec{r}) - \frac{\epsilon}{2} \frac{\partial A_x (\vec{r})}{\partial y} + A_y (\vec{r}) + \frac{\epsilon}{2} \frac{\partial A_y (\vec{r})}{\partial x} - A_x (\vec{r}) - \frac{\epsilon}{2} \frac{\partial A_x (\vec{r})}{\partial y} - A_y (\vec{r}) + \frac{\epsilon}{2} \frac{\partial A_y (\vec{r})}{\partial x} \right ]\\&= \epsilon^2 \left [ \frac{\partial A_y (\vec{r})}{\partial x} - \frac{\partial A_x (\vec{r})}{\partial y} \right ] \\&= \epsilon^2 \left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{e}_z \end{align}

ここでは簡単のために、\(xy\)-平面に並行な微小正方形を考えたので、\(z\) 軸方向の単位ベクトル \(\vec{e}_z\) が現れたが、一般の場合には、微小正方形の法線ベクトル \(\vec{n} (\vec{r})\) が現れるはずです。

よって、一般的には、\(\left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{n} (\vec{r})\) を上の線積分の代わりに用いて、 \begin{equation} \sum_n \oint_{c_n} \vec{A} (\vec{r}) \cdot d\vec{r} \simeq \sum_n \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) \epsilon^2 \end{equation} となるだろう。

これをさらに右辺について、\(\epsilon \rightarrow 0\) の極限を取ることを考えると、これは微小面積 \(\epsilon^2\) について、\(\left [ \vec{\nabla} \times \vec{A} (\vec{r}) \right ] \cdot \vec{n} (\vec{r})\) を足し合わせる、面積分に置き換わることが分かるので、\begin{equation} \sum_n \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) \epsilon^2 \simeq \iint_S \left ( \vec{\nabla} \times \vec{A} (\vec{r}) \right ) \cdot \vec{n} (\vec{r}) ~d^2 S \end{equation} が得られる。

 

さぁ、ここまで全部読んだ読者はいるだろうか・・・。

ここまで来て、あー、なるほど、解ける、と気が付けば、かなりスッキリしているはずだ。おめでとう!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

もう少し、最後のヒントを。

結局線積分を計算するということが大体分かったと思う。では、ベクトル場はどうするのか?

 

 

それは、、、

 

 

積分を求めたいので、ベクトル場のローテーション部分に注目して、その被積分関数が定数になるようにベクトル場を選べばいいのではないか?

 

そうすれば、面積の定数倍、正確には、面積かけるベクトル場のローテーションの値、となるはずだ。

 

 

積分の結果を、この値で割れば、

 

 

愛の

 

 

大きさが

 

 

分かる・・・(感動のフィナーレ)

 

 

お付き合いいだだきありがとうございました m(_ _)m