Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

解析学 (微分積分)。微分、導関数 (Python 3: class (クラス), SymPy: diff(), Rational())

使用するライブラリ

SymPy

Python 3 コード

cls_sym_diff.py

#!/usr/bin/env python3


"""(docstring)
"""


import sympy as sym


class MathProblems:
    """(docstring)
    """

    @staticmethod
    def print_math_problems():
        """(docstring)
        """
        print("""以下の各関数の導関数を求めよ (微分せよ)。

(1) x^2 + 1
(2) x^3
(3) 2x^3
(4) 3x^2
(5) x^2 - 5
(6) 2x^2 + x
(7) 2x^2 - 3x
(8) (1/2)x^3 + 2x
(9) 1/(x+1)
(10) 2/(x+1)
""")


class SymDiff:
    """(docstring)
    """

    def __init__(self, fx):
        """(docstring)
        """
        self.SD_fx = fx

    def calc_derivative(self):
        """(docstring)
        """
        return sym.diff(self.SD_fx)


if __name__ == '__main__':
    MathProblems.print_math_problems()
    print('-'*79)
    print('以下、解答')
    print('-'*79)

    x = sym.Symbol('x')

    fx_list = [x**2 + 1,
               x**3,
               2*x**3,
               3*x**2,
               x**2 - 5,
               2*x**2 + x,
               2*x**2 - 3*x,
               sym.Rational(1, 2)*x**3 + 2*x,
               1/(x+1),
               2/(x+1)]

    for idx, fx in enumerate(fx_list, 1):
        print('({})\n'.format(idx))
        sd = SymDiff(fx)
        sym.pprint(sd.calc_derivative())
        print('')
        print('-'*79)

出力

$ python3 cls_sym_diff.py
以下の各関数の導関数を求めよ (微分せよ)。

(1) x^2 + 1
(2) x^3
(3) 2x^3
(4) 3x^2
(5) x^2 - 5
(6) 2x^2 + x
(7) 2x^2 - 3x
(8) (1/2)x^3 + 2x
(9) 1/(x+1)
(10) 2/(x+1)

-------------------------------------------------------------------------------
以下、解答
-------------------------------------------------------------------------------
(1)

2⋅x

-------------------------------------------------------------------------------
(2)

   2
3⋅x 

-------------------------------------------------------------------------------
(3)

   2
6⋅x 

-------------------------------------------------------------------------------
(4)

6⋅x

-------------------------------------------------------------------------------
(5)

2⋅x

-------------------------------------------------------------------------------
(6)

4⋅x + 1

-------------------------------------------------------------------------------
(7)

4⋅x - 3

-------------------------------------------------------------------------------
(8)

   2    
3⋅x     
──── + 2
 2      

-------------------------------------------------------------------------------
(9)

  -1    
────────
       2
(x + 1) 

-------------------------------------------------------------------------------
(10)

  -2    
────────
       2
(x + 1) 

-------------------------------------------------------------------------------

参考文献 (数式を参考)

解析入門 原書第3版

解析入門 原書第3版