数学のブログ

ベクトル n次元ベクトル 正規直交基底、グラム-シュミットの直交化法

線形代数演習〈理工系の数学入門コース/演習 新装版〉 (浅野 功義(著)、大関 清太(著)、岩波書店)の第1章(ベクトル)、1-3(n次元ベクトル)、問題3の解答を求めてみる。

e 1 = a 1 | a 1 | = 1 3 ( 1 , 1 , 1 )
b 2 = a 2 - ( a 2 · e 1 ) e 1 = ( 0 , 1 , 1 ) - 2 3 · 1 3 ( 1 , 1 , 1 ) = ( 0 , 1 , 1 ) - 2 3 ( 1 , 1 , 1 ) = 1 3 ( - 2 , 1 , 1 ) e 2 = b 2 | b 2 | = 3 4 + 1 + 1 - 1 3 ( - 2 , 1 , 1 ) = 1 6 ( - 2 , 1 , 1 )
b 3 = a 3 - ( a 3 · e 1 ) e 1 - ( a 3 · e 2 ) e 2 = ( 1 , 1 , 0 ) - ( ( 1 , 1 , 0 ) · 1 3 ( 1 , 1 , 1 ) ) 1 3 ( 1 , 1 , 1 ) - ( ( 1 , 1 , 0 ) · 1 6 ( - 2 , 1 , 1 ) ) 1 6 ( - 2 , 1 , 1 ) = ( 1 , 1 , 0 ) - 2 3 ( 1 , 1 , 1 ) + 1 6 ( - 2 , 1 , 1 ) = 1 6 ( 6 - 4 - 2 , 6 - 4 + 1 , - 4 + 1 ) = 1 6 ( 0 , 3 , - 3 ) = 1 2 ( 0 , 1 , - 1 ) e 3 = b 3 | b 3 | = 2 2 · 1 2 ( 0 , 1 , - 1 ) = 1 2 ( 0 , 1 , - 1 )

よって、求める正規直交基底は

{ 1 3 ( 1 , 1 , 1 ) , 1 6 ( - 2 , 1 , 1 ) , 1 2 ( 0 , 1 , - 1 ) }

コード(Wolfram Language, Jupyter)

a1 = {1, 1, 1};
a2 = {0, 1, 1};
a3 = {1, 1, 0};
o = {0, 0, 0};
e1 = 1/Sqrt[3]{1, 1, 1};
e2 = 1/Sqrt[6]{-2, 1, 1};
e3 = 1/Sqrt[2]{0, 1, -1};
Graphics3D[
    {
        Red, Arrow[{o, a1}],
        Green, Arrow[{o, a2}],
        Blue, Arrow[{o, a3}],
        Brown, Arrow[{o, e1}],
        Orange, Arrow[{o, e2}],
        Purple, Arrow[{o, e3}]
    },
    Axes -> True,
    AxesLabel -> {x, y, z},
    PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}},
    FaceGrids -> All
]
Output
Table[Norm[e], {e, {e1, e2, e3}}]
{1, 1, 1}
Table[Table[a . b, {a, {e1, e2, e3}}],
      {b, {e1, e2, e3}}]
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}