2020年7月11日土曜日

学習環境

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


  1. 直交基底。

    1
    t - t , 1 1 , 1 1
    = t - 0 1 t dt 0 1 1 dt
    = t - 1 2 1
    = t - 1 2
    t 2 - t 2 , t - 1 2 t - 1 2 , t - 1 2 ( t - 1 2 ) - t 2 , 1 1 , 1 1
    = t 2 - 1 4 - 1 6 1 3 - 1 2 + 1 4 ( t - 1 2 ) - 1 3
    = t 2 - t + 1 6

    正規直交基底。

    1 1 , 1 = 1
    t - 1 2 t - 1 2 , t - 1 2
    = t - 1 2 0 1 ( t 2 - t + 1 4 ) dt
    = t - 1 2 1 3 - 1 2 + 1 4
    = 2 3 ( t - 1 2 ) 4 - 6 + 3
    = 2 3 t - 3
    t 2 - t + 1 6 t 2 - t + 1 6 , t 2 - t + 1 6
    = t 2 - t + 1 6 0 1 ( t 4 - 2 t 3 + 4 3 t 2 - 1 3 t + 1 36 ) dt
    = t 2 - t + 1 6 1 5 - 1 2 + 4 9 - 1 6 + 1 36
    = 6 5 ( t 2 - t + 1 6 ) 36 - 90 + 80 - 30 + 5
    = 6 5 t 2 - 6 5 t + 5

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import Integral, sqrt
from sympy.abc import t, x

print('5.')


def scalar_mul(f, g):
    return Integral(f * g, (t, 0, 1)).doit()


class Test(TestCase):
    def test(self):
        f = 1
        g = 2 * sqrt(3) * t - sqrt(3)
        h = 6 * sqrt(5) * t ** 2 - 6 * sqrt(5) * t + sqrt(5)
        for u in [f, g, h]:
            for v in [f, g, h]:
                if u == v:
                    self.assertEqual(scalar_mul(u, v), 1)
                else:
                    self.assertEqual(scalar_mul(u, v), 0)


if __name__ == "__main__":
    main()

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

% ./sample5.py -v
5.
test (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.246s

OK
%

0 コメント:

コメントを投稿