2020年6月29日月曜日

学習環境

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


  1. 2平面に垂直なベクトルはそれぞれ

    ( 2 , - 1 , 1 ) ( 3 , 1 , 1 )

    交わりの直線に平行なベクトルはこの2つのベクトルに垂直なので、 求めるベクトルを

    ( a , b , c )

    とすると、

    { 2 a - b + c = 0 3 a + b + c = 0
    5 a + 2 c = 0 c = - 5 2 a
    2 a - b - 5 2 a = 0 b = - 1 2 a

    よって、 交わりの直線に平行なベクトルの1つは

    ( 2 , - 1 , - 5 )

  2. { 2 a + b + 5 c = 0 3 a - 2 b + c = 0
    7 a + 11 c = 0 c = - 7 11 a
    3 a - 2 b - 7 11 a = 0 b = 13 11 a

    よって 問題の2平面 の交わりの直線に平行なベクトルの1つ は

    ( 11 , 13 , - 7 )

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import Matrix, sqrt, symbols
from sympy.plotting import plot3d, plot3d_parametric_line
from sympy.abc import x, y, t

print('12, 13.')

a = Matrix([2, -1, 1])
b = Matrix([3, 1, 1])
v = Matrix([2, -1, -5])
a1 = Matrix([2, 1, 5])
b1 = Matrix([3, -2, 1])
v1 = Matrix([11, 13, -7])


class Test(TestCase):
    def test_12(self):
        self.assertEqual(a.dot(v), 0)
        self.assertEqual(b.dot(v), 0)

    def test_13(self):
        self.assertEqual(a1.dot(v1), 0)
        self.assertEqual(b1.dot(v1), 0)


p = plot3d(-(2 * x - y) + 1,
           -(3 * x + y) + 2,
           show=False)

p.append(
    plot3d_parametric_line(
        2 * t, -t, -5 * t,
        legend=True,
        show=False,
    )[0]
)
p.save('sample12.png')
p = plot3d((5 - (2 * x + y)) / 5,
           3 - (3 * x - 2 * y),
           show=False)

p.append(
    plot3d_parametric_line(
        11 * t, 13 * t, -7 * t,
        (t, -2, 2),
        legend=True,
        show=False,
    )[0]
)
p.save('sample13.png')
p.show()

if __name__ == "__main__":
    main()

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

% ./sample12.py -v
12, 13.
test_12 (__main__.Test) ... ok
test_13 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK
%

0 コメント:

コメントを投稿