2020年8月6日木曜日

学習環境

ラング線形代数学(上) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の7章(スカラー積と直交性)、5(行列の階数と1次方程式)、練習問題7の解答を求めてみる。



    1. det [ i 1 0 i ] 0
      3 - 2 = 1

      よって1次元。

      基底の1つを求める。

      z = - i y
      i x + y + i y = 0
      x = i y - y
      { ( i - 1 , 1 , - i ) }

    2. det [ - i 2 2 - i ] = 1 - 4 0
      3 - 2 = 1

      1次元。

      ( 2 + 3 i ) x + ( 4 - i ) z = 0
      z = 2 + 3 i i - 4 x = ( 2 + 3 i ) ( i + 4 ) - 1 - 16 x = - 5 + 14 i 17 x
      i x + 2 i y + 5 i + 14 17 x = 0
      2 i y + 22 i + 14 17 x = 0
      y = - 11 i + 7 17 i x = - 11 - 7 i 17
      { ( 17 , - 11 - 7 i , - 5 - 14 i ) }

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import Matrix, I
from sympy.plotting import plot3d, plot3d_parametric_line
from sympy.abc import t

print('7.')


class Test(TestCase):
    def test_a(self):
        self.assertEqual(
            Matrix([[I, 1, -1],
                    [0, I, 1]]).rank(),
            2
        )
        x = I - 1
        y = 1
        z = -I
        self.assertEqual((I * x + y - z).expand(), 0)
        self.assertEqual(I * y + z, 0)

    def test_b(self):
        self.assertEqual(
            Matrix([[(1 + I), -I, 2],
                    [I, 2 * I, -I]]).rank(),
            2
        )
        x = 17
        y = -11 - 7 * I
        z = -5 - 14 * I
        self.assertEqual(((1 + I) * x - I * y + 2 * z).expand(), 0)
        self.assertEqual((I * x + 2 * I * y - I * z).expand(), 0)


if __name__ == "__main__":
    main()

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./sample7.py -v
7.
test_a (__main__.Test) ... ok
test_b (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.013s

OK
%

1 コメント :

コメントを投稿