Math」タグアーカイブ

Pythonで数式処理

Pythonで数式処理をしたい場合はSymPyが便利です。

SymPy
http://www.sympy.org/

ライセンスはLicensed under BSD。

使い方

モジュールのインポート

>>> from sympy import *

シンボルx, yで計算

>>> x, y = symbols('x y')
>>> expr = x + 2*y
>>> expr + 1
x + 2*y + 1
>>> expr - x
2*y

expr - 1x + 2*y - xではなく、ちゃんと計算して2*yになります。

展開と因数分解もできます。

>>> expand(expr * expr)
x**2 + 4*x*y + 4*y**2
>>> factor(x**2 + 4*x*y + 4*y**2)
(x + 2*y)**2

見栄え良く表示したい場合は次のようにします。

>>> init_printing(use_unicode=True)
>>> expand(expr * expr)
 2              2
x  + 4⋅x⋅y + 4⋅y

微分、積分もできます。

>>> diff(sin(x), x)
cos(x)
>>> integrate(sin(x), (x, 0, pi))
2

等式の計算もできます。

>>> solve(x**2 -2,  x)
⎡   ___    ___⎤
⎣-╲╱ 2 , ╲╱ 2 ⎦

x^2 - 2 = 0の解を求めています。

行列など、他にもいろいろできるそうです。

Pythonでの総乗の求め方

総和(sum)はPythonのsum関数を使って計算できます。

>>> a = [1, 2, 3, 4, 5]
>>> sum(a)
15

総乗の方はprodなどの関数が用意されていないみたいですが、operator.mulreduceを使うと次のようにできます。

>>> import operator
>>> reduce(operator.mul, a, 1)
120

(追記)Python3.8でmath.prodが追加されました

コメントで教えて頂きましたが、Python3.8で総乗を計算する関数math.prodが追加されました。

使い方は次のような感じです。

>>> import math
>>> a = [1, 2, 3, 4, 5]
>>> math.prod(a)
120

今後、総乗を計算する場合は、このmath.prodを使うのが便利かなと思います。