Processing math: 100%

2017年10月16日月曜日

学習環境

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


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

    X=P+tAX=(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)=124t+9+3t5t=15=2tt=52

    求める交点。

    X=(15,3+52,5+52)=(4,112,152)

  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=23+9t+1+t10+25t=235t=8t=835X=(1+2435,1+835,2535)=(5935,4335,6535)

    求める距離。

    |(5935,4335,3035)(1,1,2)|=|(2435,835,4035)|=242+82+402352=576+64+160035=224035=26·5·735=83535=835

コード(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 コメント:

コメントを投稿