2020年5月26日火曜日

学習環境

新装版 数学読本3 (松坂 和夫(著)、岩波書店)の第11章(立体的な広がりの中の図形 - 空間図形)、11.3(直線・平面・球の方程式)、直線の方程式の問24の解答を求めてみる。


  1. p · p 2 q 3 - p 3 q 2 , p 3 q 1 - p 1 q 3 , p 1 q 2 - p 2 q 1 = p 1 p 2 q 3 - p 1 q 2 p 3 + q 1 p 2 p 3 - p 1 p 2 q 3 + p 1 q 2 p 3 - q 1 p 2 p 3 = 0 q 1 p 2 q 3 - q 1 q 2 p 3 + q 1 q 2 p 3 - p 1 q 2 q 3 + p 1 q 2 q 3 - q 1 p 2 q 3 = 0

    よって、 問題のベクトル は2つのベクトル

    p , q

    の両方に垂直である。

    (証明終)

コード

#!/usr/bin/env python3
from unittest import TestCase, main
import random
from sympy import symbols, Matrix
from sympy.plotting import plot3d_parametric_line

print('24.')


class Test(TestCase):
    def test(self):
        p1, p2, p3 = symbols('p:3')
        q1, q2, q3 = symbols('q:3')
        p = Matrix([p1, p2, p3])
        q = Matrix([q1, q2, q3])
        v = Matrix([p2 * q3 - p3 * q2, p3 * q1 - p1 * q3, p1 * q2 - p2 * q1])
        for w in [p, q]:
            self.assertEqual(w.dot(v).simplify(), 0)


t = symbols('t')
for i in range(2):
    p1, p2, p3 = [random.randrange(-10, 10) for _ in range(3)]
    q1, q2, q3 = [random.randrange(-10, 10) for _ in range(3)]
    p = Matrix([p1, p2, p3])
    q = Matrix([q1, q2, q3])
    v = Matrix([p2 * q3 - p3 * q2, p3 * q1 - p1 * q3, p1 * q2 - p2 * q1])
    pp = plot3d_parametric_line(*[(*(t * w), (t, 0, 1))
                                  for w in [p, q, v]],
                                xlim=(-10, 10),
                                ylim=(-10, 10),
                                zlim=(-10, 10),
                                legend=True,
                                show=False)
    colors = ['red', 'green', 'blue', 'brown', 'orange',
              'purple', 'pink', 'gray', 'skyblue', 'yellow']
    for o, color in zip(pp, colors):
        o.line_color = color

    pp.save(f'sample24_{i}.png')

pp.show()

if __name__ == "__main__":
    main()

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

% ./sample24.py -v
24.
test (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.314s

OK
%

0 コメント:

コメントを投稿