実際に書いてみる!Pythonで積分を求める方法【初心者向け】

初心者向けにPythonで積分を求める方法について解説しています。機械学習では積分のように、いくつかの数学の知識が必要になる場面があります。PythonではSciPyやSymPyというライブラリを利用して積分を行います。ライブラリのインストール方法と書き方を学んでいきましょう。

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

Pythonで積分を求める方法について解説します。

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

積分を求める方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

積分とは

積分とは、ある一定区間の面積を求める計算方法です。以下のように複雑な領域であっても、面積を求めることができます。

wikipedia

積分は、領域をx軸方向に細かく分断することで面積を求めていきます。この細かく分断する手法で、その時のグラフの角度を求めるのが微分です。

wikipedia

積分は、一定時間の仕事量を求めるような場面で利用されます。例えば、車の移動距離は、速度と時間の積で求められますが、速度は一定ではありません。そこで積分の考え方を使い、時間を細かく分断し、各時間毎の平均速度と時間の積を累計することで、移動距離を求めることができます。

なお、 Python で機械学習を行う場合、数学の分野として「線形代数」「微分積分」「統計」を覚えておくと便利です。特に機械学習ではたくさんの数値を行列の形で一度に扱うため「線形代数」の知識は重要です。「微分積分」については機械学習のライブラリを利用する程度であれば、概念を覚えておくぐらいで十分でしょう。

 

積分を求める書き方

Python で積分を行うには、SciPy または SymPy というライブラリを使用します。

SciPy

integrate.quad(積分を行う式)

quadは1次元積分を行うメソッドです。その他に2次元以上の積分を行うメソッドもあります。詳しくは公式サイトを参考にしてください。

https://www.scipy.org/

 

SymPy

integrate(積分を行う式)

SymPy は Python で数式を書けるので、より利用しやすいライブラリです。詳しくは公式サイトを参考にしてください。

https://magazine-cf.techacademy.jp/wp-content/uploads/2017/07/index.html2_-620×437-e1499391542321.png

 

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

実際に書いてみよう

まずはライブラリをインストールしましょう。パソコンが Macならターミナル、Windowsならコマンドプロンプトから以下のコマンドでインストールします。なお、事前に Python のインストールが必要です。

pip install sympy

今回のサンプルプログラムでは、SymPy を使った積分式の書き方を紹介します。実行はPythonインタプリタで行います。コマンドラインで「python」と入力すると「>>>」と表示されますので、1行ずつプログラムを入力します。

はじめに必要なライブラリをインポートします。

from sympy import *

次に積分する変数を指定します。

x = symbols('x')

それでは、積分を行いましょう。はじめに不定積分です。

integrate(f,x)

実行結果は以下のようになります。

x**3/3 + x**2 + x

次に定積分です。今回は、-1〜1を指定しています。

integrate(f, (x, -1, 1))

実行結果は以下のようになります。

8/3

なお、diffメソッドを使うと微分も求めることができます。

diff(f, x)

実行結果は以下のようになります。

2*x + 2

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。