2020年7月9日木曜日

学習環境

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


  1. 可換律について。

    f , g
    = 0 1 f ( t ) g ( t ) dt
    = 0 1 g ( t ) f ( t ) dt
    = g , f

    分配律について。

    f , g + h
    = 0 1 f ( t ) ( g ( t ) + h ( t ) ) dt
    = 0 1 ( f ( t ) g ( t ) + f ( t ) h ( t ) ) dt
    = 0 1 f ( t ) g ( t ) dt + 0 1 f ( t ) h ( t ) dt
    = f , g + f , h

    スカラー倍について。

    x f , g = 0 1 x f ( t ) g ( t ) dt = x 0 1 f ( t ) g ( t ) dt = x f , g
    f , x g = 0 1 f ( t ) x g ( t ) dt = x 0 1 f ( t ) g ( t ) dt = x f , g

コード

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

print('3.')

f = t
g = exp(t)
h = sin(t)


class Test(TestCase):
    def test1(self):
        self.assertEqual(
            *[Integral(o, (t, 0, 1)).doit() for o in [f * g, g * f]]
        )

    def test2(self):
        self.assertEqual(
            Integral(f * (g + h), (t, 0, 1)).doit(),
            Integral(f * g, (t, 0, 1)).doit() +
            Integral(f * h, (t, 0, 1)).doit(),
        )

    def test3(self):
        self.assertEqual(
            Integral((x * f) * g, (t, 0, 1)).doit(),
            x * Integral(f * g, (t, 0, 1)).doit(),
        )
        self.assertEqual(
            Integral(f * (x * g), (t, 0, 1)).doit(),
            x * Integral(f * g, (t, 0, 1)).doit(),
        )


if __name__ == "__main__":
    main()

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

% ./sample3.py -v
3.
test1 (__main__.Test) ... ok
test2 (__main__.Test) ... ok
test3 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.797s

OK
%

0 コメント:

コメントを投稿