2019年12月30日月曜日

学習環境

解析入門(上) (松坂和夫 数学入門シリーズ 4) (松坂 和夫(著)、岩波書店)の第8章(積分の計算)、8.1(不定積分の計算)、問題7の解答を求めてみる。



    1. sinx=sinx2+x2=2sinx2cosx2=2sinx2cosx2sin2x2+cos2x2=2sinx2cosx2sin2x2cos2x2+1=2t1+t2cosx=cosx2+x2=cos2x2-sin2x2=cos2x2-sin2x2cos2x2+sin2x2=1-t21+t2dtdx=1cos2x2·12=cos2x2+sin2x22cos2x2=1+t22dydt=21+t2

      よって、

      dx1+cosx=11+1-t21+t2·21+t2dt=21+t2+1-t2dt=dt=t=tanx2

    2. 置換積分と部分分数分解。

      dxcosx=1+t21-t2·21+t2dt=21-t2dx=211+t1-tdtA1+t+B1-t=B-At+A+B1-t2-A+B=0A+B=1B=12A=12dxcosx=dt1+t+dt1-t=log1+t-log1-t=log1+t1-t=log1+tanx21-tanx2

    3. sinx1+sinxdx=2t1+t2·11+2t1+t2·21+t2dt=4t1+t2t2+2t+1dt=4t1+t21+t2dtAt+Bt2+1+Ct+1+Dt+12At+Bt+12+Ct2+1t+1+Dt2+1=At+Bt2+2t+1+Ct3+t2+t+1+Dt2+1=A+Ct3+2A+B+C+Dt2+A+2B+Ct+B+C+D{A+C=02A+B+C+D=0A+2B+C=1B+C+D=0C=-A2B=1B=1212-A+D=0D=A-12A+12+A-12=0A=0C=0D=-12t1+t21+t2dt=12dt1+t2-dt1+t2=12arctant+11+t=12arctantanx2+11+tanx2=12x2+11+tanx2sinx1+sinxdx=2x2+11+tanx2=x+21+tanx2

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import pprint, symbols, Derivative, sin, cos, tan, atan, log, plot

print('7.')

x = symbols('x')
fs = [1 / (1 + cos(x)),
      1 / cos(x),
      sin(x) / (1 + sin(x))]
gs = [tan(x / 2),
      log(abs((1 + tan(x / 2)) / (1 - tan(x / 2)))),
      x + 2 / (1 + tan(x / 2))]

s = {x: 1}


class MyTestCase(TestCase):
    def test1(self):
        self.assertEqual(float(fs[0].subs(s)),
                         float(Derivative(gs[0], x, 1).doit().subs(s)))

    def test2(self):
        self.assertEqual(float(fs[1].subs(s)),
                         float(Derivative(log((1 + tan(x / 2)) /
                                              (1 - tan(x / 2))), x, 1).doit().subs(s)))

    def test3(self):
        self.assertEqual(float(fs[2].subs(s)),
                         float(Derivative(gs[2], x, 1).doit().subs(s)))


p = plot(*[f for f in fs + gs],
         (x, -5, 5),
         ylim=(-5, 5),
         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.show()
p.save('sample7.png')


if __name__ == '__main__':
    main()

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

% ./sample7.py -v
7.
test1 (__main__.MyTestCase) ... ok
test2 (__main__.MyTestCase) ... ok
test3 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.044s

OK
%

0 コメント:

コメントを投稿