Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 NumPy trapz()로 복합 사다리꼴 규칙을 활용한 축 방향 적분하기

주어진 축을 따라 복합 사다리꼴 규칙(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() 함수를 사용하는 것이 좋습니다.