2014-02-27 2 views
0

Ax = b를 풀어야합니다. 결정된 시스템에서 해결할 파이썬 라이브러리/결정된 방정식 시스템은 다르다고 나는 믿는다. python에서 행렬의 종속 행/열을 제거하여 행렬의 계급에서 적절하게 방정식을 풀 수있는 라이브러리 함수가 있습니까파이썬에서 행렬의 독립적 인 행 또는 열을 제거하십시오.

+0

도구, 라이브러리 또는 좋아하는 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 오타가있는 답변과 스팸을 끌어 당기는 경향이 있으므로 스택 오버플로에 대한 주제와 관련이 없습니다. 대신 문제를 설명하고 지금까지 해결 된 문제를 설명하십시오. – Christian

+0

numpy를 사용하면이 종류의 작업에 꽤 유용합니다. – drabo2005

+0

기본적으로 Ax = b를 해결해야합니다. 그러나 제 경우에는 시스템이 결정되거나 과도하게 결정될 수 있습니다. 나는 결정된 시스템은 최소 제곱 법을 사용하여 풀 수 있고 최소 노름 법을 사용하여 결정할 수 있음을 알았다. 따라서 방정식 시스템을 풀기 전에 행렬의 순위를 알아야합니다. 그러므로 나의 질문은이 방향이었다. 내가 틀렸다면 모두에게 나를 바로 잡으라고 요청합니다. – nantitv

답변

1

numpy을 사용하면 과학 계산을 수행 할 수 있습니다. 예컨대 :

In [23]: import numpy as np 

In [24]: a=np.arange(16).reshape((4,4)) 

In [25]: a 
Out[25]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11], 
     [12, 13, 14, 15]]) 

In [26]: np.delete(a, 2, axis=1) #delete the 3rd column 
Out[26]: 
array([[ 0, 1, 3], 
     [ 4, 5, 7], 
     [ 8, 9, 11], 
     [12, 13, 15]]) 

In [27]: np.rank(a) #this returns the number of dimensions of an array, 
        #not the concept "rank" in linear algebra, 
Out[27]: 2 

In [40]: np.linalg.matrix_rank(a) #this returns matrix rank of array using SVD method 
Out[40]: 2 

창에, 당신은 unofficial installer here를 얻을 수 있습니다.

또 다른 포스트 : Calculate Matrix Rank using scipy

2

당신은 +로 표시 (A)의 pseudoinverse 매트릭스를 사용할 수 있습니다. 용액에 존재하는 경우와 AA + B = B 모든 용액 X = A가 주어진 경우에만 + B + (I - + A) U는

이것은 NumPy와 함께 할 수 * .linalg

예 :

또는
>>> A = np.array([[1, 2, 3], [4, 5, 6],[8, 10, 12]]) 
>>> b = np.array([22., 7., 14.]) 
>>> Ap = np.linalg.pinv(A) 
# Check if a solution exist 
>>> np.testing.assert_allclose(A.dot(Ap).dot(b),b,rtol=1e-5, atol=0) 
>>> x = Ap.dot(b) 
>>> print A.dot(x) 
[ 22., 7., 14.] 

당신은 numpy.linalg.lstsq 사용할 수 있습니다

예 :

>>> A = np.array([[1, 2, 3], [4, 5, 6],[8, 10, 12]]) 
>>> b = np.array([22., 7., 14.]) 
>>> x = np.linalg.lstsq(A,b)[0] 
>>> print np.dot(A,x) 
[ 22., 7., 14.] 
관련 문제