수색…


비고

버전 1.8부터 np.linalg 에있는 루틴 중 np.linalg 는 행렬의 '스택'에서 작동 할 수 있습니다. 즉, 루틴은 여러 행렬이 겹치면 결과를 계산할 수 있습니다. 예를 들어, A 는 두 개의 스택 된 3x3 행렬로 해석됩니다.

np.random.seed(123)
A = np.random.rand(2,3,3)
b = np.random.rand(2,3)
x = np.linalg.solve(A, b)

print np.dot(A[0,:,:], x[0,:])
# array([ 0.53155137,  0.53182759,  0.63440096])

print b[0,:]
# array([ 0.53155137,  0.53182759,  0.63440096])

공식적인 np 문서는 a : (..., M, M) array_like 와 같은 매개 변수 사양을 통해이를 지정합니다.

np.solve로 선형 시스템 해석

다음 세 가지 방정식을 고려하십시오.

x0 + 2 * x1 + x2 = 4
         x1 + x2 = 3
x0 +          x2 = 5

우리는이 시스템을 행렬 방정식 A * x = b 로 표현할 수있다.

A = np.array([[1, 2, 1],
              [0, 1, 1],
              [1, 0, 1]])
b = np.array([4, 3, 5])

그런 다음 np.linalg.solve 를 사용하여 x .

x = np.linalg.solve(A, b)
# Out: x = array([ 1.5, -0.5,  3.5])

A 는 정사각형 및 전체 등급 매트릭스 여야합니다. 모든 행은 선형 적으로 독립적이어야합니다. A 는 반전 가능 / 비 특이 형이어야합니다 (결정자가 0이 아님). 예를 들어, A 한 행이 다른 행의 배수 linalg.solve 를 호출 linalg.solveLinAlgError: Singular matrix :

A = np.array([[1, 2, 1], 
              [2, 4, 2],   # Note that this row 2 * the first row
              [1, 0, 1]])
b = np.array([4,8,5])

이러한 시스템은 np.linalg.lstsq 로 해결할 수 있습니다.

np.linalg.lstsq를 사용하여 선형 시스템에 대한 최소 제곱 솔루션 찾기

최소 제곱 법 은 미정보다 방정식이 많은 문제에 대한 표준 접근 방식이며 과다 확인 시스템이라고도합니다.

다음 네 가지 방정식을 고려하십시오.

x0 + 2 * x1 + x2 = 4
x0 + x1 + 2 * x2 = 3
2 * x0 + x1 + x2 = 5
x0 + x1 + x2 = 4

이것을 행렬 곱셈으로 나타낼 수 있습니다. A * x = b :

A = np.array([[1, 2, 1],
              [1,1,2],
              [2,1,1],
              [1,1,1]])
b = np.array([4,3,5,4])

그런 다음 np.linalg.lstsq 해결 np.linalg.lstsq .

x, residuals, rank, s = np.linalg.lstsq(A,b)

x 는 해답이고, residuals 는 합계이며, 입력 A행렬 랭크rank 하고, sA특이 값rank 합니다. b 차원이 두 개 이상 있으면 lstsqb 각 열에 해당하는 시스템을 해결합니다.

A = np.array([[1, 2, 1],
              [1,1,2],
              [2,1,1],
              [1,1,1]])
b = np.array([[4,3,5,4],[1,2,3,4]]).T # transpose to align dimensions
x, residuals, rank, s = np.linalg.lstsq(A,b)
print x # columns of x are solutions corresponding to columns of b
#[[ 2.05263158  1.63157895]
# [ 1.05263158 -0.36842105]
# [ 0.05263158  0.63157895]]
print residuals # also one for each column in b
#[ 0.84210526  5.26315789]

ranksA 에만 의존하기 때문에 위와 같습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow