PythonのSymPyライブラリの使い方を現役エンジニアが解説【初心者向け】

初心者向けにPythonのSymPyライブラリの使い方について現役エンジニアが解説しています。SymPyとはPythonで数式処理を行うためのライブラリです。SymPyでは基本的な演算から微分・積分、三角関数や暗号化などを行うことが出来ます。pipでインストールして基本的な関数を確認しましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

PythonのSymPyライブラリの使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PythonのSymPyライブラリの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

SymPyとは

SymPyとは、Pythonで数式処理を行うためのライブラリです。

このライブラリのプロジェクトでは、Pythonらしいシンプルなコードを保ちつつ、フル機能のコンピュータ代数システム(CAS)になることを目指しています。SymPyはすべてPythonで書かれており、外部ライブラリに依存することなく利用できます。
 

SymPyでできること

SymPyは主に以下のことができる機能を提供しています。

  • 基本的な演算
  • 展開
  • 微分・積分
  • 方程式
  • 暗号化
  • 三角関数、指数関数などの数学で使用される関数

 

SymPyの基本的な関数の使い方

インストール

はじめにSymPyをインストールします。以下の1行を実行します

pip install sympy

ライブラリのインポートは以下の通りです。

from sympy import *

 

基本的な関数のまとめ

それでは、SymPyで使える関数をまとめておきます。

  • symbol():変数や式を定義します
  • subs():SymPyで定義した変数に代入をします
  • sqrt():引数で指定した数値や変数の平方根を示します
  • Rational():引数に分子, 分母と指定することで分数の形式で計算を行います
  • solve():方程式をときます
  • expand():引数で指定した式を展開します
  • factor():引数で指定した式を因数分解します
  • diff():微分を行います
  • integrate():積分を行います

 

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは、実際にSymPyを使って計算を行ってみましょう。以下のコードを適当なフォルダに保存してください。

from sympy import *
# 変数、方程式を定義
(x, y)= symbols("x y")
fm = x * x + 2 * x + 1
# fmの微分
print("微分:", diff(fm))
# fmの積分
print("積分:", integrate(fm))
# 因数分解
print("因数分解:", factor(fm), "\n")
# 方程式を解く(この場合はfm=0の場合のxの値を解く)
print("x=",solve(fm, x)[0], "\n")
# 連立方程式(solveにリストを渡すだけで実行できる)
fm0 = x**2 + 2*x*y + 5*y - 2
fm1 = x**2 - x*y - 2*y**2
for x_, y_ in solve([fm0, fm1], [x, y]):
    print("x=", x_, "\ty=", y_)

 

まとめ

今回はSymPyを使って数値計算を行う方法を紹介してきました。

SymPyを使えば高校数学の問題を簡単に解くことができ、シミュレーションを行う際にとても役に立ちます。

また、SymPyで作成した数式をNumPyやmatplotlibを使ってグラフに表示させればPythonだけで実験結果を可視化させることも簡単にできます。プログラムを書かないけど実験結果を可視化させたい方におすすめです。
 

監修してくれたメンター

メンター三浦

モバイルゲームを運用している会社のエンジニアをしています。趣味でWEB開発やクラウドコンピューティングもやっており、ソフトもハードもなんでもやります。

TechAcademyジュニアではPythonロボティクスコースを担当しています。好きな言語はPython, Node.js。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。