11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Pythonの象徴計算ライブラリ SymPy 入門

Posted at

はじめに

Python で数値計算といえば NumPy や SciPy が定番ですが、
「数式そのもの」を扱いたい場面では、彼らは少し不器用です。

そこで登場するのが SymPy(シンパイ)
SymPy は 純粋 Python 製の象徴計算(Symbolic Computation)ライブラリで、

✔ 数式を文字のまま扱い
✔ 厳密解を返し
✔ 数学的な推論や検証を可能にする

という、理論派エンジニア・研究者・セキュリティ屋に刺さる存在です。


1. SymPyとは何か?

SymPy = Symbolic Python

  • 数値ではなく 記号(シンボル) を計算対象にする
  • 展開・因数分解・微積分・方程式・数論まで網羅
  • 外部依存なし(Pure Python)

一言で言うと:

「Pythonで数式をそのまま操作できる数学エンジン」


2. NumPyとの決定的な違い

観点 SymPy NumPy
計算対象 数式・記号 数値(浮動小数点)
結果 厳密解 近似値
用途 理論・検証・証明 高速数値計算
速度 遅め 非常に速い
  • 数学の意味を保ちたいなら SymPy
  • 性能を出したいなら NumPy

両者は競合ではなく、完全に役割分担です。


3. 最小構成で始める SymPy

インストール

pip install sympy

シンボルを定義する

from sympy import symbols

x, y = symbols('x y')

この x は数値ではありません。
「x という数学記号」そのものです。


4. 代数計算(展開・因数分解)

from sympy import expand, factor

expr = (x + 1)**2

expand(expr)
# x**2 + 2*x + 1

factor(x**2 + 2*x + 1)
# (x + 1)**2

手計算レベルの操作を、そのままコードに。


5. 微分・積分・極限

微分

from sympy import diff

diff(x**3 + 2*x, x)
# 3*x**2 + 2

積分

from sympy import integrate

integrate(x**2, x)
# x**3/3

極限

from sympy import limit

limit(1/x, x, 0)
# oo(無限大)
  • 数値誤差ゼロ
  • 証明・検証用途で安心

6. 方程式を「解く」

from sympy import solve

solve(x**2 - 4, x)
# [-2, 2]

連立方程式もOK:

solve([x + y - 3, x - y - 1], [x, y])
# {x: 2, y: 1}

7. 数論機能(セキュリティ分野で重要)

素因数分解

from sympy.ntheory import factorint

factorint(988027)
# {941: 1, 1051: 1}

戻り値は
{素因数: 指数} の辞書。

  • RSA や暗号強度の検証
  • CTF / 教育用途
  • 計算可能性の実験

などでよく使われます。


8. どんな人に向いている?

  • ✔ 数学・アルゴリズムを深く理解したい
  • ✔ 暗号・セキュリティの理論検証をしたい
  • ✔ 数式をブログ・論文・教材に落としたい
  • ✔ 「なぜそうなるか」をコードで示したい

逆に、

  • とにかく速く大量計算したい
    → NumPy / SciPy を使いましょう。

おわりに

SymPy は派手ではありません。
でも一度ハマると、

「数式をコードに写す」
「理論をそのまま実装する」

という体験がやめられなくなります。

数学とプログラミングの境界を、
一番エレガントに溶かすライブラリ――それが SymPy です。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?