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

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

?? nlequation.cpp

?? 用牛頓法求解積分
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
			}
        }
    }
    
	*x=xx;
}

//////////////////////////////////////////////////////////////////////
// 內部函數(shù)
//////////////////////////////////////////////////////////////////////
double CNLequation::rnd(double* r)
{
	int m;
    double s,u,v,p;
    
	s=65536.0; 
	u=2053.0; 
	v=13849.0;
    m=(int)(*r/s); 
	*r=*r-m*s;
    *r=u*(*r)+v; 
	m=(int)(*r/s);
    *r=*r-m*s; p=*r/s;
    
	return(p);
}

//////////////////////////////////////////////////////////////////////
// 求實函數(shù)或復函數(shù)方程一個復根的蒙特卡洛法
//
// 調用時,須覆蓋計算方程左端函數(shù)的模值||f(x, y)||的虛函數(shù)
//           double Func(double x, double y)
//
// 參數(shù):
// 1. double* x - 傳入初值(猜測解)的實部,返回求得的根的實部
// 2. double* y - 傳入初值(猜測解)的虛部,返回求得的根的虛部
// 3. double xStart - 均勻分布的端點初值
// 4. int nControlB - 控制參數(shù)
// 5. double eps - 控制精度,默認值為0.000001
// 6. double xi[] - 一維數(shù)組,長度為n,返回n個根的虛部
//
// 返回值:無
//////////////////////////////////////////////////////////////////////
void CNLequation::GetRootMonteCarlo(double* x, double* y, double xStart, int nControlB, double eps /*= 0.000001*/)
{ 
    int k;
    double xx,yy,a,r,z,x1,y1,z1;

	// 求解條件與初值
    a=xStart; 
	k=1; 
	r=1.0; 
	xx=*x; 
	yy=*y;
    z=Func(xx,yy);
    
	// 精度控制求解
	while (a>=eps)
    { 
		x1=-a+2.0*a*rnd(&r); 
		x1=xx+x1; 
        y1=-a+2.0*a*rnd(&r); 
		y1=yy+y1;
        
		z1=Func(x1,y1);
        
		k=k+1;
        if (z1>=z)
        { 
			if (k>nControlB) 
			{ 
				k=1; 
				a=a/2.0; 
			}
		}
        else
        { 
			k=1; 
			xx=x1; 
			yy=y1;  
			z=z1;
            if (z<eps)
            { 
				*x=xx; 
				*y=yy; 
				return; 
			}
        }
    }
    
	*x=xx; 
	*y=yy; 
}

//////////////////////////////////////////////////////////////////////
// 求非線性方程組一組實根的梯度法
//
// 調用時,須覆蓋計算方程左端函數(shù)f(x)值及其偏導數(shù)值的虛函數(shù)
//         double Func(double x[], double y[])
//
// 參數(shù):
// 1. int n - 方程的個數(shù),也是未知數(shù)的個數(shù)
// 2. double x[] - 一維數(shù)組,長度為n,存放一組初值x0, x1, …, xn-1,
//                 返回時存放方程組的一組實根
// 3. int nMaxIt - 迭代次數(shù),默認值為60
// 4. double eps - 控制精度,默認值為0.000001
//
// 返回值:BOOL 型,求解是否成功
//////////////////////////////////////////////////////////////////////
BOOL CNLequation::GetRootsetGrad(int n, double x[], int nMaxIt /*= 60*/, double eps /*= 0.000001*/)
{ 
    int l,j;
    double f,d,s,*y;

    y = new double[n];

    l=nMaxIt;
    f=Func(x,y);

	// 控制精度,迭代求解
    while (f>=eps)
    { 
		l=l-1;
        if (l==0) 
		{ 
			delete[] y; 
			return TRUE;
		}
        
		d=0.0;
        for (j=0; j<=n-1; j++) 
			d=d+y[j]*y[j];
        if (d+1.0==1.0) 
		{ 
			delete[] y; 
			return FALSE;
		}
        
		s=f/d;
        for (j=0; j<=n-1; j++) 
			x[j]=x[j]-s*y[j];
        
		f=Func(x,y);
    }
    
	delete[] y; 

	// 是否在有效迭代次數(shù)內達到精度
	return (nMaxIt>l);
}

//////////////////////////////////////////////////////////////////////
// 求非線性方程組一組實根的擬牛頓法
//
// 調用時,須覆蓋計算方程左端函數(shù)f(x)值及其偏導數(shù)值的虛函數(shù)
//         double Func(double x[], double y[])
//
// 參數(shù):
// 1. int n - 方程的個數(shù),也是未知數(shù)的個數(shù)
// 2. double x[] - 一維數(shù)組,長度為n,存放一組初值x0, x1, …, xn-1,
//                 返回時存放方程組的一組實根
// 3. double t - 控制h大小的變量,0<t<1
// 4. double h - 增量初值
// 3. int nMaxIt - 迭代次數(shù),默認值為60
// 4. double eps - 控制精度,默認值為0.000001
//
// 返回值:BOOL 型,求解是否成功
//////////////////////////////////////////////////////////////////////
BOOL CNLequation::GetRootsetNewton(int n, double x[], double t, double h, int nMaxIt /*= 60*/, double eps /*= 0.000001*/)
{ 
    int i,j,l;
    double am,z,beta,d,*y,*a,*b;

    y = new double[n];
	
	// 構造矩陣
	CMatrix mtxCoef(n, n);
	CMatrix mtxConst(n, 1);
    a = mtxCoef.GetData();
    b = mtxConst.GetData();

	// 迭代求解
    l=nMaxIt; 
	am=1.0+eps;
    while (am>=eps)
    { 
		Func(x,b);
        
		am=0.0;
        for (i=0; i<=n-1; i++)
        { 
			z=fabs(b[i]);
            if (z>am) 
				am=z;
        }
        
		if (am>=eps)
        { 
			l=l-1;
            if (l==0)
            { 
				delete[] y;
                return FALSE;
            }
            
			for (j=0; j<=n-1; j++)
            { 
				z=x[j]; 
				x[j]=x[j]+h;
                
				Func(x,y);
                
				for (i=0; i<=n-1; i++) 
					a[i*n+j]=y[i];
                
				x[j]=z;
            }
            
			// 調用全選主元高斯消元法
			CLEquations leqs(mtxCoef, mtxConst);
			CMatrix mtxResult;
			if (! leqs.GetRootsetGauss(mtxResult))
			{
				delete[] y;
				return FALSE;
			}

			mtxConst = mtxResult;
			b = mtxConst.GetData();

			beta=1.0;
            for (i=0; i<=n-1; i++) 
				beta=beta-b[i];
            
			if (beta == 0.0)
            { 
				delete[] y;
                return FALSE;
            }
            
			d=h/beta;
            for (i=0; i<=n-1; i++) 
				x[i]=x[i]-d*b[i];
            
			h=t*h;
        }
    }
    
	delete[] y;
    
	// 是否在有效迭代次數(shù)內達到精度
	return (nMaxIt>l);
}

//////////////////////////////////////////////////////////////////////
// 求非線性方程組最小二乘解的廣義逆法
//
// 調用時,1. 須覆蓋計算方程左端函數(shù)f(x)值及其偏導數(shù)值的虛函數(shù)
//             double Func(double x[], double y[])
//         2. 須覆蓋計算雅可比矩陣函數(shù)的虛函數(shù)
//             double FuncMJ(int n, double x[], double y[])
//
// 參數(shù):
// 1. int m - 方程的個數(shù)
// 2. int n - 未知數(shù)的個數(shù)
// 3. double x[] - 一維數(shù)組,長度為n,存放一組初值x0, x1, …, xn-1,要求
//                 不全為0,返回時存放方程組的最小二乘解,當m=n時,即是
//                 非線性方程組的解
// 4. double eps1 - 最小二乘解的精度控制精度,默認值為0.000001
// 5. double eps2 - 奇異值分解的精度控制精度,默認值為0.000001
//
// 返回值:BOOL 型,求解是否成功
//////////////////////////////////////////////////////////////////////
BOOL CNLequation::GetRootsetGinv(int m, int n, double x[], double eps1 /*= 0.000001*/, double eps2 /*= 0.000001*/)
{ 
	int i,j,k,l,kk,jt;
    double y[10],b[10],alpha,z,h2,y1,y2,y3,y0,h1;
    double *p,*d,*dx,*w;
    
	// 控制參數(shù)
	int ka = max(m, n)+1;
    w = new double[ka];
    
	// 設定迭代次數(shù)為60,迭代求解
	l=60; 
	alpha=1.0;
    while (l>0)
    { 
		CMatrix mtxP(m, n), mtxD(m, 1);
		p = mtxP.GetData();
		d = mtxD.GetData();

		Func(x,d);
        FuncMJ(n,x,p);

		// 構造線性方程組
		CLEquations leqs(mtxP, mtxD);
		// 臨時矩陣
		CMatrix mtxAP, mtxU, mtxV;
		// 解矩陣
		CMatrix mtxDX;
		// 基于廣義逆的最小二乘解
		if (! leqs.GetRootsetGinv(mtxDX, mtxAP, mtxU, mtxV, eps2))
        { 
			delete[] w;			
			return FALSE;
        }
        
		dx = mtxDX.GetData();

		j=0; 
		jt=1; 
		h2=0.0;
        while (jt==1)
        { 
			jt=0;
            if (j<=2) 
				z=alpha+0.01*j;
            else 
				z=h2;
            
			for (i=0; i<=n-1; i++) 
				w[i]=x[i]-z*dx[i];
            
			Func(w,d);
            
			y1=0.0;
            for (i=0; i<=m-1; i++) 
				y1=y1+d[i]*d[i];
            for (i=0; i<=n-1; i++)
				w[i]=x[i]-(z+0.00001)*dx[i];
            
			Func(w,d);
            
			y2=0.0;
            for (i=0; i<=m-1; i++) 
				y2=y2+d[i]*d[i];
            
			y0=(y2-y1)/0.00001;
            
			if (fabs(y0)>1.0e-10)
            { 
				h1=y0; h2=z;
                if (j==0) 
				{ 
					y[0]=h1; 
					b[0]=h2;
				}
                else
                { 
					y[j]=h1; 
					kk=0; 
					k=0;
                    while ((kk==0)&&(k<=j-1))
                    { 
						y3=h2-b[k];
                        if (fabs(y3)+1.0==1.0) 
							kk=1;
                        else 
							h2=(h1-y[k])/y3;
                        
						k=k+1;
                    }
                    
					b[j]=h2;
                    if (kk!=0) 
						b[j]=1.0e+35;
                    
					h2=0.0;
                    for (k=j-1; k>=0; k--)
						h2=-y[k]/(b[k+1]+h2);
                    
					h2=h2+b[0];
                }
                
				j=j+1;
                if (j<=7) 
					jt=1;
                else 
					z=h2;
            }
        }
        
		alpha=z; 
		y1=0.0; 
		y2=0.0;
        for (i=0; i<=n-1; i++)
        { 
			dx[i]=-alpha*dx[i];
            x[i]=x[i]+dx[i];
            y1=y1+fabs(dx[i]);
            y2=y2+fabs(x[i]);
        }
        
		// 求解成功
		if (y1<eps1*y2)
        { 
			delete[] w;			
			return TRUE;
        }
        
		l=l-1;
    }
    
	delete[] w;			
	
	// 求解失敗
	return FALSE;
}

//////////////////////////////////////////////////////////////////////
// 求非線性方程組一組實根的蒙特卡洛法
//
// 調用時,須覆蓋計算方程左端模函數(shù)值||F||的虛函數(shù)
//         double Func(int n, double x[])
//         其返回值為Sqr(f1*f1 + f2*f2 + … + fn*fn)
//
// 參數(shù):
// 1. double x[] - 一維數(shù)組,長度為n,存放一組初值,返回時存放方程的一組實根
// 2. double xStart - 均勻分布的端點初值
// 3. int nControlB - 控制參數(shù)
// 4. double eps - 控制精度,默認值為0.000001
//
// 返回值:無
//////////////////////////////////////////////////////////////////////
void CNLequation::GetRootsetMonteCarlo(int n, double x[], double xStart, int nControlB, double eps /*= 0.000001*/)
{ 
	int k,i;
    double a,r,*y,z,z1;

    y = new double[n];
    
	// 初值
	a=xStart; 
	k=1; 
	r=1.0; 

	z = Func(n, x);

	// 用精度控制迭代求解
    while (a>=eps)
    { 
		for (i=0; i<=n-1; i++)
			y[i]=-a+2.0*a*rnd(&r)+x[i];
        
		z1=Func(n,y);
        
		k=k+1;
        if (z1>=z)
        { 
			if (k>nControlB) 
			{ 
				k=1; 
				a=a/2.0; 
			}
		}
        else
        { 
			k=1; 
            for (i=0; i<=n-1; i++) 
				x[i]=y[i];
            
			// 求解成功
			z=z1;
            if (z<eps)  
			{
				delete[] y;
				return;
			}
        }
    }

	delete[] y;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美自拍偷拍| 91免费观看视频| 成人黄色软件下载| 在线免费视频一区二区| 69p69国产精品| 国产调教视频一区| 一区二区三区国产| 久久狠狠亚洲综合| 成人动漫中文字幕| 欧美日韩高清一区二区三区| 精品91自产拍在线观看一区| 国产精品久线观看视频| 五月天丁香久久| 国产 欧美在线| 欧洲一区在线电影| 精品国产网站在线观看| 亚洲欧美日韩系列| 狠狠色丁香久久婷婷综合_中| 99精品国产91久久久久久 | 久久九九国产精品| 亚洲精品菠萝久久久久久久| 韩国欧美国产1区| 一本到不卡免费一区二区| 欧美mv日韩mv| 亚洲综合视频网| 精品午夜久久福利影院| 欧洲色大大久久| 国产欧美日本一区视频| 午夜久久久影院| 99精品一区二区| 精品国产伦一区二区三区观看体验| 中文在线免费一区三区高中清不卡| 一区二区三区在线不卡| 国产福利一区二区三区| 欧美区一区二区三区| 中文字幕中文字幕一区二区| 久久精品噜噜噜成人av农村| 色婷婷综合五月| 国产午夜精品久久久久久久| 五月激情六月综合| 91亚洲资源网| 国产日韩欧美精品综合| 日韩不卡在线观看日韩不卡视频| gogo大胆日本视频一区| 久久中文娱乐网| 日本午夜一区二区| 欧亚洲嫩模精品一区三区| 中文字幕中文字幕在线一区| 国产精品一卡二卡在线观看| 91精品欧美福利在线观看| 一区二区三区四区在线播放| 成人91在线观看| 国产欧美综合在线观看第十页| 久久精品国产澳门| 欧美猛男超大videosgay| 一区二区在线免费观看| 成人va在线观看| 国产视频一区二区在线观看| 激情综合一区二区三区| 日韩视频一区二区三区在线播放| 亚洲国产日韩综合久久精品| 色综合久久久网| 亚洲色图丝袜美腿| 99久久精品免费| 中文字幕一区二区视频| 成人午夜大片免费观看| 久久久久久久久99精品| 精品在线一区二区三区| 欧美电影免费观看高清完整版在| 美洲天堂一区二卡三卡四卡视频| 欧美精品视频www在线观看| 亚洲一级在线观看| 一区二区在线免费| 久久综合九色综合97婷婷女人| 美女国产一区二区三区| 日韩精品一区国产麻豆| 欧美一级夜夜爽| 欧美日韩免费观看一区二区三区| 久久精品国产第一区二区三区| 日韩精品一级二级| 欧美一区二区在线观看| 欧美伊人久久久久久久久影院| 美女一区二区三区在线观看| 天天影视网天天综合色在线播放| 欧美日韩www| 午夜精彩视频在线观看不卡| 欧美高清你懂得| 蜜臀99久久精品久久久久久软件 | 日本一区二区三区在线观看| 国产成人亚洲精品青草天美| 国产精品久久久久久久蜜臀 | 一区二区久久久久久| 在线亚洲免费视频| 视频精品一区二区| 欧美mv日韩mv亚洲| 成人综合激情网| 亚洲欧美另类小说| 精品视频一区三区九区| 日本aⅴ精品一区二区三区| 精品久久久久久久久久久久久久久 | 色婷婷综合久久久中文一区二区| 欧美丝袜丝交足nylons| 天涯成人国产亚洲精品一区av| 在线播放一区二区三区| 久久精品国产网站| 国产人成亚洲第一网站在线播放 | 26uuu国产日韩综合| 91成人免费网站| 中文字幕精品一区二区精品绿巨人 | 亚洲激情自拍偷拍| 欧美日韩国产一区二区三区地区| 午夜欧美在线一二页| 欧美一级高清大全免费观看| 黑人巨大精品欧美黑白配亚洲| 国产精品私人自拍| 欧美性欧美巨大黑白大战| 蜜臀精品一区二区三区在线观看| 国产人久久人人人人爽| 欧美视频中文字幕| 国产在线视频精品一区| 亚洲色图19p| 欧美三级视频在线| 日韩欧美中文字幕公布| 精品国产一区二区精华| 欧美理论电影在线| 亚洲综合一区二区三区| 91免费视频网| 欧美96一区二区免费视频| 久久精品一区二区三区不卡 | 欧美一区三区二区| 国产凹凸在线观看一区二区| 一区二区欧美视频| 久久综合九色综合欧美就去吻| 色综合一区二区三区| 久久精品国产999大香线蕉| 亚洲精品乱码久久久久久| 日韩欧美亚洲国产精品字幕久久久| 成人av在线电影| 免费在线观看一区| 亚洲欧美日韩国产综合在线| 精品国产露脸精彩对白| 色综合天天综合色综合av | 日韩色在线观看| 91视频在线看| 国精产品一区一区三区mba视频| 日韩理论在线观看| 精品电影一区二区三区| 欧美亚洲禁片免费| 亚洲线精品一区二区三区八戒| 国产aⅴ综合色| 日韩一区在线看| 久久午夜国产精品| 欧美一区二区三区影视| 日本黄色一区二区| 成人动漫在线一区| 国产精品中文字幕一区二区三区| 日韩精品欧美成人高清一区二区| 成人欧美一区二区三区小说 | 久久99久久精品欧美| 亚洲福利电影网| 日韩美女精品在线| 国产精品日韩精品欧美在线| 日韩免费观看高清完整版| 欧美精品少妇一区二区三区| 在线观看日韩电影| 不卡一区二区三区四区| 国产一区二区三区免费在线观看| 日韩av一区二区三区四区| 亚洲一区二区三区视频在线| 国产精品国产三级国产三级人妇| 久久综合99re88久久爱| 日韩一区和二区| 欧美一级一区二区| 欧美一区二区三区小说| 欧美老年两性高潮| 欧美三区免费完整视频在线观看| 91免费国产视频网站| 一本一本大道香蕉久在线精品| 成人精品鲁一区一区二区| 国产高清不卡一区二区| 国产成人免费视频一区| 日本成人在线一区| 日本免费新一区视频| 男男视频亚洲欧美| 日韩精品一区第一页| 首页国产欧美日韩丝袜| 亚洲二区在线观看| 性感美女极品91精品| 午夜精品久久久久久久99水蜜桃| 亚洲电影一区二区三区| 香蕉加勒比综合久久| 亚洲成人免费视频| 五月婷婷激情综合| 视频一区二区中文字幕| 日韩av中文字幕一区二区| 紧缚捆绑精品一区二区| 九九久久精品视频| 国产精品自拍一区| 中文字幕日韩av资源站| 欧美日韩在线电影|