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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? interpolation.java

?? 《Java數(shù)值計算算法編程》隨書代碼 已生成DOCS說明文件
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*
 * 進(jìn)行插值的類Interpolation

 * 周長發(fā)編制
 */
package javaalgorithm.algorithm;

/**
 * 進(jìn)行插值的類Interpolation

 * @author 周長發(fā)
 * @version 1.0
 */
public class Interpolation 
{
	/**
	 * 一元全區(qū)間不等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的值x(i),
	 *            要求x(0)<x(1)<...<x(n-1)
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValueLagrange(int n, double[] x, double[] y, double t)
	{ 
		int i,j,k,m;
	    double z,s;

		// 初值
	    z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0];
			return(z);
		}
	    
		if (n==2)
	    { 
			z=(y[0]*(t-x[1])-y[1]*(t-x[0]))/(x[0]-x[1]);
	        return(z);
	    }
	    
		// 開始插值
		i=0;
	    while ((x[i]<t)&&(i<n)) 
			i=i+1;
	    
		k=i-4;
	    if (k<0) 
			k=0;
	    
		m=i+3;
	    if (m>n-1) 
			m=n-1;
	    for (i=k;i<=m;i++)
	    { 
			s=1.0;
	        for (j=k;j<=m;j++)
			{
				if (j!=i) 
					// 拉格朗日插值公式
					s=s*(t-x[j])/(x[i]-x[j]);
			}

	        z=z+s*y[i];
	    }
	    
		return(z);
	}

	/**
	 * 一元全區(qū)間等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x0 - 存放等距n個結(jié)點中第一個結(jié)點的值
	 * @param xStep - 等距結(jié)點的步長
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValueLagrange(int n, double x0, double xStep, double[] y, double t)
	{ 
		int i,j,k,m;
	    double z,s,xi,xj;
	    double p,q;
	    
		// 初值
		z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0]; 
			return(z);
		}
	    if (n==2)
	    { 
			z=(y[1]*(t-x0)-y[0]*(t-x0-xStep))/xStep;
	        return(z);
	    }
	    
		// 開始插值
		if (t>x0)
	    { 
			p=(t-x0)/xStep; 
			i=(int)p; 
			q=(float)i;
	        
			if (p>q) 
				i=i+1;
	    }
	    else 
			i=0;
	    
		k=i-4;
	    if (k<0) 
			k=0;
	    
		m=i+3;
	    if (m>n-1) 
			m=n-1;
	    
		for (i=k;i<=m;i++)
	    { 
			s=1.0; 
			xi=x0+i*xStep;
	        
			for (j=k; j<=m; j++)
	        {
				if (j!=i)
	            { 
					xj=x0+j*xStep;
	                // 拉格朗日插值公式
					s=s*(t-xj)/(xi-xj);
	            }
			}

	        z=z+s*y[i];
	    }
	    
		return(z);
	}

	/**
	 * 一元三點不等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的值x(i)
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValueLagrange3(int n, double[] x, double[] y, double t)
	{ 
		int i,j,k,m;
	    double z,s;
	    
		// 初值
		z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0]; 
			return(z);
		}
	    if (n==2)
	    { 
			z=(y[0]*(t-x[1])-y[1]*(t-x[0]))/(x[0]-x[1]);
	        return(z);
	    }
	    
		// 開始插值
		if (t<=x[1]) 
		{ 
			k=0; 
			m=2;
		}
	    else if (t>=x[n-2]) 
		{ 
			k=n-3; 
			m=n-1;
		}
	    else
	    { 
			k=1; 
			m=n;
	        while (m-k!=1)
	        { 
				i=(k+m)/2;
	            
				if (t<x[i-1]) 
					m=i;
	            else 
					k=i;
	        }
	        
			k=k-1; 
			m=m-1;
	        
			if (Math.abs(t-x[k])<Math.abs(t-x[m])) 
				k=k-1;
	        else 
				m=m+1;
	    }
	    
		z=0.0;
	    for (i=k;i<=m;i++)
	    { 
			s=1.0;
	        for (j=k;j<=m;j++)
	        {
				if (j!=i) 
	                // 拋物線插值公式
					s=s*(t-x[j])/(x[i]-x[j]);
			}

	        z=z+s*y[i];
	    }
	    
		return(z);
	}

	/**
	 * 一元三點等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x0 - 存放等距n個結(jié)點中第一個結(jié)點的值
	 * @param xStep - 等距結(jié)點的步長
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValueLagrange3(int n, double x0, double xStep, double[] y, double t)
	{ 
		int i,j,k,m;
	    double z,s,xi,xj;
	    
		// 初值
		z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0]; 
			return(z);
		}
	    if (n==2)
	    { 
			z=(y[1]*(t-x0)-y[0]*(t-x0-xStep))/xStep;
	        return(z);
	    }
	    
		// 開始插值
		if (t<=x0+xStep) 
		{ 
			k=0; 
			m=2;
		}
	    else if (t>=x0+(n-3)*xStep) 
		{ 
			k=n-3; 
			m=n-1;
		}
	    else
	    { 
			i=(int)((t-x0)/xStep)+1;

	        if (Math.abs(t-x0-i*xStep)>=Math.abs(t-x0-(i-1)*xStep))
	        { 
				k=i-2; 
				m=i;
			}
	        else 
			{
				k=i-1; 
				m=i+1;
			}
	    }
	    
		z=0.0;
	    for (i=k;i<=m;i++)
	    { 
			s=1.0; 
			xi=x0+i*xStep;

	        for (j=k;j<=m;j++)
	        {
				if (j!=i)
	            { 
					xj=x0+j*xStep; 
	                // 拋物線插值公式
					s=s*(t-xj)/(xi-xj);
				}
			}

	        z=z+s*y[i];
	    }
	    
		return(z);
	}

	/**
	 * 連分式不等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的值x(i)
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValuePqs(int n, double[] x, double[] y, double t)
	{ 
		int i,j,k,m,l;
	    double z,h;
	    double[] b = new double[8];
	    
		// 初值
		z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0]; 
			return(z);
		}
	    
		// 連分式插值
		if (n<=8) 
		{ 
			k=0; 
			m=n;
		}
	    else if (t<x[4]) 
		{ 
			k=0; 
			m=8;
		}
	    else if (t>x[n-5]) 
		{ 
			k=n-8; 
			m=8;
		}
	    else
	    { 
			k=1; 
			j=n;
	        
			while (j-k!=1)
	        { 
				i=(k+j)/2;
	            if (t<x[i-1]) 
					j=i;
	            else 
					k=i;
	        }
	        
			k=k-4; 
			m=8;
	    }
	    
		b[0]=y[k];
	    for (i=2;i<=m;i++)
	    { 
			h=y[i+k-1]; 
			l=0; 
			j=1;
	        
			while ((l==0)&&(j<=i-1))
	        { 
				if (Math.abs(h-b[j-1])+1.0==1.0) 
					l=1;
	            else 
					h=(x[i+k-1]-x[j+k-1])/(h-b[j-1]);
	              
				j=j+1;
	        }
	        
			b[i-1]=h;
	        
			if (l!=0) 
				b[i-1]=1.0e+35;
	    }
	    
		z=b[m-1];
	    for (i=m-1;i>=1;i--) 
			z=b[i-1]+(t-x[i+k-1])/z;
	    
		return(z);
	}

	/**
	 * 連分式等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x0 - 存放等距n個結(jié)點中第一個結(jié)點的值
	 * @param xStep - 等距結(jié)點的步長
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValuePqs(int n, double x0, double xStep, double[] y, double t)
	{ 
		int i,j,k,m,l;
	    double z,hh,xi,xj;
	    double[] b = new double[8];
	    
		// 初值
		z=0.0;
	    
		// 特例處理
		if (n<1) 
			return(z);
	    if (n==1) 
		{ 
			z=y[0]; 
			return(z);
		}
	    
		// 連分式插值
		if (n<=8) 
		{ 
			k=0; 
			m=n;
		}
	    else if (t<(x0+4.0*xStep)) 
		{ 
			k=0; 
			m=8;
		}
	    else if (t>(x0+(n-5)*xStep)) 
		{ 
			k=n-8; 
			m=8;
		}
	    else 
		{ 
			k=(int)((t-x0)/xStep)-3; 
			m=8;
		}
	    
		b[0]=y[k];
	    for (i=2;i<=m;i++)
	    { 
			hh=y[i+k-1]; 
			l=0; 
			j=1;
	        
			while ((l==0)&&(j<=i-1))
	        { 
				if (Math.abs(hh-b[j-1])+1.0==1.0) 
					l=1;
	            else
	            { 
					xi=x0+(i+k-1)*xStep;
	                xj=x0+(j+k-1)*xStep;
	                hh=(xi-xj)/(hh-b[j-1]);
	            }
	        
				j=j+1;
	        }

	        b[i-1]=hh;
	        if (l!=0) 
				b[i-1]=1.0e+35;
	    }
	    
		z=b[m-1];
	    for (i=m-1;i>=1;i--)
			z=b[i-1]+(t-(x0+(i+k-1)*xStep))/z;
	    
		return(z);
	}

	/**
	 * 埃爾米特不等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的值x(i)
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param dy - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)導(dǎo)數(shù)值y'(i),
	 *             y'(i) = f'(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */
	public static double getValueHermite(int n, double[] x, double[] y, double[] dy, double t)
	{ 
		int i,j;
	    double z,p,q,s;
	    
		// 初值
		z=0.0;
	    
		// 循環(huán)插值
		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);
	}

	/**
	 * 埃爾米特等距插值
	 * 
	 * @param n - 結(jié)點的個數(shù)
	 * @param x0 - 存放等距n個結(jié)點中第一個結(jié)點的值
	 * @param xStep - 等距結(jié)點的步長
	 * @param y - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)值y(i),
	 *            y(i) = f(x(i)), i=0,1,...,n-1
	 * @param dy - 一維數(shù)組,長度為n,存放給定的n個結(jié)點的函數(shù)導(dǎo)數(shù)值y'(i),
	 *             y'(i) = f'(x(i)), i=0,1,...,n-1
	 * @param t - 存放指定的插值點的值
	 * @return double 型,指定的查指點t的函數(shù)近似值f(t)
	 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区视频导航| av一区二区久久| 国产精品一区二区视频| 激情图片小说一区| 成人影视亚洲图片在线| 色欧美乱欧美15图片| 欧美大胆一级视频| 亚洲三级免费电影| 久久99日本精品| www.亚洲精品| 精品日韩一区二区三区| 日韩伦理av电影| 国产精品一二一区| 欧美三区在线观看| 国产精品盗摄一区二区三区| 爽爽淫人综合网网站| 成人av在线电影| 日韩丝袜美女视频| 丝袜亚洲精品中文字幕一区| 欧美精品一区二区三区四区| 性感美女极品91精品| 成人免费精品视频| 日韩欧美美女一区二区三区| 一区二区三区av电影| 高清视频一区二区| 精品国产成人在线影院| 亚洲国产精品视频| 99久精品国产| 国产精品色婷婷| 成人精品电影在线观看| 精品国内二区三区| 欧美va在线播放| 青青草国产精品亚洲专区无| 欧美日韩精品一区二区三区| 亚洲韩国精品一区| 在线免费亚洲电影| 亚洲一二三区不卡| 欧美肥妇毛茸茸| 精品影院一区二区久久久| 久久久久97国产精华液好用吗| 精品夜夜嗨av一区二区三区| 久久久久久久久久久久久女国产乱| 国产一区二三区| 国产欧美一区二区精品忘忧草| 波波电影院一区二区三区| 亚洲视频电影在线| 欧美夫妻性生活| 国产精品99精品久久免费| 国产精品色婷婷久久58| 91老师国产黑色丝袜在线| 婷婷六月综合亚洲| 国产日韩在线不卡| 欧美人牲a欧美精品| 国产一区二区三区观看| 亚洲久本草在线中文字幕| 777欧美精品| 一本一本久久a久久精品综合麻豆| 午夜成人免费电影| 日韩一区欧美小说| 日韩欧美国产精品一区| 91福利在线导航| 丰满白嫩尤物一区二区| 日韩精品欧美成人高清一区二区| 国产精品少妇自拍| 欧美精品xxxxbbbb| 本田岬高潮一区二区三区| 视频一区二区欧美| 一区二区三区久久| 国产精品久久免费看| 精品国产电影一区二区| 欧美一区二区三区成人| 欧美精品乱码久久久久久| 成av人片一区二区| 国产精品亚洲视频| 狠狠久久亚洲欧美| 美女网站色91| 美女一区二区在线观看| 久久99国产乱子伦精品免费| 日韩av不卡在线观看| 蜜臀va亚洲va欧美va天堂| 日本网站在线观看一区二区三区| 亚洲国产精品一区二区尤物区| 一区二区三区日本| 性做久久久久久免费观看欧美| 亚洲自拍与偷拍| 奇米777欧美一区二区| 美女mm1313爽爽久久久蜜臀| 国模套图日韩精品一区二区| 国产激情精品久久久第一区二区 | 青青草国产精品亚洲专区无| 免费黄网站欧美| 国产成人精品午夜视频免费| 国产夫妻精品视频| 欧美亚洲综合久久| 日韩视频在线你懂得| 中文字幕一区av| 首页欧美精品中文字幕| 成人小视频免费观看| 欧美午夜精品免费| 精品人在线二区三区| 中文字幕+乱码+中文字幕一区| 亚洲综合视频网| 久久国产人妖系列| 在线观看亚洲精品视频| 国产午夜精品一区二区三区四区 | 欧美天堂一区二区三区| 精品欧美一区二区三区精品久久| 亚洲视频小说图片| 国产精品888| 欧美成人vps| 天天综合天天做天天综合| 成人av网站大全| 欧美国产激情一区二区三区蜜月| 亚洲欧美日韩国产另类专区| 国产精品18久久久久久久久久久久| 精品污污网站免费看| 亚洲精品成人在线| 成人精品免费网站| 久久久青草青青国产亚洲免观| 秋霞av亚洲一区二区三| 欧美日韩大陆一区二区| 亚洲成人精品在线观看| 在线免费精品视频| 亚洲免费在线观看视频| 色综合久久66| 亚洲国产精品欧美一二99| 欧美三级三级三级爽爽爽| 亚洲国产精品天堂| 欧美一级高清大全免费观看| 琪琪久久久久日韩精品| 精品国产伦一区二区三区观看体验 | 久久精品99久久久| 26uuu精品一区二区在线观看| 狠狠色伊人亚洲综合成人| 久久综合国产精品| 色拍拍在线精品视频8848| 亚洲一区二区在线观看视频 | 日韩久久一区二区| 91高清在线观看| 精品一区二区三区香蕉蜜桃| 日本一区二区三区四区在线视频 | 午夜影院在线观看欧美| 精品国产伦一区二区三区观看体验 | 成人国产精品视频| 丝袜亚洲另类欧美综合| 精品成人一区二区三区四区| 色偷偷一区二区三区| 日韩不卡在线观看日韩不卡视频| 久久综合色天天久久综合图片| 成人精品小蝌蚪| 免费成人美女在线观看.| 国产精品成人一区二区艾草 | 成人免费视频视频在线观看免费| 中文字幕一区二区三区蜜月| 91精品国产综合久久精品app| 不卡一卡二卡三乱码免费网站| 天堂蜜桃一区二区三区| 一区二区三区四区在线播放| 欧美国产乱子伦| 久久久噜噜噜久噜久久综合| 777精品伊人久久久久大香线蕉| 99久久久久免费精品国产| 国产成人亚洲综合色影视| 免费在线看一区| 天天免费综合色| 婷婷亚洲久悠悠色悠在线播放| 亚洲激情欧美激情| 一区二区三区免费看视频| 亚洲欧洲另类国产综合| 亚洲欧洲日韩女同| 国产精品久久福利| 中文字幕+乱码+中文字幕一区| 久久久电影一区二区三区| 久久久久国产精品人| 国产午夜精品一区二区三区四区| 久久久精品tv| 国产精品国产a| 亚洲福利电影网| 三级不卡在线观看| 精品一区二区久久久| 国产乱理伦片在线观看夜一区| 不卡电影一区二区三区| 91麻豆成人久久精品二区三区| 欧美日韩精品一区二区三区| 欧美成人女星排行榜| 中文字幕av资源一区| 亚洲成a人v欧美综合天堂下载| 久久99精品久久久| 色婷婷精品久久二区二区蜜臂av| 欧美日韩国产美| 国产欧美精品国产国产专区| 亚洲一卡二卡三卡四卡五卡| 精品一区二区三区在线观看国产| 99精品视频一区| 精品国产三级电影在线观看| 夜夜嗨av一区二区三区| 国产乱妇无码大片在线观看| 欧美精品777| 国产精品电影一区二区| 国产美女久久久久|