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

Python NumPy로 체비쇼프 급수 계수 배열의 스케일 조정 컴패니언 행렬 구하기

Python NumPy에서 다항식 계수로 이루어진 1차원 배열에 대한 스케일 조정된(scaled) 컴패니언 행렬을 반환하려면 chebyshev.chebcompanion() 메서드를 사용합니다.

이 메서드는 기저 다항식(basis polynomials)을 스케일링하여, 계수 c가 체비쇼프(Chebyshev) 기저 다항식일 때 컴패니언 행렬이 대칭 행렬이 되도록 합니다. 이러한 스케일링 덕분에 스케일링하지 않은 경우보다 더 정확한 고유값 추정치를 얻을 수 있으며, 특히 기저 다항식에 대해서는 numpy.linalg.eigvalsh를 사용해 고유값을 구할 경우 고유값이 실수임이 보장됩니다.

메서드는 차원이 (deg, deg)인 스케일 조정된 컴패니언 행렬을 반환하며, 매개변수 c는 낮은 차수에서 높은 차수 순으로 정렬된 체비쇼프 급수 계수의 1차원 배열입니다.

단계별 진행 방법

1. 필요한 라이브러리 가져오기

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

import numpy as np
from numpy.polynomial import chebyshev as C

2. 계수 배열 생성하기

다음으로 계수를 담은 1차원 배열을 생성합니다.

c = np.array([1, 2, 3])

3. 배열 정보 확인하기

생성한 배열과 그 속성들을 출력해 확인해 봅니다.

print("Our Array...\n",c)
print("\nDimensions of our Array...\n",c.ndim)
print("\nDatatype of our Array object...\n",c.dtype)
print("\nShape of our Array object...\n",c.shape)

4. 컴패니언 행렬 계산하기

chebyshev.chebcompanion() 메서드를 호출하여 스케일 조정된 컴패니언 행렬을 반환받습니다.

print("\nResult...\n",C.chebcompanion(c))

전체 예제 코드

import numpy as np
from numpy.polynomial import chebyshev as C

# 계수로 이루어진 1차원 배열 생성
c = np.array([1, 2, 3])

# 배열 출력
print("Our Array...\n",c)

# 차원 확인
print("\nDimensions of our Array...\n",c.ndim)

# 데이터 타입 확인
print("\nDatatype of our Array object...\n",c.dtype)

# 형태(shape) 확인
print("\nShape of our Array object...\n",c.shape)

# 스케일 조정된 컴패니언 행렬 반환
print("\nResult...\n",C.chebcompanion(c))

실행 결과

Our Array...
    [1 2 3]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Shape of our Array object...
(3,)

Result...
    [[ 0.          0.47140452]
     [ 0.70710678 -0.33333333]]

위 결과에서 볼 수 있듯이, 계수 배열 [1, 2, 3]에 대해 2×2 크기의 대칭에 가까운 스케일 조정된 컴패니언 행렬이 반환되었습니다. 반환된 행렬의 고유값은 해당 체비쇼프 다항식의 근(root)과 연관되어 있으므로, 다항식의 근을 안정적으로 찾는 데 활용할 수 있습니다.