亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sparsemat.cpp

?? 斯坦福Energy211/CME211課《c++編程——地球科學科學家和工程師》的課件
?? CPP
字號:
#include <cmath>#include "sparsemat.h"using namespace std;// Text of error messages, used by Matrix::ReportError// Do not change this!char *SparseMatrix::ErrorMessages[] = {	"", // ERROR_INVALID_SIZE	"dimension mismatch", // ERROR_SIZE_MISMATCH	"index out of range", // ERROR_INVALID_INDEX} ;void SparseMatrix::ReportError( ErrorCode code ){	string prefix( "Error: " );	throw std::runtime_error( prefix + ErrorMessages[code] );}SparseMatrix::SparseMatrix( int rows, int cols ){	if ( cols == 0 )		cols = rows;	m_rows = rows;	m_cols = cols;}SparseMatrix::SparseMatrix( const SparseMatrix& A ){	m_rows = A.m_rows;	m_cols = A.m_cols;	m_data = A.m_data;	m_row_indices = A.m_row_indices;	m_col_indices = A.m_col_indices;}SparseMatrix::~SparseMatrix(){}void SparseMatrix::SetSize( int rows, int cols ){	m_rows = rows;	m_cols = cols;	m_row_indices.clear();	m_col_indices.clear();	m_data.clear();}ostream& operator<<( ostream& os, const SparseMatrix& A ){	for ( int i = 0; i < A.get_rows(); i++ )	{		for ( int j = 0; j < A.get_cols(); j++ )		{			double x = A( i, j );			os.width(10);			os << x;		}		cout << endl;	}	return os;}double& SparseMatrix::operator()( int i, int j ){	if ( i >= m_rows || j >= m_cols )		ReportError( ERROR_INVALID_INDEX );	m_row_indices[i].insert( j );	m_col_indices[j].insert( i );	return m_data[std::make_pair(i, j)];}double SparseMatrix::operator()( int i, int j ) const{	return Get(i, j);}void SparseMatrix::Squeeze( double tol ){	for ( iset_iter i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			if ( fabs( m_data[std::make_pair(i->first, *j)] ) <= tol )			{				i->second.erase( *j );				if ( i->second.size() == 0 )					m_row_indices.erase( i );				m_col_indices[*j].erase( i->first );				if ( m_col_indices[*j].size() == 0 )					m_col_indices.erase( *j );			}		}	}}int SparseMatrix::nnz() const{	int total = 0;	for ( iset_citer i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		total += i->second.size();	}	return total;}elt_citer SparseMatrix::get_row_begin( int i ) const{	return m_row_indices.find( i )->second.begin();}elt_citer SparseMatrix::get_row_end( int i ) const{	return m_row_indices.find( i )->second.end();}elt_citer SparseMatrix::get_col_begin( int i ) const{	return m_col_indices.find( i )->second.begin();}elt_citer SparseMatrix::get_col_end( int i ) const{	return m_col_indices.find( i )->second.end();}SparseMatrix SparseMatrix::operator*( const SparseMatrix& B ) const{	if ( m_cols != B.m_rows )		ReportError( ERROR_SIZE_MISMATCH );	SparseMatrix C( m_rows, B.m_cols );	for ( int i = 0; i < m_rows; i++ )	{		for ( int j = 0; j < m_cols; j++ )		{			double elt = 0.0;			elt_citer irow = get_row_begin( i );			elt_citer jcol = B.get_col_begin( j );			for ( ; irow != get_row_end( i ); irow++ )			{				elt += Get( i, *irow ) * B( *irow, j );			}			if ( elt != 0.0 )				C( i, j ) = elt;		}	}	return C;}SparseMatrix& SparseMatrix::operator=( const SparseMatrix& A ){	m_rows = A.m_rows;	m_cols = A.m_cols;	m_data = A.m_data;	m_row_indices = A.m_row_indices;	m_col_indices = A.m_col_indices;	return *this;}SparseMatrix& SparseMatrix::operator+=( const SparseMatrix& A ){	if ( m_rows != A.m_rows || m_cols != A.m_cols )		ReportError( ERROR_SIZE_MISMATCH );	for ( iset_citer i = A.m_row_indices.begin();		i != A.m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			double elt = A( i->first, *j );			Set( i->first, *j, Get( i->first, *j ) + elt );		}	}	return *this;}SparseMatrix& SparseMatrix::operator-=( const SparseMatrix& A ){	*this += -A;	return *this;}SparseMatrix& SparseMatrix::operator*=( double s ){	for ( mat_iter i = m_data.begin();		i != m_data.end(); i++ )		i->second *= s;	return *this;}SparseMatrix& SparseMatrix::operator/=( double s ){	*this *= (1.0 / s);	return *this;}SparseMatrix operator*( double s, const SparseMatrix& A ){	return A * s;}SparseMatrix SparseMatrix::operator+( const SparseMatrix& B ) const{	if ( m_rows != B.m_rows || m_cols != B.m_cols )		ReportError( ERROR_SIZE_MISMATCH );	SparseMatrix C( *this );	for ( iset_citer i = B.m_row_indices.begin();		i != B.m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			double elt = B( i->first, *j );			C( i->first, *j ) += elt;		}	}	return C;}double SparseMatrix::Get( int i, int j ) const{	if ( i >= m_rows || j >= m_cols )		ReportError( ERROR_INVALID_INDEX );	mat_citer iter = m_data.find( make_pair( i, j ) );	if ( iter == m_data.end() )		return 0.0;	return iter->second;}void SparseMatrix::Set( int i, int j, double x ){	m_data[make_pair(i,j)] = x;	m_row_indices[i].insert( j );	m_col_indices[j].insert( i );}void SparseMatrix::Identity( int rows, int cols ){	if ( cols == 0 )		cols = rows;	SetSize( rows, cols );	for ( int i = 0; i < rows && i < cols; i++ )		Set( i, i, 1.0 );}SparseMatrix SparseMatrix::Transpose() const{	SparseMatrix T( m_cols, m_rows );	for ( mat_citer i = m_data.begin();		i != m_data.end(); i++ )	{		T( i->first.second, i->first.first ) = 			Get( i->first.first, i->first.second );	}	return T;}SparseMatrix SparseMatrix::TriU( int diag ) const{	SparseMatrix S( m_rows, m_cols );	for ( iset_citer i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			if ( i->first <=  *j - diag )				S( i->first, *j ) = Get( i->first, *j );		}	}	return S;}SparseMatrix SparseMatrix::TriL( int diag ) const{	SparseMatrix S( m_rows, m_cols );	for ( iset_citer i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			if ( i->first >=  *j - diag )				S( i->first, *j ) = Get( i->first, *j );		}	}	return S;}SparseMatrix SparseMatrix::operator-() const{	SparseMatrix C( m_rows, m_cols );	for ( iset_citer i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			double elt = Get( i->first, *j );			C( i->first, *j ) = -elt;		}	}	return C;}SparseMatrix SparseMatrix::operator*( double s ) const{	SparseMatrix C( m_rows, m_cols );	for ( iset_citer i = m_row_indices.begin();		i != m_row_indices.end(); i++ )	{		for ( elt_citer j = i->second.begin();			j != i->second.end(); j++ )		{			double elt = Get( i->first, *j );			C( i->first, *j ) = elt * s;		}	}	return C;}SparseMatrix SparseMatrix::operator-( const SparseMatrix& B ) const{	return *this + (-B);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美喷水一区二区| 色婷婷久久久久swag精品| 日本美女一区二区| 日韩黄色免费网站| 日本午夜精品一区二区三区电影| 国产女人18毛片水真多成人如厕| 久久久久国产精品麻豆| 国产视频一区二区在线| 欧美高清一级片在线观看| 欧美精品一区二区在线播放| 久久久精品黄色| 亚洲欧美偷拍另类a∨色屁股| 综合激情成人伊人| 亚洲一二三区在线观看| 亚洲国产成人高清精品| 极品美女销魂一区二区三区| 国模冰冰炮一区二区| 北条麻妃一区二区三区| 99久久精品免费精品国产| 在线亚洲人成电影网站色www| 欧美精品1区2区| 国产精品三级视频| 成人免费视频一区| 在线播放一区二区三区| 2020国产成人综合网| 1024精品合集| 国产综合成人久久大片91| 欧美亚洲国产一区在线观看网站| 欧美美女激情18p| 久久夜色精品一区| 亚洲va韩国va欧美va| 国产高清无密码一区二区三区| 在线观看不卡一区| 亚洲欧美日韩久久| 国产呦精品一区二区三区网站| 777午夜精品视频在线播放| ㊣最新国产の精品bt伙计久久| 捆绑紧缚一区二区三区视频| 色嗨嗨av一区二区三区| 国产性天天综合网| 久久国产精品一区二区| 欧美日韩成人综合天天影院| 亚洲欧洲av在线| 国产精品亚洲视频| 久久蜜桃香蕉精品一区二区三区| 日韩成人av影视| 欧美一区二区视频在线观看| 午夜视频在线观看一区| 欧美三级欧美一级| 日韩在线播放一区二区| 欧美一区二区三区喷汁尤物| 日韩精品欧美成人高清一区二区| 欧美日韩一级片在线观看| 日韩在线卡一卡二| 精品日韩在线观看| 国产成人一区在线| 亚洲精品乱码久久久久久日本蜜臀| 99久久久国产精品免费蜜臀| 亚洲另类一区二区| 欧美大胆人体bbbb| 国产成人综合亚洲91猫咪| 亚洲国产视频在线| 337p日本欧洲亚洲大胆精品 | 久久成人免费网站| 国产性色一区二区| 91极品视觉盛宴| 国产精品亚洲成人| 亚洲综合偷拍欧美一区色| 91精品国产aⅴ一区二区| 国产一区欧美一区| 亚洲国产精品麻豆| 国产精品久久久久久久久久免费看| 91色在线porny| 国产乱码精品1区2区3区| 午夜精品爽啪视频| 亚洲欧美在线观看| 欧美r级在线观看| 欧美一级夜夜爽| 欧美网站大全在线观看| 成人免费视频免费观看| 日韩一区欧美二区| 亚洲综合偷拍欧美一区色| 国产精品不卡在线| 久久久久久久久久久久久女国产乱| 欧美一区二区三区视频免费播放| 国产高清一区日本| 久久黄色级2电影| 秋霞午夜av一区二区三区| 亚洲一区二区三区中文字幕| 精品国产99国产精品| 精品国产青草久久久久福利| 7777精品伊人久久久大香线蕉超级流畅| 91在线观看地址| 91丝袜高跟美女视频| 99re成人在线| 成人精品亚洲人成在线| 激情偷乱视频一区二区三区| 久久成人av少妇免费| 韩国成人在线视频| 国产成人福利片| 色综合久久中文字幕综合网 | 欧美一区二区福利视频| 日韩欧美aaaaaa| 亚洲欧美日韩国产一区二区三区| 亚洲精品五月天| 蜜臀久久久99精品久久久久久| 青椒成人免费视频| 日韩午夜精品电影| 精品国产人成亚洲区| 亚洲欧美成人一区二区三区| 国产激情精品久久久第一区二区| 在线观看www91| 91小视频免费看| 国产一区二区中文字幕| 国产精品资源在线观看| 欧美日产国产精品| 久久久午夜精品| 天天影视色香欲综合网老头| 99国产精品一区| 中文字幕巨乱亚洲| 国产福利不卡视频| 在线播放欧美女士性生活| 欧美国产一区二区| 丁香亚洲综合激情啪啪综合| 欧美一级黄色录像| 国产精品久久久久影视| 一本色道a无线码一区v| 精品国产99国产精品| 激情亚洲综合在线| 久久免费视频色| 国产一区二区三区在线看麻豆| 欧美日韩一区在线| 青草av.久久免费一区| 在线观看免费视频综合| 国产精品久久久久aaaa樱花 | 韩国女主播成人在线| 国产午夜精品一区二区三区视频| 国产在线精品免费av| 久久免费视频色| 国产成人免费xxxxxxxx| 中文字幕一区二区三区在线不卡 | 91福利精品视频| 亚洲视频一区二区在线观看| 欧美人妇做爰xxxⅹ性高电影| 青青草原综合久久大伊人精品| 精品婷婷伊人一区三区三| 亚洲一二三四在线观看| 91精品国产欧美日韩| 丁香激情综合国产| 丝袜美腿一区二区三区| 精品国产亚洲一区二区三区在线观看| 高清在线成人网| 日韩**一区毛片| 国产精品久久久久久久蜜臀| 在线观看亚洲精品视频| 青青草国产成人av片免费| 亚洲国产综合视频在线观看| 精品福利一二区| 波多野结衣亚洲一区| 日本午夜一本久久久综合| 亚洲婷婷综合色高清在线| 日韩欧美国产成人一区二区| 91在线码无精品| 国产91在线看| 国产露脸91国语对白| 亚洲成人动漫精品| 中文字幕中文字幕中文字幕亚洲无线| 91久久奴性调教| 一本久久精品一区二区| 成人午夜视频福利| 日韩国产高清在线| 亚洲素人一区二区| 国产精品色婷婷久久58| 中文字幕中文字幕一区| 日韩理论片一区二区| 国产精品高清亚洲| 亚洲欧洲另类国产综合| 国产精品久久久久精k8| 欧美刺激午夜性久久久久久久| 欧美日韩视频在线第一区 | 精品日韩一区二区三区免费视频| 欧美天天综合网| 欧美日本韩国一区| 精品欧美久久久| 国产亚洲午夜高清国产拍精品 | 午夜精品福利在线| 日韩精品一区第一页| 麻豆成人91精品二区三区| 精品系列免费在线观看| 白白色亚洲国产精品| 色诱亚洲精品久久久久久| 欧美精品色综合| 国产精品无遮挡| 偷窥少妇高潮呻吟av久久免费| 午夜亚洲国产au精品一区二区| 三级一区在线视频先锋| 国产精品888| 色综合天天综合给合国产| 欧美精品丝袜久久久中文字幕| 久久久国产一区二区三区四区小说 |