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

Python에서 복합 사다리꼴 규칙으로 축 0을 따라 적분하기 (numpy.trapz)


복합 사다리꼴 규칙(Composite Trapezoidal Rule)을 사용하여 지정한 축을 따라 수치 적분을 수행하려면 numpy.trapz() 메서드를 사용합니다. x가 제공되면 해당 요소들의 순서대로 적분이 진행되며, 요소들은 별도로 정렬되지 않습니다. 이 메서드는 사다리꼴 규칙에 따라 단일 축 방향으로 근사한 n차원 배열 'y'의 정적분 값을 반환합니다. 'y'가 1차원 배열이면 결과는 float 형태이고, 차원이 1보다 크면 결과는 'n-1'차원 배열이 됩니다.


첫 번째 매개변수 y는 적분할 입력 배열입니다. 두 번째 매개변수 x는 y 값에 대응하는 샘플 포인트로, None이면 샘플 포인트가 dx 간격으로 균등하게 배치되어 있다고 가정하며 기본값은 None입니다. 세 번째 매개변수 dx는 x가 None일 때 샘플 포인트 사이의 간격이며 기본값은 1입니다. 네 번째 매개변수 axis는 적분을 수행할 축을 의미합니다.


참고: 최신 NumPy 버전에서의 변경 사항

NumPy 2.0부터는 trapz()가 지원 중단(deprecated)되었으며, 동일한 기능을 제공하는 numpy.trapezoid() 사용이 권장됩니다. 호출 방식과 결과는 완전히 동일합니다.


단계

먼저 필요한 라이브러리를 임포트합니다 −

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))

예제

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)

# 복합 사다리꼴 규칙을 사용해 축 0을 따라 적분합니다
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.]

실행 결과를 보면 축 0(열 방향)을 따라 적분했을 때 각 열마다 [6., 8., 10.]이 계산됩니다. 예를 들어 첫 번째 열 [0, 3, 6]의 경우 (0+3)/2 + (3+6)/2 = 6이 되는 방식입니다. 이처럼 trapz()는 인접한 샘플 값들로 만든 사다리꼴의 넓이를 모두 더해 정적분을 근사합니다.