2019年12月29日日曜日

学習環境

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



    1. dxa2cos2x+b2sin2x=1cos2xa2+b2sin2xcos2xdx

      置換積分法。

      t=tanx

      とおくと、

      dtdx=1cos2x1a2+b2t2dt=1a2dt1+bat2=1a2·abarctanbat=1abarctanbatanx

    2. dxa2cos2x-b2sin2x=dta2-b2t2=dta+bta-btAa+bt+Ba-bt=A+Ba+bB-Ata2-b2t2A+B=1a-A+B=02B=1aB=12aA=12a12adta+btdt+12adta-bt=12a1bloga+bt-1bloga-bt=12abloga+bta-bt=12abloga+btanxa-btanx=12ablogacosx+bsinxacosx-bsinx

コード

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

print('6.')

a, b = symbols('a, b', nonzero=True)
x = symbols('x')
fs = [1 / (a ** 2 * cos(x) ** 2 + b ** 2 * sin(x) ** 2),
      1 / (a ** 2 * cos(x) ** 2 - b ** 2 * sin(x) ** 2)]
gs = [atan(b * tan(x) / a) / (a * b),
      log(abs((a * cos(x) + b * sin(x)) / (a * cos(x) - b * sin(x)))) / (2 * a * b)]

d = {a: 1, b: 2, x: 1}


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


p = plot(*[f.subs({a: 1, b: 2}) 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('sample6.png')


if __name__ == '__main__':
    main()

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

\% ./sample6.py -v
6.
test1 (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.025s

OK
%

0 コメント:

コメントを投稿