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

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

?? interpolation.cs

?? csharp版常見數值計算源碼
?? CS
?? 第 1 頁 / 共 3 頁
字號:
/*
 * 進行插值的類Interpolation

 * 周長發編制
 */

using System;

namespace 土地適宜評價系統.Algorithm
{

	/**
	 * 進行插值的類Interpolation

	 * @author 周長發
	 * @version 1.0
	 */
	public class Interpolation 
	{
		/**
		 * 一元全區間不等距插值
		 * 
		 * @param n - 結點的個數
		 * @param x - 一維數組,長度為n,存放給定的n個結點的值x(i),
		 *            要求x(0)<x(1)<...<x(n-1)
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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);
		}

		/**
		 * 一元全區間等距插值
		 * 
		 * @param n - 結點的個數
		 * @param x0 - 存放等距n個結點中第一個結點的值
		 * @param xStep - 等距結點的步長
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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 - 結點的個數
		 * @param x - 一維數組,長度為n,存放給定的n個結點的值x(i)
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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 - 結點的個數
		 * @param x0 - 存放等距n個結點中第一個結點的值
		 * @param xStep - 等距結點的步長
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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 - 結點的個數
		 * @param x - 一維數組,長度為n,存放給定的n個結點的值x(i)
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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 - 結點的個數
		 * @param x0 - 存放等距n個結點中第一個結點的值
		 * @param xStep - 等距結點的步長
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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 - 結點的個數
		 * @param x - 一維數組,長度為n,存放給定的n個結點的值x(i)
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param dy - 一維數組,長度為n,存放給定的n個結點的函數導數值y'(i),
		 *             y'(i) = f'(x(i)), i=0,1,...,n-1
		 * @param t - 存放指定的插值點的值
		 * @return double 型,指定的查指點t的函數近似值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;
	    
			// 循環插值
			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 - 結點的個數
		 * @param x0 - 存放等距n個結點中第一個結點的值
		 * @param xStep - 等距結點的步長
		 * @param y - 一維數組,長度為n,存放給定的n個結點的函數值y(i),
		 *            y(i) = f(x(i)), i=0,1,...,n-1
		 * @param dy - 一維數組,長度為n,存放給定的n個結點的函數導數值y'(i),
		 *             y'(i) = f'(x(i)), i=0,1,...,n-1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级欧美三级| 五月天久久比比资源色| 久久精品视频在线看| 日韩色视频在线观看| 日韩美女视频在线| www激情久久| 久久精品在这里| 国产欧美日韩三级| 中文字幕乱码亚洲精品一区| 国产欧美日产一区| 国产精品美女久久久久久久 | 中文字幕av不卡| 国产精品天天摸av网| 国产精品全国免费观看高清| 国产精品麻豆99久久久久久| 亚洲欧洲日韩一区二区三区| 亚洲少妇中出一区| 五月婷婷激情综合| 久久国产综合精品| 国产精品一区二区在线看| 成人综合日日夜夜| 色哟哟一区二区在线观看| 欧美日韩精品一区二区三区| 日韩免费视频一区| 中文字幕av不卡| 亚洲主播在线观看| 精品一区二区三区免费观看| 懂色av一区二区在线播放| 色综合 综合色| 欧美一区二区三区在线视频| 久久婷婷色综合| 亚洲人成小说网站色在线| 首页亚洲欧美制服丝腿| 国产乱码精品一品二品| 91免费看片在线观看| 欧美喷潮久久久xxxxx| 久久久五月婷婷| 一区二区欧美国产| 老汉av免费一区二区三区| 成人av资源站| 这里只有精品免费| 日本一区二区免费在线观看视频| 亚洲精品成人少妇| 精品中文字幕一区二区| 91女人视频在线观看| 日韩午夜激情av| 亚洲色图在线看| 美腿丝袜亚洲一区| 色综合久久久久综合99| 欧美变态口味重另类| 一区二区免费看| 国产一区二区在线影院| 91成人免费电影| 久久久www免费人成精品| 亚洲国产成人高清精品| 国产精品18久久久久久久网站| 欧美日韩一区二区三区高清 | 韩国女主播一区| 在线观看视频一区二区| 久久久精品一品道一区| 天堂资源在线中文精品| 成人av网站大全| 欧美成人一级视频| 亚洲午夜一区二区| 成人av网站在线| 久久影视一区二区| 天堂影院一区二区| 在线日韩一区二区| 国产精品精品国产色婷婷| 毛片基地黄久久久久久天堂| 欧美综合欧美视频| 中文字幕一区二区在线播放| 久久91精品国产91久久小草| 欧美日韩在线播放一区| 中文字幕在线不卡| 成人午夜电影小说| 精品av久久707| 日韩国产欧美三级| 欧美日韩久久不卡| 夜夜揉揉日日人人青青一国产精品| 国产aⅴ综合色| 亚洲精品一区二区三区影院 | 国产精品一区二区久激情瑜伽| 91精品国产综合久久久蜜臀图片| 亚洲视频一区二区在线观看| 国产成人精品一区二区三区四区| 日韩三级高清在线| 日韩国产高清影视| 欧美日本精品一区二区三区| 一区二区欧美国产| 色噜噜狠狠色综合欧洲selulu| 国产精品伦理在线| 成人黄色免费短视频| 国产精品美女www爽爽爽| 国产精品18久久久久久久久| 欧美精品一区二区久久久| 精品中文字幕一区二区小辣椒| 日韩欧美中文字幕一区| 蜜桃视频在线观看一区二区| 欧美一区二区在线看| 日韩va欧美va亚洲va久久| 欧美片网站yy| 蜜臀av一区二区在线观看| 日韩精品一区二区三区三区免费 | av成人动漫在线观看| 国产精品麻豆久久久| 99久久综合狠狠综合久久| 国产精品乱人伦一区二区| 91污在线观看| 一区二区三区日韩精品视频| 欧美亚洲国产怡红院影院| 亚洲综合激情另类小说区| 欧美视频在线观看一区| 日韩高清不卡一区| 精品国产乱码久久久久久蜜臀| 国产精品一二三四五| 国产精品蜜臀在线观看| 91九色02白丝porn| 天天综合天天做天天综合| 欧美一区2区视频在线观看| 美女看a上一区| 久久久久久黄色| 成人激情开心网| 亚洲综合视频在线| 日韩一区二区免费视频| 国产麻豆日韩欧美久久| 国产精品久久久久久久裸模| 在线一区二区三区| 美女视频一区二区| 久久久久成人黄色影片| 91麻豆成人久久精品二区三区| 亚洲高清一区二区三区| 26uuu另类欧美| 91小视频免费观看| 天堂va蜜桃一区二区三区漫画版| 久久亚洲春色中文字幕久久久| jlzzjlzz亚洲日本少妇| 亚洲成人手机在线| 久久婷婷久久一区二区三区| 91啪在线观看| 麻豆精品在线观看| 国产精品国产a| 欧美日韩电影一区| 国产精品亚洲一区二区三区在线| 亚洲三级小视频| 欧美大尺度电影在线| www.亚洲色图.com| 日韩**一区毛片| 国产精品乱码久久久久久| 欧美午夜一区二区| 国产精品亚洲午夜一区二区三区| 亚洲高清在线视频| 国产精品午夜在线观看| 欧美日韩国产高清一区二区三区 | 欧美伦理影视网| 国产成人在线色| 午夜视频一区二区| 欧美国产视频在线| 4438亚洲最大| 91在线免费播放| 国产最新精品免费| 亚洲综合色自拍一区| 欧美激情在线一区二区| 欧美一级一区二区| 91丨九色丨国产丨porny| 国产又黄又大久久| 视频一区在线视频| 亚洲人成小说网站色在线 | 悠悠色在线精品| 精品福利在线导航| 欧美日韩精品专区| 色偷偷成人一区二区三区91| 久久爱另类一区二区小说| 亚洲黄色免费电影| 中文字幕成人在线观看| 欧美一级xxx| 在线这里只有精品| 成人免费高清在线| 久久精品国产成人一区二区三区| 一个色妞综合视频在线观看| 自拍偷拍欧美激情| 中文字幕不卡在线播放| 久久这里只有精品6| 欧美一区二区三区影视| 欧美日韩成人综合在线一区二区| 91浏览器打开| 99久久99久久综合| 丁香网亚洲国际| 国产综合久久久久久久久久久久| 日本最新不卡在线| 亚洲一卡二卡三卡四卡无卡久久| 国产精品污www在线观看| 26uuu久久天堂性欧美| 欧美剧在线免费观看网站| 欧美影院一区二区| 91国在线观看| 色天天综合色天天久久| 91麻豆精品秘密| 北岛玲一区二区三区四区| 成人免费高清在线观看|