忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】SymPyで定積分を解く!x^2 + 1 を範囲指定で計算

数学の解析学において重要な「積分」。PythonのSymPyライブラリを使えば、不定積分だけでなく、範囲を指定した「定積分」も正確に解くことができます。今回は f(x) = x^2 + 1 を [0, 1] の区間で積分する方法を解説します。

1. 考え方:SymPyによる定積分の指定

SymPyで積分を行うには integrate 関数を使用します。定積分の場合は、対象となる変数と、その開始値・終了値を「タプル」という形式で指定するのがルールです。

[ 計算する式 ]
∫ (x^2 + 1) dx (範囲: 0から1)

[ SymPyでの記述 ]
integrate(式, (変数, 開始, 終了))
・今回の例:integrate(x**2 + 1, (x, 0, 1))

2. Pythonサンプルプログラム

変数 x を記号として定義し、それを使って式を組み立てます。計算結果が分数のまま保持されるのがSymPyの強みです。

# -*- coding: utf-8 -*-
from sympy import symbols, integrate

def main():
    # 変数xを記号として定義
    x = symbols('x')

    # 式 f(x) = x^2 + 1 の定義
    f = x**2 + 1

    # 0から1の区間で積分を実行
    # integrate(式, (変数, 開始, 終了))
    ans = integrate(f, (x, 0, 1))

    print("SymPyによる定積分を開始します。")
    print(f"x^2 + 1 を [0, 1] で積分した結果: {ans}")

if __name__ == "__main__":
    main()

3. 実行結果

SymPyによる定積分を開始します。
x^2 + 1 を [0, 1] で積分した結果: 4/3

4. ステップアップ:不定積分と数値化

定積分以外にも、SymPyは柔軟な計算が可能です。

  • 不定積分:範囲を指定せず integrate(f, x) とすれば、元の関数(原始関数)を返します。
  • 小数への変換:結果の 4/31.333... のように小数で表示したい場合は、ans.evalf() メソッドを使います。

5. まとめ

手計算では分数や計算ミスが起きやすい積分も、SymPyを使えば正確かつ迅速に解くことができます。特に理数系のシミュレーションやアルゴリズム開発において、数式をそのままコードに落とし込めるメリットは非常に大きいです。ぜひ活用してみてください!

PR