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

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

?? matrix.cpp

?? 各種矩陣運算的實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		PMATSET(1,1);
		BACK;
	}
	if(lin>row||lin<=0||que>col||que<=0)
	{
		//指定的行列值對求基矩陣為效!
		PMATSET(1,1);
		BACK;
	}
	for(unsigned i=1;i<=row;i++)
	{
		for(unsigned j=1;j<=col;j++)
		{
			if(i==lin&&j==que)
			{
				if(!(pmat->Append(1)))
				{
					//無法分配堆內存以繼續生成基矩陣!
					BACK;
				}

			}
			else
			{
				if(!(pmat->Append(0)))
				{
					//無法分配堆內存以繼續生成基矩陣!
					BACK;
				}

			}
		}
	}
	BACK;
}

CMATRIX& CMATRIX::BASE(unsigned l/*=1*/,unsigned q/*=1*/,unsigned r/*=1*/,unsigned c/*=1*/)
{
	TMPPMAT(r,c);
	for(unsigned i=1;i<=r;i++)
	{
		for(unsigned j=1;j<=c;j++)
		{
			if(i==l&&j==q)
			{
				if(!(pmat->Append(1)))
				{
					//無法分配堆內存以繼續生成基矩陣!
					BACK;
				}
			}
			else
			{
				if(!(pmat->Append(0)))
				{
					//無法分配堆內存以繼續生成基矩陣!
					BACK;
				}
			}
		}
	}
	BACK;
}

int tao(CMATRIX& _v_)
{ 
	if(_v_.Len()==0)
	{
		//序列為空!無法求逆序數!
		return (-1);
	}
	if(_v_.Row()!=_v_.Len()&&_v_.Col()!=_v_.Len())
	{
		//矩陣求逆序數無定義!
		return (_v_.Len()+1); //adjust the error according to this value
	}
	int t=0;
	double dat;
	for(unsigned i=1;i<=_v_.Len();i++)
	{
		dat=_v_.GetCell(i);
		for(unsigned j=i;j<=_v_.Len();j++) { if(dat>_v_.GetCell(j)) t=t+1; }
	}
	return t;
}

CMATRIX& CMATRIX::Power(int pow)
{
	TMPPMAT(row,col);
	if(len==0)
	{
		//矩陣為空!無法求方陣的冪!
		BACK;
	}
	*pmat=*this;
	if(pow>0) for(int i=2;i<=pow;i++) { *pmat=(*pmat)*(*this); }
	else
	{
		if(pow<0)
		{
			pow=(-1)*pow;
			*pmat=inverse(*pmat);
			for(int i=2;i<=pow;i++) { *pmat=(*pmat)*(*this); }
		}
		else pmat=&Identity();
		//else *pmat=Identity();
	}
	BACK;
}

CMATRIX& CMATRIX::Zero()
{
	TMPPMAT(row,col);
	for(unsigned i=1;i<=row;i++)
	{
		for(unsigned j=1;j<=col;j++)
		{
			if(!(pmat->Append(0)))
			{
				//無法分配堆內存以繼續生成零矩陣!
				BACK;
			}

		}
	}
	BACK;
}


CMATRIX& CMATRIX::ZERO(unsigned r, unsigned c)
{
	TMPPMAT(r,c);
	for(unsigned i=1;i<=r;i++)
	{
		for(unsigned j=1;j<=c;j++)
		{
			if(!(pmat->Append(0)))
			{
				//無法分配堆內存以繼續生成零矩陣!
				BACK;
			}
		}
	}
	BACK;
}

CMATRIX& CMATRIX::Expand(CMATRIX& _m_,EXSTYLE exs/*=TOP*/,int excursion/*=0*/)
{
	TMPPMAT(1,1);
	if(len==0||_m_.Len()==0) 
	{
		//矩陣為空!無法進行矩陣的擴展!
		BACK;
	}
	int EXC=abs(excursion);
	unsigned mr=_m_.Row();
	unsigned mc=_m_.Col();
	switch(exs)
	{
	case TOP:
		EXPARA.ROW=mr+row;
		if(excursion<=0)
		{
			if(mc>=col+EXC) EXPARA.COL=mc;
			else EXPARA.COL=col+EXC;
			EXPARA.r1=mr;EXPARA.c1=EXC;
			EXPARA.r2=0;EXPARA.c2=0;
		}
		else
		{
			if(col>=mc+EXC) EXPARA.COL=col;
			else EXPARA.COL=mc+EXC;
			EXPARA.r1=mr;EXPARA.c1=0;
			EXPARA.r2=0;EXPARA.c2=EXC;
		}
		break;
	case BOTTOM:
		EXPARA.ROW=mr+row;
		if(excursion<=0)
		{
			if(mc>=col+EXC) EXPARA.COL=mc;
			else EXPARA.COL=col+EXC;
			EXPARA.r1=0;EXPARA.c1=EXC;
			EXPARA.r2=row;EXPARA.c2=0;
		}
		else
		{
			if(col>=mc+EXC) EXPARA.COL=col;
			else EXPARA.COL=mc+EXC;
			EXPARA.r1=0;EXPARA.c1=0;
			EXPARA.r2=row;EXPARA.c2=EXC;
		}
		break;
	case LEFT:
		EXPARA.COL=mc+col;
		if(excursion<=0)
		{
			if(mr>=row+EXC) EXPARA.ROW=mr;
			else EXPARA.ROW=row+EXC;
			EXPARA.r1=mc;EXPARA.c1=EXC;
			EXPARA.r2=0;EXPARA.c2=0;
		}
		else
		{
			if(row>=mr+EXC) EXPARA.ROW=row;
			else EXPARA.ROW=mr+EXC;
			EXPARA.r1=0;EXPARA.c1=mc;
			EXPARA.r2=EXC;EXPARA.c2=0;
		}
		break;
	case RIGHT:
		EXPARA.COL=mc+col;
		if(excursion<=0)
		{
			if(row>=mr+EXC) EXPARA.ROW=row;
			else EXPARA.ROW=mr+EXC;
			EXPARA.r1=col;EXPARA.c1=EXC;
			EXPARA.r2=0;EXPARA.c2=0;
		}
		else
		{
			if(mr>=row+EXC) EXPARA.ROW=mr;
			else EXPARA.ROW=row+EXC;
			EXPARA.r1=0;EXPARA.c1=0;
			EXPARA.r2=EXC;EXPARA.c2=mc;
		}
		break;
	default:break;
	}
	double tmpdat=0;
//	*pmat=CMATRIX::ZERO(EXPARA.ROW,EXPARA.COL);
	pmat=&CMATRIX::ZERO(EXPARA.ROW,EXPARA.COL);
	for(unsigned i=1;i<=EXPARA.ROW;i++)
	{
		for(unsigned j=1;j<=EXPARA.COL;j++)
		{	
			if(i>EXPARA.r2 && i<=EXPARA.r2+mr && j>EXPARA.c2 && j<=mc+EXPARA.c2) 
				tmpdat=_m_(i-EXPARA.r2,j-EXPARA.c2);
			else
			{
				if(i>EXPARA.r1 && i<=EXPARA.r1+row && j>EXPARA.c1 && j<=col+EXPARA.c1) 
					tmpdat=(*this)(i-EXPARA.r1,j-EXPARA.c1);
				else tmpdat=0;
			}
			pmat->SetCell(i,j,tmpdat);	
		}
	}
	BACK;
}

double CMATRIX::Norm(DTYPE dtype/*=FROB*/)
{
	unsigned i=1,j=1;
	double d=0,tmpd=0;
	switch(dtype)
	{
	case ONE:
		{
			TMPPMAT(col,1);
			for(j=1;j<=col;j++)
			{
				for(i=1;i<=row;i++)
				{
					tmpd+=Cell(i,j);
				}
				pmat->Append(tmpd);
				tmpd=0;
			}
			d=(pmat->Extremum()).extremum;
			pmat->Destroy();
		}
		break;
	case TWO:break;
	case INF:
		{
			TMPPMAT(row,1);
			for(i=1;i<=row;i++)
			{
				for(j=1;j<=col;j++)
				{
					tmpd+=Cell(i,j);
				}
				pmat->Append(tmpd);
				tmpd=0;
			}
			d=(pmat->Extremum()).extremum;
			pmat->Destroy();
		}
		break;
	case FROB:
		{
			for(i=1;i<=row;i++)
			{
				for(j=1;j<=col;j++)
				{
					tmpd+=Cell(i,j)*Cell(i,j);
				}
			}
			d=sqrt(tmpd);
		}
		break;
	default:d=0;break;
	}
	return d;
}

bool CMATRIX::Swap(unsigned int r1, unsigned int c1, unsigned int r2, unsigned int c2)
{
	double tmp=(*this)(r1,c1);
	SetCell(r1,c1,(*this)(r2,c2));
	SetCell(r2,c2,tmp);
	return true;
}

void CMATRIX::InsSort(SORTYPE sortype)
{
	if(sortype.IsCol==true)//對列排序
	{
		for(unsigned i=1;i<=row;i++)
		{
			for(unsigned j=i;j<=row;j++)
			{
				if(sortype.IsUp==true)//升序
				{
					if((*this)(i,sortype.wer)<(*this)(j,sortype.wer))
						continue;
					else
					{
						if(sortype.Syn==false)//無需同步
							Swap(i,sortype.wer,j,sortype.wer);
						else//需要同步
						{
							for(unsigned k=1;k<=col;k++)
								Swap(i,k,j,k);
						}
					}
				}
				else//降序
				{
					if((*this)(i,sortype.wer)>(*this)(j,sortype.wer))
						continue;
					else
					{
						if(sortype.Syn==false)//無需同步
							Swap(i,sortype.wer,j,sortype.wer);
						else//需要同步
						{
							for(unsigned k=1;k<=col;k++)
								Swap(i,k,j,k);
						}
					}
				}
			}
		}
	}
	else 
	{
		for(unsigned i=1;i<=col;i++)
		{
			for(unsigned j=i;j<=col;j++)
			{
				if(sortype.IsUp==true)//升序
				{
					if((*this)(sortype.wer,i)<(*this)(sortype.wer,j))
						continue;
					else
					{
						if(sortype.Syn==false)//無需同步
							Swap(sortype.wer,i,sortype.wer,j);
						else//需要同步
						{
							for(unsigned k=1;k<=col;k++)
								Swap(k,i,k,j);
						}
					}
				}
				else//降序
				{
					if((*this)(sortype.wer,i)>(*this)(sortype.wer,j))
						continue;
					else
					{
						if(sortype.Syn==false)//無需同步
							Swap(sortype.wer,i,sortype.wer,j);
						else//需要同步
						{
							for(unsigned k=1;k<=col;k++)
								Swap(k,i,k,j);
						}
					}
				}
			}
		}
	}
}

EXTREMUM CMATRIX::ExtremumW(bool isMax)
{
	EXTREMUM res;
	res.extremum=Cell(1,1);

	if(isMax)
	{
		for(unsigned i=1;i<=row;i++)
		{
			for(unsigned j=1;j<=col;j++)
			{
				if(res.extremum<Cell(i,j))
				{
					res.extremum=Cell(i,j);
					res.row=i;
					res.col=j;
				}
				else continue;
			}
		}
	}
	else
	{
		for(unsigned i=1;i<=row;i++)
		{
			for(unsigned j=1;j<=col;j++)
			{
				if(res.extremum>Cell(i,j))
				{
					res.extremum=Cell(i,j);
					res.row=i;
					res.col=j;
				}
				else continue;
			}
		}
	}
	return res;
}

EXTREMUM CMATRIX::Extremum(bool isMax/*=true*/,unsigned num/*=1*/,bool isCol/*=true*/)
{
	double tmpd=0;
	EXTREMUM res;
	if(isCol==true)
	{
		res.col=num;
		tmpd=Cell(1,num);
		if(isMax==true)
		{
			for(unsigned i=2;i<=row;i++)
			{
				if(tmpd<Cell(i,num))
				{
					tmpd=Cell(i,num);
					res.row=i;
				}
				else continue;
			}
		}
		else
		{
			for(unsigned i=2;i<=row;i++)
			{
				if(tmpd>Cell(i,num))
				{
					tmpd=Cell(i,num);
					res.row=i;
				}
				else continue;
			}
		}
	}
	else
	{
		res.row=num;
		tmpd=Cell(num,1);

		if(isMax==true)
		{
			for(unsigned j=2;j<=col;j++)
			{
				if(tmpd<Cell(num,j))
				{
					tmpd=Cell(num,j);
					res.col=j;
				}
				else continue;
			}
		}
		else
		{
			for(unsigned j=2;j<=col;j++)
			{
		
				if(tmpd>Cell(num,j))
				{
					tmpd=Cell(num,j);
					res.col=j;
				}
				else continue;
			}
		}
	}
	res.extremum=tmpd;
	return res;
}

CMATRIX& arytomat(double ary[],unsigned n, unsigned r,unsigned c/*=1*/,bool isLeftRight/*=true*/)
{
	TMPPMAT(r,c);
	pmat=&(pmat->Zero());
//	*pmat=(pmat->Zero());&
	unsigned k=0;

	if(isLeftRight)
	{
		for(unsigned i=1;i<=r;i++)
		{
			for(unsigned j=1;j<=c;j++)
			{
				if(k>=n) BACK;
				pmat->SetCell(i,j,ary[k]);
				k++;
			}	
		}
	}
	else
	{
		for(unsigned j=1;j<=c;j++)
		{
			for(unsigned i=1;i<=r;i++)
			{
				if(k>=n) BACK;
				pmat->SetCell(i,j,ary[k]);
				k++;
			}	
		}
	}
	BACK;
}

CMATRIX& Cos(CMATRIX &angles)
{
	TMPPMAT(angles.Row(),angles.Col());

	for(unsigned i=1;i<=angles.Row();i++)
	{
		for(unsigned j=1;j<=angles.Col();j++)
		{
			pmat->Append(Cos(ToRad(angles(i,j))));
		}
	}
	BACK;
}

V3 V3::operator *(const V3 &a)
{
	V3 v;
	v.x1=x2*a.x3-x3*a.x2;
	v.x2=x3*a.x1-x1*a.x3;
	v.x3=x1*a.x2-x2*a.x1;
	return v;
}

V3 V3::operator -(const V3 &a)
{
	V3 v;
	v.x1=x1-a.x1;
	v.x2=x2-a.x2;
	v.x3=x3-a.x3;
	return v;
}

V3 V3::operator +(const V3 &a)
{
	V3 v;
	v.x1=x1+a.x1;
	v.x2=x2+a.x2;
	v.x3=x3+a.x3;
	return v;
}

ostream& operator <<(ostream& output,CMATRIX& _m)
{
	if(_m.Len()==0) cout<<"矩陣為空!將輸出唯一的默認元素!"<<endl;
	int colcount=0;
	for(_m.fence=_m.head;_m.fence;_m.fence=_m.fence->next)
	{
		output<<" "<<_m.fence->Cell()<<"\t";
		colcount++;
		if(colcount%_m.Col()==0) cout<<endl;
	}
	return output;
}

istream& operator >>(istream& in,CMATRIX& m_)
{
	double temp;
	for(unsigned i=1;i<=m_.Row();i++)
	{
		for(unsigned j=1;j<=m_.Col();j++)
		{ in>>temp; m_.Append(temp); }
	}
	return in;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品高清在线播放| 亚洲欧洲无码一区二区三区| 久久噜噜亚洲综合| 亚洲综合一区二区三区| 激情五月激情综合网| 欧美日韩一区二区三区四区 | 国产精品美女久久久久久久久久久 | 成人一区在线看| 9191久久久久久久久久久| 国产精品久久久久久久久动漫| 日日摸夜夜添夜夜添亚洲女人| av男人天堂一区| 久久精品夜色噜噜亚洲aⅴ| 天天色图综合网| 91小视频在线观看| 中文字幕免费不卡在线| 另类小说图片综合网| 欧美麻豆精品久久久久久| 中文字幕一区二区三区不卡| 国产精品一区二区在线播放 | 日本aⅴ免费视频一区二区三区| 99国内精品久久| 国产欧美一区二区精品性色 | 亚洲超碰精品一区二区| 97超碰欧美中文字幕| 一区在线观看免费| 成人一道本在线| 中文字幕不卡在线| 国产精品1区2区3区| 久久久国产精品不卡| 韩国精品一区二区| 欧美成人性福生活免费看| 毛片不卡一区二区| 91麻豆精品国产91久久久 | 懂色一区二区三区免费观看| 久久女同精品一区二区| 久久97超碰国产精品超碰| 精品1区2区在线观看| 国产乱淫av一区二区三区| 欧美国产97人人爽人人喊| www.亚洲免费av| 亚洲一区二区欧美日韩| 欧美日韩国产免费| 久久99精品国产.久久久久| 精品久久久久香蕉网| 国产精品系列在线播放| 国产午夜精品久久久久久免费视| 国产成人精品影视| 中文字幕一区二区三区在线观看| 91在线porny国产在线看| 一区二区三区在线观看动漫| 欧美日韩电影一区| 日韩精品高清不卡| 久久久久久久综合| 91免费在线播放| 日韩精品午夜视频| 久久久久久99精品| 欧洲一区二区三区在线| 日本大胆欧美人术艺术动态| 日韩精品自拍偷拍| 成人黄色av网站在线| 亚洲一区二区精品3399| 26uuu久久天堂性欧美| 波多野结衣亚洲| 亚洲高清不卡在线| 久久久精品中文字幕麻豆发布| 91在线精品一区二区三区| 亚洲电影中文字幕在线观看| 久久夜色精品国产噜噜av| av激情成人网| 美女任你摸久久| 亚洲图片你懂的| 日韩视频在线你懂得| 99re6这里只有精品视频在线观看| 亚洲成人免费影院| 国产精品免费aⅴ片在线观看| 欧美日韩精品专区| 成人免费毛片高清视频| 热久久国产精品| 国产精品久久毛片| 日韩精品一区在线观看| 色系网站成人免费| 久久国内精品视频| 亚洲一区二区精品久久av| 中文在线一区二区| 91精品国产免费| 欧美性欧美巨大黑白大战| 国产九色精品成人porny| 日韩精品成人一区二区在线| 亚洲男人电影天堂| 日本一区二区三区在线不卡| 欧美一级一区二区| 欧洲av在线精品| 95精品视频在线| 成人一级片在线观看| 精品一区二区三区视频在线观看| 亚洲成va人在线观看| 亚洲天堂福利av| 国产精品入口麻豆九色| 精品国产亚洲在线| 91精品国产综合久久蜜臀| 91福利国产精品| av不卡免费电影| gogo大胆日本视频一区| 国产电影一区二区三区| 国产一区二区不卡| 久久精品国产久精国产爱| 美女网站一区二区| 天天色天天操综合| 青青草国产成人99久久| 日韩av午夜在线观看| 爽爽淫人综合网网站| 亚洲成人777| 首页综合国产亚洲丝袜| 婷婷开心激情综合| 天天综合网 天天综合色| 国产一区二区三区在线观看精品| 日韩黄色免费电影| 三级成人在线视频| 日韩中文字幕91| 天天综合天天做天天综合| 蜜乳av一区二区三区| 免费人成在线不卡| 精品亚洲国内自在自线福利| 国产老肥熟一区二区三区| 国产精品一品视频| av一区二区三区在线| 欧美在线观看视频在线| 欧美视频三区在线播放| 3atv在线一区二区三区| 久久久久国产精品麻豆ai换脸| 久久亚洲综合色一区二区三区| 亚洲国产精品v| 一区二区成人在线| 日本成人超碰在线观看| 国内成人精品2018免费看| 成人国产精品免费观看视频| 色呦呦一区二区三区| 制服.丝袜.亚洲.中文.综合| 久久久久久久一区| 一区二区在线观看av| 日本vs亚洲vs韩国一区三区| 国产馆精品极品| 在线视频欧美精品| 欧美成人精品3d动漫h| 国产精品的网站| 蜜芽一区二区三区| av亚洲精华国产精华精| 欧美另类z0zxhd电影| 久久久久久黄色| 亚洲成人激情综合网| 国产乱淫av一区二区三区| 91激情在线视频| 国产亚洲精品超碰| 亚洲第一av色| 粉嫩一区二区三区在线看| 欧美精品粉嫩高潮一区二区| 国产视频一区二区在线| 亚洲国产精品久久久久婷婷884| 国产专区欧美精品| 色婷婷国产精品| 国产亚洲欧洲一区高清在线观看| 午夜精品久久久久久久久久久| 国产精品一区二区三区99| 欧美日韩精品专区| 国产精品久久久久国产精品日日| 香蕉加勒比综合久久| 91网上在线视频| 久久日一线二线三线suv| 丝袜亚洲另类丝袜在线| 日本韩国一区二区三区视频| 久久久久久久久岛国免费| 视频一区二区三区中文字幕| 99精品在线免费| 国产欧美综合在线观看第十页| 日日骚欧美日韩| 欧美日韩你懂的| 亚洲激情在线播放| av不卡在线播放| 国产女人水真多18毛片18精品视频| 亚洲mv大片欧洲mv大片精品| 一本色道久久综合狠狠躁的推荐| 欧美精彩视频一区二区三区| 久久爱另类一区二区小说| 欧美视频自拍偷拍| 亚洲综合一二区| 日本精品一级二级| 依依成人综合视频| 99精品视频在线播放观看| 国产精品毛片久久久久久久| 国产乱对白刺激视频不卡| 欧美精品一区二区三区在线| 蜜桃视频第一区免费观看| 欧美日韩国产大片| 日日嗨av一区二区三区四区| 7777精品伊人久久久大香线蕉经典版下载 | 911国产精品| 亚洲国产另类av| 欧美性生活大片视频| 亚洲韩国精品一区|