機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

法線ベクトルと勾配

曲線 f(x,y)=0の点 (x,y)における法線ベクトルの1つは


\displaystyle \nabla f = \left(  \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} \right) \tag{1}

である。

という、基本的な公式の話なんですが、最初混乱してしまいました。というのも、「 \nabla fは勾配を表すんじゃなかったのか?法線ベクトルと方向が一致するわけないじゃないか、なぜこれが法線となるんだ?」と、恥ずかしながらけっこう真剣に悩んでしまったのです。*1しばらく悩んだ後、 f(x,y)=c曲線を表し、f(x,y)曲面を表すという基本的なことを再確認し、ようやく納得したのでした。

例えば f(x,y)=x^{2}+y^{2}としたとき、


\displaystyle \nabla f = (  2x,2y ) \tag{2}

となりますが、これは曲面 f(x,y)における勾配であり、曲線 f(x,y)=cにおける法線ベクトルとなります。まずそれぞれの曲面、曲線を図示すると、

f:id:opabinia2:20180127003114p:plain

のようになります。右図の曲線は、 cの値を適当に変えたものをいくつかプロットしています。曲線の式からも明らかですが、これは曲面の等高線になります。そしてこの等高線上に曲面の勾配を図示すれば、

f:id:opabinia2:20180127003345p:plain

のようになります。曲面 f(x,y)=x^{2}+y^{2}の勾配が原点から放射線状に広がっていくことは直感的にわかります。また、確かに曲線の法線ベクトルになっていそうです。数学的な確認ではなく、図からの感覚的なものになりますが、 f(x,y)における \nabla fは曲面の勾配ベクトルであり、曲線(等高線)の法線ベクトルになっていることが確認できました。これは言い換えれば、勾配は等高線に直交する、ということにもなります。

なお曲面 f(x,y,z)=0の点 (x,y,z)における法線ベクトルの1つは、同様の計算で求められ、


\displaystyle \nabla f = \left(  \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z} \right) \tag{3}

です。

*1:わかっている人には、一体何を悩んだのか理解不能と思いますが。