2014-12-14 3 views
1

I는 scipy.sparse.linalg.gmres파이썬 희소 gmres의 혼잡은

W, S = load_data() 
M = normalize(W.T.astype('float64'),'l1') 
S = normalize(S.astype('float64'),'l1') 
rhs = S[cat_id,:].T 
print M.shape 
print rhs.shape 
p = gmres(M, rhs) 

기능 load_data로드 개의 스파 스 MATLAB의 .mat 파일에서 행렬 및 생략을 사용하여 저밀도 선형 시스템을 해결하기 위해 단순 코드가있다.

(150495, 150495) 
(150495, 1) 
Traceback (most recent call last): 
    File "explain.py", line 54, in <module> 
    pr(1) 
    File "explain.py", line 42, in pr 
    p = gmres(M, rhs) 
    File "<string>", line 2, in gmres 
    File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/isolve/iterative.py", line 85, in non_reentrant 
    return func(*a, **kw) 
    File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/isolve/iterative.py", line 418, in gmres 
    A,M,x,b,postprocess = make_system(A,M,x0,b,xtype) 
    File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/isolve/utils.py", line 78, in make_system 
    raise ValueError('A and b have incompatible dimensions') 
ValueError: A and b have incompatible dimensions 

하지만 문서

A를 따라 gmres을 실행했습니다 : 출력은 놀라운 일이다 {희소 행렬, 고밀도 매트릭스, LinearOperator}

The real or complex N-by-N matrix of the linear system. 

B : { 배열, 행렬}

Right hand side of the linear system. Has shape (N,) or (N,1). 

나는이 코드에 무엇이 잘못되었는지 전혀 이해하지 못하고 어떤 아이디어라도 원할뿐입니다.

+0

어떻게 제목 줄에서 오류 메시지가 나옵니까? – hpaulj

답변

2

bgmres 인 경우 스파 스 매트릭스가 아니어야합니다. 그것은 numpy 배열이나 행렬이 될 수 있습니다. 시도하십시오

p = gmres(M, rhs.A)