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

Python에서 음의 무한대 노름(-inf)으로 행렬의 조건수 계산하기

선형 대수에서 행렬의 조건수(condition number)를 계산하려면 Python의 numpy.linalg.cond() 메서드를 사용할 수 있습니다. 이 메서드는 매개변수 p에 지정된 값에 따라 7가지 서로 다른 노름(norm) 중 하나를 사용하여 조건수를 반환하며, 경우에 따라 무한대(infinite) 값이 반환될 수도 있습니다.

행렬 x의 조건수는 x의 노름 × x의 역행렬의 노름으로 정의됩니다. 여기서 노름은 일반적인 L2 노름이거나 다른 여러 행렬 노름 중 하나일 수 있습니다.

  • 첫 번째 매개변수(x): 조건수를 구하고자 하는 행렬
  • 두 번째 매개변수(p): 조건수 계산에 사용할 노름의 차수(order)

이번 글에서는 두 번째 매개변수에 -np.inf(음의 무한대)를 지정하여 음의 무한대 노름 기준으로 조건수를 계산하는 방법을 알아보겠습니다.

단계별 진행 과정

1단계: 필요한 라이브러리 임포트

import numpy as np
from numpy import linalg as LA

2단계: 배열 생성

arr = np.array([[ 1, 1, 0],
   [1, 0, 1],
   [1, 0, 0]])

3단계: 배열 출력 및 속성 확인

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

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

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

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

4단계: 음의 무한대 노름으로 조건수 계산

numpy.linalg.cond() 메서드에 두 번째 인자로 -np.inf를 전달하여 음의 무한대 노름 기준 조건수를 계산합니다.

print("\nResult...\n",LA.cond(arr, -np.inf))

전체 예제 코드

import numpy as np
from numpy import linalg as LA

# 배열 생성
arr = np.array([[ 1, 1, 0],
   [1, 0, 1],
   [1, 0, 0]])

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

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

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

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

# 음의 무한대 노름으로 조건수 계산
print("\nResult...\n",LA.cond(arr, -np.inf))

실행 결과

Our Array...
[[1 1 0]
[1 0 1]
[1 0 0]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

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

Result...
1.0

실행 결과를 보면 3×3 크기의 int64 타입 배열에 대해 음의 무한대 노름 기준으로 계산한 조건수가 1.0으로 반환되었습니다. 조건수가 1에 가깝다는 것은 해당 행렬이 수치적으로 매우 안정적(well-conditioned)이라는 의미입니다.