数学のブログ

距離空間の世界 R^nにおける曲線 スパイラル、長さ、三角関数、正弦と余弦、ノルム

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

dx dt = - a ( sin t ) dy dt = a ( cos t ) dz dt = b
( dx dt ) 2 + ( dy dt ) 2 + ( dz dt ) 2
= a 2 sin 2 t + a 2 cos 2 t + b 2
= a 2 + b 2

よって求める 曲線、スパイラルの長さは、

0 2 π a 2 + b 2 dt = 2 π a 2 + b 2

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Matrix, sin, cos, Derivative, pi, Integral, sqrt
from sympy.plotting import plot3d_parametric_line

print('3.')

a, b, t = symbols('a, b, t', real=True)
gamma = Matrix([a * cos(t), a * sin(t), b * t])


class Test(TestCase):
    def test(self):
        self.assertEqual(
            Integral(Derivative(gamma, t, 1).doit().norm(),
                     (t, 0, 2 * pi)).doit(),
            2 * pi * sqrt(a ** 2 + b ** 2)
        )


X = gamma.subs({a: 1, b: 2})
p = plot3d_parametric_line(
    (*X, (t, -pi, 0)),
    (*X, (t, 0, 2 * pi)),
    (*X, (t, 2 * pi, 3 * pi)),
    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('sample3.png')
p.show()
if __name__ == "__main__":
    main()

入出力結果

% ./sample3.py -v
3.
test (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.429s

OK
%