2020年1月28日火曜日

学習環境

解析入門 原書第3版 (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第Ⅵ部(多変数の関数)、第17章(ベクトル)、5(直線と平面)の練習問題10の解答を求めてみる。



    1. 直線 L のパラメーター 方程式。

      L = 1 , 2 , 3 , 4 + t 1 , 1 , 1 , 1 = 1 + t , 2 + t , 3 + t , 4 + t

      Q と X の間の距離は、

      t + 1 - 4 2 + t + 2 - 3 2 + t + 3 - 2 2 + t + 4 - 1 2 = t - 3 2 + t - 1 2 + t + 1 2 + t + 3 2 = 4 t 2 + 20 = 2 t 2 + 5

    2. t = 0 X 0 = 1 , 2 , 3 , 4

      のとき (a) の距離は最小となり、その値は

      2 5

      である。


    3. X 0 = 1 , 2 , 3 , 4 X 0 - Q = 1 , 2 , 3 , 4 - 4 , 3 , 2 , 1 = - 3 , - 1 , 1 , 3 X 0 - Q · 1 , 1 , 1 , 1 = - 3 - 1 + 1 + 3 = 0

      よって、 直線に垂直である。

      (証明終)

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Matrix, sqrt

print('10.')

p = Matrix([1, 2, 3, 4])
q = Matrix([4, 3, 2, 1])
a = Matrix([1, 1, 1, 1])
t = symbols('t', real=True)
l = p + t * a
distance = (q - l).norm()
x0 = l.subs({t: 0})


class MyTestCase(TestCase):
    def test_a(self):
        self.assertEqual((distance ** 2).expand(),
                         ((2 * sqrt(t ** 2 + 5)) ** 2).expand())

    def test_b(self):
        self.assertEqual(distance.subs({t: 0}), 2 * sqrt(5))

    def test_c(self):
        self.assertEqual((x0 - q).dot(a), 0)


if __name__ == "__main__":
    main()

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

% ./sample10.py -v
10.
test_a (__main__.MyTestCase) ... ok
test_b (__main__.MyTestCase) ... ok
test_c (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.009s

OK
%

0 コメント:

コメントを投稿