C LANGUAGE TECHNOLOGY

【C言語】ベクトルの内積と外積の計算

悩んでいる人

C言語でベクトルの内積と外積の計算方法を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

ベクトルの内積と外積

ベクトル\(\vec{a}\)と\(\vec{b}\)の内積\(\vec{a} \cdot \vec{b}\)とは,\(\vec{a}\)と\(\vec{b}\)の要素毎を乗算した値の和のことです.

3次元のベクトル\(\vec{a}\)と\(\vec{b}\)の内積\(\vec{a} \cdot \vec{b}\)は下式になります.

\begin{eqnarray*} \vec{a} &=& [a_1, a_2, a_3] \\ \vec{b} &=& [b_1, b_2, b_3] \\ \vec{a} \cdot \vec{b} &=& a_1 b_1 + a_2 b_2 + a_3 b_3 \end{eqnarray*}

ベクトル\(\vec{a}\)と\(\vec{b}\)の外積(クロス積)\(\vec{a} \times \vec{b}\)とは,\(\vec{a}\)と\(\vec{b}\)と直行するベクトルのことです.

つまり,\(\vec{a} \times \vec{b}\)は2つのベクトル\(\vec{a}\)と\(\vec{b}\)が作る平面の法線と平行になります.

3次元のベクトル\(\vec{a}\)と\(\vec{b}\)の外積\(\vec{a} \times \vec{b}\)は下式になります.

\begin{eqnarray*} \vec{a} &=& [a_1, a_2, a_3] \\ \vec{b} &=& [b_1, b_2, b_3] \\ \vec{a} \times \vec{b} &=& [a_2 b_3 - a_3 b_2, a_3 b_1 - a_1 b_3, a_1 b_2 - a_2 b_1] \end{eqnarray*}

ベクトルの内積と外積を計算するコード

ベクトルの内積と外積を計算するコードは以下になります.

\(\vec{a} = [3, 4, 1]\),\(\vec{b} = [3, 7, 5]\)の場合の実行結果は以下になります.

内積が42,外積が[13, -12, 9]と正しく計算できていることがわかります.

こちらのWebサイトの実行結果と比較してみましょう.

まとめ

C言語でベクトルの内積と外積の計算方法を紹介しました.

ベクトルの内積と外積の数式とC言語のコードを見比べてみましょう.

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!

-C LANGUAGE, TECHNOLOGY
-, , , , ,