#include #include #include #include template < typename Value > struct tridiag_ublas : boost::numeric::ublas::banded_matrix { typedef boost::numeric::ublas::banded_matrix super_t ; typedef std::vector diag_t ; private: tridiag_ublas() ; unsigned my_size ; public: unsigned size()const { return my_size; } tridiag_ublas ( diag_t const&a_u , diag_t const&a_d , diag_t const&a_l ) : super_t( a_d.size(), a_d.size(), 1, 1) , my_size(a_d.size()) { super_t&s=*this; for(unsigned i=0; i std::ostream& operator<< ( std::ostream& sout , tridiag_ublasconst& a ) { std::size_t const size=a.size(); sout<<"{ "; for(unsigned i=0; i std::ostream& operator<< ( std::ostream& sout , boost::numeric::ublas::matrixconst& a ) { std::size_t const size1=a.size1(); std::size_t const size2=a.size2(); sout<<"{ "; for(unsigned i1=0; i1 trid_t; typedef std::vector vv_t; trid_t a ( vv_t( { -3.0, -2.0, 1.0} ) //upper , vv_t( { 5.0, 4.0, 3.0, 5.0} ) //diagonal , vv_t( { 1.0, -1.0, 2.0} ) //lower ); std::cout<<"a.size()="< array_t ; array_t r0(n,1) ; r0(0,0)= 7.0; r0(1,0)= 6.0; r0(2,0)=- 4.0; r0(3,0)=-15.0; std::cout<<"r0=\n"<