|
Ublas : |
From: Fred (hakonbh_at_[hidden])
Date: 2006-11-08 15:16:24
Hi,
I'm building one simple version of Gauss Elimination, but I would like to
iterate only over non zero elements.
I got an execution error pointing to the iterators. I think I can't explain
what is happening without post the code, so I copy it below.
Could you tell me if there's any problem with iteration in sparse
matrix/vector?
I wrote the code based on this
link<http://www.bauv.unibw-muenchen.de/%7Ewinkler/ublas/tuc/ublas/matrix_sparse_usage.html>(
http://www.bauv.unibw-muenchen.de/~winkler/ublas/tuc/ublas/matrix_sparse_usage.html
).
Thank you for your time,
Frederico B. Teixeira
-- Electrical Enginnering UFMG, Brazil CODE: > typedef boost::numeric::ublas::compressed_matrix<double> sparse_matrix; > typedef boost::numeric::ublas::vector<double> dense_vector; > > template <class Matrix> > void gauss(std::size_t n, Matrix &A) { > double m; > typedef sparse_matrix::iterator1 i1_t; > typedef sparse_matrix::iterator2 i2_t; > > i1_t i1 = A.begin1(); > i2_t i2; > > for(int k=0;k<n-1;k++) { > for(int i=k+1;i<n;i++) { > m = A(i,k)/A(k,k); > i2 = i1.begin(); > while(i2 != i1.end()) { > A(i,i2.index2()) -= m*(*i2); > i2++; > } > } > i1++; > } > } >