2017年10月26日木曜日

学習環境

数学読本〈5〉微分法の応用/積分法/積分法の応用/行列と行列式(松坂 和夫(著)、岩波書店)の第20章(面積、体積、長さ - 積分法の応用)、20.4(簡単な微分方程式)、変数分離形の微分方程式、問40.を取り組んでみる。


    1. 微分方程式の一般解。

      dy dx =x( y1 ) y1 dy y1 =xdx dy y1 = xdx log| y1 |= 1 2 x 2 + C 1 y1=± e 1 2 x 2 + C 1 y=± e 1 2 x 2 e C 1 +1 y=C e 1 2 x 2 +1

      初期条件より。

      4=C e 1 2 0 +1 4=C+1 C=3

      よって求める解。

      y=3 e 1 2 x 2 +1
    2. 微分方程式の一般解。

      ( x 2 +1 ) dy dx =2xy y0 dy y = 2x x 2 +1 dy y = 2x x 2 +1 dx log| y |=log| x 2 +1 |+ C 1 log| y |=log| x 2 +1 |+log e C 1 log| y |=log( | x 2 +1 | e C 1 ) y=| x 2 +1 | C 2 y=± C 2 ( x 2 +1 ) y=C( x 2 +1 )

      初期条件より。

      25=C( 2 2 +1 ) 25=C5 C=5

      よって、求める解。

      y=5( x 2 +1 )

コード(Emacs)

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, Derivative, exp, sqrt

print('40.')
x, y, D = symbols('x y D')
ys = [(3 * exp(x ** 2 / 2) + 1, 0, 4),
      (5 * (x ** 2 + 1), 2, 25)]

eqs = [D - x * (y - 1),
       (x ** 2 + 1) * D - 2 * x * y]


for i, ((y0, x1, y1), eq) in enumerate(zip(ys, eqs), 1):
    print(f'({i})')
    D0 = Derivative(y0, x, 1)
    for t in [y0, eq.subs({D: D0}), eq.subs({x: x1, y: y1, D: D0.doit()})]:
        pprint(t)
        print()
    print()

入出力結果(Terminal, Jupyter(IPython))

$ ./sample40.py
40.
(1)
    2    
   x     
   ──    
   2     
3⋅ℯ   + 1

               ⎛    2    ⎞
               ⎜   x     ⎟
               ⎜   ──    ⎟
             d ⎜   2     ⎟
-x⋅(y - 1) + ──⎝3⋅ℯ   + 1⎠
             dx           

0


(2)
   2    
5⋅x  + 5

         ⎛ 2    ⎞ d ⎛   2    ⎞
-2⋅x⋅y + ⎝x  + 1⎠⋅──⎝5⋅x  + 5⎠
                  dx          

0


$

0 コメント:

コメントを投稿