2020年7月6日月曜日

学習環境

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



    1. ( 1 , 4 , 1 )

      は平面上の点である。

      よって、 求める点 P と平面との距離は

      | ( ( 1 , 4 , 1 ) - ( 1 , 1 , 2 ) ) · ( 3 , 1 , - 5 ) | ( 3 , 1 , - 5 )
      = | ( 0 , 3 , - 1 ) , ( 3 , 1 , - 5 ) | 9 + 1 + 25
      = 8 35

    2. Q = ( 1 , 1 , 3 )
      | ( ( - 1 , 3 , 2 ) - ( 1 , 1 , 3 ) ) · ( 2 , - 4 , 1 ) | ( 2 , - 4 , 1 )
      = | ( - 2 , 2 , - 1 ) · ( 2 , - 4 , 1 ) | 4 + 16 + 1
      = | - 4 - 8 - 1 | 21
      = 13 21

コード

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

print('20.')


def f(p, q, n):
    return abs((q - p).dot(n)) / n.norm()


class Test(TestCase):
    def test_a(self):
        p = Matrix([1, 1, 2])
        n = Matrix([3, 1, -5])
        q = Matrix([1, 4, 1])
        self.assertEqual(n.dot(q), 2)
        self.assertEqual(f(p, q, n), 8 / sqrt(35))

    def test_b(self):
        p = Matrix([-1, 3, 2])
        n = Matrix([2, -4, 1])
        q = Matrix([1, 1, 3])
        self.assertEqual(n.dot(q), 1)
        self.assertEqual(f(p, q, n), 13 / sqrt(21))


if __name__ == "__main__":
    main()

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

% ./sample20.py -v
20.
test_a (__main__.Test) ... ok
test_b (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.041s

OK
%

0 コメント:

コメントを投稿