学習環境
- 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 コメント:
コメントを投稿