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

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

?? matrix.cpp

?? 陳必紅 編寫的《用C++語言編寫的數學常用算法》光盤內容
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
			 { t=value(j,k-1);
				if (fabs(t)>fabs(d))
				  { d=t; i=j;}
			 }
		  if (fabs(d)!=0.0)
			 { if (i!=k)
				  { for (j=k-1; j<rownum; j++)
						{
						  t = value(i,j);
						  set(i,j,value(k,j));
						  set(k,j,t);
						}
					 for (j=0; j<rownum; j++)
						{
						  t = value(j,i);
						  set(j,i,value(j,k));
						  set(j,k,t);
						}
				  }
				for (i=k+1; i<rownum; i++)
				  {
					 t = value(i,k-1)/d;
					 set(i,k-1,0.0);
					 for (j=k; j<rownum; j++)
						  set(i,j,value(i,j)-t*value(k,j));
					 for (j=0; j<rownum; j++)
						  set(j,k,value(j,k)+t*value(j,i));
				  }
			 }
		}
}

void matrix::qreigen(matrix & u1, matrix & v1, size_t jt, DOUBLE eps)
 // 求一般實矩陣的所有特征根
// a和b均返回rownum行一列的列向量矩陣,返回所有特征根的實部和虛部
{
	matrix a(*this);
	a.hessenberg();	// 先算出赫申伯格矩陣
	u1 = matrix(rownum);
	v1 = matrix(rownum);
	buffer * uu = getnewbuffer(rownum);
	buffer * vv = getnewbuffer(rownum);
	buffer &u = *uu;
	buffer &v = *vv;
	 size_t m,it,i,j,k,l;
	 size_t iir,iic,jjr,jjc,kkr,kkc,llr,llc;
	 DOUBLE b,c,w,g,xy,p,q,r,x,s,e,f,z,y;
	 it=0; m=rownum;
	 while (m!=0)
		{ l=m-1;
		  while ( l>0 && (fabs(a.value(l,l-1))>eps*
			(fabs(a.value(l-1,l-1))+fabs(a.value(l,l))))) l--;
		  iir = m-1; iic = m-1;
		  jjr = m-1; jjc = m-2;
		  kkr = m-2; kkc = m-1;
		  llr = m-2; llc = m-2;
		  if (l==m-1)
			 { u[m-1]=a.value(m-1,m-1); v[m-1]=0.0;
				m--; it=0;
			 }
		  else if (l==m-2)
			 { b=-(a.value(iir,iic)+a.value(llr,llc));
				c=a.value(iir,iic)*a.value(llr,llc)-
					a.value(jjr,jjc)*a.value(kkr,kkc);
				w=b*b-4.0*c;
				y=sqrt(fabs(w));
				if (w>0.0)
				  { xy=1.0;
					 if (b<0.0) xy=-1.0;
					 u[m-1]=(-b-xy*y)/2.0;
					 u[m-2]=c/u[m-1];
					 v[m-1]=0.0; v[m-2]=0.0;
				  }
				else
				  { u[m-1]=-b/2.0; u[m-2]=u[m-1];
					 v[m-1]=y/2.0; v[m-2]=-v[m-1];
				  }
				m=m-2; it=0;
			 }
		  else
			 {
			 if (it>=jt) {
				delete uu;
				delete vv;
				throw TMESSAGE("fail to calculate eigenvalue");
			 }
				it++;
				for (j=l+2; j<m; j++)
					a.set(j,j-2,0.0);
				for (j=l+3; j<m; j++)
					a.set(j,j-3,0.0);
				for (k=l; k+1<m; k++)
				  { if (k!=l)
						{ p=a.value(k,k-1); q=a.value(k+1,k-1);
						  r=0.0;
						  if (k!=m-2) r=a.value(k+2,k-1);
						}
					 else
						{
						  x=a.value(iir,iic)+a.value(llr,llc);
						  y=a.value(llr,llc)*a.value(iir,iic)-
								a.value(kkr,kkc)*a.value(jjr,jjc);
						  iir = l; iic = l;
						  jjr = l; jjc = l+1;
						  kkr = l+1; kkc = l;
						  llr = l+1; llc = l+1;
						  p=a.value(iir,iic)*(a.value(iir,iic)-x)
								+a.value(jjr,jjc)*a.value(kkr,kkc)+y;
						  q=a.value(kkr,kkc)*(a.value(iir,iic)+a.value(llr,llc)-x);
						  r=a.value(kkr,kkc)*a.value(l+2,l+1);
						}
					 if ((fabs(p)+fabs(q)+fabs(r))!=0.0)
						{ xy=1.0;
						  if (p<0.0) xy=-1.0;
						  s=xy*sqrt(p*p+q*q+r*r);
						  if (k!=l) a.set(k,k-1,-s);
						  e=-q/s; f=-r/s; x=-p/s;
						  y=-x-f*r/(p+s);
						  g=e*r/(p+s);
						  z=-x-e*q/(p+s);
						  for (j=k; j<m; j++)
							 {
								iir = k; iic = j;
								jjr = k+1; jjc = j;
								p=x*a.value(iir,iic)+e*a.value(jjr,jjc);
								q=e*a.value(iir,iic)+y*a.value(jjr,jjc);
								r=f*a.value(iir,iic)+g*a.value(jjr,jjc);
								if (k!=m-2)
								  { kkr = k+2; kkc = j;
									 p=p+f*a.value(kkr,kkc);
									 q=q+g*a.value(kkr,kkc);
									 r=r+z*a.value(kkr,kkc);
									 a.set(kkr,kkc,r);
								  }
								a.set(jjr,jjc,q);
								a.set(iir,iic,p);
							 }
						  j=k+3;
						  if (j>=m-1) j=m-1;
						  for (i=l; i<=j; i++)
							 { iir = i; iic = k;
								jjr = i; jjc = k+1;
								p=x*a.value(iir,iic)+e*a.value(jjr,jjc);
								q=e*a.value(iir,iic)+y*a.value(jjr,jjc);
								r=f*a.value(iir,iic)+g*a.value(jjr,jjc);
								if (k!=m-2)
								  { kkr = i; kkc = k+2;
									 p=p+f*a.value(kkr,kkc);
									 q=q+g*a.value(kkr,kkc);
									 r=r+z*a.value(kkr,kkc);
									 a.set(kkr,kkc,r);
								  }
								a.set(jjr,jjc,q);
								a.set(iir,iic,p);
							 }
						}
				  }
			 }
		}
	for(i=0;i<rownum;i++) {
		u1.set(i,u[i]);
		v1.set(i,v[i]);
	}
	delete uu;
	delete vv;
}

DOUBLE gassrand(int rr)	// 返回一零均值單位方差的正態分布隨機數
{
	static DOUBLE r=3.0;	// 種子
	if(rr) r = rr;
	int i,m;
	DOUBLE s,w,v,t;
	s=65536.0; w=2053.0; v=13849.0;
	t=0.0;
	for (i=1; i<=12; i++)
		{ r=r*w+v; m=(int)(r/s);
		  r-=m*s; t+=r/s;
		}
	t-=6.0;
	return(t);
}

gassvector::gassvector(matrix & r):	//r必須是正定對稱陣,為正態隨機向量的協方差
	a(r)
{
	if(r.rownum != r.colnum) throw TMESSAGE("must be a sqare matrix");
	if(!r.issym) throw TMESSAGE("must be a symetic matrix");
	matrix evalue;
	a = a.eigen(evalue);
	for(size_t i=0; i<a.colnum; i++) {
		DOUBLE e = sqrt(evalue(i));
		for(size_t j=0; j<a.rownum; j++)
			a.set(j,i,a.value(j,i)*e);
	}
}

matrix gassvector::operator()(matrix & r) // 返回給定協方差矩陣的正態隨機向量
{
	a = r;
	matrix evalue;
	a = a.eigen(evalue);
	size_t i;
	for(i=0; i<a.colnum; i++) {
		DOUBLE e = sqrt(evalue(i));
		for(size_t j=0; j<a.rownum; j++)
			a.set(j,i,a.value(j,i)*e);
	}
	matrix rr(a.rownum);	// 產生列向量
	for(i=0; i<a.rownum; i++)
		rr.set(i,gassrand());
	return a*rr;
}

matrix gassvector::operator()()	// 返回已設定的協方差矩陣的正態隨機向量
{
	matrix rr(a.rownum);
	for(size_t i=0; i<a.rownum; i++)
		rr.set(i,gassrand());
	return a*rr;
}

void gassvector::setdata(matrix & r) // 根據協方差矩陣設置增益矩陣
{
	if(!r.issym) throw TMESSAGE("r must be symetic!");
	a = r;
	matrix evalue;
	a = a.eigen(evalue);
	for(size_t i=0; i<a.colnum; i++) {
   	if(evalue(i)<0.0) throw TMESSAGE("var matrix not positive!");
		DOUBLE e = sqrt(evalue(i));
		for(size_t j=0; j<a.rownum; j++)
			a.set(j,i,a.value(j,i)*e);
	}
}

int matrix::ispositive()		// 判定矩陣是否對稱非負定陣,如是返回1,否則返回0
{
	if(!issym) return 0;
	matrix ev;
	eigen(ev);
	for(size_t i=0; i<rownum; i++)
		if(ev(i)<0) return 0;
	return 1;
}

matrix matrix::cholesky(matrix& dd)	// 用喬里斯基分解法求對稱正定陣的線性
		// 方程組ax=d返回方程組的解,本身為a,改變為分解陣u,d不變
{
	if(!issym) throw TMESSAGE("not symetic!");
	if(dd.rownum != colnum) throw TMESSAGE("dd's rownum not right!");
	matrix md(dd);
	size_t i,j,k,u,v;
	if(value(0,0)<=0.0) throw TMESSAGE("not positive");
	set(0,0,sqrt(value(0,0))); //	 a[0]=sqrt(a[0]);
	buffer& a = (*buf);
	buffer& d = (*(md.buf));
	size_t n = rownum;
	size_t m = dd.colnum;
	for (j=1; j<n; j++) a[j]=a[j]/a[0];
	for (i=1; i<n; i++)
		{ u=i*n+i;
		  for (j=1; j<=i; j++)
			 { v=(j-1)*n+i;
				a[u]=a[u]-a[v]*a[v];
			 }
		  if (a[u]<=0.0) throw TMESSAGE("not positive");
		  a[u]=sqrt(a[u]);
		  if (i!=(n-1))
			 { for (j=i+1; j<n; j++)
				  { v=i*n+j;
					 for (k=1; k<=i; k++)
						a[v]=a[v]-a[(k-1)*n+i]*a[(k-1)*n+j];
					 a[v]=a[v]/a[u];
				  }
			 }
		}
	for (j=0; j<m; j++)
		{ d[j]=d[j]/a[0];
		  for (i=1; i<=n-1; i++)
			 { u=i*n+i; v=i*m+j;
				for (k=1; k<=i; k++)
				  d[v]=d[v]-a[(k-1)*n+i]*d[(k-1)*m+j];
				d[v]=d[v]/a[u];
			 }
		}
	for (j=0; j<=m-1; j++)
		{ u=(n-1)*m+j;
		  d[u]=d[u]/a[n*n-1];
		  for (k=n-1; k>=1; k--)
			 { u=(k-1)*m+j;
				for (i=k; i<=n-1; i++)
				  { v=(k-1)*n+i;
					 d[u]=d[u]-a[v]*d[i*m+j];
				  }
				v=(k-1)*n+k-1;
				d[u]=d[u]/a[v];
			 }
		}
	if(n>1)
	for(j=1; j<n; j++)
	for(i=0; i<j; i++)
		a[i+j*n]=0.0;
	return md;
}

DOUBLE lineopt(matrix& aa,matrix& bb, matrix& cc, matrix & xx)
 // 線性規劃最優點尋找程序,aa為mXn不等式約束條件左端系數矩陣,bb為不等式約束
 // 條件的右端項,為m維向量,cc為目標函數系數,n維向量,xx返回極小點,為n維向量
{
	if(aa.rownum != bb.rownum || aa.colnum != cc.rownum ||
		aa.colnum != xx.rownum) throw TMESSAGE("dimenstion not right!");
	size_t n=aa.colnum, m=aa.rownum;
	size_t i,mn,k,j;
	matrix a(m,n+m);
	for(i=0;i<m;i++) {
		for(j=0;j<n;j++)
			a.set(i,j,aa(i,j));
		for(j=n;j<n+m;j++)
			if(j-n == i) a.set(i,j,1.0);
			else a.set(i,j,0.0);
	}
	matrix c(m+n);
	c = 0.0;
	for(i=0;i<m;i++)
		c.set(i,cc(i));
	lbuffer* jjs = getnewlbuffer(m);
	lbuffer& js = (*jjs);
	DOUBLE s,z,dd,y; //,*p,*d;

	for (i=0; i<m; i++) js[i]=n+i;
	matrix p(m,m);
	matrix d;
	mn=m+n; s=0.0;
	matrix x(mn);
	while (1)
		{ for (i=0; i<m; i++)
			 for (j=0; j<m; j++)
				p.set(i,j,a(i,(size_t)js[j]));
		  p.inv();
			d = p*a;
			x = 0.0;
		  for (i=0; i<m; i++)
			 { s=0.0;
				for (j=0; j<=m-1; j++)
					s+=p(i,j)*bb(j);
				x.set((size_t)js[i],s);
			 }
		  k=mn; dd=1.0e-35;
		  for (j=0; j<mn; j++)
			 { z=0.0;
				for (i=0; i<m; i++)
					z+=c((size_t)js[i])*d(i,j);
				z-=c(j);
				if (z>dd) { dd=z; k=j;}
			 }
		  if (k==mn)
			 { s=0.0;
				for (j=0; j<n; j++) {
					xx.set(j,x(j));
					s+=c(j)*x(j);
				}
				delete jjs;
				return s;
			 }
		  j=m;
		  dd=1.0e+20;
		  for (i=0; i<=m-1; i++)
			 if (d(i,k)>=1.0e-20)   // [i*mn+k]>=1.0e-20)
				{ y=x(size_t(js[i]))/d(i,k);
				  if (y<dd) { dd=y; j=i;}
				}
		  if (j==m) { delete jjs;
							throw TMESSAGE("lineopt failed!");
						}
		  js[j]=k;
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aaaaaa午夜精品| 欧美日本国产视频| 欧美精品tushy高清| 国产精品视频一二三| 日韩av成人高清| 91美女在线观看| 久久理论电影网| 久久精品免费观看| 欧美视频在线一区二区三区 | 伊人色综合久久天天人手人婷| 免费日本视频一区| 欧美日韩精品一区二区天天拍小说| 国产婷婷色一区二区三区四区| 免费成人在线影院| 91精品久久久久久久久99蜜臂| 综合激情网...| 成人黄色av电影| 久久老女人爱爱| 国产美女一区二区三区| 日韩精品中文字幕在线不卡尤物 | 日韩一区二区麻豆国产| 一区2区3区在线看| 99亚偷拍自图区亚洲| 国产日韩欧美a| 国产电影一区在线| 欧美国产精品一区二区三区| 精品一区二区三区视频在线观看| 欧美一区二区三区婷婷月色| 午夜精品一区二区三区三上悠亚| 在线精品视频免费观看| 亚洲午夜在线电影| 欧美精品欧美精品系列| 亚洲mv在线观看| 欧美日韩精品一区二区天天拍小说 | 色综合天天综合网国产成人综合天 | 精品国产精品网麻豆系列| 日本欧美在线看| 欧美大片拔萝卜| 精品一二三四区| 久久精品人人做人人综合| 国产剧情一区二区三区| 国产欧美一区二区三区沐欲| 国产成人精品亚洲777人妖| 中文字幕不卡在线观看| 91麻豆国产精品久久| 亚洲韩国精品一区| 91精品国产欧美一区二区18 | 日韩一级黄色片| 久久草av在线| 欧美国产一区二区在线观看| 99在线精品一区二区三区| 亚洲最色的网站| 555www色欧美视频| 国产美女一区二区三区| 亚洲丝袜另类动漫二区| 欧美群妇大交群中文字幕| 久久99精品国产91久久来源| 国产精品美女久久久久高潮| 色哟哟一区二区在线观看| 亚洲成人av一区二区三区| 精品国产一区二区三区久久久蜜月| 成人一级黄色片| 亚洲国产wwwccc36天堂| 国产午夜精品理论片a级大结局| 91丝袜美女网| 久久国产精品色婷婷| 中文字幕亚洲不卡| 日韩丝袜情趣美女图片| 99久久亚洲一区二区三区青草| 婷婷成人激情在线网| 国产亚洲欧美日韩俺去了| 在线一区二区三区四区五区| 久久精品国产999大香线蕉| 国产精品久久久久7777按摩| 精品视频一区二区不卡| 国产成人午夜电影网| 亚洲一区二区三区四区不卡| 久久久五月婷婷| 欧美午夜片在线看| 成人福利电影精品一区二区在线观看| 亚洲成人精品一区| 中文字幕欧美一区| 久久婷婷综合激情| 欧美日韩精品一区二区三区蜜桃 | 亚洲日穴在线视频| 精品裸体舞一区二区三区| 色综合久久久久久久久| 国产精品综合视频| 久久国产精品第一页| 亚洲国产毛片aaaaa无费看| 国产日产欧美一区二区三区| 69精品人人人人| 色偷偷一区二区三区| 丰满白嫩尤物一区二区| 精品一区二区免费看| 午夜私人影院久久久久| 亚洲人亚洲人成电影网站色| 久久久一区二区三区| 日韩一区二区三区在线视频| 精品久久久久久久久久久久包黑料 | 成人一级视频在线观看| 久久99精品国产麻豆不卡| 午夜精品久久久久久久久久| 亚洲欧美另类综合偷拍| 国产精品久久久久久久久免费桃花| 日韩精品一区二区三区四区| 欧美三级三级三级爽爽爽| 色先锋资源久久综合| 成人高清免费观看| 成人国产精品视频| gogo大胆日本视频一区| 懂色av一区二区夜夜嗨| 国产91丝袜在线18| 丁香另类激情小说| 成人三级伦理片| 成人午夜在线免费| 成人伦理片在线| 99精品久久免费看蜜臀剧情介绍| 成人av在线资源网站| 91在线精品一区二区| 一本色道久久综合精品竹菊| 色欧美日韩亚洲| 欧美日本乱大交xxxxx| 在线不卡一区二区| 日韩三级中文字幕| 久久久九九九九| 自拍偷拍亚洲综合| 亚洲国产中文字幕| 日产欧产美韩系列久久99| 免费成人在线播放| 国产不卡视频一区二区三区| 国产成人日日夜夜| 99精品久久久久久| 欧美剧情片在线观看| 欧美一级艳片视频免费观看| 欧美videofree性高清杂交| 亚洲影视资源网| 日韩vs国产vs欧美| 国产高清不卡一区二区| 99精品视频一区| 91精品麻豆日日躁夜夜躁| 久久综合久久综合久久综合| 一区在线播放视频| 日韩精品电影在线| 成人手机电影网| 精品视频一区三区九区| 欧美成人伊人久久综合网| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久综合久久99| 亚洲视频你懂的| 麻豆国产精品一区二区三区| 国产精品中文字幕一区二区三区| 91亚洲精品一区二区乱码| 91精品国产91久久久久久一区二区 | 国产一区二区三区免费在线观看| 97se亚洲国产综合自在线| 这里只有精品免费| 亚洲人成精品久久久久久 | 亚洲综合一区二区精品导航| 日韩av在线发布| av午夜一区麻豆| 欧美成人bangbros| 亚洲一区二区三区视频在线播放| 成人开心网精品视频| 7777精品久久久大香线蕉 | 三级一区在线视频先锋| 国产成人精品影视| 这里只有精品电影| 亚洲一区二区三区在线看| 国产成人精品影院| 精品久久久三级丝袜| 亚洲三级小视频| 成人av在线一区二区| 2021中文字幕一区亚洲| 水野朝阳av一区二区三区| 91在线高清观看| 欧美激情综合在线| 国产麻豆欧美日韩一区| 欧美一区二区三区播放老司机| 亚洲欧美日韩一区二区| 国产成人精品亚洲日本在线桃色| 日韩免费观看高清完整版在线观看| 亚洲综合丝袜美腿| 一本色道**综合亚洲精品蜜桃冫| 国产欧美日韩三区| 国产精品一区不卡| 久久久久久毛片| 国产精品亚洲人在线观看| 日韩精品最新网址| 久久99蜜桃精品| 日韩欧美电影一二三| 日本欧洲一区二区| 欧美大肚乱孕交hd孕妇| 秋霞国产午夜精品免费视频| 69久久99精品久久久久婷婷| 亚洲香肠在线观看| 在线不卡中文字幕播放| 午夜日韩在线电影| 日韩午夜电影av| 国产精品一区免费视频|