Skip to content

Latest commit

 

History

History
121 lines (101 loc) · 3.87 KB

README.md

File metadata and controls

121 lines (101 loc) · 3.87 KB

PLSS

Projected Linear Systems Solver

Matlab and Python implementations from

"PLSS: A Projected Linear Systems Solver", J.J. Brust and M.A. Saunders (2022), [Article]

Content:

  • MATLAB/
    • ALGS/
    • AUXILIARY/
    • EXAMPLES/
    • EXPERIMENTS/
    • external/
  • PYTHON/

Notes: The Matlab codes include all external libraries and methods in order to reproduce the article experiments. That is, functions from [1],[2] and [3] are used either to generate problems or to compare. The Python implementations use numpy https://numpy.org/

Example(s)

Matlab

You can run a Matlab example from within MATLAB/EXAMPLES/

>> example_1

********* Linear Systems Solver ******************** 
*         Alg: PLSS                                  
*         Size: m = 400, n = 400                       
*         tol = 0.00000100                                
*         Maxit = 400                                 
**************************************************** 

Iter 	 norm(Res) 	 norm(pk)   
0 	 9.3808e+00 	 3.9836e+00  
1 	 8.5457e+00 	 2.7639e+00 
2 	 1.0515e+01 	 2.6170e+00 
3 	 9.1554e+00 	 2.2788e+00 
4 	 9.0323e+00 	 2.3500e+00 
5 	 9.1176e+00 	 2.2150e+00 
6 	 8.4172e+00 	 2.1014e+00 
7 	 8.4112e+00 	 2.1293e+00 
8 	 8.3266e+00 	 2.0363e+00 
9 	 7.8896e+00 	 1.9875e+00 
10 	 7.8228e+00 	 2.0224e+00 
20 	 6.4755e+00 	 2.3890e+00 
40 	 6.7713e+00 	 1.5057e+00 
60 	 1.1869e+01 	 3.2345e+00 
73 	 1.8782e-07 	 2.7772e-08 

********* Summary ********************************** 
*         Conv: 1                                   
*         Time (s): 0.02                            
*         norm(Res) = 0.0000                          
*         Iter = 74                                  
*         Num. mult. = 148                            
**************************************************** 

Python 3.9

Likewise, you can run a different example in Python from within PYTHON/ and at the console

In[85]: runfile('example_3.py')

********* Linear Systems Solver ********************  
*         Alg: PLSS (Python 3.9)                      
*         Size: m = 10, n = 10                        
*         tol = 0.00000100                                 
*         Maxit = 500                                  
****************************************************  

Iter 	 norm(Res) 	 norm(pk)    
0 	 1.4468e+02 	 1.2560e+01   
1 	 9.0747e+01 	 8.7137e+00  
2 	 5.9964e+01 	 6.8153e+00  
3 	 4.1940e+01 	 5.5617e+00  
4 	 2.9450e+01 	 4.7588e+00  
5 	 2.0575e+01 	 4.0649e+00  
6 	 1.3862e+01 	 3.5855e+00  
7 	 8.8485e+00 	 3.1817e+00  
8 	 4.7557e+00 	 2.7828e+00  
9 	 1.5912e+00 	 2.0086e+00  
10 	 8.3808e-05 	 5.2023e-06  

********* Summary **********************************  
*         Conv: 1                                    
*         Time (s): 0.00                             
*         norm(Res) = 0.0000                           
*         Iter = 12                                   
*         Num. mult. = 25                             
**************************************************** 

Cite

You can cite this work as (bibtex)

@article{brustS23,
  title={PLSS: A Projected Linear Systems Solver},
  author={Brust, Johannes J and Saunders, Michael A},
  journal={SIAM Journal on Scientific Computing},
  volume={45},
  number={2},
  pages={A1012--A1037},
  year={2023},
  publisher={SIAM}
}

Reference codes

[1] T. A. Davis, Y. Hu, and S. Kolodziej, Suitesparse matrix collection. https://sparse.tamu.edu/, 2015–present.

[2] Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector machines. ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. Software available at http://www.csie.ntu.edu.tw/~cjlin/libsvm

[3] R. M. Gower and P. Richtarik, Randomized iterative methods for linear systems, SIAM J. Matrix Anal. Appl., 36 (2015), pp. 1660–1690