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

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

?? interpolate.cpp

?? 插值計算器
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	// 循環插值
	for (i=1;i<=n;i++)
    { 
		s=1.0;
        
		for (j=1;j<=n;j++)
		{
			if (j!=i) 
				s=s*(t-x[j-1])/(x[i-1]-x[j-1]);
		}

        s=s*s;
        p=0.0;
        
		for (j=1;j<=n;j++)
        {
			if (j!=i) 
				p=p+1.0/(x[i-1]-x[j-1]);
		}

        q=y[i-1]+(t-x[i-1])*(dy[i-1]-2.0*y[i-1]*p);
        z=z+q*s;
    }
    
	return(z);
}

//////////////////////////////////////////////////////////////////////
// 埃爾米特等距插值
//
// 參數:
// 1. int n - 結點的個數
// 2. double x0 - 存放等距n個結點中第一個結點的值
// 3. double xStep - 等距結點的步長
// 4. double y[] - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
//                 y(i) = f(x(i)), i=0,1,...,n-1
// 4. double dy[] - 一維數組,長度為n,存放給定的n個結點的函數導數值y'(i),
//                 y'(i) = f'(x(i)), i=0,1,...,n-1
// 5. double t - 存放指定的插值點的值
//
// 返回值:double 型,指定的查指點t的函數近似值f(t)
//////////////////////////////////////////////////////////////////////
double CInterpolate::GetValueHermite(int n, double x0, double xStep, double y[], double dy[], double t)
{ 
	int i,j;
    double z,s,p,q;
    
	// 初值
	z=0.0;
    
	// 循環插值
	for (i=1;i<=n;i++)
    { 
		s=1.0; 
		q=x0+(i-1)*xStep;
        
		for (j=1;j<=n;j++)
        { 
			p=x0+(j-1)*xStep;
            if (j!=i) 
				s=s*(t-p)/(q-p);
        }
        
		s=s*s;
        p=0.0;
        
		for (j=1;j<=n;j++)
        {
			if (j!=i) 
				p=p+1.0/(q-(x0+(j-1)*xStep));
		}

        q=y[i-1]+(t-q)*(dy[i-1]-2.0*y[i-1]*p);
        z=z+q*s;
    }
    
	return(z);
}

//////////////////////////////////////////////////////////////////////
// 埃特金不等距逐步插值
//
// 參數:
// 1. int n - 結點的個數
// 2. double x[] - 一維數組,長度為n,存放給定的n個結點的值x(i)
// 3. double y[] - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
//                 y(i) = f(x(i)), i=0,1,...,n-1
// 4. double t - 存放指定的插值點的值
// 5. double eps - 控制精度參數,默認值為0.000001
//
// 返回值:double 型,指定的查指點t的函數近似值f(t)
//////////////////////////////////////////////////////////////////////
double CInterpolate::GetValueAitken(int n, double x[], double y[], double t, double eps /*= 0.000001*/)
{ 
	int i,j,k,m,l;
    double z,xx[10],yy[10];
    
	// 初值
	z=0.0;
    
	// 特例處理
	if (n<1) 
		return(z);
    if (n==1) 
	{ 
		z=y[0]; 
		return(z);
	}
    
	// 開始插值
	m=10;
    if (m>n) 
		m=n;
    
	if (t<=x[0]) 
		k=1;
    else if (t>=x[n-1]) 
		k=n;
    else
    { 
		k=1; 
		j=n;
        
		while ((k-j!=1)&&(k-j!=-1))
        { 
			l=(k+j)/2;
            if (t<x[l-1]) 
				j=l;
            else 
				k=l;
        }
        
		if (fabs(t-x[l-1])>fabs(t-x[j-1])) 
			k=j;
    }
    
	j=1; 
	l=0;
    
	for (i=1;i<=m;i++)
    { 
		k=k+j*l;
        if ((k<1)||(k>n))
        { 
			l=l+1; 
			j=-j; 
			k=k+j*l;
		}
        
		xx[i-1]=x[k-1]; 
		yy[i-1]=y[k-1];
        l=l+1; 
		j=-j;
    }
    
	i=0;
    
	do
    { 
		i=i+1; 
		z=yy[i];
        
		for (j=0;j<=i-1;j++)
			z=yy[j]+(t-xx[j])*(yy[j]-z)/(xx[j]-xx[i]);
        
		yy[i]=z;
    } while ((i!=m-1)&&(fabs(yy[i]-yy[i-1])>eps));
    
	return(z);
}

//////////////////////////////////////////////////////////////////////
// 埃特金等距逐步插值
//
// 參數:
// 1. int n - 結點的個數
// 2. double x0 - 存放等距n個結點中第一個結點的值
// 3. double xStep - 等距結點的步長
// 4. double y[] - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
//                 y(i) = f(x(i)), i=0,1,...,n-1
// 5. double t - 存放指定的插值點的值
// 6. double eps - 控制精度參數,默認值為0.000001
//
// 返回值:double 型,指定的查指點t的函數近似值f(t)
//////////////////////////////////////////////////////////////////////
double CInterpolate::GetValueAitken(int n, double x0, double xStep, double y[], double t, double eps /*= 0.000001*/)
{ 
	int i,j,k,m,l;
    double z,xx[10],yy[10];
    
	// 初值
	z=0.0;
    
	// 特例處理
	if (n<1) 
		return(z);
    if (n==1) 
	{ 
		z=y[0]; 
		return(z);
	}
    
	// 開始插值
	m=10;
    if (m>n) 
		m=n;
    
	if (t<=x0) 
		k=1;
    else if (t>=x0+(n-1)*xStep) 
		k=n;
    else
    { 
		k=1; 
		j=n;
        
		while ((k-j!=1)&&(k-j!=-1))
        { 
			l=(k+j)/2;
            
			if (t<x0+(l-1)*xStep) 
				j=l;
            else 
				k=l;
        }
        
		if (fabs(t-(x0+(l-1)*xStep))>fabs(t-(x0+(j-1)*xStep))) 
			k=j;
    }
    
	j=1; 
	l=0;
    for (i=1;i<=m;i++)
    { 
		k=k+j*l;
        if ((k<1)||(k>n))
        { 
			l=l+1; 
			j=-j; 
			k=k+j*l;
		}
        
		xx[i-1]=x0+(k-1)*xStep; 
		yy[i-1]=y[k-1];
        l=l+1; 
		j=-j;
    }
    
	i=0;
    do
    { 
		i=i+1; 
		z=yy[i];
        
		for (j=0;j<=i-1;j++)
			z=yy[j]+(t-xx[j])*(yy[j]-z)/(xx[j]-xx[i]);
        
		yy[i]=z;
    } while ((i!=m-1)&&(fabs(yy[i]-yy[i-1])>eps));
    
	return(z);
}

//////////////////////////////////////////////////////////////////////
// 光滑不等距插值
//
// 參數:
// 1. int n - 結點的個數
// 2. double x[] - 一維數組,長度為n,存放給定的n個結點的值x(i)
// 3. double y[] - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
//                 y(i) = f(x(i)), i=0,1,...,n-1
// 4. double t - 存放指定的插值點的值
// 5. double s[] - 一維數組,長度為5,其中s(0),s(1),s(2),s(3)返回三次多項式的系數,
//					s(4)返回指定插值點t處的函數近似值f(t)(k<0時)或任意值(k>=0時)
// 6. int k - 控制參數,若k>=0,則只計算第k個子區間[x(k), x(k+1)]上的三次多項式的系數
//
// 返回值:double 型,指定的查指點t的函數近似值f(t)
//////////////////////////////////////////////////////////////////////
double CInterpolate::GetValueAkima(int n, double x[], double y[], double t, double s[], int k /*= -1*/)
{ 
	int kk,m,l;
    double u[5],p,q;
    
	// 初值
	s[4]=0.0; 
	s[0]=0.0; 
	s[1]=0.0; 
	s[2]=0.0; 
	s[3]=0.0;
    
	// 特例處理
	if (n<1) 
		return s[4];
    if (n==1) 
	{ 
		s[0]=y[0]; 
		s[4]=y[0]; 
		return s[4];
	}
    if (n==2)
    { 
		s[0]=y[0]; 
		s[1]=(y[1]-y[0])/(x[1]-x[0]);
        if (k<0)
			s[4]=(y[0]*(t-x[1])-y[1]*(t-x[0]))/(x[0]-x[1]);
        return s[4];
    }
    
	// 插值
	if (k<0)
    { 
		if (t<=x[1]) 
			kk=0;
        else if (t>=x[n-1]) 
			kk=n-2;
        else
        { 
			kk=1; 
			m=n;
            while (((kk-m)!=1)&&((kk-m)!=-1))
            { 
				l=(kk+m)/2;
                if (t<x[l-1]) 
					m=l;
                else 
					kk=l;
            }
            
			kk=kk-1;
        }
    }
    else 
		kk=k;
    
	if (kk>=n-1) 
		kk=n-2;
    
	u[2]=(y[kk+1]-y[kk])/(x[kk+1]-x[kk]);
    if (n==3)
    { 
		if (kk==0)
        { 
			u[3]=(y[2]-y[1])/(x[2]-x[1]);
            u[4]=2.0*u[3]-u[2];
            u[1]=2.0*u[2]-u[3];
            u[0]=2.0*u[1]-u[2];
        }
        else
        { 
			u[1]=(y[1]-y[0])/(x[1]-x[0]);
            u[0]=2.0*u[1]-u[2];
            u[3]=2.0*u[2]-u[1];
            u[4]=2.0*u[3]-u[2];
        }
    }
    else
    { 
		if (kk<=1)
        { 
			u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);
            if (kk==1)
            { 
				u[1]=(y[1]-y[0])/(x[1]-x[0]);
                u[0]=2.0*u[1]-u[2];
                
				if (n==4) 
					u[4]=2.0*u[3]-u[2];
                else 
					u[4]=(y[4]-y[3])/(x[4]-x[3]);
            }
            else
            { 
				u[1]=2.0*u[2]-u[3];
                u[0]=2.0*u[1]-u[2];
                u[4]=(y[3]-y[2])/(x[3]-x[2]);
            }
        }
        else if (kk>=(n-3))
        { 
			u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);
            if (kk==(n-3))
            { 
				u[3]=(y[n-1]-y[n-2])/(x[n-1]-x[n-2]);
                u[4]=2.0*u[3]-u[2];
                if (n==4) 
					u[0]=2.0*u[1]-u[2];
                else 
					u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
            }
            else
            { 
				u[3]=2.0*u[2]-u[1];
                u[4]=2.0*u[3]-u[2];
                u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
            }
        }
        else
        { 
			u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);
            u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);
            u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);
            u[4]=(y[kk+3]-y[kk+2])/(x[kk+3]-x[kk+2]);
        }
    }
    
	s[0]=fabs(u[3]-u[2]);
    s[1]=fabs(u[0]-u[1]);
    if ((s[0]+1.0==1.0)&&(s[1]+1.0==1.0))
         p=(u[1]+u[2])/2.0;
    else 
		p=(s[0]*u[1]+s[1]*u[2])/(s[0]+s[1]);
    
	s[0]=fabs(u[3]-u[4]);
    s[1]=fabs(u[2]-u[1]);
    if ((s[0]+1.0==1.0)&&(s[1]+1.0==1.0))
        q=(u[2]+u[3])/2.0;
    else 
		q=(s[0]*u[2]+s[1]*u[3])/(s[0]+s[1]);
    
	s[0]=y[kk];
    s[1]=p;
    s[3]=x[kk+1]-x[kk];
    s[2]=(3.0*u[2]-2.0*p-q)/s[3];
    s[3]=(q+p-2.0*u[2])/(s[3]*s[3]);
    if (k<0)
    { 
		p=t-x[kk];
        s[4]=s[0]+s[1]*p+s[2]*p*p+s[3]*p*p*p;
    }
    
	return s[4];
}

//////////////////////////////////////////////////////////////////////
// 光滑等距插值
//
// 參數:
// 1. int n - 結點的個數
// 2. double x0 - 存放等距n個結點中第一個結點的值
// 3. double xStep - 等距結點的步長
// 4. double y[] - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
//                 y(i) = f(x(i)), i=0,1,...,n-1
// 5. double t - 存放指定的插值點的值
// 5. double s[] - 一維數組,長度為5,其中s(0),s(1),s(2),s(3)返回三次多項式的系數,
//					s(4)返回指定插值點t處的函數近似值f(t)(k<0時)或任意值(k>=0時)
// 6. int k - 控制參數,若k>=0,則只計算第k個子區間[x(k), x(k+1)]上的三次多項式的系數
//
// 返回值:double 型,指定的查指點t的函數近似值f(t)
//////////////////////////////////////////////////////////////////////
double CInterpolate::GetValueAkima(int n, double x0, double xStep, double y[], double t, double s[], int k /*= -1*/)
{ 
	int kk,m,l;
    double u[5],p,q;
    
	// 初值
	s[4]=0.0; 
	s[0]=0.0; 
	s[1]=0.0; 
	s[2]=0.0; 
	s[3]=0.0;
    
	// 特例處理
	if (n<1) 
		return s[4];
    if (n==1) 
	{ 
		s[0]=y[0]; 
		s[4]=y[0]; 
		return s[4];
	}
    if (n==2)
    { 
		s[0]=y[0]; 
		s[1]=(y[1]-y[0])/xStep;
        if (k<0)
			s[4]=(y[1]*(t-x0)-y[0]*(t-x0-xStep))/xStep;
        return s[4];
    }
    
	// 插值
	if (k<0)
    { 
		if (t<=x0+xStep) 
			kk=0;
        else if (t>=x0+(n-1)*xStep) 
			kk=n-2;
        else
        { 
			kk=1; 
			m=n;
            while (((kk-m)!=1)&&((kk-m)!=-1))
            { 
				l=(kk+m)/2;
                if (t<x0+(l-1)*xStep) 
					m=l;
                else 
					kk=l;
            }
            
			kk=kk-1;
        }
    }
    else 
		kk=k;
    
	if (kk>=n-1) 
		kk=n-2;
    
	u[2]=(y[kk+1]-y[kk])/xStep;
    if (n==3)
    { 
		if (kk==0)
        { 
			u[3]=(y[2]-y[1])/xStep;
            u[4]=2.0*u[3]-u[2];
            u[1]=2.0*u[2]-u[3];
            u[0]=2.0*u[1]-u[2];
        }
        else
        { 
			u[1]=(y[1]-y[0])/xStep;
            u[0]=2.0*u[1]-u[2];
            u[3]=2.0*u[2]-u[1];
            u[4]=2.0*u[3]-u[2];
        }
    }
    else
    { 
		if (kk<=1)
        { 
			u[3]=(y[kk+2]-y[kk+1])/xStep;
            if (kk==1)
            { 
				u[1]=(y[1]-y[0])/xStep;
                u[0]=2.0*u[1]-u[2];
                if (n==4) 
					u[4]=2.0*u[3]-u[2];
                else 
					u[4]=(y[4]-y[3])/xStep;
            }
            else
            { 
				u[1]=2.0*u[2]-u[3];
                u[0]=2.0*u[1]-u[2];
                u[4]=(y[3]-y[2])/xStep;
            }
        }
        else if (kk>=(n-3))
        { 
			u[1]=(y[kk]-y[kk-1])/xStep;
            if (kk==(n-3))
            { 
				u[3]=(y[n-1]-y[n-2])/xStep;
                u[4]=2.0*u[3]-u[2];
                if (n==4) 
					u[0]=2.0*u[1]-u[2];
                else 
					u[0]=(y[kk-1]-y[kk-2])/xStep;
            }
            else
            { 
				u[3]=2.0*u[2]-u[1];
                u[4]=2.0*u[3]-u[2];
                u[0]=(y[kk-1]-y[kk-2])/xStep;
            }
        }
        else
        { 
			u[1]=(y[kk]-y[kk-1])/xStep;
            u[0]=(y[kk-1]-y[kk-2])/xStep;
            u[3]=(y[kk+2]-y[kk+1])/xStep;
            u[4]=(y[kk+3]-y[kk+2])/xStep;
        }
    }
    
	s[0]=fabs(u[3]-u[2]);
    s[1]=fabs(u[0]-u[1]);
    if ((s[0]+1.0==1.0)&&(s[1]+1.0==1.0))
		p=(u[1]+u[2])/2.0;
    else 
		p=(s[0]*u[1]+s[1]*u[2])/(s[0]+s[1]);
    
	s[0]=fabs(u[3]-u[4]);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人精品视频| 69成人精品免费视频| 日韩毛片精品高清免费| 国产一区二区三区免费| ww亚洲ww在线观看国产| 久久av资源网| 精品国产乱码久久久久久免费| 麻豆成人av在线| 欧美精品一区二区三区久久久| 亚洲午夜激情网页| 正在播放亚洲一区| 国内精品久久久久影院薰衣草| 久久亚洲综合av| av在线不卡观看免费观看| 亚洲视频一区在线观看| 欧美亚洲日本一区| 日本亚洲视频在线| 久久精品网站免费观看| 一本到高清视频免费精品| 亚洲五月六月丁香激情| 日韩精品中文字幕一区| 高清不卡一区二区在线| 亚洲最新视频在线播放| 日韩欧美亚洲一区二区| 成人动漫一区二区三区| 亚洲国产一区二区在线播放| 欧美一级xxx| 国产福利精品导航| 亚洲在线成人精品| 久久色在线观看| 91免费精品国自产拍在线不卡| 亚洲成年人影院| 久久九九影视网| 欧美性大战xxxxx久久久| 国产一区二三区好的| 亚洲卡通欧美制服中文| 久久综合九色欧美综合狠狠| 91网站在线观看视频| 99久久精品费精品国产一区二区| 亚洲欧美另类在线| 欧美www视频| 91精彩视频在线观看| 国精品**一区二区三区在线蜜桃| 亚洲精选视频免费看| xvideos.蜜桃一区二区| 欧美亚洲国产一区在线观看网站| 国内国产精品久久| 午夜视频在线观看一区二区三区| 中文字幕乱码亚洲精品一区| 91精品久久久久久蜜臀| 色域天天综合网| 国产成人啪免费观看软件| 日韩精品电影一区亚洲| 亚洲色图另类专区| 国产精品美女久久久久aⅴ国产馆| 欧美日韩国产一级片| 91性感美女视频| 国产成人免费高清| 美女诱惑一区二区| 丝袜诱惑亚洲看片| 亚洲综合小说图片| 日韩毛片视频在线看| 欧美激情中文字幕| 久久网站热最新地址| 欧美mv日韩mv亚洲| 欧美一区二区黄色| 欧美丰满高潮xxxx喷水动漫| 日本精品免费观看高清观看| av中文一区二区三区| 国产成人综合网| 国产剧情av麻豆香蕉精品| 久久99精品久久久久久动态图 | 成人国产精品免费观看视频| 精品在线观看视频| 另类小说图片综合网| 日韩精品国产精品| 日韩中文字幕1| 三级一区在线视频先锋| 午夜视频一区二区| 日韩成人午夜电影| 日韩1区2区3区| 蜜臀精品一区二区三区在线观看| 午夜日韩在线观看| 偷拍亚洲欧洲综合| 日韩vs国产vs欧美| 毛片不卡一区二区| 国产一区二区视频在线播放| 国产呦精品一区二区三区网站| 精品一区二区三区久久| 国产真实乱偷精品视频免| 国产伦理精品不卡| 成人免费黄色在线| 色婷婷亚洲精品| 欧美日韩精品福利| 日韩三级视频中文字幕| 欧美va亚洲va香蕉在线| 久久久久国产免费免费 | 91蝌蚪porny九色| 成人免费av网站| 成人免费视频网站在线观看| 99久久99精品久久久久久| 97se亚洲国产综合自在线不卡 | 波多野结衣中文字幕一区| 北岛玲一区二区三区四区| 91久久国产综合久久| 欧美卡1卡2卡| 日韩一区二区精品在线观看| 久久久久免费观看| 亚洲免费伊人电影| 天天综合天天综合色| 老色鬼精品视频在线观看播放| 国产成人精品影院| 日本乱人伦一区| 日韩精品一区二区三区swag| 欧美国产激情一区二区三区蜜月| 亚洲人xxxx| 美女高潮久久久| 成人开心网精品视频| 欧美日韩成人综合天天影院| 久久免费偷拍视频| 亚洲精品国产a| 精品一区在线看| 99国产精品国产精品久久| 91精品国产一区二区三区| 国产目拍亚洲精品99久久精品| 玉米视频成人免费看| 国内欧美视频一区二区| 色香蕉久久蜜桃| 精品理论电影在线| 一区二区三区日韩精品视频| 狠狠久久亚洲欧美| 91精品1区2区| 久久人人爽人人爽| 亚洲va国产天堂va久久en| 国产.欧美.日韩| 日韩一区二区在线看片| 亚洲欧美一区二区在线观看| 免费人成网站在线观看欧美高清| av不卡在线播放| 69av一区二区三区| 亚洲精品一卡二卡| 国产精品中文字幕欧美| 欧美精品日日鲁夜夜添| 国产精品污网站| 久88久久88久久久| 欧美日本乱大交xxxxx| 自拍偷拍欧美精品| 国产精品影视网| 日韩视频一区二区三区在线播放| 亚洲免费观看视频| 成人性生交大片免费| 精品电影一区二区| 视频一区二区中文字幕| 日本韩国一区二区三区视频| 中文字幕久久午夜不卡| 国内成人自拍视频| 日韩欧美国产麻豆| 日本视频免费一区| 制服丝袜一区二区三区| 亚洲电影一区二区| 欧美性受极品xxxx喷水| 亚洲欧美日韩国产综合| 成人高清在线视频| 国产片一区二区| 国产资源在线一区| 欧美mv日韩mv亚洲| 国产自产高清不卡| 久久亚洲一级片| 国产在线精品免费av| 久久蜜桃一区二区| 国产精品12区| 久久精品欧美日韩精品| 国产在线播精品第三| www国产精品av| 国产精品综合二区| 国产网站一区二区三区| 高清视频一区二区| 中文字幕一区二区三区色视频| 国产精华液一区二区三区| 久久久精品黄色| www.欧美亚洲| 久久精品国产999大香线蕉| 3atv在线一区二区三区| 青青草91视频| 久久无码av三级| av在线综合网| 亚洲午夜在线电影| 欧美一区国产二区| 黑人巨大精品欧美一区| 久久影视一区二区| 99久久99久久精品免费看蜜桃| 日韩理论电影院| 欧美日韩一级片在线观看| 日韩专区在线视频| 精品国产一区二区三区忘忧草 | 国产精品久久看| 一本久道久久综合中文字幕| 亚洲一区二区三区小说| 日韩视频在线观看一区二区| 国产福利91精品一区|