2019年6月20日木曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の7章(スカラー積と直交性)、2(正値スカラー積)、練習問題1の解答を求めてみる。



    1. 直交基底を求める。

      v 1 = 1 , 1 , - 1 v 2 = 1 , 0 , 1 - 1 , 0 , 1 , 1 , 1 , - 1 1 , 1 , - 1 , 1 , 1 , - 1 1 , 1 , - 1 = 1 , 0 , 1 - 1 - 1 1 + 1 + 1 1 , 1 , - 1 = 1 , 0 , 1

      正規化して正規直交基底を求める。

      1 , 1 , - 1 3 = 1 3 , 1 3 , - 1 3 1 , 0 , 1 1 + 1 = 1 2 , 0 , 1 2

    2. 直交化。

      v 1 = 2 , 1 , 1 v 2 = 1 , 3 , - 1 - 2 , 1 , 1 · 1 , 3 , - 1 2 , 1 , 1 · 2 , 1 , 1 2 , 1 , 1 = 1 , 3 , - 1 - 2 + 3 - 1 4 + 1 + 1 2 , 1 , 1 = 1 , 3 , - 1 - 2 3 2 , 1 , 1 = 1 3 - 1 , 7 , - 5

      正規化。

      2 , 1 , 1 4 + 1 + 1 = 1 6 2 , 1 , 1 1 3 - 1 , 7 , - 5 1 3 1 + 49 + 25 = 1 5 3 - 1 , 7 , - 5

コード

Python 3

#!/usr/bin/env python3
from sympy import pprint, Matrix, symbols

print('1.')
ts = [((1, 1, -1), (1, 0, 1)),
      ((2, 1, 1), (1, 3, -1))]

for i, (v1, v2) in enumerate(ts):
    print(f'({chr(ord("a") + i)})')
    u = Matrix(v1)
    v = Matrix(v2)
    u1 = u / u.norm()
    v1 = v - u.dot(v) / u.dot(u) * u
    v1 = v1 / v1.norm()
    for o in [u1, v1]:
        pprint(o.transpose())
        print()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

C:\Users\...>py sample1.py
1.
(a)
⎡√3  √3  -√3 ⎤
⎢──  ──  ────⎥
⎣3   3    3  ⎦

⎡√2     √2⎤
⎢──  0  ──⎥
⎣2      2 ⎦

(b)
⎡√6  √6  √6⎤
⎢──  ──  ──⎥
⎣3   6   6 ⎦

⎡-√3   7⋅√3  -√3 ⎤
⎢────  ────  ────⎥
⎣ 15    15    3  ⎦


C:\Users\...>

0 コメント:

コメントを投稿