数学のブログ

ベクトルの微分 曲線の長さ、対数関数、三角関数、余弦、速度ベクトル、対数関数と余弦

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

d dt ( t , log ( cos t ) ) = ( 1 , - sin t cos t )
( 1 , - sin t cos t ) dt
= 1 + sin 2 t cos 2 t dt
= 1 cos 2 t dt
cos t > 0
1 cos t dt
= 1 2 ( log ( sin t + 1 ) - log | sin t - 1 | · )

よって、 求める曲線の長さは

1 2 ( log ( 1 2 + 1 ) - log ( 1 - 1 2 ) )
= 1 2 log ( 1 + 2 2 · 2 2 - 1 )
= 1 2 log ( 2 + 1 ) 2
= log ( 2 + 1 )

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import Matrix, Derivative, log, Integral, sqrt, cos, pi
from sympy.plotting import plot_parametric
from sympy.abc import t, u

print('6.')

X = Matrix([t, log(cos(t))])


class Test(TestCase):
    def test(self):
        self.assertEqual(
            float(Integral(1 / cos(t), (t, 0, pi / 4)).doit()),
            float(log(sqrt(2) + 1))
        )


p = plot_parametric(
    (*X, (t, -pi / 3, 0)),
    (*X, (t, 0, pi / 4)),
    (*X, (t, pi / 4, pi / 3)),
    show=False,
)
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']
for o, color in zip(p, colors):
    o.line_color = color
    print(o, color)
p.save('sample6.png')
p.show()


if __name__ == "__main__":
    main()

入出力結果

% ./sample6.py -v
6.
parametric cartesian line: (t, log(cos(t))) for t over (-1.0471975511965979, 0.0) red
parametric cartesian line: (t, log(cos(t))) for t over (0.0, 0.7853981633974483) green
parametric cartesian line: (t, log(cos(t))) for t over (0.7853981633974483, 1.0471975511965979) blue
test (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.434s

OK
%