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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? matrix.cpp

?? 各種矩陣運(yùn)算的實(shí)現(xiàn)
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// CMATRIX.cpp: implementation of the CMATRIX class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MATRIX.h"
#include "math.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
int couter=0;

inline Radian ToRad(Angle angle)
{ return (angle/180)*WKPI; }

inline Angle ToAng(Radian rad)
{ return (rad/WKPI)*180; }

double ctan(Radian rad)
{ return 1/tan(rad); }

double csc(Radian rad)
{ return 1/sin(rad); }

Radian actan(double r)
{ return atan(1/r); }

double Cos(Radian r)
{
	if(((int)ToAng(r)/90)==ToAng(r)/90&&((int)ToAng(r)/90)%2!=0)
		return 0;
	else
		return cos(r);
}

double round(double num,unsigned n=0)//四舍五入
{
	double dex=num-(long)num;
	dex*=pow(10,n);
	double here=dex-(long)dex;
	if(here>=0.5)
	{
		dex=((long)dex+1)/pow(10,n);
		return (long)num+dex;
	}
	else
	{
		dex=(long)dex/pow(10,n);
		return (long)num+dex;
	}
}
//========================================
struct _EXPARA
{
	unsigned ROW;
	unsigned COL;
	unsigned r1,c1;
	unsigned r2,c2;
} EXPARA;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMATRIX::CMATRIX(unsigned r/*=1*/,unsigned c/*=1*/)
{
	if(Init()==false) return ;
//	ASSERT(Init());
		//無(wú)法分配堆內(nèi)存以構(gòu)建對(duì)象
	if(row<=0)	row=1;
		//指定的矩陣的行為零!將強(qiáng)制行為1!
	if(col<=0)	col=1;
		//指定的矩陣的列為零!將強(qiáng)制行為1!
	row=r; col=c;
/*
	couter++;
	cout<<"\nCON "<<couter<<endl;
//*/
}

CMATRIX::~CMATRIX()
{
	Destroy();

}

bool CMATRIX::Clear()
{
	Destroy();
	return Init();
}

bool CMATRIX::Init()
{
	if((head=fence=tail=new CElement)==NULL) return false;
	row=col=1; len=0; 
	return true;
}

void CMATRIX::Destroy()
{
	while(tail!=NULL)
	{
		fence=tail;
		tail=tail->prev;
		delete fence;
	}
/*
	couter--;
	cout<<"\nDE  "<<couter<<endl;
//*/
}

bool CMATRIX::Append(const double &_item_)
{
	if(tail==head&&len==0)
	{ fence->Set(_item_); len=1; }

	else
	{
		if(len==row*col) return true;
		else if((tail=tail->next=new CElement(_item_,tail,NULL))==NULL)
			return false;//無(wú)法分配堆內(nèi)存以繼續(xù)!
		else len++;
	}
	return true;
}

inline unsigned CMATRIX::RowColToLen(unsigned r, unsigned c)
{ return ((r-1)*col+c); }

inline double CMATRIX::GetCell(unsigned l)
{
	if(l>=1&&l<=len)
	{
		fence=head;
		if(l==1)
		{ return fence->Cell();}
		else
		{
			for(unsigned i=1;i<l;i++)
			{ fence=fence->next; }
			return fence->Cell();
		}
	}
	else return (0.0);//越界讀取矩陣元素!
}

bool CMATRIX::SetCell(unsigned r, unsigned c, double it)
{
	if(r<1||r>row||c<1||c>col) return false;
		//越界設(shè)置矩陣元素!
	unsigned _l=RowColToLen(r,c);
	return SetCell(_l,it);
}

inline bool CMATRIX::SetCell(unsigned l, double cel)
{
	if(l>=1&&l<=len)
	{
		fence=head;
		if(l==1) { fence->Set(cel); return true; }
		for(unsigned i=1;i<l;i++)
		{ fence=fence->next; }
		fence->Set(cel);
		return true;
	}
	else return false;//越界設(shè)置矩陣元素!
}

inline void CMATRIX::SetRow(unsigned r)
{ row=r; }

inline void CMATRIX::SetCol(unsigned c)
{ col=c; }

inline unsigned CMATRIX::Row()
{ return row; }

inline unsigned CMATRIX::Col()
{ return col; }

inline unsigned CMATRIX::Len()
{ return len; }

bool CMATRIX::operator ==(CMATRIX &_m_)
{
	if((head==_m_.head&&tail==_m_.tail)||this==(&_m_)) return true;
	else
	{
		if(len==_m_.Len()&&row==_m_.Row()&&col==_m_.Col())
		{
			CElement* p;
			unsigned i=0;
			for(fence=head,p=_m_.head;fence,p;fence=fence->next,p=p->next)
			{ 
				if(fence->Cell()==p->Cell()) i++;
			}
			if(i==len) return true;
			else return false;
		}
		else return false;
	}
}

void CMATRIX::operator =(CMATRIX &_m_)
{
	if((*this)==_m_) return ;
	Clear();
	row=_m_.Row(); col=_m_.Col();
	for(unsigned i=1;i<=_m_.Len();i++)
	{ Append(_m_.GetCell(i)); }
}

double CMATRIX::operator ()(unsigned r,unsigned c/*=1*/)
{ return GetCell(RowColToLen(r,c)); }

inline double CMATRIX::Cell(unsigned int r, unsigned int c)
{
	return (*this)(r,c);
}

CMATRIX& operator +(CMATRIX &_m1_, CMATRIX &_m2_)
{
	TMPPMAT(_m1_.Row(),_m2_.Col());
	if(_m1_.Len()==0||_m2_.Len()==0)
	{
		//矩陣為空!加法無(wú)效!
		PMATSET(1,1);
		BACK;
	}
	if(_m1_.Row()!=_m2_.Row()||_m1_.Col()!=_m2_.Col()||_m1_.Len()!=_m2_.Len())
	{
		//行或列數(shù)不等,無(wú)法相加!
		BACK;
	}
	for(unsigned i=1;i<=_m2_.Len();i++)
	{
		if(!(pmat->Append(_m1_.GetCell(i)+_m2_.GetCell(i))))
			BACK;//無(wú)法分配堆內(nèi)存以繼續(xù)加法!
	}
	BACK;
}

CMATRIX& operator -(CMATRIX &_m1_, CMATRIX &_m2_)
{
	TMPPMAT(_m1_.Row(),_m2_.Col()); 
	if(_m1_.Len()==0||_m2_.Len()==0)
	{
		//矩陣為空!減法無(wú)效!
		PMATSET(1,1);
		BACK;
	}
	if(_m1_.Row()!=_m2_.Row()||_m1_.Col()!=_m2_.Col()||_m1_.Len()!=_m2_.Len())
	{
		//行或列數(shù)不等,無(wú)法相減!
		BACK;
	}
	for(unsigned i=1;i<=_m2_.Len();i++)
	{ 
		if(!(pmat->Append(_m1_.GetCell(i)-_m2_.GetCell(i))))
			BACK;//無(wú)法分配堆內(nèi)存以繼續(xù)減法!
	}
	BACK;
}

CMATRIX& operator *(CMATRIX &_m1_, CMATRIX &_m2_)
{
	TMPPMAT(_m1_.Row(),_m2_.Col());
	if(_m1_.Len()==0||_m2_.Len()==0)
	{
		//矩陣為空!乘法無(wú)效!
		PMATSET(1,1);
		BACK;
	}
	if(_m1_.Col()!=_m2_.Row())
	{
		//行列不匹配,無(wú)法相乘!
		BACK;
	}
	double tmpdat=0;
	for(unsigned i=1;i<=_m1_.Row();i++)
	{
		for(unsigned j=1;j<=_m2_.Col();j++)
		{
			for(unsigned k=1;k<=_m2_.Row();k++)
			{ tmpdat=tmpdat+_m1_(i,k)*_m2_(k,j); }
			if(!(pmat->Append(tmpdat)))
				BACK;//無(wú)法分配堆內(nèi)存以繼續(xù)兩矩陣相乘!
			tmpdat=0;
		}
	}
	BACK;
}

CMATRIX& operator *(double k, CMATRIX &_m_)
{
	TMPPMAT(_m_.Row(),_m_.Col());
	if(_m_.Len()==0)
	{
		//矩陣為空!數(shù)乘無(wú)效!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned i=1;i<=_m_.Len();i++)
	{
		if(!(pmat->Append(k*_m_.GetCell(i))))
		{
			//無(wú)法分配堆內(nèi)存以繼續(xù)數(shù)乘矩陣!
			BACK;
		}
	}
	BACK;
}

CMATRIX& CMATRIX::T()
{
	TMPPMAT(col,row);
	if(len==0)
	{
		//矩陣為空!無(wú)法轉(zhuǎn)置!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned i=1;i<=col;i++)
	{
		for(unsigned j=1;j<=row;j++)
		{
			if(!(pmat->Append((*this)(j,i))))
				BACK;//無(wú)法分配堆內(nèi)存以繼續(xù)矩陣轉(zhuǎn)置!
		}
	}
	BACK;
}

CMATRIX& CMATRIX::Remmat(unsigned r, unsigned c)
{
	if(len==0)
	{
		//矩陣為空!求取余子式矩陣無(wú)效!
		return *this;
	}
	if(r>row||c>col||r<=0||c<=0)
	{
		//越界求取余子式矩陣!
		return *this;
	}
	TMPPMAT(row-1,col-1);
	if((row==1&&col==1)||pmat->Row()==0||pmat->Col()==0)
	{
		if(!(pmat->Append(0)))
		{
			//無(wú)法分配堆內(nèi)存以繼續(xù)求矩陣余子式!
			BACK;
		}
		PMATSET(row,col);
		BACK;
	}
	double tmpdat=-1;
	for(unsigned i=1;i<=row;i++)
	{
		if(i==r) { continue; }
		for(unsigned j=1;j<=col;j++)
		{
			if(j==c) { continue; }
			tmpdat=(*this)(i,j);
			if(!(pmat->Append(tmpdat)))
			{
				//無(wú)法分配堆內(nèi)存以繼續(xù)求矩陣余子式!
				BACK;
			}
		}
	}
	BACK;
}

CMATRIX& adjoint(CMATRIX &_m_)
{
	TMPPMAT(_m_.Row(),_m_.Col());
	if(_m_.Len()==0)
	{
		//矩陣為空!無(wú)法求其對(duì)應(yīng)的伴隨矩陣!
		PMATSET(1,1);
		BACK;
	}
	int modulus=-1;
	for(unsigned i=1;i<=_m_.Row();i++)
	{
		for(unsigned j=1;j<=_m_.Col();j++)
		{
			modulus=modulus*(-1);
			if(!(pmat->Append(modulus*det(_m_.Remmat(i,j)))))
			{
				//無(wú)法分配堆內(nèi)存以繼續(xù)求其對(duì)應(yīng)的伴隨矩陣!
				BACK;
			}
		}
	}
//	*pmat=pmat->T();
	pmat=&pmat->T();
	BACK;
}

double det(CMATRIX &_m_)
{
	if(_m_.Len()==0)
	{
		//矩陣為空!其對(duì)應(yīng)的行列式值為零!
		return (0);
	}
	int cor=-1;
	double tmpdat=0;
	if(_m_.Row()!=_m_.Col())
	{
		//行列不同,無(wú)法求其對(duì)應(yīng)的行列式值!
		return tmpdat;
	}
	if(_m_.Len()==1) { return _m_(1,1); } 
	if((_m_.Row()==1&&(_m_.Col()==1)||_m_.Len()==1)) { return _m_(1,1); }
	if((_m_.Row()==1&&(_m_.Col()==1)||_m_.Len()==1)) { return _m_(1,1); }
	for(unsigned j=1;j<=_m_.Col();j++)
	{
		cor=cor*(-1);
		tmpdat=tmpdat+_m_(1,j)*det(_m_.Remmat(1,j))*cor;
	}
	return tmpdat;
}

CMATRIX& CMATRIX::GetLine(unsigned lin)
{
	TMPPMAT(1,col);
	if(len==0)
	{
		//矩陣為空!無(wú)法提取其中的某一行!
		PMATSET(1,1);
		BACK;
	}
	if(lin<=0||lin>row)
	{
		//越界獲取行向量!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned j=1;j<=col;j++)
	{
		if(!(pmat->Append((*this)(lin,j))))
		{
			//無(wú)法分配堆內(nèi)存以繼續(xù)提取其中的某一行!
			BACK;
		}
	}
	BACK;
}

CMATRIX& CMATRIX::GetQue(unsigned que)
{
	TMPPMAT(row,1);
	if(len==0)
	{
		//矩陣為空!無(wú)法提取其中的某一列!
		PMATSET(1,1);
		BACK;
	}
	if(que<=0||que>col)
	{
		//越界獲取列向量!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned i=1;i<=row;i++)
	{
		if(!(pmat->Append((*this)(i,que))))
		{
			//無(wú)法分配堆內(nèi)存以繼續(xù)提取其中的某一列!
			BACK;
		}
	}
	BACK;
}

CMATRIX& CMATRIX::KidMat(unsigned l1, unsigned l2, unsigned q1, unsigned q2)
{
	TMPPMAT(1,1);
	if(len==0)
	{
		//矩陣為空!無(wú)法獲取子矩陣!
		BACK;
	}
	if(l1<=0||l2<=0||q1<=0||q2<=0||q1>col||q2>col||l1>row||l2>row)
	{
		//越界獲取子矩陣!
		BACK;
	}
	unsigned L1=(l1<=l2)?l1:l2; unsigned L2=(l1>l2)?l1:l2;
	unsigned Q1=(q1<=q2)?q1:q2; unsigned Q2=(q1>q2)?q1:q2;
	PMATSET(L2-L1+1,Q2-Q1+1); 
	for(unsigned i=L1;i<=L2;i++)
	{
		for(unsigned j=Q1;j<=Q2;j++)
		{
			if(!(pmat->Append((*this)(i,j))))
			{
				//無(wú)法分配堆內(nèi)存以繼續(xù)獲取子矩陣!
				BACK;
			}
		}
	}
	BACK;
}

CMATRIX& inverse(CMATRIX &_m_)
{
	TMPPMAT(_m_.Row(),_m_.Col());
	if(_m_.Len()==0)
	{
		//矩陣為空!無(wú)法求其對(duì)應(yīng)的逆矩陣!
		PMATSET(1,1);cout<<"\ndet=0"<<endl;
		BACK;
	}
	if(det(_m_)==0)
	{
		//奇異矩陣無(wú)法求解逆矩陣!
		PMATSET(1,1);
		BACK;
	}
//	*pmat=(1/det(_m_))*adjoint(_m_);
	pmat=&((1/det(_m_))*adjoint(_m_));
	BACK;
}

CMATRIX& CMATRIX::Identity()
{
	TMPPMAT(row,col);
	for(unsigned i=1;i<=pmat->Row();i++)
	{
		for(unsigned j=1;j<=pmat->Col();j++)
		{
			if(i==j)
			{
				if(!(pmat->Append(1)))
				{
					//無(wú)法分配堆內(nèi)存以繼續(xù)生成標(biāo)準(zhǔn)形的矩陣!
					BACK;
				}

			}
			else
			{
				if(!(pmat->Append(0)))
				{
					//無(wú)法分配堆內(nèi)存以繼續(xù)生成標(biāo)準(zhǔn)形的矩陣!
					BACK;
				}
			}
		}
	}
	BACK;
}

CMATRIX& CMATRIX::IDENTITY(unsigned dim)
{
	TMPPMAT(dim,dim);
	if(dim==0)
	{
		//指定的方陣維數(shù)為零!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned i=1;i<=pmat->Row();i++)
	{
		for(unsigned j=1;j<=pmat->Col();j++)
		{	
			if(i==j)
			{
				if(!(pmat->Append(1)))
				{
					//無(wú)法分配堆內(nèi)存以繼續(xù)生成單位矩陣!
					BACK;
				}
			}
			else
			{
				if(!(pmat->Append(0)))
				{
					//無(wú)法分配堆內(nèi)存以繼續(xù)生成單位矩陣!
					BACK;
				}
			}
		}
	}
	BACK;
}

CMATRIX& CMATRIX::Basis(unsigned lin,unsigned que)
{
	TMPPMAT(row,col);
	if(len==0)
	{
		//矩陣為空!無(wú)法求其基矩陣!

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线播放 | 日韩视频一区二区| 色天使色偷偷av一区二区| 成人av一区二区三区| bt欧美亚洲午夜电影天堂| 成人亚洲一区二区一| 国产成人精品综合在线观看| 国产高清成人在线| www.在线欧美| 色综合久久天天| 91国偷自产一区二区开放时间 | 亚洲精品午夜久久久| 中文字幕精品一区二区精品绿巨人| 久久九九久精品国产免费直播| 久久亚洲一区二区三区明星换脸 | 久久蜜臀中文字幕| 日本一区二区视频在线观看| 国产精品沙发午睡系列990531| 欧美高清一级片在线观看| 国产精品电影一区二区三区| 亚洲欧美偷拍卡通变态| 亚洲一线二线三线视频| 青青草伊人久久| 国产久卡久卡久卡久卡视频精品| 懂色av一区二区三区免费观看| 97久久超碰国产精品| 欧美日韩不卡一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 久久精品人人做| 一区二区三区四区高清精品免费观看| 午夜免费久久看| 国产精品一区二区在线观看网站| 91视频免费观看| 4438亚洲最大| 国产午夜精品理论片a级大结局| 日韩伦理免费电影| 五月天久久比比资源色| 国产精品一区二区x88av| 色视频欧美一区二区三区| 欧美丰满美乳xxx高潮www| 久久一区二区三区四区| 一区二区三区中文字幕精品精品 | 欧美日韩一区二区三区四区 | 亚洲男人的天堂一区二区| 日韩成人午夜精品| 国产91精品在线观看| 91国偷自产一区二区使用方法| 欧美成人a∨高清免费观看| 国产精品拍天天在线| 视频一区二区三区入口| 国产成人精品免费在线| 色哟哟一区二区在线观看| 精品不卡在线视频| 伊人色综合久久天天人手人婷| 免费在线观看一区二区三区| 成人激情午夜影院| 日韩一卡二卡三卡国产欧美| 国产精品女主播在线观看| 婷婷开心激情综合| 9i在线看片成人免费| 精品久久久久久久一区二区蜜臀| 亚洲视频网在线直播| 久久av资源网| 欧美日韩综合一区| 日韩美女视频一区二区| 韩国中文字幕2020精品| 欧美日韩aaa| 亚洲女同一区二区| 国产精品影视在线| 91精品国产综合久久久久| 亚洲裸体xxx| 国产91清纯白嫩初高中在线观看| 欧美一级片免费看| 亚洲国产精品一区二区www| 成人动漫中文字幕| 久久综合国产精品| 喷白浆一区二区| 欧美日韩高清一区二区三区| 最近中文字幕一区二区三区| 国产一区二区三区高清播放| 欧美精品视频www在线观看| 亚洲欧美日韩久久| 国产成人av电影| 欧美精品一区二区三区蜜臀 | 欧美日韩午夜精品| 亚洲裸体在线观看| av一区二区三区四区| 久久精品水蜜桃av综合天堂| 玖玖九九国产精品| 日韩写真欧美这视频| 午夜精品123| 欧美日韩久久一区二区| 一区2区3区在线看| 91久久久免费一区二区| 日韩美女啊v在线免费观看| 成人午夜私人影院| 国产精品免费视频一区| 岛国一区二区在线观看| 久久久久国产精品人| 国产真实乱子伦精品视频| 精品国产一二三| 国产在线麻豆精品观看| 久久久精品影视| 丁香啪啪综合成人亚洲小说| 中文文精品字幕一区二区| 国产成人免费视频网站高清观看视频 | 午夜精品久久久久影视| 欧美美女bb生活片| 全国精品久久少妇| 精品国产一区二区三区忘忧草| 麻豆成人av在线| 26uuu久久天堂性欧美| 国产精品亚洲一区二区三区妖精 | 日韩欧美一区二区在线视频| 奇米影视一区二区三区小说| 日韩精品在线一区| 国产一区二区伦理| 国产精品久久三区| 欧美性三三影院| 天天操天天综合网| 日韩欧美成人一区| 国产成人一区二区精品非洲| 中文字幕精品在线不卡| 91蜜桃视频在线| 亚州成人在线电影| 日韩欧美的一区二区| 国产成人av福利| 亚洲三级在线看| 91精品黄色片免费大全| 国模冰冰炮一区二区| 中文字幕制服丝袜一区二区三区| 欧美性猛交xxxx乱大交退制版| 青青草97国产精品免费观看无弹窗版| 久久综合给合久久狠狠狠97色69| 成人性生交大合| 性感美女极品91精品| 精品免费国产一区二区三区四区| 粉嫩13p一区二区三区| 亚洲国产一区二区三区青草影视 | 亚洲自拍偷拍麻豆| 日韩精品中文字幕在线一区| av在线不卡免费看| 日韩国产欧美在线视频| 国产日本亚洲高清| 欧美日韩一区三区| 国产精品888| 亚洲高清免费在线| 久久婷婷国产综合精品青草 | 久久精品日产第一区二区三区高清版 | 麻豆免费看一区二区三区| 中文av一区二区| 4438亚洲最大| 91在线免费播放| 久久91精品国产91久久小草| 亚洲男人的天堂一区二区| 日韩女优视频免费观看| 91网站最新地址| 久久66热re国产| 亚洲国产另类av| 国产精品午夜免费| 日韩一区二区三区视频| www.欧美色图| 久久se精品一区精品二区| 亚洲精品一二三| 国产日韩视频一区二区三区| 6080yy午夜一二三区久久| av在线播放不卡| 国产在线一区二区| 日本在线观看不卡视频| 亚洲欧美国产三级| 欧美激情中文不卡| 欧美成人精品1314www| 欧美日韩国产综合一区二区三区| www.日韩av| 国产精品亚洲第一区在线暖暖韩国| 午夜久久福利影院| 亚洲欧洲日韩综合一区二区| 久久久综合视频| 日韩精品自拍偷拍| 欧美挠脚心视频网站| 色婷婷av一区二区三区大白胸| 懂色av一区二区三区免费看| 精东粉嫩av免费一区二区三区| 亚洲国产视频一区二区| 亚洲欧美二区三区| 国产精品妹子av| 国产日韩欧美精品电影三级在线 | 老司机精品视频在线| 天堂久久一区二区三区| 亚洲精品日日夜夜| 亚洲欧美自拍偷拍色图| 国产日韩亚洲欧美综合| 久久久综合精品| 欧美精品一区二区精品网| 欧美不卡一区二区三区| 欧美疯狂性受xxxxx喷水图片| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色综合天天狠狠| 91麻豆精东视频| 日本黄色一区二区|