メインコンテンツへスキップ
CalcMax

内積計算

計算結果

8.0000

内積

ベクトルuの大きさ
3.0000
ベクトルvの大きさ
3.0000
ベクトル間の角度
27.2660 °

内積計算ツールは、2つのベクトルから、その内積と、それぞれのベクトルの大きさ、そして2つのベクトルの間の角度を求めます。入力はベクトルの成分を空白またはカンマと空白で区切って並べたものです。3次元なら「1 2 2」、2次元なら「0 3」のように入力してください。ベクトルとは、大きさと向きの両方を持つものを表す数の並びです。北東から吹く秒速30メートルの風、斜め下と横に同時に押す力、カメラが向いている方向などがそうです。2つのベクトルの内積は、1つ目の成分どうし、2つ目の成分どうし、3つ目の成分どうしを掛けて、その積をすべて足し合わせて求まります。この1つの数は、2つのベクトルが互いにどちらを向いているかを語っていて、ゲームの照明計算から物理学の仕事の定義まで、あらゆる場所に現れます。値は2つが同じ向きのときに最も大きく、直角のときに0になり、反対向きのときに負になります。このページはそれをそのまま角度に変換します。内積は、2つの大きさを掛けたものに、2つのなす角のコサインを掛けたものに等しいという関係を使います。変形するとコサインは内積を2つの大きさの積で割ったものになり、角度はその逆コサインです。見てすぐ分かる答えが3つあります。内積が0なら2つのベクトルは垂直です。90度のコサインが0だからで、これがこのページの最も役に立つ使い道です。何も測らずに2つの向きが直角かどうかを調べられます。同じベクトルなら角度は0度になり、向きが同じだからです。逆向きなら180度になります。1つだけ拒否する入力があります。向きを持たないゼロベクトルです。ゼロベクトルとの内積は何であれ0になり、角度を出すために大きさで割ると0での割り算になります。そこでこのページは、穴の空いた中途半端な答えを返すのではなく、計算そのものを断ります。それ以外は受け付けます。長さがいくつでもよく、2つのベクトルで成分の数がそろっている必要はありますが、成分が負の数でもかまいません。左や下を向いたベクトルはそう書きます。

よく出てくるベクトルの組と、その結果

ベクトルuベクトルv内積|u||v|角度(°)
1 2 22 2 183327.266
3 4 04 3 0245516.2602
1 00 101190
1 1 11 1 131.73211.73210
1 2 34 5 6323.74178.77512.9332
-1 0 01 0 0-111180
2 -34 5-73.60566.4031107.6501
1 23 4112.2361510.3048

8組のベクトルのペアを並べたもので、1行目はこのページが開いたときに入っている既定値です。見てすぐ分かる3つの答えは、行を追っていくと出てきます。3行目は最も分かりやすい直角で、各軸に沿ったベクトルが1つずつあり、内積は0、角度はちょうど90で返ります。これがこのページの最も多い使い道である垂直の判定で、角度の列が使っている三角関数は一切要りません。4行目は同じベクトルを2つ並べたもので、内積は3、角度は0になります。6行目はあるベクトルとその符号を反転したもので、内積は−1、角度は180です。3行目・4行目・6行目で、同じ向き・直角・反対向きという全範囲がそろいます。5行目は長さがどちらも平方根になるきたない組で、角度が丸める前の大きさから計算されていることを示す行です。3.7417と8.775を掛けて32を割っても同じ12.9332になりますが、ぎりぎりのところです。7行目は負の成分と符号の混ざった成分を持つ組で、左や下を向いたベクトルの書き方です。内積が−7、角度が107.6501という組み合わせは、符号と角度が食い違ってはいけない例で、90度より大きくて負、あるべき姿です。8行目は2次元の組で、このページが成分の数を問わないことを示しています。ここにある数はすべてページのビルド時に計算し直しており、最初の2列にある空白は区切り記号で、数の一部ではありません。

公式

u · v = u₁v₁ + u₂v₂ + … + uₙvₙ |u| = √(u₁² + u₂² + … ) cos θ = (u · v) ÷ (|u| × |v|)

ベクトルu
1つ目のベクトル。成分を空白またはカンマで区切って並べたもので、3次元なら「1 2 2」、2次元なら「0 3」、必要ならもっと多く書きます。入力欄の数が決まっていないのは、このページが次元数を問わないからです。2つのベクトルは成分の数がそろっていなければなりません
ベクトルv
2つ目のベクトルで、書き方は同じ。成分の数は1つ目とそろえます。内積も角度も順序を問わないので、2つを入れ替えても同じ答えになります
u · v
内積。1つ目の成分どうし、2つ目の成分どうしを掛けて、その結果をすべて足したものです。ベクトルの成分はその量の単位を持ち、2つを掛けるとその単位の2乗になるので、内積は単位の付かないただの数として出ます
|u|と|v|
それぞれのベクトルの大きさ。成分を測った単位そのままで、成分の2乗を足して平方根を取った値です。矢印の長さそのもので、原点からそのベクトルが指す点までの距離と同じ計算になります
θ
2つのベクトルのなす角を度で表したもの。同じ向きの0度から、垂直の90度を経て、逆向きの180度までです。逆コサインはこの範囲の外を返せないので、それを超えることはありません
cos θ
内積を2つの大きさの積で割った値で、このページの前半と後半をつなぐ橋です。同じ向きなら1、直角なら0、逆向きなら−1となり、角度はこの数から計算されます
度
角度の出力の単位で、このページで単位を持つ唯一の出力です。内積と2つの大きさは単位の付かないただの数です
小数第4位
すべての出力を書く桁幅。成分が整数なら内積も整数になることがよくありますが、2つの大きさは平方根を、角度は逆コサインを抱えているので、その3つはほとんど正確には出ません

内積は、2つの向きがどれだけ一致しているかを尋ねる標準的な手段で、それが答える問いは、計算の見た目よりずっと多く出てきます。いちばん大きいのは直角の判定です。内積が0なら2つのベクトルは直角に交わっており、ある面が光のほうを向いているか、ある経路が壁を横切るか、図面の2本の線が直交しているかをプログラムが判断するときの基準になります。しかも掛け算だけで済み、三角関数はどこにも出てきません。次に見るのは符号です。正なら2つは大まかに同じ向き、負なら大まかに反対向きで、裏面カリングや、力が物体にする仕事か、物体から奪う仕事かの判定はこれで足ります。物理学は同じ数に仕事という名前を付けます。力がする仕事は力と動いた距離の内積で、斜めに押すとまっすぐ押すより小さくなる理由、直角に押すと仕事が0になる理由はここにあります。角度そのものが欲しいときは、このページが出します。見分けたい値は0度・90度・180度、つまり平行・垂直・反対です。それ以外はこの3つから外れた組み合わせで、便利な確認は、内積の符号と角度が一致していることです。内積が負なのに角度が90度未満という組み合わせは、両立しません。

計算例

  1. 「1 2 2」と「2 2 1」

    1. 内積:1 × 2 + 2 × 2 + 2 × 1 = 2 + 4 + 2 = 8
    2. uの大きさ:√(1 + 4 + 4) = √9 = 3
    3. vの大きさ:√(4 + 4 + 1) = √9 = 3
    4. コサイン:8 ÷ (3 × 3) = 0.888889、その逆コサインは27.2659…なので四捨五入して27.266

    このページが開いたときに入っている入力で、きれいに出る例です。2つのベクトルの大きさがどちらもちょうど3なので、コサインは内積を9で割っただけになります。2つの違うベクトル、1つの内積、2つの大きさ、1つの角度と、1行にこのページの全部が入っています。角度は90度より小さく内積は正で、どの答えにも走らせたい符号の確認がそのまま当てはまります。

  2. 「3 4 0」と「4 3 0」

    1. 内積:3 × 4 + 4 × 3 + 0 × 0 = 12 + 12 = 24
    2. それぞれの大きさ:3つ目の成分が0なので√(9 + 16) = 5
    3. コサイン:24 ÷ (5 × 5) = 0.96、その逆コサインは16.2602…

    平らな平面に載っている2つのベクトルを、3つ目の成分に0を明示して書いたものです。2次元のベクトルは0を1つ足した3次元のベクトルにすぎないことが分かります。どちらの長さも正確に5になり、3-4-5の三角形がいつもどおり働いています。角度は小さく内積は大きく正で、2つのベクトルがかなり同じ方向を向いているときの形です。

  3. 「1 0」と「0 1」

    1. 内積:1 × 0 + 0 × 1 = 0
    2. それぞれの大きさ:1
    3. コサイン:0 ÷ 1 = 0、0の逆コサインはちょうど90度

    このページが最もよく使われる答えです。内積が0なら2つのベクトルは垂直で、この2つはその最も分かりやすい例になっています。片方はx軸に沿い、もう片方はy軸に沿っています。角度が丸めた値ではなくちょうど90で返ることに注目してください。コサインがちょうど0で、そこに至るまでに平方根も割り算も要らなかったからです。これが直角の判定で、角度の出力が使っている三角関数は一切必要ありません。

  4. 「1 2 3」と「4 5 6」

    1. 内積:1 × 4 + 2 × 5 + 3 × 6 = 4 + 10 + 18 = 32
    2. uの大きさ:√(1 + 4 + 9) = √14 = 3.741657…なので四捨五入して3.7417
    3. vの大きさ:√(16 + 25 + 36) = √77 = 8.774964…なので四捨五入して8.775
    4. コサイン:32 ÷ (3.741657 × 8.774964) = 0.974631…、その逆コサインは12.9331…なので四捨五入して12.9332

    長さがきれいに出ない2つのベクトルで、丸めの代償を見たいときに行を見てください。2つの大きさはどちらも終わりのない平方根なので、コサインは画面に出ている3.7417と8.775ではなく丸める前の値から計算されています。印字された2つの数を掛けて32を割ると0.9746になり、同じ角度には着きますが、ぎりぎりのところです。2つのベクトルがほぼ平行なので角度は小さくなっています。4 5 6は1 2 3をだいたい定数倍したものです。

  5. 「-1 0 0」と「1 0 0」

    1. 内積:(−1) × 1 + 0 × 0 + 0 × 0 = −1
    2. それぞれの大きさ:1
    3. コサイン:−1 ÷ 1 = −1、−1の逆コサインはちょうど180度

    範囲の反対側の端です。ちょうど反対を向いた2つのベクトルの内積は、2つの長さの積にマイナスを付けたものになり、ここでは−1です。コサインは−1、角度は180度になります。内積がなぜ負になるのか、負の値が何を意味するのかが分かる行です。誤りでも小さな角度でもなく、2本の矢印が互いに離れる方向を向いているという意味です。

適用限界

2つのベクトルは成分の数がそろっていなければならず、そろっていない組は短いほうに0を足してごまかすのではなく、そのまま拒否します。ゼロベクトルはまるごと拒否します。すべての成分が0のベクトルは向きを持たないので、それと他の何かとの間の角度は定義できません。同じ向きだと読めてしまう0度を表示するより、計算そのものを断ります。成分はふつうの数として読みます。カンマの直後に空白があれば成分の区切りで、数字と数字の間にあって直後に空白がないカンマは小数点として読まれます。1,5は1.5のことです。桁区切りは解釈せず、推測もしないので、カンマを入れずにそのまま入力してください。成分は各ベクトルにつき200個まで受け付けます。手書きの例にはるかに大きな数で、データ処理が使う規模には届きません。小数第4位は表示幅であって精度の主張ではなく、角度は丸める前の大きさから計算しているので、印字された2つの数を掛け合わせても印字された角度が正確に再現されるとは限りません。このページは内積と角度のためのもので、外積や、片方のベクトルをもう片方に射影したもの、単位ベクトルは出しません。成分が何で測られているかも関知しないので、メートルで入れた成分から出した内積は、平方メートルではなくただの数として返ります。

よくある質問

成分はどう入力しますか
空白で区切るか、カンマと空白で区切ってください。「1 2 2」と「1, 2, 2」はどちらも同じように読まれます。数字と数字の間にあって直後に空白がないカンマは小数点として読まれます。1,5は1.5のことです。「1,500」のような桁区切りは推測せずに拒否するので、カンマを入れずに入力してください。2つのベクトルは成分の数がそろっている必要があり、数そのものに上限はありません。2次元と3次元は同じページです。
内積は結局何を教えてくれますか
2つのベクトルがどれだけ同じ向きを指しているかです。平行で向きが同じとき最大になり、垂直のとき0、反対向きのとき負になります。値はベクトルの長さにも左右されるので、長いベクトルどうしの大きな内積が小さな角度を意味するとは限りません。2つの大きさで割れば角度のコサインになり、このページはそれを代わりに計算しています。
2つのベクトルが垂直かどうかはどうやって見分けますか
内積が0かどうかで分かります。それが判定のすべてで、掛け算だけで済みます。平方根も三角関数も要らないので、プログラムではこの形が使われます。このページは角度も返し、垂直なら90と表示されますが、直角かどうかだけを知りたいなら内積ひとつで決まります。
内積が負になることがあるのはなぜですか
大きさだけでなく向きも反映するからです。2つのベクトルが大まかに向かい合っていれば正の数、直角なら2つの寄与が打ち消し合って0、大まかに反対を向いていれば負の数になります。内積が負のときは角度は必ず90度より大きくなり、この2つが食い違うことはありません。食い違ったら入力のどこかがおかしいということです。
すべての成分が0のベクトルを拒否するのはなぜですか
ゼロベクトルには向きがないので、それと他の何かとの間の角度が定義できないからです。ゼロベクトルとの内積は何であれ0で、大きさも0なので、コサインを求めようとすると0で割ることになります。0度を返すページは、あなたのベクトルと同じ向きを指していると答えることになりますが、それは存在しない向きについての主張です。
答えの単位は何ですか
角度は度で、残りの3つの出力には単位がありません。内積は成分どうしの積の和なので、成分をメートルで測ったなら平方メートル、ただの数ならただの数です。このページは単位を推測せずに省きます。同じ計算が、向きにも力にもテストの点数の並びにも使われるからです。

参考文献

関連する計算ツール