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

NumPy trapz()로 합성 사다리꼴 규칙 적분하기 – 샘플 포인트를 역순으로 설정하는 방법

합성 사다리꼴 규칙(Composite Trapezoidal Rule)과 numpy.trapz()

Python에서 주어진 축을 따라 수치 적분을 수행하려면 numpy.trapz() 메서드를 사용할 수 있습니다. 이 메서드는 합성 사다리꼴 규칙을 기반으로 n차원 배열 'y'의 정적분 값을 근사하여 반환합니다.

여기서 중요한 점은 x(샘플 포인트)가 제공되면 배열 요소의 순서 그대로 적분이 진행되며, 값이 자동으로 정렬되지 않는다는 것입니다. 따라서 x 값을 내림차순(역순)으로 지정하면 적분 방향이 반대가 되어 결과값의 부호가 음수로 나타납니다.

반환 결과는 다음과 같습니다.

  • 'y'가 1차원 배열이면 결과는 float 형태입니다.
  • 'y'가 n차원(n > 1) 배열이면 결과는 'n-1'차원 배열입니다.

주요 매개변수

  • y: 적분할 입력 배열 (첫 번째 매개변수)
  • x: y 값에 대응하는 샘플 포인트. None이면 샘플 포인트가 간격 dx만큼 균등하게 배치된 것으로 간주합니다. 기본값은 None입니다.
  • dx: x가 None일 때 사용되는 샘플 포인트 간의 간격. 기본값은 1입니다.
  • axis: 적분을 수행할 축

구현 단계

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

import numpy as np

array() 메서드로 정수형 요소를 가진 NumPy 배열을 생성합니다.

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 배열 생성
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)

# 합성 사다리꼴 규칙으로 적분 (샘플 포인트를 역순으로 설정)
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

결과 해석

일반적으로 np.trapz(arr, x = [55, 80])처럼 오름차순으로 샘플 포인트를 지정하면 결과는 687.5입니다. 하지만 위 예제에서는 x를 [80, 55]로 역순으로 설정했기 때문에 적분 구간의 방향이 뒤집혀 최종 결과가 -687.5(음수)로 출력됩니다. 이처럼 numpy.trapz()는 x 값의 순서를 그대로 따르므로, 샘플 포인트의 배치 순서가 곧 적분 방향을 결정한다는 점을 기억하면 유용합니다.