주어진 축을 따라 복합 사다리꼴 규칙(composite trapezoidal rule)으로 적분하려면 numpy.trapz() 메서드를 사용합니다. 이 메서드는 사다리꼴 규칙을 이용해 단일 축을 따라 근사한 n차원 배열 y의 정적분 값을 반환합니다. y가 1차원 배열이면 결과는 float이 되고, 차원이 n(n>1)이라면 결과는 (n-1)차원 배열로 나타납니다.
x 값이 제공된 경우에는 적분이 x 요소의 순서대로 진행되며, 요소들이 자동으로 정렬되지 않는다는 점에 유의해야 합니다.
주요 매개변수
- y : 적분할 입력 배열입니다. (첫 번째 매개변수)
- x : y 값에 대응하는 샘플 포인트입니다. x가 None이면 샘플 포인트가 dx 간격으로 균등하게 배치되어 있다고 가정합니다. 기본값은 None입니다. (두 번째 매개변수)
- dx : x가 None일 때 샘플 포인트 사이의 간격입니다. 기본값은 1입니다. (세 번째 매개변수)
- axis : 적분을 수행할 축을 지정합니다. (네 번째 매개변수)
단계별 구현
1. 필요한 라이브러리 임포트
import numpy as np
2. arange()로 배열 생성
NumPy의 arange() 메서드를 사용해 정수 타입 요소를 가진 3×3 배열을 만듭니다.
arr = np.arange(9).reshape(3, 3)
3. 배열 출력하기
print("Our Array...\n",arr)
4. 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
5. 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
6. trapz()로 적분 수행
복합 사다리꼴 규칙을 적용해 axis=0(열 방향)을 따라 적분을 수행합니다.
print("\nResult (trapz)...\n",np.trapz(arr, axis = 0))
전체 예제 코드
import numpy as np
# arange() 메서드로 numpy 배열 생성
# 정수 타입(int) 요소를 가진 배열입니다
arr = np.arange(9).reshape(3, 3)
# 배열 출력
print("Our Array...\n",arr)
# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
# 복합 사다리꼴 규칙으로 주어진 축을 따라 적분하려면 numpy.trapz() 메서드를 사용합니다
print("\nResult (trapz)...\n",np.trapz(arr, axis = 0))
실행 결과
Our Array... [[0 1 2] [3 4 5] [6 7 8]] Dimensions of our Array... 2 Datatype of our Array object... int64 Result (trapz)... [ 6. 8. 10.]
결과 해석
axis=0으로 지정했기 때문에 각 열을 따라 적분이 수행됩니다. 첫 번째 열의 값은 0, 3, 6이고 간격(dx)이 1이므로 사다리꼴 넓이의 합은 (0+3)/2 + (3+6)/2 = 6이 됩니다. 같은 방식으로 두 번째 열은 8, 세 번째 열은 10이 계산되어 최종 결과가 [6. 8. 10.]으로 출력됩니다.
참고로 NumPy 2.0부터는 np.trapz가 더 이상 권장되지 않으며(deprecated), 동일한 기능을 제공하는 np.trapezoid() 함수를 사용하는 것이 좋습니다.