Python 3 で数学を。

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

Σ (シグマ) の計算。(SymPy: latex() で数式を作成し、はてなのtexで表示する) (Python 3, SymPy: Sum(), doit(), latex())

使用する数式例

\sum_{k=1}^{2} k

 \sum_{k=1}^{3} k^{2}

 \sum_{k=1}^{4} k^{3}

などを使用する。

上の数式は以下で作成 (Sympy: latex())

>>> import sympy as sym
>>> k = sym.Symbol('k')
>>> print(sym.latex(sym.Sum(k, (k, 1, 2))))
\sum_{k=1}^{2} k
>>> print(sym.latex(sym.Sum(k**2, (k, 1, 3))))
\sum_{k=1}^{3} k^{2}
>>> print(sym.latex(sym.Sum(k**3, (k, 1, 4))))
\sum_{k=1}^{4} k^{3}

使用するライブラリ

SymPy

Python 3 コード

sigma1.py

#!/usr/bin/env python3


"""(docstring)
"""


import sympy as sym


def sigma1(nums, my_power=1):
    """(docstring)
    """
    k = sym.Symbol('k')
    res = sym.Sum(k**my_power, (k, nums))
    # doit() で評価。
    return res.doit()

    # 他には、summation()


if __name__ == '__main__':
    n_list = [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6]]
    my_power_list = list(range(1, len(n_list)+1))

    # たとえば、
    # [1, 2] は、(1^1)+(2^1) = 55
    # [1, 3] は、(1^2)+(2^2)+(3^2) = 14
    # [1, 4] は、(1^3)+(2^3)+(3^3)+(4^3) = 100
    for nums, my_power in zip(n_list, my_power_list):
        print(sigma1(nums, my_power))
    # なお、累乗にしたくなければ、第 2 引数 を省略すればいいだけ:
    # sigma1([1, 3])

出力

$ python3 sigma1.py
3
14
100
979
12201

関連過去記事:

py3math.hatenablog.com

py3math.hatenablog.com

py3math.hatenablog.com