Loading [MathJax]/jax/output/CommonHTML/jax.js

2017年6月4日日曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の3章(行列)、3(行列の乗法)、練習問題10.を取り組んでみる。


  1. SP1A,B=ni=1(nj=1ajmji)bi=ni=1(nj=1ajbimji)B,A=ni=1(nj=1bjmji)ai=ni=1(nj=1aibjmji)=ni=1(nj=1aibjmij)A,B=B,ASP2A,(B+C)=ni=1(nj=1ajmji)(bi+ci)=ni=1(nj=1ajbimji)+ni=1(nj=1ajcimji)=A,B+A,C(B+C),A=A,(B+C)SP3xA,B=ni=1(nj=1xajmji)bi=xni=1(nj=1ajmji)bi=xA,BA,xB=ni=1(nj=1xajmji)xbi=xni=1(nj=1xajmji)bi=xA,BA=(10)M=(1000)B=(10)AtMB=(10)(10)=(1)

コード(Emacs)

Python 3

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from sympy import pprint, Matrix, randMatrix, symbols
import random

for i in range(1, 6):
    print(i)
    i1 = random.randrange(100)
    i2 = random.randrange(100)
    i3 = random.randrange(100)
    a = random.randrange(100)
    b = random.randrange(100)
    c = random.randrange(100)
    m = Matrix([[i1, a, b],
                [a, i2, c],
                [b, c, i3]])
    print(m.transpose() == m)

    def mul(a, b):
        return a.transpose() * m * b

    for j in range(1, 6):
        print('{0}-{1}'.format(i, j))
        a = randMatrix(3, 1)
        b = randMatrix(3, 1)
        c = randMatrix(3, 1)
        x = random.randrange(100)
        print(mul(a, b) == mul(b, a))
        print(mul(a, b + c) == (mul(a, b) + mul(a, c)) == mul(b + c, a))
        print(mul(x * a, b) == mul(a, x * b) == x * mul(a, b))

a = Matrix([[1],
            [0]])
m = Matrix([[-1, 0],
            [0, 0]])
b = Matrix([[1],
            [0]])

print('< 0')
print(m.transpose() == m)
pprint(a.transpose() * m * b)

入出力結果(Terminal, IPython)

$ ./sample10.py
1
True
1-1
True
True
True
1-2
True
True
True
1-3
True
True
True
1-4
True
True
True
1-5
True
True
True
2
True
2-1
True
True
True
2-2
True
True
True
2-3
True
True
True
2-4
True
True
True
2-5
True
True
True
3
True
3-1
True
True
True
3-2
True
True
True
3-3
True
True
True
3-4
True
True
True
3-5
True
True
True
4
True
4-1
True
True
True
4-2
True
True
True
4-3
True
True
True
4-4
True
True
True
4-5
True
True
True
5
True
5-1
True
True
True
5-2
True
True
True
5-3
True
True
True
5-4
True
True
True
5-5
True
True
True
< 0
True
[-1]
$

0 コメント:

コメントを投稿