数学のブログ

距離空間の世界 R^nにおける曲線 パラメーター、円、三角関数(正弦と余弦)、位置ベクトル、速度ベクトル、加速度ベクトル、直交、内積、向き

解析入門(中) (松坂和夫 数学入門シリーズ 5) (松坂 和夫 (著)、岩波書店)の第12章(距離空間の世界)、12.4(R^nにおける曲線)、問題1の解答を求めてみる。

a

速度ベクトル。

d dt f ( t ) = d dt ( cos ω t , sin ω t ) = ( - ω sin ω t , ω cos ω t )
f ( t ) · d dt f ( t )
= ( cos ω t , sin ω t ) · ω ( - sin ω t , cos ω t )
= ω ( - sin ω t cos ω t + sin ω t cos ω t )
= 0

よって、 速度ベクトルと位置ベクトルと直交する。

b

加速度ベクトル。

d 2 d t 2 f ( t ) = ( - ω 2 cos ω t , - ω 2 sin ω t ) = - ω 2 f ( t )

よって、加速度ベクトルは位置ベクトルと反対の向きをもつ。

c

速さ。

v ( t ) = f ' ( t ) = ω

加速度スカラー。

a ( t ) = f ' ' ( t ) = ω 2

よって、 速さと加速度スカラーは一定である。

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Matrix, sin, cos, Derivative, pi
from sympy.plotting import plot_parametric
from sympy.abc import t

print('1.')

omega = symbols('ω', positive=True)
f = Matrix([cos(omega * t), sin(omega * t)])
f1 = Derivative(f, t, 1).doit()
f2 = Derivative(f, t, 2).doit()
v = f1.norm()
a = f2.norm()


class Test(TestCase):
    def test_a(self):
        self.assertEqual(f.dot(f1), 0)

    def test_b(self):
        self.assertEqual(f2, -omega ** 2 * f)


p = plot_parametric(
    (*f.subs({omega: 1}), (t, 0, 2 * pi)),
    (*(f.subs({omega: 1, t: 1}) + t * f1.subs({omega: 1, t: 1})), (t, 0, 1)),
    (*(f.subs({omega: 1, t: 1}) + t * f2.subs({omega: 1, t: 1})), (t, 0, 1)),
    legend=True,
    show=False
)
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p, colors):
    o.line_color = color
p.save('sample1.png')
p.show()
if __name__ == "__main__":
    main()

入出力結果

% ./sample1.py -v        
1.
test_a (__main__.Test) ... ok
test_b (__main__.Test) ... ok

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

OK
%