■定積分
定積分とは、ある一定の区間[a, b]における、曲線と曲線、曲線と直線とで囲まれた面積である。
・ざっくりイメージ図
上図の色をつけた長方形について、縦をf(x)とし、横をdxとした場合、長方形の面積は、f(x)とdxを掛け合わせた値「f(x)dx」となる。
dxを限りなく小さい値( ≒ 0)とし、この長方形を区間[a, b]で加えていけば、面積を求めることができる。
面積Sを求める場合は以下の公式を使用する。
■sympy.integrateの使い方(定積分)
定積分の場合、sympy.integrateは以下のように使用する。
sympy.integrate(計算式, (x, 開始, 終了))
■例題
問題1
問題2
問題3
■サンプルコード
import sympy
# 文字列の定義
x = sympy.Symbol('x')
# 問題(1)の式をセット
formula1 = 9 * x ** 2 - 4 * x + 3
# integrateを使用して積分を計算(1から2まで)
ans1 = sympy.integrate(formula1, (x, 1, 2))
# 計算結果を出力
print('問題1:', ans1)
# 問題(2)の式をセット
formula2 = (3 * x - 1) * (x + 1)
# integrateを使用して積分を計算(1から3まで)
ans2 = sympy.integrate(formula2, (x, 1, 3))
# 計算結果を出力
print('問題2:', ans2)
# 問題(3)の式をセット
formula3 = (8 / 3) * x ** 3 + x - 1
# integrateを使用して積分を計算(-1から2まで)
ans3 = sympy.integrate(formula3, (x, -1, 2))
# 計算結果を出力
print('問題3:', round(ans3, 2))
■実行結果
問題1: 18
問題2: 32
問題3: 8.50
■参考
問題1について、面積を求めた部分をグラフに図示し、赤字で示す。
import numpy as np
from matplotlib import pyplot as plt
def MakeGraph():
# 便宜上、-3から3までの値を0.1間隔で設定
x_min = -3
x_max = 3
x_interval = 0.1
x_val = np.arange(x_min, x_max, x_interval)
# 積分の範囲(1から2まで)
integral_x = np.arange(1, 2.1, 0.1)
# 関数f(x)を格納する配列
y_val = []
integral_y = []
# それぞれ配列に格納していく(便宜上、nは0.1間隔でセット)
for i in x_val:
y_val.append(9 * i ** 2 - 4 * i + 3)
for i in integral_x:
integral_y.append(9 * i ** 2 - 4 * i + 3)
# 関数f(x)のグラフを作成
plt.plot(x_val, y_val, color='blue', label="f(x)")
# グラフにx軸,y軸(0)を図示
# 補助線(0)を作成 [axhline:水平 axvline:垂直]
plt.axhline(y=0, color="gray")
plt.axvline(x=0, color="gray")
# ラベルの表示
plt.legend(bbox_to_anchor=(1, 1), loc='upper left',
borderaxespad=0, fontsize=8)
# xの値が1から2までの範囲を塗りつぶす
plt.fill_between(integral_x, integral_y, facecolor='red')
# グラフを表示
plt.show()
if __name__ == '__main__':
MakeGraph()