20170919

内積の記号と、行列のかけ算で悩む

ベクトルを使った、法線の方程式の所で、悩んだので書いた。

何を悩む事があるのか

  • 内積は・で表現される。
  • 行列のかけ算も(普通のかけ算も)・で表す。(自分だけか。)
  • ベクトルを使った「一点を通る法線の方程式」の作り方で、上記二つが出てくる。

行列のかけ算は、行と列の向きが結構大事なのに、ベクトルの内積では、行列の向きをさほど意識していない(気がする)。

一般にベクトルは、n×1行列で…

ベクトルはn×1行列で書く。

$$\vec{v} = \left( \begin{array}{c} v_{x} \\ v_{y} \end{array}\right), \vec{w} = \left( \begin{array}{c} w_{x} \\ w_{y} \end{array}\right)$$
確かに、こんなん見たことあります。

座標は横長な事が多い気がする。

$$v = \left( \begin{array}{cc} v_{x}, & v_{y} \end{array}\right), w = \left( \begin{array}{cc} w_{x}, & w_{y} \end{array}\right)$$


しかも , が打ってある。

ベクトルを使った法線の方程式

ベクトルAPと垂直な法線のベクトルを考える。
$$\rm \vec{AP}\perp\vec{n}$$

$$\rm \vec{AP}\cdot\vec{n}=0$$
になる方程式が、法線の方程式だそうな
(この場合の・は、内積のドット。行列のかけ算ではない。

上の式の答えが0になる理由は、ベクトルAPとベクトルnが、90°の時の内積は0になるから、(cos90°=0を×ので)0になる。
$$\rm |\vec{AP}| |\vec{n}|\cos 90^{\circ}=|\vec{AP}| |\vec{n}|\times 0=0$$
2つのベクトル(片方は変数xを含む)の内積で、方程式が得られるのかぁ。

$$\rm \vec{AP}\cdot \vec{n}= AP\cdot n=0$$
左が内積の\cdot 、右が行列の掛け算の\cdot 。

$$\rm \vec{AP}\cdot \vec{n}= AP\cdot n = \{ \left( \begin{array}{ccc} a_{x} \\ a_{y} \end{array}\right) - \left( \begin{array}{ccc} x \\ y \end{array}\right) \} \cdot \left( \begin{array}{ccc} n_{x} \\ n_{y} \end{array}\right) =0$$

なぜ、縦向きのn×1行列で、横向きの1×n行列にしないのかという疑問で悩む。
このままだと両方縦向きなので、行列のかけ算をするときに行列の向きが、かけ算が定義できない形になる。

ベクトルの内積は縦のままでいいのか?

行列のかけ算

行列のかけ算の手順の直感的な説明はここらへんとか、
日本語では、geisyaサイトとか、で覚えるといいと思う。
とにかく、このままでは、かけ算できない。転置すべき。
でも、転置記号が書いてない。

$$\left( \begin{array}{c} a_{x}-x \\ a_{y}-y \end{array}\right) \cdot \left( \begin{array}{c} n_{x} \\ n_{y} \end{array}\right) =0$$

これじゃ、行列の掛け算ができないでしょ!

$$\rm \vec{AP}\cdot \vec{n}= (AP)^T \cdot n=0$$
こうすべきじゃないかと思った。

$$\left( \begin{array}{cc} a_{x}-x & a_{y}-y \end{array}\right) \cdot \left( \begin{array}{c} n_{x} \\ n_{y} \end{array}\right) =0$$

内積の書き方

Wikipedia「数学記号の表」の代数学の記号の下のほうに載ってたが、内積は、a・bの他にも<a,b>とか(a,b)なんかの書き方もある。

上記の内積記号の注意

注意したいのは大小比較(>とか<)ではなくtexでいうところの\langle, \rangleだという事。
並べてみるとわかるが、

$$\langle a,b \rangle$$ $$< a,b >$$
上が正しい内積。下が間違い。

$$\langle a,b \rangle$$ $$< a,b >$$

TeXで書くと、こう。

結局こうする

$$\rm \langle \vec{AP}, \vec{n}\rangle = \langle  \left( \begin{array}{c} a_{x}-x \\ a_{y}-y \end{array}\right) , \left( \begin{array}{c} n_{x} \\ n_{y} \end{array} \right) \rangle \\ =AP^T n=\left( \begin{array}{cc} a_{x}-x & a_{y}-y \end{array}\right) \cdot \left( \begin{array}{c} n_{x} \\ n_{y} \end{array}\right) \\ = \left. \begin{array}{cc} (a_{x}-x)\times n_{x} & + &(a_{y}-y)\times n_{y} \end{array}\right. =0$$

本当は中置記法で置く演算子が使いたい。

只、本当は、中置記法で置く演算子が使いたい。

・に代わる内積の記号を作ってほしい。
もしくは、行列のかけ算は、ほかの演算子でもいいのだろうか…



よく考えると、行列のかけ算の方がおかしいのかなぁとか考えてしまう。でも、縦長のまんまでもいいかも…

なんでひっくり返すんだよと。

内積の表記の方が、直感的でわかりやすい気がしてきた。

ただ、内積の表記は、最後に足し算をしなければならない点を忘れやすい気がする。

今まで勘違いしていた

行列のかけ算はドット積だと思っていた。

ベクトルの内積はドット積。
行列のかけ算はドット積と言う人はいない気がする。

勘違いした理由は、多分、numpyのnp.dotsで行列のかけ算をやっていたからだと思う。
ただ、numpyのリファレンスをよく読むと、

2-d配列だったら行列のかけ算、1-d配列だったら内積(innner product)と同等。N-dだったら…

と、ちゃんと書いてあった。結構ドット積という言葉をそこかしこで連発していたので、修正しなければ。

もうちょいで新しい動画が完成する。

もうちょいなんだが、そのもうちょいで時間を浪費している。
今回の内積云々も、その一環。

【数学の最新記事】
posted by yuchan at 07:00 | Comment(0) | 数学
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: