2017年6月15日木曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の4章(線形写像)、2(線形写像)、練習問題8-12.を取り組んでみる。


    1. F( ( x 1 , y 1 , z 1 )+( x 2 , y 2 , z 2 ) ) =F( x 1 + x 2 , y 1 + y 2 , z 1 + z 2 ) =( x 1 + x 2 , z 1 + z 2 ) =( x 1 , z 1 )+( x 2 , z 2 ) =F( x 1 , y 1 , z 1 )+F( x 2 , y 2 , z 2 ) F( c( x,y,z ) ) =F( cx,cy,cz ) =( cx,cz ) =c( x,z ) =cF( x,y,z )

      線形である。


    2. F( X+Y ) =( X+Y ) =X+Y =F( X )+F( Y ) F( cX ) =cX =c( X ) =cF( X )

      線形である。


    3. F( X+Y ) =( X+Y )+( 0,1,0 ) =X+( 0,1,0 )+Y+( 0,1,0 )( 0,1,0 ) =F( X )+F( Y )( 0,1,0 )

      線形ではない。


    4. F( ( x 1 , y 1 )+( x 2 , y 2 ) ) =F( x 1 + x 2 , y 1 + y 2 ) =( 2( x 1 + x 2 )+( y 1 + y 2 ), y 1 + y 2 ) =( 2 x 1 + y 1 , y 1 )+( 2 x 2 + y 2 , y 2 ) =F( x 1 , y 1 )+F( x 2 , y 2 ) F( c( x,y ) ) =F( cx,cy ) =( 2cx+cy,cy ) =c( 2x+y,y ) =cF( x,y )

      線形である。


    5. F( ( x 1 , y 1 )+( x 2 , y 2 ) ) =F( x 1 + x 2 , y 1 + y 2 ) =( 2( x 1 + x 2 ),( y 1 + y 2 )( x 1 + x 2 ) ) =( 2 x 1 , y 1 x 1 )+( 2 x 2 , y 2 x 2 ) =F( x 1 , y 1 )+F( x 2 , y 2 ) F( c( x,y ) ) =F( cx,cy ) =( 2cx,cycx ) =c( 2x,yx ) =cF( x,y )

      線形である。


    6. F( ( x 1 , y 1 )+( x 2 , y 2 ) ) =F( x 1 + x 2 , y 1 + y 2 ) =( y 1 + y 2 , x 1 + x 2 ) =( y 1 , x 1 )+( y 2 , x 2 ) =F( x 1 , y 1 )+F( x 2 , y 2 ) F( c( x,y ) ) =F( cx,cy ) =( cy,cx ) =c( y,x ) =cF( y,x )

      線形である。


    7. F( ( x 1 , y 1 )+( x 2 , y 2 ) ) =F( x 1 + x 2 , y 1 + y 2 ) =( x 1 + x 2 )( y 1 + y 2 ) = x 1 y 1 + x 2 y 2 + x 1 y 2 + x 2 y 1 =F( x 1 , y 1 )+F( x 2 , y 2 )+ x 1 y 2 + x 2 y 1

      線形ではない。

コード(Emacs)

Python 3

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

from sympy import pprint, symbols, Matrix

x1, x2, y1, y2, z1, z2, c = symbols('x1 x2 y1 y2 z1 z2 c')
fs = [
    (lambda m: Matrix([[m[0], m[2]]]), Matrix(
        [[x1, y1, z1]]), Matrix([[x2, y2, z2]])),
    (lambda m: -m, x1, x2),
    (lambda m: m + Matrix([[0, -1, 0]]),
     Matrix([[x1, y1, z1]]), Matrix([[x2, y2, z2]])),
    (lambda m: Matrix([[2 * m[0, 0] + m[0, 1], m[0, 1]]]),
     Matrix([[x1, y1]]), Matrix([[x2, y2]])),
    (lambda m: Matrix([[2 * m[0, 0], m[0, 1] - m[0, 0]]]),
     Matrix([[x1, y1]]), Matrix([[x2, y2]])),
    (lambda m: Matrix([[m[0, 1], m[0, 0]]]),
     Matrix([[x1, y1]]), Matrix([[x2, y2]])),
    (lambda m: m[0, 0] * m[0, 1], Matrix([[x1, y1]]), Matrix([[x2, y2]]))
]

for i, (f, x, y) in enumerate(fs):
    print('({0})'.format(chr(ord('a') + i)))
    print(f(x + y).expand() == (f(x) + f(y)).expand()
          and f(c * x).expand() == (c * f(x)).expand())

入出力結果(Terminal, IPython)

$ ./sample1.py
(a)
True
(b)
True
(c)
False
(d)
True
(e)
True
(f)
True
(g)
False
$

0 コメント:

コメントを投稿