Pythonにおけるquad()の利用方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにおけるquad()の利用方法について現役エンジニアが解説しています。quad()関数というのは、Pythonの科学技術計算ライブラリであるSciPyに付属している積分用の関数です。積分の計算などに用いられます。

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

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

 

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

Pythonにおけるquad()の利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

 
この記事では、Python初心者の方向けにquad()関数について解説します。
 

quad()とは?

quad()関数というのは、Pythonの科学技術計算ライブラリであるSciPyに付属している積分用の関数です。

quad()関数は1変数の積分をしたい場合に使われるもので、多次元の積分の場合には、dblquad()関数やtplquad()関数、nquad()関数などを使います。
 

quad()の使い方

quad()関数の記述の仕方は次のようになります。

quad(積分したい関数, 積分範囲の下限, 積分範囲の上限)

ここで、積分したい関数というのは事前に定義しておく必要があります。

数式のほうが理解しやすい方のために、画像を貼っておきます。

Pythonにおけるquad()関数の使い方。1変数の積分をしたい場合に使われる数式

この図のような積分を行ないたい場合には、

def f(x):
  関数の定義
quad(f, a, b)

というように記述します。

実は、関数をあらかじめ定義しておく以外にも積分を実行する方法があります。それが、無名関数lambdaというものを使う方法です。

無名関数lambdaは慣れないと少しわかりにくい部分があるのですが、一度慣れてしまえばコードを少ない行数でシンプルに記述できます。

今回はquad()関数で使いますが、それ以外の関数や処理の中でも使うことがよくあるので、まだ使ったことのないような方はぜひ使ってみてください。

lambdaを使って記述する場合は、

quad(lambda x: 関数の定義, 積分範囲の下限, 積分範囲の上限)

という形で記述します。

「関数の定義」の部分に、defで記述した場合と同じような形で定義を記述すればよいので、quad()関数の中に、積分したい関数の定義を記述できるということになります。
 

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

quad()を利用して積分の計算処理をしてみよう

それでは実際に、quad()関数を使った積分の計算をしてみたいと思います。

今回行う積分は次のような積分です。

Pythonにおけるquad()関数の使い方。quad関数による積分の計算方法

実はこの積分は円周率に一致することが知られているそこそこ有名な積分です。

ただ、今回のPythonを使った計算では、円周率が無理数なので完全には求まらず、ある一定の誤差の範囲で求まります。

このように、コンピュータを使った積分などの計算では誤差が生じることを知っておいてください。

それでは、関数をあらかじめ定義してから行なう方法と、無名関数lambdaを定義してから行なう方法の2通りを試していきます。

まず、関数を定義してから行なう方法ですが、

import numpy as np
from scipy.integrate import quad

def function(x):
  return 4/(1+x**2)

print(quad(function, 0, 1))

のように記述します。(SciPyはNumpyに依存しているので、最初にNumpyをインストールしました。)

これを実行すると、

(3.1415926535897936, 3.4878684980086326e-14)

と表示されると思います。

表示された数のうち1番目が積分の値で、2番目は誤差となっています。

このようにほぼ円周率に近い値が表示されていますが、誤差が含まれることにちゅういしてください。

続いて、lambdaを使った場合にについてのコードを次に示します。

import numpy as np
from scipy.integrate import quad
print(quad(lambda x: 4/(1+x**2), 0, 1))

これを実行して先ほどと同じように

(3.1415926535897936, 3.4878684980086326e-14)

と表示されます。

こちらの書き方のほうが短い行数で書くことができるので個人的にはオススメです。

基本的にどちらの方法で記述しても計算結果は変わらないので好きな方を使うと良いでしょう。

以上、この記事では、PythonのSciPyライブラリのquad()関数を使った積分の計算を紹介しました。

数値計算が必要な場合など、必要に応じて使ってみてください。
 

監修してくれたメンター

小倉翔悟(おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

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

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