2020年6月28日日曜日

学習環境

続 解析入門 (原書第2版) (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第1章(ベクトル)、6(平面)の練習問題11の解答を求めてみる。



    1. X = ( 1 , - 1 , 3 , 1 ) + t ( 1 , - 3 , 2 , 1 ) = ( 1 + t , - 1 - 3 t , 3 + 2 t , 1 + t )
      | Q X | = t 2 + ( - 3 t - 2 ) 2 + ( 2 t + 4 ) 2 + ( t - 1 ) 2 = 15 t 2 + 26 t + 21

    2. 15 t 2 + 26 t + 21 = 15 ( t 2 + 26 15 t ) 2 + 21 = 14 ( t + 13 15 ) 2 - 1 3 2 15 + 21 = 14 ( t + 13 15 ) 2 + 146 15

      よって求める距離の最小値は

      146 15

    3. X 0 = ( 1 - 13 15 , - 1 + 39 15 , 3 - 26 15 , 1 - 13 15 )
      X 0 - Q = ( - 13 15 , - 2 + 39 15 , 4 - 26 15 , - 1 - 13 15 ) = ( - 13 15 , 9 15 , 34 15 , - 28 15 )
      ( X 0 - Q ) · A = 1 15 ( - 13 , 9 , 34 , - 28 ) · ( 1 , - 3 , 2 , 1 ) = 1 15 ( - 13 - 27 + 68 - 28 ) = 0

      よって垂直である。

      (証明終)

コード

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

print('11.')

p = Matrix([1, -1, 3, 1])
q = Matrix([1, 1, -1, 2])
a = Matrix([1, -3, 2, 1])
t = symbols('t', real=True)
l = p + t * a
x0 = Matrix([1 - Rational(13, 15),
             -1 + Rational(39, 15),
             3 - Rational(26, 15),
             1 - Rational(13, 15)])


class Test(TestCase):
    def test_a(self):
        self.assertEqual((l - q).norm().simplify(),
                         sqrt(15 * t ** 2 + 26 * t + 21))

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


if __name__ == "__main__":
    main()

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

% ./sample11.py -v
11.
test_a (__main__.Test) ... ok
test_c (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.278s

OK
%

0 コメント:

コメントを投稿