学習環境
- Surface Go、タイプ カバー、ペン(端末)
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad Pro + Apple Pencil
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
線型代数入門 (松坂和夫 数学入門シリーズ 2) (松坂 和夫(著)、岩波書店)の第9章(エルミート双1次形式、内積空間)、6(内積空間)、問題1.を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3 from sympy import pprint, symbols, Matrix, I import random print('1.') n = 3 u = Matrix(symbols([f'u{i + 1}' for i in range(n)], imag=True)) v = Matrix(symbols([f'v{i + 1}' for i in range(n)], imag=True)) l = (u + v).norm() ** 2 + (u - v).norm() ** 2 r = 2 * (u.norm() ** 2 + v.norm() ** 2) for t in [u.T, v.T, l, r, (l - r).expand() == 0]: pprint(t) print() u = Matrix(symbols([f'u{i + 1}' for i in range(n)], real=True)) v = Matrix(symbols([f'v{i + 1}' for i in range(n)], real=True)) l = (u + v).norm() ** 2 + (u - v).norm() ** 2 r = 2 * (u.norm() ** 2 + v.norm() ** 2) for t in [u.T, v.T, l, r, (l - r).expand() == 0]: pprint(t) print() for _ in range(5): u = Matrix([random.randrange(-5, 6) + random.randrange(-5, 6) * I for _ in range(n)]) v = Matrix([random.randrange(-5, 6) + random.randrange(-5, 6) * I for _ in range(n)]) l = (u + v).norm() ** 2 + (u - v).norm() ** 2 r = 2 * (u.norm() ** 2 + v.norm() ** 2) for t in [u.T, v.T, l, r, l == r]: pprint(t) print()
入出力結果(Terminal, cmd(コマンドプロンプト), Jupyter(IPython))
$ ./sample1.py 1. [u₁ u₂ u₃] [v₁ v₂ v₃] 2 2 2 2 2 2 │u₁ - v₁│ + │u₁ + v₁│ + │u₂ - v₂│ + │u₂ + v₂│ + │u₃ - v₃│ + │u₃ + v₃│ 2 2 2 2 2 2 2⋅│u₁│ + 2⋅│u₂│ + 2⋅│u₃│ + 2⋅│v₁│ + 2⋅│v₂│ + 2⋅│v₃│ False [u₁ u₂ u₃] [v₁ v₂ v₃] 2 2 2 2 2 2 (u₁ - v₁) + (u₁ + v₁) + (u₂ - v₂) + (u₂ + v₂) + (u₃ - v₃) + (u₃ + v₃) 2 2 2 2 2 2 2⋅u₁ + 2⋅u₂ + 2⋅u₃ + 2⋅v₁ + 2⋅v₂ + 2⋅v₃ True [-5 + 3⋅ⅈ 2 + 4⋅ⅈ -2 - 5⋅ⅈ] [-1 + 3⋅ⅈ -2 1 - 4⋅ⅈ] 228 228 True [5 - 3⋅ⅈ -4 - 4⋅ⅈ 1] [-3 - 3⋅ⅈ -2 + 3⋅ⅈ 3 - 3⋅ⅈ] 232 232 True [-1 + 5⋅ⅈ 2 - 2⋅ⅈ 2 - ⅈ] [-4 + ⅈ 4 - ⅈ 3] 164 164 True [1 + ⅈ -2⋅ⅈ 4 - 4⋅ⅈ] [-4 - ⅈ 4 - 5⋅ⅈ -3 - ⅈ] 212 212 True [-2 - 2⋅ⅈ 2 - 4⋅ⅈ -2 - ⅈ] [3 -3 + ⅈ 4 - 2⋅ⅈ] 144 144 True $
SymPyはSymbolが複素数の場合は上手く計算してくれないみたい。
0 コメント:
コメントを投稿