mei_13のPython講座 ロゴ

【Pythonコラム】Pythonで数式を操る!SymPy入門:電卓以上の数学体験をあなたに




Pythonで数式を操る!SymPy入門:電卓以上の数学体験をあなたに

Pythonといえば、AIやデータ分析でよく使われるプログラミング言語ですが、実は数学も得意なんです。その秘密兵器が「SymPy(シンパイ)」というライブラリ。SymPyを使えば、電卓ではできない複雑な数式処理を、まるで紙とペンで計算するようにPythonで実行できます。

SymPyって何ができるの?

SymPyは、数式を記号として扱えるのが最大の特徴です。例えば、以下のようなことができます。

  • 数式の展開・因数分解: (x + 1)**2 を展開して x**2 + 2*x + 1 にしたり、その逆の因数分解も簡単。
  • 方程式を解く: x**2 - 2*x + 1 = 0 のような方程式の解を求められます。
  • 微分・積分: 複雑な関数も、記号的に微分や積分ができます。
  • 極限を求める: limit(sin(x)/x, x, 0) のように、極限値を計算できます。
  • 行列計算: 行列の作成、逆行列、固有値など、線形代数の計算もこなせます。

これらの機能は、物理学、工学、経済学など、数式を使うあらゆる分野で役立ちます。

SymPyを始めるための準備

まずはSymPyをインストールしましょう。ターミナルやコマンドプロンプトで以下のコマンドを実行します。

pip install sympy

インストールが終わったら、PythonでSymPyを使えるようになります。

import sympy

SymPyの基本的な使い方

SymPyで数式を扱うには、まず記号(変数)を定義する必要があります。symbols() 関数を使って、記号を定義しましょう。

from sympy import symbols

x, y = symbols('x y')

これで、xy を数式の中で変数として使えるようになりました。

例えば、数式 x + y をSymPyで表現するには、このように書きます。

expression = x + y
print(expression)  # 出力: x + y

計算結果も記号のまま表示されるのがポイントです。

具体的な例:数式の展開と因数分解

SymPyの威力を実感するために、数式の展開と因数分解を試してみましょう。

from sympy import symbols, expand, factor

x = symbols('x')

# 展開
expression = (x + 1)**2
expanded_expression = expand(expression)
print(f"展開: {expression} -> {expanded_expression}")  # 出力: 展開: (x + 1)**2 -> x**2 + 2*x + 1

# 因数分解
expression = x**2 + 2*x + 1
factored_expression = factor(expression)
print(f"因数分解: {expression} -> {factored_expression}")  # 出力: 因数分解: x**2 + 2*x + 1 -> (x + 1)**2

expand() 関数で数式を展開、factor() 関数で因数分解ができます。簡単ですね!

具体的な例:方程式を解く

方程式を解くには、solve() 関数を使います。

from sympy import symbols, solve

x = symbols('x')

# 方程式 x**2 - 2*x + 1 = 0 を解く
equation = x**2 - 2*x + 1
solutions = solve(equation, x)
print(f"方程式 {equation} の解: {solutions}")  # 出力: 方程式 x**2 - 2*x + 1 の解: [1]

solve() 関数に、方程式と解きたい変数を渡すと、解がリスト形式で返ってきます。

SymPyの奥深さ

ここではSymPyのほんの一部分を紹介しましたが、SymPyにはまだまだ多くの機能があります。微分積分、線形代数、微分方程式の求解など、高度な数学的処理も可能です。SymPyのドキュメント(英語)には、詳細な使い方が解説されていますので、ぜひ挑戦してみてください。

SymPyをマスターすれば、Pythonでの数学的な問題解決能力が格段に向上します。複雑な数式に頭を悩ませる日々から解放され、創造的な数学の世界をPythonで探求してみましょう!



< Scipy
コラム一覧に戻る
Numba >

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!