Processing math: 22%
情報領域演習第一:P演習
電気通信大学情報理工学域I類 (情報系)
2017年度後学期
[一覧に戻る]
課題F3
問題
グラム・シュミットの直交化法は,線形代数において,空間の正規直交基底を得るための重要な手法である.ここでは,3次元の場合に限定して説明をする.
線形独立である3つの3次元実ベクトル v1, v2, v3 に対して,次の操作によって得られるベクトル u1, u2, u3とe1, e2, e3 を考える.
-
u1=v1,
-
u2=v2−⟨u1,v2⟩/⟨u1,u1⟩u1,
-
u3=v3−⟨u1,v3⟩/⟨u1,u1⟩u1−⟨u2,v3⟩/⟨u2,u2⟩u2,
-
e1=u1/‖,
-
\mathbb{e}_2 = \mathbb{u}_2/\|\mathbb{u}_2\|,
-
\mathbb{e}_3 = \mathbb{u}_3/\|\mathbb{u}_3\|.
ただし,2つの3次元実ベクトル \mathbb{u}=(u_x, u_y, u_z)^\top, \mathbb{v}=(v_x, v_y, v_z)^\top に対して,
\langle\mathbb{u}, \mathbb{v}\rangle = u_x v_x + u_y v_y + u_z v_z という内積を表し,\|u\| = \sqrt{ \langle u, u\rangle } である.
ベクトル \mathbb{e}_1, \mathbb{e}_2, \mathbb{e}_3 がグラム・シュミットの直交化法によって得られるベクトルである.
3次元実ベクトル \mathbb{v}_1, \mathbb{v}_2, \mathbb{v}_3 がこの順で与えられたとき,グラム・シュミットの直交化法によって得られるベクトル \mathbb{e}_1, \mathbb{e}_2, \mathbb{e}_3 を計算するCプログラムを作成せよ.
入力仕様
- 9個の数値がコマンドライン引数として与えられる.
- それらの数値は順に,v_{1x}, v_{1y}, v_{1z}, v_{2x}, v_{2y}, v_{2z}, v_{3x}, v_{3y}, v_{3z} である.
- どの数値も -100.000 以上 100.000 以下である.
- 各数値の間には空白が1つ置かれている.
- ベクトル \mathbb{v}_1, \mathbb{v}_2, \mathbb{v}_3 は必ず線形独立である.より詳細に言えば,3次正方行列 [\mathbb{v}_1, \mathbb{v}_2, \mathbb{v}_3] のフロベニウスノルムに関する条件数が 100.000 以下である.
出力仕様
- 出力は標準出力に行う.
- 9個の数値を出力し,数値の間に空白を1つ入れる.
- 9個の数値は順に,e_{1x}, e_{1y}, e_{1z}, e_{2x}, e_{2y}, e_
{2z}, e_{3x}, e_{3y}, e_{3z} である.
- 小数点以下第3位まで出力する.
- 出力の後に改行する.
例
作成したプログラムのファイル名を f3.c としたときの実行例
% gcc -lm f3.c
% ./a.out 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000
1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000
% ./a.out 1.000 1.000 1.000 1.000 2.000 3.000 1.000 4.000 9.000
0.577 0.577 0.577 -0.707 0.000 0.707 0.408 -0.816 0.408
% ./a.out 1.000 0.000 0.000 1.000 1.000 1.000 -1.000 -2.000 3.000
1.000 0.000 0.000 0.000 0.707 0.707 0.000 -0.707 0.707
% ./a.out 1.234 2.345 3.456 4.567 5.678 6.789 -7.890 -8.901 9.012
0.283 0.538 0.794 0.868 0.208 -0.451 0.408 -0.816 0.408
提出法
CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
% ~oa000833/enshu1p/checker_f3.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.
[一覧に戻る]
[Teaching Top]
[Top]
okamotoy@uec.ac.jp