3
OdG                 @   sF  d dl Zd dlmZmZmZmZ d dlZd dl	Zd dl	m
Z
 d dlmZ dZejeZejjZejjZxNedD ]BZeedZeej Zeeej d 7 Zeeedeed 7 ZqpW eedZd	Zd
ZdZdd Zdd Zdd Zdd Zdd Z e!dkrBejj"eeZ#e Z$e
eeeeeedZ%e%d  Z&e%d Z'e%d Z(e%d Z)e%d Z*ej+eej Z,e,dkrndZ-ndZ-e.d e.de-  e.d ee)f  e.d!e e$   e.d"e*e'e(f  e.d# e.d$ee&eee& e eejee& e  f  e.d% e.d&ee#eee# e f  e.d' e.d(ee#e&   e.d' dS ))    N)assert_assert_equalassert_almost_equalassert_array_almost_equal)lsqr)time#      )sizeg      ?g|=Fc              C   s\   t j } ttt ttttd}ttj	| t k tj
jtt }|d }tt|| dk  d S )N)showatolbtoliter_limr   gh㈵>)bcopyr   Gr   tolmaxitr   npalllinalgsolvenorm)b_copyXsvxxo r   ^/var/www/html/virt/lib64/python3.6/site-packages/scipy/sparse/linalg/isolve/tests/test_lsqr.py
test_basic   s    r   c              C   s\   t jddg} t jddg}t jddg}tjj|| |ffdd}t jdg}t|| d S )Nr         )shape   )r    r!   )r   arrayscipysparseZ
coo_matrixZasarrayr   )rowcolvalAr   r   r   r   test_gh_2466&   s    r,   c        
      C   s   d} t jj| | }|j }tjdd xtdD ]}tjj|d }|j	| }d||dk< ||d d tj
f  }t||td}t|d d |d }t|| tjj||j }	t||	 q2W W d Q R X d S )	N
   raise)invalid   gh㈵>r   )r   r    )r&   r'   eyeZtoarrayr   ZerrstaterangerandomZRandomStateZrandZnewaxisr   r   r   r   r   r   ravel)
nZA_sparseZA_denseseedrngbetar   outputZsolutionZreference_solutionr   r   r   test_well_conditioned_problems/   s    

r:   c              C   s|   t jddgg} d}t| |d }tt| j|| d t jd} t jd}t| |d }tt| j||j  d d S )Ng      ?g       @g      @r   r-   r    )r-   r    )	r   r%   r   r   r   dotr1   Zonesr4   )r+   r   xr   r   r   test_b_shapesM   s    

r=   c           	   C   s   t j } ttt ttttd}tj|d j	}ttt tttt|d}t
tj| t k t|d |d  ttt tttddd }ttt tttt|d}t|d |d  t
tj| t k d S )N)r   r   r   r   r   )r   r   r   r   x0r    )r   r   r   r   r   r   r   r   Zzerosr"   r   r   r   )r   Zx_refr>   r<   r   r   r   test_initialization[   s    r?   __main__)r   r   r   r         r!      g+=ZNoZYesZLSQRzIs linear operator symmetric? zn: %3g  iterations:   %3gzNorms computed in %.2fs by LSQRz* ||x||  %9.4e  ||r|| %9.4e  ||Ar||  %9.4e z!Residual norms computed directly:z) ||x||  %9.4e  ||r|| %9.4e  ||Ar||  %9.4ezDirect solution norms:z ||x||  %9.4e  ||r|| %9.4e  z" || x_{direct} - x_{LSQR}|| %9.4e )/Znumpyr   Znumpy.testingr   r   r   r   Zscipy.sparser&   Zscipy.sparse.linalgr   r   r5   r1   r   r3   normalr   r   r2   ZjjZggThhr   r   r   r   r   r,   r:   r=   r?   __name__r   r   Zticr   r   ZphioZpsiokZchioZamaxZmgsymprintr   r   r   r   <module>   sd   



		


 