本ページはプロモーション(PR)が含まれています
更新日: 2026/04/14
SymPyの使い方まとめ — Python で数式処理を始めよう
SymPy は Python で数式を記号的に扱える数式処理ライブラリです。手計算で行う式の展開・因数分解・微分・積分・行列計算などを、コードで正確に実行できます。
このページでは、SymPy の基本操作から微分積分・行列・方程式・フーリエ解析まで、主要な機能をセクション別にまとめています。Python の基本文法が分かっていれば読み進められます。
初めての方は「SymPyとは」と「シンボルの定義」から始めてください。それ以降のセクションは、必要なものから読んで構いません。SymPy のインストールは pip install sympy で行えます。
SymPyの概要
- SymPyとは — SymPy の特徴と主要機能の全体像、インストール方法
基本的な数式操作
- シンボルの定義 — Symbol と symbols による変数の作り方、実数・正値などの仮定の設定
- 代入と評価 — subs() で値や式を代入し、evalf() や lambdify() で数値評価する
- 単純化 (simplify) — simplify() で数式を簡潔な形に整理する方法と注意点
- 対数の単純化 (logcombine) — logcombine() で対数式をまとめる
- 式の展開 (expand)・部分分数分解・加法定理 — expand() による多項式・分数式・三角関数の展開
- 因数分解 (factor) — factor() で多項式を因数の積に分解する
微分と積分
- 微分・偏微分・高階微分について — diff() で1変数・多変数・高階の微分を計算する
- 定積分と不定積分 — integrate() による不定積分・定積分の計算、多変数への適用
- マクローリン展開について — series() で関数を x=0 まわりに級数展開する
- テイラー展開について — series() で任意の点まわりにテイラー展開する
方程式の解法
- 方程式の解き方 — solve() と Eq() で代数方程式の解を求める
- 連立方程式の解法について — solve() に複数の式を渡して連立方程式を解く
行列操作
- 行列の積について — Matrix で行列を定義し、* 演算子で積を計算する
- 行列の和について — Matrix 同士の加算とスカラー倍
- 逆行列の計算について — inv() で逆行列を求める
- 行列式の計算について — det() で行列式を求める
- 固有値と固有ベクトル — eigenvals() と eigenvects() で固有値・固有ベクトルを求める
微分方程式
- 常微分方程式と連立微分方程式の解法 (dsolve) — dsolve() で1階・2階の常微分方程式と連立系の解き方、初期条件の指定を扱う
数列
- 漸化式の解法について — rsolve() で漸化式から一般項を求める
- 漸化式の和について — summation() で等差・等比数列の和や無限級数を計算する
ベクトル
フーリエ解析
- フーリエ級数展開 — fourier_series() で周期関数を三角関数の級数に展開し、Matplotlib で可視化する
- フーリエ変換とフーリエ逆変換 — fourier_transform() と inverse_fourier_transform() で時間領域・周波数領域を相互変換する
その他
- Gray Code の生成 — sympy.combinatorics の GrayCode クラスで任意ビット数のグレイコードを生成する
よくあるエラー
- ModuleNotFoundError: No module named ‘sympy’ の解決方法 — SymPy が見つからないエラーの原因と対処法
- TypeError: cannot unpack non-iterable Symbol object の解決方法 — symbols() のアンパック時に起きるエラーの原因と対処法