見出し画像

高校数学10分プログラミング(数学B編 2.空間のベクトル)4日目「空間ベクトルの内積を考える1」

マガジンリスト > 数学B編 2.空間のベクトル > 4日目 課題

おはようございます。

本日は、高校数学10分プログラミング(数学B編 2.空間のベクトル)の4日目です。

本日の課題は、空間ベクトルの内積を計算するプログラムを作成することです。


空間ベクトルの内積

まず、空間ベクトルの内積についてその性質も含めてまとめておきます。なお、以下で$${k}$$は実数とし、$${\vec{a} = (a_1, a_2, a_3), \ \vec{b} = (b_1, b_2, b_3), \ \vec{a} \neq \vec{0}, \ \vec{b} \neq \vec{0}}$$とします。また、$${\vec{a}}$$と$${\vec{b}}$$のなす角を$${ \theta \ ( 0^{\circ} \leq \theta \leq 180^{\circ} ) }$$とします。

空間ベクトルの内積と成分

① 定義

$$
\vec{a} \cdot \vec{b} = | \vec{a} || \vec{b} | \cos \theta
$$

② 成分表示

$$
\vec{a} \cdot \vec{b} = a_1 b_1 + a_2 b_2 + a_3 b_3
$$

③  なす角

$$
\cos \theta = \frac{ \vec{a} \cdot \vec{b} }{ | \vec{a} || \vec{b} | } = \frac{ a_1b_1+a_2b_2+a_3b_3}{ \sqrt{ a_1^2+a_2^2+a_3^2 } \sqrt{ b_1^2+b_2^2+b_3^2 }}
$$


課題

次の2つの空間ベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めて、コンソールに出力するプログラムを作成してください。

$${ \vec{a} = ( 1, 1, 0 ), \ \vec{b} = ( 1, 2, -2 ) }$$


ヒント

今回のプログラムでは、空間ベクトル$${\vec{a}=(a_1,a_2,a_3)}$$を PVector クラスの変数 a として与えたときに、空間ベクトルの成分が a.x, a.y, a.z で取り出せることを利用してプログラムを作成してみてください。
※記事『高校数学10分プログラミング(数学B編 1.平面上のベクトル)2日目「ベクトルの内積を計算する」』で、平面上のベクトルに対する内積の計算を行っていますので、こちらも参考にしてみてください。


プログラム

上記のヒントをもとに、課題の2つのベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めるプログラム(未完成)を示します(ソースコード1)。

// 2つの空間ベクトルの内積とそのなす角を計算する
void setup(){

  // 2つの空間ベクトル
  PVector a = new PVector(1.0, 1.0, 0.0);
  PVector b = new PVector(1.0, 2.0, -2.0);

  // 2つのベクトルの大きさ
  float magnitude_a = 
  float magnitude_b = 
  
  // 2つのベクトルの内積を計算する
  float innerproduct = 
  
  // なす角を求める
  float cos_theta = 
  float theta = 
  
  println( "ベクトルaの大きさ:", magnitude_a);
  println( "ベクトルbの大きさ:", magnitude_b);
  println( "ベクトルの内積:", innerproduct);
  println( "ベクトルのなす角:", theta);
  
}

ソースコード1 2つのベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めるプログラム(未完成)

ソースコード1の中で、ベクトル$${\vec{a}, \vec{b}}$$の大きさ、2つのベクトルの内積、2つのベクトルのなす角を計算する式を記載していません。上記の空間ベクトルの内積と成分の節で説明した式をもとに、式を追記してプログラムを完成させてください。

なお、 スケッチ名は「calcInnerProduct3D」とします。


それでは、よろしくお願いします。

MK's papa

いいなと思ったら応援しよう!