Created
April 23, 2019 17:06
-
-
Save shotahorii/23b2c6c197a4ed71c4df399ad8985a81 to your computer and use it in GitHub Desktop.
Inner Product of Vectors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Inner Product of Vectors\n", | |
"- [ベクトルの内積とは (大人になってからの再学習)](zellij.hatenablog.com/entry/20130216/p1)\n", | |
"- [内積の成分表示](https://高校数学.net/naiseki-seibun/)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/latex": [ | |
"二つのd次元ベクトル\n", | |
"<br><br>\n", | |
"$${\\bf a} = (a_1,a_2,...,a_d)^T$$<br>\n", | |
"$${\\bf b} = (b_1,b_2,...,b_d)^T$$\n", | |
"<br><br>\n", | |
"があるとき、この二つのベクトルの内積は以下のように定義される。\n", | |
"<br><br>\n", | |
"$$({\\bf a},{\\bf b}) = a_1b_1 + a_2b_2 + ... + a_db_d = \\sum_{i=1}^d a_ib_i \n", | |
"= {\\bf a}^T{\\bf b} = {\\bf b}^T{\\bf a}$$" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Latex object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%%latex\n", | |
"二つのd次元ベクトル\n", | |
"<br><br>\n", | |
"$${\\bf a} = (a_1,a_2,...,a_d)^T$$<br>\n", | |
"$${\\bf b} = (b_1,b_2,...,b_d)^T$$\n", | |
"<br><br>\n", | |
"があるとき、この二つのベクトルの内積は以下のように定義される。\n", | |
"<br><br>\n", | |
"$$({\\bf a},{\\bf b}) = a_1b_1 + a_2b_2 + ... + a_db_d = \\sum_{i=1}^d a_ib_i \n", | |
"= {\\bf a}^T{\\bf b} = {\\bf b}^T{\\bf a}$$" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**内積の意味** \n", | |
"内積はスカラーなので、ベクトルのように向きは無い。が、正負は存在する。 \n", | |
"2次元の場合において、内積の意味を考えてみる。 \n", | |
"\n", | |
"結論から入ると、内積は以下のように考えると意味を理解しやすい。 \n", | |
"```\n", | |
"二つのベクトルについて、一方のベクトル(どちらを選んでも同じ)の向きを基準方向とした時、\n", | |
"二つのベクトルの、基準方向への方向成分の大きさ(基準方向と真逆の向きの場合は負とする)の積を内積と呼ぶ。\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/latex": [ | |
"以下の二次元ベクトルを考える。\n", | |
"<br><br>\n", | |
"$${\\bf a} = (a_1,a_2)^T$$<br>\n", | |
"$${\\bf b} = (b_1,b_2)^T$$\n", | |
"<br><br>\n", | |
"仮にこの両ベクトルの第一成分をx軸、第二成分をy軸にとってイメージすると、原点からx軸方向に$$a_1$$,\n", | |
"y軸方向に$$a_2$$だけ進んだ点へのベクトルが$${\\bf a}$$であり、原点からx軸方向に$$b_1$$,\n", | |
"y軸方向に$$b_2$$だけ進んだ点へのベクトルが$${\\bf b}$$である。\n", | |
"<br><br>\n", | |
"ここで、イメージした二つのベクトルの間になす角度を仮に$$\\theta$$と置く。\n", | |
"<br><br>\n", | |
"さて、仮に基準方向を$${\\bf a}$$の向きとする。すると、ベクトル$${\\bf a}$$\n", | |
"の基準方向への方向成分の大きさは言うまでもなく$$|{\\bf a}|$$である。<br>\n", | |
"ベクトル$${\\bf b}$$の基準方向への方向成分の大きさはどうだろうか。<br>\n", | |
"これは、三角関数の定理を思い出すと、$$|{\\bf b}|cos\\theta$$であることが分かる。\n", | |
"<br>\n", | |
"すなわち、この両ベクトルの基準方向への大きさ成分を掛け合わせると、内積が以下のように求まる。<br><br>\n", | |
"$$({\\bf a},{\\bf b}) = |{\\bf a}||{\\bf b}|cos\\theta$$" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Latex object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%%latex\n", | |
"以下の二次元ベクトルを考える。\n", | |
"<br><br>\n", | |
"$${\\bf a} = (a_1,a_2)^T$$<br>\n", | |
"$${\\bf b} = (b_1,b_2)^T$$\n", | |
"<br><br>\n", | |
"仮にこの両ベクトルの第一成分をx軸、第二成分をy軸にとってイメージすると、原点からx軸方向に$$a_1$$,\n", | |
"y軸方向に$$a_2$$だけ進んだ点へのベクトルが$${\\bf a}$$であり、原点からx軸方向に$$b_1$$,\n", | |
"y軸方向に$$b_2$$だけ進んだ点へのベクトルが$${\\bf b}$$である。\n", | |
"<br><br>\n", | |
"ここで、イメージした二つのベクトルの間になす角度を仮に$$\\theta$$と置く。\n", | |
"<br><br>\n", | |
"さて、仮に基準方向を$${\\bf a}$$の向きとする。すると、ベクトル$${\\bf a}$$\n", | |
"の基準方向への方向成分の大きさは言うまでもなく$$|{\\bf a}|$$である。<br>\n", | |
"ベクトル$${\\bf b}$$の基準方向への方向成分の大きさはどうだろうか。<br>\n", | |
"これは、三角関数の定理を思い出すと、$$|{\\bf b}|cos\\theta$$であることが分かる。\n", | |
"<br>\n", | |
"すなわち、この両ベクトルの基準方向への大きさ成分を掛け合わせると、内積が以下のように求まる。<br><br>\n", | |
"$$({\\bf a},{\\bf b}) = |{\\bf a}||{\\bf b}|cos\\theta$$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/latex": [ | |
"ここで、$$({\\bf a},{\\bf b}) = |{\\bf a}||{\\bf b}|cos\\theta = a_1b_1 + a_2b_2$$\n", | |
"であるのは以下のように余弦定理を用いて証明される。\n", | |
"<br><br>\n", | |
"-----<br>\n", | |
"<b>余弦定理</b><br>\n", | |
"平面上の点O,A,Bが三角形OABを作るときに、点Oから点Aへのベクトルを$${\\bf a}$$、点Oから点Bへのベクトルを$${\\bf b}\n", | |
"$$、点Aから点Bへのベクトルを$${\\bf c}$$と置き、$${\\bf a}$$と$${\\bf b}$$のなす角を$$\\theta\n", | |
"$$と置くと、以下が成り立つ。<br>\n", | |
"$$|{\\bf c}|^2 = |{\\bf a}|^2+|{\\bf b}|^2-2|{\\bf a}||{\\bf b}|cos\\theta$$\n", | |
"<br>-----\n", | |
"<br><br>\n", | |
"余弦定理を変形して、以下を得る。\n", | |
"<br><br>\n", | |
"$$|{\\bf a}||{\\bf b}|cos\\theta = \\frac{|{\\bf a}|^2+|{\\bf b}|^2-|{\\bf c}|^2}{2}$$\n", | |
"<br><br>\n", | |
"ここで、$${\\bf c} = {\\bf b} - {\\bf a} = (b_1,b_2)^T-(a_1,a_2)^T = (b_1-a_1,b_2-a_2)^T$$である。\n", | |
"<br><br>\n", | |
"これを用いて余弦定理を変形して得た式をさらに変形する。\n", | |
"<br><br>\n", | |
"$$|{\\bf a}||{\\bf b}|cos\\theta = \\frac{|{\\bf a}|^2+|{\\bf b}|^2-|{\\bf c}|^2}{2}$$<br>\n", | |
"$$=\\frac{a_1^2+a_2^2+b_1^2+b_2^2-(b_1-a_1)^2-(b_2-a_2)^2}{2}$$<br>\n", | |
"$$=\\frac{a_1^2+a_2^2+b_1^2+b_2^2-b_1^2+2a_1b_1-a_1^2 -b_2^2+2a_2b_2-a_2^2}{2}$$<br>\n", | |
"$$=\\frac{2a_1b_1+2a_2b_2}{2} = a_1b_1+a_2b_2$$" | |
], | |
"text/plain": [ | |
"<IPython.core.display.Latex object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%%latex\n", | |
"ここで、$$({\\bf a},{\\bf b}) = |{\\bf a}||{\\bf b}|cos\\theta = a_1b_1 + a_2b_2$$\n", | |
"であるのは以下のように余弦定理を用いて証明される。\n", | |
"<br><br>\n", | |
"-----<br>\n", | |
"<b>余弦定理</b><br>\n", | |
"平面上の点O,A,Bが三角形OABを作るときに、点Oから点Aへのベクトルを$${\\bf a}$$、点Oから点Bへのベクトルを$${\\bf b}\n", | |
"$$、点Aから点Bへのベクトルを$${\\bf c}$$と置き、$${\\bf a}$$と$${\\bf b}$$のなす角を$$\\theta\n", | |
"$$と置くと、以下が成り立つ。<br>\n", | |
"$$|{\\bf c}|^2 = |{\\bf a}|^2+|{\\bf b}|^2-2|{\\bf a}||{\\bf b}|cos\\theta$$\n", | |
"<br>-----\n", | |
"<br><br>\n", | |
"余弦定理を変形して、以下を得る。\n", | |
"<br><br>\n", | |
"$$|{\\bf a}||{\\bf b}|cos\\theta = \\frac{|{\\bf a}|^2+|{\\bf b}|^2-|{\\bf c}|^2}{2}$$\n", | |
"<br><br>\n", | |
"ここで、$${\\bf c} = {\\bf b} - {\\bf a} = (b_1,b_2)^T-(a_1,a_2)^T = (b_1-a_1,b_2-a_2)^T$$である。\n", | |
"<br><br>\n", | |
"これを用いて余弦定理を変形して得た式をさらに変形する。\n", | |
"<br><br>\n", | |
"$$|{\\bf a}||{\\bf b}|cos\\theta = \\frac{|{\\bf a}|^2+|{\\bf b}|^2-|{\\bf c}|^2}{2}$$<br>\n", | |
"$$=\\frac{a_1^2+a_2^2+b_1^2+b_2^2-(b_1-a_1)^2-(b_2-a_2)^2}{2}$$<br>\n", | |
"$$=\\frac{a_1^2+a_2^2+b_1^2+b_2^2-b_1^2+2a_1b_1-a_1^2 -b_2^2+2a_2b_2-a_2^2}{2}$$<br>\n", | |
"$$=\\frac{2a_1b_1+2a_2b_2}{2} = a_1b_1+a_2b_2$$" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment