学習環境
- Surface 3 (4G LTE)、Surface 3 タイプ カバー、Surface ペン(端末)
- Windows 10 Pro (OS)
- 数式入力ソフト(TeX, MathML): MathType
- MathML対応ブラウザ: Firefox、Safari
- MathML非対応ブラウザ(Internet Explorer, Microsoft Edge, Google Chrome...)用JavaScript Library: MathJax
- 参考書籍
ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の1章(R^n におけるベクトル)、6(複素数)、練習問題6.を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3 from sympy import pprint, symbols, I import functools print('6.') a1, b1, a2, b2, a3, b3, a4, b4, a5, b5, a6, b6 = symbols( 'a1, b1, a2, b2, a3, b3, a4, b4 a5 b5 a6 b6', real=True) A = [a1 + b1 * I, a2 + b2 * I] B = [a3 + b3 * I, a4 + b4 * I] C = [a5 + b5 * I, a6 + b6 * I] a = symbols('a') def dot(A, B): return functools.reduce( lambda x, y: x + y, [a * b.conjugate() for a, b in zip(A, B)] ) def add(A, B): return [x + y for x, y in zip(A, B)] def scalarMul(a, A): return [a * x for x in A] for t in [A, B, C]: pprint(t) print() for i, (l, r) in enumerate( [(dot(A, B), dot(B, A).conjugate()), (dot(A, add(B, C)), dot(A, B) + dot(A, C)), (dot(scalarMul(a, A), B), a * dot(A, B)), (dot(A, scalarMul(a, B)), a.conjugate() * dot(A, B))], 1): print(f'({i})') for t in [l, r, l.expand() == r.expand()]: pprint(t) print() print() A = [0, 0] print(dot(A, A)) A = [I, 0] print(dot(A, A))
入出力結果(Terminal, Jupyter(IPython))
$ ./sample6.py 6. [a₁ + ⅈ⋅b₁, a₂ + ⅈ⋅b₂] [a₃ + ⅈ⋅b₃, a₄ + ⅈ⋅b₄] [a₅ + ⅈ⋅b₅, a₆ + ⅈ⋅b₆] (1) (a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄) (a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄) True (2) (a₁ + ⅈ⋅b₁)⋅(a₃ + a₅ - ⅈ⋅b₃ - ⅈ⋅b₅) + (a₂ + ⅈ⋅b₂)⋅(a₄ + a₆ - ⅈ⋅b₄ - ⅈ⋅b₆) (a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + (a₁ + ⅈ⋅b₁)⋅(a₅ - ⅈ⋅b₅) + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄) + (a₂ + ⅈ⋅b₂)⋅(a₆ - ⅈ⋅b₆) True (3) a⋅(a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + a⋅(a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄) a⋅((a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄)) True (4) _ _ (a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃)⋅a + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄)⋅a _ ((a₁ + ⅈ⋅b₁)⋅(a₃ - ⅈ⋅b₃) + (a₂ + ⅈ⋅b₂)⋅(a₄ - ⅈ⋅b₄))⋅a True 0 1 $
0 コメント:
コメントを投稿