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

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

?? eigenvaluevector.inl

?? 主要是關于一些數值計算中所要用到的頭文件,希望對大家有所幫助
?? INL
字號:
// EigenvalueVector.inl		計算特征值特征向量函數(方法)定義
// Ver 1.0.0.0
// 版權所有(C) 何渝, 2002

// 最后修改: 2002.8.10

#ifndef _EIGENVALUEVECTOR_INL
#define _EIGENVALUEVECTOR_INL

//約化對稱陣為對稱三對角陣的豪斯荷爾德變換法
template <class _Ty>
int HouseholderTransform(matrix<_Ty>& a, matrix<_Ty>& q, 
									valarray<_Ty>& b, valarray<_Ty>& c)
{
	int j, k, stRank;
    _Ty h, f, g, h2;

	if(MatrixSymmetry(a)!=true)
		return int(0);			//矩陣a不是對稱陣
	
	stRank = a.GetColNum();		// 矩陣階數
	
    for(int i=0; i<stRank; i++)
		for(int j=0; j<stRank; j++)
			q(i,j)=a(i,j);

    for(i=stRank-1; i>=1; i--)
    { 
		h=0.0;
        if(i>1)
          for(k=0; k<i; k++)
			  h=h+q(i,k)*q(i,k);
        if(FloatEqual(h,0))
        {
			c[i]=0.0;
            if(i==1) c[i]=q(i,i-1);
            b[i]=0.0;
        }
        else
        { 
			c[i]=sqrt(h);
            if(q(i,i-1)>0.0) c[i]=-c[i];
            h=h-q(i,i-1)*c[i];
            q(i,i-1)=q(i,i-1)-c[i];
            f=0.0;
            for(j=0; j<i; j++)
            { 
				q(j,i) = q(i,j) / h;
                g = 0.0;
                for(k=0; k<=j; k++)
                  g = g + q(j,k) * q(i,k);
                if(j+1<i)
                  for(k=j+1; k<i; k++)
                    g = g + q(k,j) * q(i,k);
                c[j] = g / h;
                f = f + g * q(j,i);
            }
            h2 = f / (h+h);
            for(j=0; j<i; j++)
            { 
				f = q(i,j);
                g = c[j] -h2 * f;
                c[j] = g;
                for(k=0; k<=j; k++)
                    q(j,k)=q(j,k)-f*c[k]-g*q(i,k);
            }
            b[i]=h;
        }
    }
    for(i=0; i<stRank-1; i++) c[i]=c[i+1];
    c[stRank-1]=0.0;
    b[0]=0.0;
    for(i=0; i<stRank; i++)
    { if((b[i]!=0.0)&&(i-1>=0))
          for(j=0; j<i; j++)
          { 
			  g=0.0;
              for(k=0; k<i; k++)
				g=g+q(i,k)*q(k,j);
              for(k=0; k<i; k++)
                q(k,j)=q(k,j)-g*q(k,i);
          }
        b[i]=q(i,i);
		q(i,i)=1.0;
        if(i-1>=0)
          for(j=0; j<i; j++)
          { 
			  q(i,j)=0.0;
			  q(j,i)=0.0;
		  }
    }
	return int(1);	//正常返回
}

//實對稱三角陣全部特征值及特征向量QR法
template <class _Ty>
int EigenvalueVectorRealTriangleQR(valarray<_Ty>& b, 
					valarray<_Ty>& c, matrix<_Ty>& q, _Ty eps, int l)
{
	int i, k, m, it, stRank;
    _Ty h, g, p, r, e, s, d(0), f(0);

	stRank = q.GetColNum();		// 矩陣階數
	
	c[stRank-1]=0.0;

    for(int j=0; j<stRank; j++)
    { 
		it=0;
        h=eps*(Abs(b[j])+Abs(c[j]));
        if(h>d) d=h;
        m=j;
        while((m<stRank)&&(Abs(c[m])>d)) m++;
        if(m!=j)
        {
			do
            {
				if(it==l)
                { 
					cout << "fail" << endl;
                    return(-1);				//出錯
                }
                it++;
                g=b[j];
                p=(b[j+1]-g)/(2.0*c[j]);
                r=sqrt(p*p+1.0);
                if(p>0.0 || FloatEqual(p,0)) b[j]=c[j]/(p+r);
                else b[j]=c[j]/(p-r);
                h=g-b[j];
                for(i=j+1; i<stRank; i++)	b[i]=b[i]-h;
                f=f+h; 
				p=b[m]; 
				e=1.0; 
				s=0.0;
                for(i=m-1; i>=j; i--)
                {
					g=e*c[i];
					h=e*p;
                    if(Abs(p)>=Abs(c[i]))
                    {
						e=c[i]/p;
						r=sqrt(e*e+1.0);
                        c[i+1]=s*p*r;
						s=e/r; 
						e=1.0/r;
                    }
                    else
					{
						e=p/c[i]; 
						r=sqrt(e*e+1.0);
                        c[i+1]=s*c[i]*r;
                        s=1.0/r; 
						e=e/r;
                    }
                    p=e*b[i]-s*g;
                    b[i+1]=h+s*(e*g+s*b[i]);
                    for(k=0; k<stRank; k++)
                    { 
                        h=q(k,i+1);
						q(k,i+1)=s*q(k,i)+e*h;
                        q(k,i)=e*q(k,i)-s*h;
                    }
                }
                c[j]=s*p;
				b[j]=e*p;
            }while(Abs(c[j])>d);
        }
        b[j]=b[j]+f;
    }
    for(i=0; i<stRank; i++)
    { 
		k=i;
		p=b[i];
        if(i+1<stRank)
        {
			j=i+1;
            while((j<stRank)&&(b[j]<=p))
            {
				k=j;
				p=b[j];
				j=j+1;
			}
		}
        if(k!=i)
        { 
			b[k]=b[i]; 
			b[i]=p;
            for(j=0; j<stRank; j++)
            {
                p=q(j,i);
				q(j,i)=q(j,k);
				q(j,k)=p;
            }
        }
    }
    return(1);	//正常返回
}

//約化一般實矩陣為赫申伯格陣的初等相似變換法
template <class _Ty>
int HessenbergTransform(matrix<_Ty>& a)
{
	int i, stRank;
    _Ty t;
	
	stRank = a.GetColNum();		// 矩陣階數
	if(stRank != a.GetRowNum())
		return int(0);			//矩陣a不是方陣

    for(int k=1; k<stRank-1; k++)
    { 
		_Ty d(0);
        for(int j=k; j<stRank; j++)
        { 
			t=a(j,k-1);
            if(Abs(t)>Abs(d))
            {
				d=t; 
				i=j;
			}
        }
        if(FloatNotEqual(d,0))
        { 
			if(i!=k)
            {
				for(j=k-1; j<stRank; j++)
					swap(a(i,j), a(k,j));
                for(j=0; j<stRank; j++)
					swap(a(j,i), a(j,k));
            }
            for(i=k+1; i<stRank; i++)
            { 
				t=a(i,k-1)/d; 
				a(i,k-1)=0.0;
                for(j=k; j<stRank; j++)
                    a(i,j)=a(i,j)-t*a(k,j);
                for(j=0; j<stRank; j++)
                    a(j,k)=a(j,k)+t*a(j,i);
            }
        }
    }
	return int(1);
}

//求赫申伯格陣全部特征值QR法
template <class _Ty>
int EigenvalueVectorHessenbergQR(matrix<_Ty>& a,  
						valarray<complex<_Ty> >& uv, _Ty eps, int jt)
{
	
	int i, j, k, l, it(0), stRank;
    _Ty b,c,w,g,xy,p,q,r,x,s,e,f,z,y;

	stRank = a.GetColNum();		// 矩陣階數

    while(stRank!=0)
    { 
		l=stRank-1;
        while((l>0)&&(Abs(a(l,l-1))>eps*(Abs(a(l-1,l-1))+Abs(a(l,l))))) l=l-1;
        if(l==stRank-1)
        { 
			uv[stRank-1]=complex<_Ty>(a(stRank-1,stRank-1),0);
            stRank=stRank-1;
			it=0;
        }
        else if(l==stRank-2)
        { 
			b=-(a(stRank-1,stRank-1)+a(stRank-2,stRank-2));
            c=a(stRank-1,stRank-1)*a(stRank-2,stRank-2)-a(stRank-1,stRank-2)*a(stRank-2,stRank-1);
            w=b*b-4.0*c;
            y=sqrt(Abs(w));
            if(w>0.0)
            { 
				xy=1.0;
                if(b<0.0) xy=-1.0;
				uv[stRank-1]=complex<_Ty>((-b-xy*y)/2.0, 0);
				uv[stRank-2]=complex<_Ty>(c/(uv[stRank-1].real()), 0);
            }
            else
            {
				uv[stRank-1]=complex<_Ty>(-b/2.0, y/2.0);
				uv[stRank-2]=complex<_Ty>(uv[stRank-1].real(),-uv[stRank-1].imag());
            }
            stRank=stRank-2; 
			it=0;
        }
        else
        { 
			if(it>=jt)
            { printf("fail\n");
                return(-1);		//出錯!
            }
            it=it+1;
            for(j=l+2; j<stRank; j++)	a(j,j-2)=0.0;
            for(j=l+3; j<stRank; j++)    a(j,j-3)=0.0;
            for(k=l; k<stRank-1; k++)
            { 
				if(k!=l)
                {
					p=a(k,k-1);
					q=a(k+1,k-1);
                    r=0.0;
                    if(k!=stRank-2) r=a(k+2,k-1);
                }
                else
                {
					x=a(stRank-1,stRank-1)+a(stRank-2,stRank-2);
                    y=a(stRank-2,stRank-2)*a(stRank-1,stRank-1)-a(stRank-2,stRank-1)*a(stRank-1,stRank-2);
                    p=a(l,l)*(a(l,l)-x)+a(l,l+1)*a(l+1,l)+y;
                    q=a(l+1,l)*(a(l,l)+a(l+1,l+1)-x);
                    r=a(l+1,l)*a(l+2,l+1);
                }
                if(FloatNotEqual((Abs(p)+Abs(q)+Abs(r)),0))
                { 
					xy=1.0;
                    if(p<0.0) xy=-1.0;
                    s=xy*sqrt(p*p+q*q+r*r);
                    if(k!=l) a(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<stRank; j++)
                    {	
                        p=x*a(k,j)+e*a(k+1,j);
                        q=e*a(k,j)+y*a(k+1,j);
                        r=f*a(k,j)+g*a(k+1,j);
                        if(k!=stRank-2)
                        { 
                            p=p+f*a(k+2,j);
                            q=q+g*a(k+2,j);
                            r=r+z*a(k+2,j);
							a(k+2,j)=r;
                        }
                        a(k+1,j)=q; 
						a(k,j)=p;
                    }
                    j=k+3;
                    if(j>=stRank-1) j=stRank-1;
                    for(i=l; i<=j; i++)
                    {	
                        p=x*a(i,k)+e*a(i,k+1);
                        q=e*a(i,k)+y*a(i,k+1);
                        r=f*a(i,k)+g*a(i,k+1);
                        if(k!=stRank-2)
                        { 
                            p=p+f*a(i,k+2);
                            q=q+g*a(i,k+2);
                            r=r+z*a(i,k+2); 
							a(i,k+2)=r;
                        }
                        a(i,k+1)=q; 
						a(i,k)=p;
                    }
                }
            }
        }
    }
    return(1);
}

//實對稱陣特征值及特征向量雅可比法
template <class _Ty>
int EigenvalueVectorRealSymmetryJacobi(matrix<_Ty>& a,  
										matrix<_Ty>& v, _Ty eps, int jt)
{
	int j, p, q, l(1), stRank;
    _Ty fm,cn,sn,omega,x,y,d;
	
	//if(MatrixSymmetry(a)!=true)	//不是對稱陣
	          //return(0);				

	stRank = a.GetColNum();		// 矩陣階數

    for(int i=0; i<stRank; i++)
    {
		v(i,i)=1.0;
        for(j=0; j<stRank; j++)
          if(i!=j) v(i,j)=0.0;
    }
    while(1)
    { 
		fm=0.0;
        for(i=1; i<stRank; i++)
        for(j=0; j<i; j++)
        {
			d=Abs(a(i,j));
            if((i!=j)&&(d>fm))
            {
				fm=d; 
				p=i;
				q=j;
			}
        }
        if(fm<eps)  return(1);
        if(l>jt)  return(-1);
        l=l+1;
        x=-a(p,q);
		y=(a(q,q)-a(p,p))/2.0;
        omega=x/sqrt(x*x+y*y);
        if(y<0.0) omega=-omega;
        sn=1.0+sqrt(1.0-omega*omega);
        sn=omega/sqrt(2.0*sn);
        cn=sqrt(1.0-sn*sn);
        fm=a(p,p);
        a(p,p)=fm*cn*cn+a(q,q)*sn*sn+a(p,q)*omega;
        a(q,q)=fm*sn*sn+a(q,q)*cn*cn-a(p,q)*omega;
        a(p,q)=0.0; 
		a(q,p)=0.0;
        for(j=0; j<stRank; j++)
        if((j!=p)&&(j!=q))
        {
            fm=a(p,j);
            a(p,j)=fm*cn+a(q,j)*sn;
            a(q,j)=-fm*sn+a(q,j)*cn;
        }
        for(i=0; i<stRank; i++)
          if((i!=p)&&(i!=q))
          { 
              fm=a(i,p);
              a(i,p)=fm*cn+a(i,q)*sn;
              a(i,q)=-fm*sn+a(i,q)*cn;
          }
        for(i=0; i<stRank; i++)
        {
            fm=v(i,p);
            v(i,p)=fm*cn+v(i,q)*sn;
            v(i,q)=-fm*sn+v(i,q)*cn;
        }
    }
    return(1);
}

//實對稱陣特征值及特征向量雅可比過關法
template <class _Ty>
int EigenvalueVectorRealSymmetryJacobiB(matrix<_Ty>& a,  
												matrix<_Ty>& v, _Ty eps)
{
	int j, p, q, stRank;
    _Ty fm, cn, sn, omega, x, y, d;

	if(MatrixSymmetry(a)!=true)
		return(-1);

	stRank = a.GetColNum();		//矩陣階數

    for(int i=0; i<stRank; i++)
    { v(i,i)=1.0;
        for(j=0; j<stRank; j++)
          if(i!=j) v(i,j)=0.0;
    }
    _Ty ff(0);
    for(i=1; i<stRank; i++)
		for(j=0; j<i; j++)
		{
			d=a(i,j);
			ff=ff+d*d;
		}
    ff=sqrt(2.0*ff);
  loop0:
    ff=ff/(1.0*stRank);
  loop1:
    for(i=1; i<stRank; i++)
        for(j=0; j<i; j++)
        { 
			d=Abs(a(i,j));
            if(d>ff)
            { 
				p=i;
				q=j;
                goto loop;
            }
        }
	if(ff<eps) return(1);	//成功返回
    goto loop0;
  loop:
    x=-a(p,q);
	y=(a(q,q)-a(p,p))/2.0;
    omega=x/sqrt(x*x+y*y);
    if(y<0.0) omega=-omega;
    sn=1.0+sqrt(1.0-omega*omega);
    sn=omega/sqrt(2.0*sn);
    cn=sqrt(1.0-sn*sn);
    fm=a(p,p);
    a(p,p)=fm*cn*cn+a(q,q)*sn*sn+a(p,q)*omega;
    a(q,q)=fm*sn*sn+a(q,q)*cn*cn-a(p,q)*omega;
    a(p,q)=0.0;
	a(q,p)=0.0;
    for(j=0; j<stRank; j++)
        if((j!=p)&&(j!=q))
        {
            fm=a(p,j);
            a(p,j)=fm*cn+a(q,j)*sn;
            a(q,j)=-fm*sn+a(q,j)*cn;
        }
    for(i=0; i<stRank; i++)
        if((i!=p)&&(i!=q))
        {
			fm=a(i,p);
            a(i,p)=fm*cn+a(i,q)*sn;
            a(i,q)=-fm*sn+a(i,q)*cn;
        }
    for(i=0; i<stRank; i++)
    { 
        fm=v(i,p);
        v(i,p)=fm*cn+v(i,q)*sn;
        v(i,q)=-fm*sn+v(i,q)*cn;
    }
    goto loop1;
}

#endif			// _EIGENVALUEVECTOR_INL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.性欧美| www.性欧美| 91色乱码一区二区三区| 国产精品家庭影院| aa级大片欧美| 亚洲综合色噜噜狠狠| 在线欧美小视频| 视频一区在线播放| 91精品国产色综合久久久蜜香臀| 日韩成人伦理电影在线观看| 26uuu久久天堂性欧美| 国产一区欧美一区| 综合av第一页| 欧美另类高清zo欧美| 久久国产免费看| 日本一区二区视频在线| 一本到不卡精品视频在线观看| 亚洲一区免费在线观看| 91精品麻豆日日躁夜夜躁| 国产制服丝袜一区| 亚洲激情自拍视频| 日韩情涩欧美日韩视频| 暴力调教一区二区三区| 婷婷中文字幕综合| 久久久久亚洲综合| 91久久一区二区| 精品一区二区三区久久| 亚洲人成精品久久久久久| 欧美美女bb生活片| 懂色一区二区三区免费观看 | 欧美妇女性影城| 国产一区二区三区免费看 | 欧美电影免费观看完整版| 国产91丝袜在线观看| 亚洲国产成人av好男人在线观看| 精品伦理精品一区| 一本久久综合亚洲鲁鲁五月天| 蜜桃视频免费观看一区| 136国产福利精品导航| 欧美一区二区三区免费大片| av激情综合网| 国产乱国产乱300精品| 亚洲一区二区高清| 国产精品免费视频一区| 日韩欧美一二三区| 欧美日韩在线直播| jvid福利写真一区二区三区| 美女视频黄 久久| 亚洲在线观看免费视频| 国产精品久久久久影院亚瑟| 一区二区高清视频在线观看| 久久日一线二线三线suv| 欧美日韩卡一卡二| 99国产精品99久久久久久| 国产一区二区三区在线观看免费视频 | 88在线观看91蜜桃国自产| 国产欧美1区2区3区| 国产白丝精品91爽爽久久| 中文字幕第一区第二区| 91日韩在线专区| 亚洲成人tv网| 精品国产髙清在线看国产毛片| 欧美bbbbb| 国产欧美日产一区| 欧美亚洲一区二区在线观看| 午夜视频久久久久久| 精品国产乱码久久久久久影片| 色偷偷一区二区三区| 在线国产亚洲欧美| 欧美tickling挠脚心丨vk| 日韩精品一二三| 国产偷国产偷精品高清尤物| 日韩欧美国产综合在线一区二区三区| 久久众筹精品私拍模特| 日韩一级二级三级| 国产成人福利片| 国产精品一卡二卡在线观看| 精品中文字幕一区二区| 日韩二区在线观看| 麻豆精品久久精品色综合| 蜜桃视频在线观看一区二区| 久久99久久99小草精品免视看| 美女任你摸久久| 韩国v欧美v亚洲v日本v| 精品国产91洋老外米糕| 欧美精品乱人伦久久久久久| 北条麻妃一区二区三区| 麻豆高清免费国产一区| 国产白丝精品91爽爽久久| 国产精品久久久久久久裸模 | 成人免费看视频| 蜜臀91精品一区二区三区 | 欧美成人午夜电影| 欧美变态tickle挠乳网站| 亚洲激情图片qvod| 成人激情视频网站| 欧美成人a视频| 亚洲午夜免费电影| 99久久99久久免费精品蜜臀| 欧美精品 日韩| 亚洲国产精品一区二区www在线 | 国产精品久线在线观看| 91精品国产全国免费观看| 欧美日韩精品欧美日韩精品一| 91精品国产品国语在线不卡| 国产一区二区精品久久99| 无吗不卡中文字幕| 日韩中文字幕亚洲一区二区va在线| 日本视频在线一区| 成人性生交大片免费| 亚洲精品一区二区三区精华液 | 亚洲图片欧美视频| 亚洲综合久久av| 成人免费av网站| 99亚偷拍自图区亚洲| 在线视频综合导航| 奇米影视在线99精品| 国产综合一区二区| 色综合久久久网| 欧美变态tickle挠乳网站| 亚洲女人的天堂| 久久精品国内一区二区三区| 99视频一区二区| 精品捆绑美女sm三区| 成人欧美一区二区三区白人 | 国产成人无遮挡在线视频| 91在线观看下载| 精品美女一区二区| 亚洲第一搞黄网站| av中文一区二区三区| 2023国产一二三区日本精品2022| 一区二区三区精品| 从欧美一区二区三区| 欧美一区二区视频网站| 亚洲激情在线激情| 成人综合婷婷国产精品久久蜜臀 | 亚洲国产日韩a在线播放性色| 国产成人一级电影| 欧美大片免费久久精品三p| 一区二区在线看| 成人av资源在线观看| 日韩欧美色综合网站| 亚洲电影第三页| 色综合久久88色综合天天6| 久久久另类综合| 免费高清不卡av| 7777精品久久久大香线蕉| 亚洲欧美日韩国产另类专区| 国产一区二区三区美女| 欧美一级高清大全免费观看| 一区二区三区久久久| 99久久精品免费看国产免费软件| 精品国产电影一区二区| 久久精品国产精品亚洲综合| 91精品国产综合久久精品app| 亚洲黄色av一区| 在线一区二区三区| 欧美日韩一卡二卡三卡| 日韩av午夜在线观看| 亚洲欧洲av一区二区三区久久| 一区二区视频免费在线观看| 91精品国产福利| 国产suv一区二区三区88区| 综合网在线视频| 欧美一卡2卡3卡4卡| 国产九色精品成人porny| 日韩中文字幕1| 精品国产青草久久久久福利| 国产成人综合网站| 中文字幕一区二区在线观看| 欧美日韩精品三区| 日本女优在线视频一区二区| 青青草97国产精品免费观看 | 国产不卡高清在线观看视频| 久久一二三国产| 国产成人亚洲综合a∨婷婷图片 | 97精品国产97久久久久久久久久久久| 国产精品网曝门| 色综合久久精品| 婷婷中文字幕综合| 欧美成人一区二区三区| 国内久久精品视频| 一区在线中文字幕| 91九色最新地址| 视频一区二区三区入口| 欧美大片日本大片免费观看| 国产一区二区精品久久91| 中文字幕亚洲成人| 欧美优质美女网站| 日韩综合小视频| 国产丝袜美腿一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 中文一区二区在线观看| 91色综合久久久久婷婷| 丝袜亚洲另类欧美综合| 26uuu国产一区二区三区| 91网页版在线| 日韩和欧美的一区| 日本一区二区三级电影在线观看| 99精品在线免费|