Python NumPy에서 laguerre.lagvander2d() 함수를 사용하면 라게르(Laguerre) 다항식의 의사 Vandermonde 행렬을 손쉽게 생성할 수 있습니다. 이 함수는 계산된 의사 Vandermonde 행렬을 반환하며, 반환되는 행렬의 형태(shape)는 x.shape + (deg + 1,)입니다. 여기서 마지막 인덱스는 해당 라게르 다항식의 차수를 나타냅니다. 반환 배열의 dtype은 입력값에 복소수가 포함되어 있는지 여부에 따라 float64 또는 complex128로 결정됩니다.
주요 매개변수
- x, y: 점(point) 좌표 배열입니다. 요소 중 하나라도 복소수가 있으면 dtype은 complex128로 변환되고, 그렇지 않으면 float64로 변환됩니다. 만약 x가 스칼라 값이라면 자동으로 1차원 배열로 변환됩니다.
- deg:
[x_deg, y_deg]형태의 최대 차수 목록입니다. 각 축에서 사용할 라게르 다항식의 최대 차수를 지정합니다.
구현 단계
1단계: 필요한 라이브러리 임포트
먼저 필요한 라이브러리를 가져옵니다.
import numpy as np from numpy.polynomial import laguerre as L
2단계: 점 좌표 배열 생성
numpy.array() 메서드를 사용하여 동일한 형태를 가진 점 좌표 배열을 생성합니다. 이번 예제에서는 복소수 값을 포함하는 배열을 사용합니다.
x = np.array([-2.+2.j, -1.+2.j]) y = np.array([1.+2.j, 2.+2.j])
3단계: 배열 출력 및 속성 확인
생성된 배열과 데이터 타입, 차원, 형태를 확인합니다.
print("배열1...\n",x)
print("\n배열2...\n",y)
# 데이터 타입 확인
print("\n배열1 데이터타입...\n",x.dtype)
print("\n배열2 데이터타입...\n",y.dtype)
# 차원 확인
print("\n배열1의 차원...\n",x.ndim)
print("\n배열2의 차원...\n",y.ndim)
# 형태 확인
print("\n배열1의 형태...\n",x.shape)
print("\n배열2의 형태...\n",y.shape)4단계: 의사 Vandermonde 행렬 생성
laguerre.lagvander2d() 함수를 호출하여 라게르 다항식의 의사 Vandermonde 행렬을 생성합니다. 여기서는 x축 최대 차수를 2, y축 최대 차수를 3으로 지정했습니다.
x_deg, y_deg = 2, 3
print("\n결과...\n",L.lagvander2d(x,y, [x_deg, y_deg]))전체 예제 코드
import numpy as np
from numpy.polynomial import laguerre as L
# numpy.array() 메서드로 동일한 형태의 점 좌표 배열 생성
x = np.array([-2.+2.j, -1.+2.j])
y = np.array([1.+2.j, 2.+2.j])
# 배열 출력
print("배열1...\n",x)
print("\n배열2...\n",y)
# 데이터 타입 확인
print("\n배열1 데이터타입...\n",x.dtype)
print("\n배열2 데이터타입...\n",y.dtype)
# 두 배열의 차원 확인
print("\n배열1의 차원...\n",x.ndim)
print("\n배열2의 차원...\n",y.ndim)
# 두 배열의 형태 확인
print("\n배열1의 형태...\n",x.shape)
print("\n배열2의 형태...\n",y.shape)
# laguerre.lagvander2d()로 라게르 다항식의 의사 Vandermonde 행렬 생성
x_deg, y_deg = 2, 3
print("\n결과...\n",L.lagvander2d(x,y, [x_deg, y_deg]))실행 결과
배열1...
[-2.+2.j -1.+2.j]
배열2...
[1.+2.j 2.+2.j]
배열1 데이터타입...
complex128
배열2 데이터타입...
complex128
배열1의 차원...
1
배열2의 차원...
1
배열1의 형태...
(2,)
배열2의 형태...
(2,)
결과...
[[ 1. +0.j 0. -2.j
-2.5 -2.j -4.66666667 +0.33333333j
3. -2.j -4. -6.j
-11.5 -1.j -13.33333333 +10.33333333j
5. -8.j -16. -10.j
-28.5 +10.j -20.66666667 +39.j ]
[ 1. +0.j -1. -2.j
-3. +0.j -2.33333333 +3.33333333j
2. -2.j -6. -2.j
-6. +6.j 2. +11.33333333j
1.5 -6.j -13.5 +3.j
-4.5 +18.j 16.5 +19.j ]]
위 실행 결과에서 볼 수 있듯이, 입력 배열의 요소가 복소수이므로 데이터 타입은 complex128로 변환되었으며, 최종적으로 생성된 의사 Vandermonde 행렬은 (2,) + (2+1) * (3+1) 구조에 따라 각 점마다 12개의 열을 가진 2×12 형태의 행렬로 반환됩니다.