2020年7月2日木曜日

学習環境

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



    1. P を通り A の向きをもつ直線のパラメーター方程式は

      ( x , y , z ) = ( 1 , 3 , 5 ) + t ( - 2 , 1 , 1 ) = ( 1 - 2 t , 3 + t , 5 + t )

      平面との交点を求める。

      2 ( 1 - 2 t ) + 3 ( 3 + t ) - ( 5 + t ) = 1 - 2 t = - 5 t = 5 2
      ( 1 - 5 , 3 + 5 2 , 5 + 5 2 ) = ( - 4 , 11 2 , 15 2 )

    2. 平面の法線ベクトルの1つは

      ( 3 , - 4 , 1 )

      よって直線のパラメーター方程式は

      X = ( 1 , 2 , - 1 ) + t ( 3 , - 4 , 1 )

      求める平面との交点は

      3 ( 1 + 3 t ) - 4 ( 2 - 4 t ) + ( - 1 + t ) = 2 26 t = 8 t = 4 13
      ( 1 + 3 · 4 13 , 2 - 4 · 4 13 , - 1 + 4 13 ) = ( 25 13 , 10 13 , - 9 13 )

コード

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

print('16.')

t, x, y, z = symbols('t, x, y, z', real=True)
p1 = Matrix([1, 3, 5])
a1 = Matrix([-2, 1, 1])
l1 = p1 + t * a1
eq1 = 2 * x + 3 * y - z - 1

p2 = Matrix([1, 2, -1])
a2 = Matrix([3, -4, 1])
l2 = p2 + t * a2
eq2 = 3 * x - 4 * y + z - 2


class Test(TestCase):
    def test_a(self):
        t0 = solve(eq1.subs({x: l1[0], y: l1[1], z: l1[2]}), t)[0]
        self.assertEqual(l1.subs({t: t0}),
                         Matrix([-4, Rational(11, 2), Rational(15, 2)]))

    def test_b(self):
        t0 = solve(eq2.subs({x: l2[0], y: l2[1], z: l2[2]}), t)[0]
        self.assertEqual(
            l2.subs({t: t0}),
            Matrix([Rational(25, 13), Rational(10, 13), -Rational(9, 13)]))


if __name__ == "__main__":
    main()

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

% ./sample16.py -v
16.
test_a (__main__.Test) ... ok
test_b (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.011s

OK
%

0 コメント:

コメントを投稿