2017年10月16日月曜日

学習環境

ラング線形代数学(上)(S.ラング (著)、芹沢 正三 (翻訳)、ちくま学芸文庫)の1章(R^n におけるベクトル)、5(直線と平面)、練習問題19、20.を取り組んでみる。


  1. Pを通りAの向きを持つ直線のパラメーター方程式をX = P + tAとおく。

    X=P+tA X=( 1,3,5 )+t( 2,1,1 ) =( 12t,3+t,5+t ) ( 2,3,1 )·X=1 ( 2,3,1 )·( 12t,3+t,5+t )=1 24t+9+3t5t=1 5=2t t= 5 2

    求める交点。

    X=( 15,3+ 5 2 ,5+ 5 2 ) =( 4, 11 2 , 15 2 )

  2. 平面3x + y - 5z = 2 の1つの法線ベクトルを N = (3, 1, -5)とおく。

    点(1, 1, 2)を通り、向きNの直線のパラメーター方程式を X = (1, 1, 2) + t(3, 1, -5)とおく。

    上記の平面と直線の交点を求める。

    X=( 1+3t,1+t,25t ) ( 3,1,5 )·X=2 3+9t+1+t10+25t=2 35t=8 t= 8 35 X=( 1+ 24 35 ,1+ 8 35 ,2 5 35 ) =( 59 35 , 43 35 , 65 35 )

    求める距離。

    | ( 59 35 , 43 35 , 30 35 )( 1,1,2 ) | =| ( 24 35 , 8 35 , 40 35 ) | = 24 2 + 8 2 + 40 2 35 2 = 576+64+1600 35 = 2240 35 = 2 6 ·5·7 35 = 8 35 35 = 8 35

コード(Emacs)

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, Matrix, solve

print('19.')
X = Matrix(symbols('x y z'))
P = Matrix([1, 3, 5])
A = Matrix([-2, 1, 1])
t = symbols('t')

eq1 = P + t * A
eq2 = Matrix([2, 3, -1]).dot(X) - 1

eq3 = eq2.subs({k: v for k, v in zip(X, eq1)})

for t0 in [eq1.T, eq2, eq3]:
    pprint(t0)
    print()

t0 = solve(eq3, t)[0]
pprint(t0)
X0 = eq1.subs({t: t0})
pprint(X0.T)

print('20.')
N = Matrix([3, 1, -5])
eq1 = Matrix([1, 1, 2]) + t * N
eq2 = N.dot(X) - 2
eq3 = eq2.subs({k: v for k, v in zip(X, eq1)})

for t0 in [eq1.T, eq2, eq3]:
    pprint(t0)
    print()

t0 = solve(eq3, t)[0]
pprint(t0)
X0 = eq1.subs({t: t0})
pprint(X0.T)
pprint((X0 - Matrix([1, 1, 2])).norm())

入出力結果(Terminal, Jupyter(IPython))

$ ./sample19.py
19.
[-2⋅t + 1  t + 3  t + 5]

2⋅x + 3⋅y - z - 1

-2⋅t + 5

5/2
[-4  11/2  15/2]
20.
[3⋅t + 1  t + 1  -5⋅t + 2]

3⋅x + y - 5⋅z - 2

35⋅t - 8

8/35
⎡59  43     ⎤
⎢──  ──  6/7⎥
⎣35  35     ⎦
8⋅√35
─────
  35 
$

0 コメント:

コメントを投稿