Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python・NumPyのtrapz()で複合台形公式により積分する方法:サンプルポイントxを指定して逆順に積分

NumPyでは、numpy.trapz()メソッドを使うことで、複合台形公式(composite trapezoidal rule)に基づいて数値積分を行うことができます。引数xが指定された場合、積分はその要素の並び順に沿って実行されます。つまり、xの値が降順など「逆順」に並んでいても自動的にソートされることはなく、与えられた順序のまま計算されます。

このメソッドは、n次元配列である「y」を単一の軸に沿って台形公式で近似した定積分の値を返します。「y」が1次元配列の場合、結果はfloat型になります。「n」が1より大きい場合は、「n-1」次元の配列が返されます。

主なパラメータ

  • y(第1引数):積分対象となる入力配列。
  • x(第2引数):yの各値に対応するサンプルポイント。xがNoneの場合、サンプルポイントは間隔dxで等間隔に並んでいるものとみなされます。デフォルトはNone。
  • dx(第3引数):xがNoneのときに使用されるサンプルポイント間の間隔。デフォルトは1。
  • axis(第4引数):積分を実行する軸。

実行手順

まず、必要なライブラリをインポートします。

import numpy as np

array()メソッドを使ってNumPy配列を作成します。ここではint型の要素を含む配列を用意します。

arr = np.array([20, 35])

配列を表示します。

print("Our Array...\n",arr)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

データ型を確認します。

print("\nDatatype of our Array object...\n",arr.dtype)

複合台形公式で指定軸に沿って積分するために、numpy.trapz()メソッドを使用します。ここでは、サンプルポイントとしてx = [80, 55](降順=逆順の並び)を指定しています。

print("\nResult (trapz)...\n",np.trapz(arr, x = [80, 55]))

コード例

import numpy as np

# array()メソッドでNumPy配列を作成
# int型の要素を追加
arr = np.array([20, 35])

# 配列を表示
print("Our Array...\n",arr)

# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を確認
print("\nDatatype of our Array object...\n",arr.dtype)

# 複合台形公式で積分(サンプルポイントxを逆順に指定)
print("\nResult (trapz)...\n",np.trapz(arr, x = [80, 55]))

出力結果

Our Array...
[20 35]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Result (trapz)...
-687.5

結果の解説

この例では、y = [20, 35]、x = [80, 55]という組み合わせで積分を行っています。台形公式による面積は「(35 + 20) / 2 × (55 − 80)」として計算され、xが降順(逆順)に並んでいるため区間幅が負になり、結果は-687.5となります。これは、trapz()がxの要素をソートせず、与えられた順序のまま積分することを示す好例です。

なお、NumPy 2.0以降ではnp.trapz()は非推奨となり、代わりにnp.trapezoid()の使用が推奨されています。古いバージョンとの互換性が必要な場合を除き、新しい環境ではnp.trapezoid()を使うとよいでしょう。

  1. PythonとNumPyのtrapz()メソッドで複合台形公式により軸0に沿って積分する方法

    指定した軸に沿って複合台形公式を用いて数値積分を行うには、numpy.trapz()メソッドを使用します。xが指定された場合は、その要素の並び順に従って順次積分が実行されます(要素は自動的にソートされません)。このメソッドは、台形公式によって単一の軸に沿って近似計算された、n次元配列「y」の定積分を返します。戻り値の形状は入力配列の次元によって変わります。「y」が1次元配列の場合、結果はfloat型のスカラー値となり、「y」がn次元(n > 1)の場合、結果は「n-1」次元の配列となります。主なパラメータy(第1引数):積分対象となる入力配列です。x(第2引数):yの各値に対応するサンプ

  2. PythonのNumPyで複合台形公式を使って軸1に沿って積分する方法

    複合台形公式(composite trapezoidal rule)を使用して、指定した軸に沿って数値積分を行うには、numpy.trapz()メソッドを使用します。xが指定された場合、積分はその要素の並び順に従って実行され、要素は自動的にソートされません。このメソッドは、台形公式によって単一の軸に沿って近似したn次元配列「y」の定積分を返します。「y」が1次元配列の場合、結果はfloat型となり、「n」が1より大きい場合は「n-1」次元の配列が返されます。 なお、NumPy 2.0以降ではnp.trapzは非推奨となっており、代わりに同じ機能を持つnp.trapezoidの使用が推奨されてい