编辑“︁
插值
”︁
跳转到导航
跳转到搜索
脚本错误:没有“Mainspace editnotice”这个模块。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
任何侵權內容
將會刪除 | 百科內容須附有來源,以
供查證
| 維基百科內容均容許他人編輯、使用和重製 | 參閱
繁簡
和
地區詞處理
指引。
反垃圾检查。
不要
加入这个!
{{Refimprove|time=2018-03-30}}{{Expand|time=2018-03-30}}[[File:Splined epitrochoid.svg|300px|thumb|一組离散数据點在一個外延的插值。曲線中實際已知数据點是紅色的;連接它們的藍色曲線即為插值。]] 在[[数学]]的[[数值分析]]领域中,'''內插''',或稱'''插值'''({{langx|en|Interpolation}}),是一種通过已知的、[[离散]]的[[数据]]點,在範圍內推求新數據點的过程或方法。求解[[科学]]和[[工程]]的问题時,通常有許多數據點藉由[[采样]]、[[实验]]等方法获得,这些数据可能代表了有限個數值函數,其中自變量的值。而根据这些数据,我们往往希望得到一个[[连续]]的[[函数]](也就是[[曲线]]);或者更密集的[[差分|离散方程]]与已知数据互相吻合,这个过程叫做[[拟合]]。 與插值密切相關的另一個問題是通過簡單函數逼近複雜函數。假設給定函數的公式是已知的,但是太複雜以至於不能有效地進行評估。來自原始函數的一些已知數據點,或許會使用較簡單的函數來產生插值。當然,若使用一個簡單的函數來估計原始數據點時,通常會出現插值[[誤差]];然而,取決於該問題领域和所使用的插值方法,以簡單函數推得的插值數據,可能會比所導致的[[精度]]損失更大。 內插是曲线必须通过已知点的拟合。参见[[拟合]]条目。 例如,已知数据: # <math>x_1=1</math>,<math>y_1=2</math>, # <math>x_2=2</math>,<math>y_2=3</math>, # <math>x_3=4</math>,<math>y_3=6</math>; 求: :当<math>x=3</math>时的y值。 == 定义 == 给定<math>n</math>个离散数据点(称为'''节点''')<math>(x_k, y_k)</math>,<math>k=1,2,...,n</math>。对于<math>x,(x\neq x_k, k=1,2,...n)</math>,求<math>x</math>所对应的<math>y</math>的值称为內插。 <math>f(x)</math>为定义在区间<math>[a,b]</math>上的函数。<math>x_1,x_2,x_3...x_n</math>为<math>[a,b]</math>上n个互不相同的点,<math>G</math>为给定的某一函数类。若<math>G</math>上有函数<math>g(x)</math>满足: <math>g(x_i)=f(x_i),k=1,2,...n</math> 则称<math>g(x)</math>为<math>f(x)</math>关于节点<math>x_1,x_2,x_3...x_n</math>在<math>G</math>上的插值函数。 ==示例== 舉例假設我們有這樣如下列一個表,它給出了某個未知函數<math>f</math>的值 [[File:Interpolation Data.svg|right|thumb|230px|表中數據點在x-y平面上的繪圖。]] {| cellpadding=0 cellspacing=0 |width="20px"| ! <math>x</math> |width="10px"| !colspan=3 align=center| <math>f(x)</math> |- | || 0 || ||align=right| 0 |- | || 1 || ||align=right| 0 || . || 8415 |- | || 2 || ||align=right| 0 || . || 9093 |- | || 3 || ||align=right| 0 || . ||1411 |- | || 4 || ||align=right| −0 || . || 7568 |- | || 5 || ||align=right| −0 || . || 9589 |- | || 6 || ||align=right| −0 || . || 2794 |} 插值提供了估算中間點函數的方法,如<math>x=2.5</math>。 有許多不同的插值方法,其中一些在下面描述。 在選擇適當的算法時需要考慮的一些問題是:方法有多準確? 它的計算成本有多高? 插值有多平滑? 需要多少數據點? {{clear}} == 方法 == ===片段插值=== [[File:Piecewise constant.svg|thumb|right|片段常數(或稱為最近鄰)插值]] 最簡單的插值方法是找到最近的數據值,並分配相同的值。這種方法又稱為最近鄰插值。在簡單的問題中,不太可能使用這種方法,因為線性插值(見下一小節)幾乎一樣容易,但在高維度的多變量插值中,這可能是衡量速度和簡單性的有利選擇。 ===线性插值=== [[File:Interpolation example linear.svg|right|thumb|230px|以線性插值疊加數據的繪圖]] {{Main|线性插值}} 考慮上面估計 ''f''(2.5) 的例子。由於 2.5 在 2 和 3 之間,所以在 ''f''(2) = 0.9093 和 ''f''(3) = 0.1411 之間,取中間的 ''f''(2.5) 是合理的,得到 0.5252。 一般來說,線性插值採用兩個數據點,例如 (''x''<sub>''a''</sub>,''y''<sub>''a''</sub>) 和 (''x''<sub>''b''</sub>,''y''<sub>''b''</sub>), 則線性插值的公式為 :<math> y = y_a + \left( y_b-y_a \right) \frac{x-x_a}{x_b-x_a} \text{ 在 點 } \left( x,y \right) </math> :<math> \frac{y-y_a}{y_b-y_a} = \frac{x-x_a}{x_b-x_a} </math> :<math> \frac{y-y_a}{x-x_a} = \frac{y_b-y_a}{x_b-x_a} </math> 上面公式中的方程式表明,<math>(x_a,y_a)</math>和 <math>(x,y)</math> 的[[斜率]],與 <math>(x_a,y_a)</math> 和 <math> (x_b,y_b)</math> 之間的斜率相同,線性插值是快速簡單的,但不是很精確。另一個缺點是在插值點 ''x''<sub>''k''</sub> 不是[[微分|可微分的]]。 以下誤差估計顯示線性插值不是很精確。用 ''g'' 表示我們要插入的函數,假設 ''x'' 位於 ''x''<sub>''a''</sub> 和 ''x''<sub>''b''</sub>,而 ''g'' 是連續可微的。那麼線性插值的誤差是 :<math> |f(x)-g(x)| \le C(x_b-x_a)^2 \quad\text{where}\quad C = \frac18 \max_{r\in[x_a,x_b]} |g''(r)|. </math> 換言之,誤差與數據點之間的距離的平方成正比。包括多項式插值和样條插值(見下一小節)在內的其他一些方法中的誤差與數據點之間距離的較高冪成正比。這些方法也產生更平滑的插值。 ===多项式插值=== [[File:Interpolation example polynomial.svg|right|thumb|230px|对数据使用多项式插值得到的图像]] {{Main|多项式插值}} [[多項式]]插值是線性插值的推廣。線性插值是一個[[線性|線性函數]]。我們現在用一個更高階的多項式代替這個插值。 再考慮一下上面給出的問題。以下的六次多項式經歷了所有七個點: :<math> f(x) = -0.0001521 x^6 - 0.003130 x^5 + 0.07321 x^4 - 0.3577 x^3 + 0.2255 x^2 + 0.9038 x. </math> <!-- Coefficients are 0, 0.903803333333334, 0.22549749999997, -0.35772291666664, 0.07321458333332, -0.00313041666667, -0.00015208333333. --> 代入 ''x'' = 2.5,我們發現 ''f''(2.5) = 0.5965。 一般情況下,如果我們有 n 個數據點,那麼在所有的數據點中只有一個最多 n-1 次多項式。插值誤差與數據點與冪次 n 之間的距離成正比。此外,插值是一個多項式,因此是無限可微的。所以我們看到多項式插值克服了線性插值的大部分問題。但是,多項式插值也有一些缺點。與線性內插相比,計算內插多項式的成本是昂貴的(參見[[計算複雜性理論|計算複雜度]])。此外,多項式插值可能會出現振盪偽像,特別是在端點(見[[龍格現象]])。 與線性插值不同,多項式插值可以估計樣本範圍之外的局部最大值和最小值。例如,上面的插值在 ''x'' ≈ 1.566 處有一個局部最大值,''f''(''x'') ≈ 1.003,在 ''x'' ≈ 4.708 處有一個局部最小值,''f''(''x'') ≈ −1.003。然而,這些最大值和最小值可能會超出函數的理論範圍 - 例如,一個總是正的函數可能有一個負值的插值,因此它的逆值包含假[[除以零|垂直漸近線]]。 更一般地說,所得曲線的形狀,特別是對於獨立變量的非常高或低的值,可能與常識相反,即與已經產生數據點的實驗系統已知的情況相反。通過使用樣條插值或限制對[[切比雪夫多项式]]的注意可以減少這些缺點。 ===样条曲线插值=== [[File:Interpolation example spline.svg|right|thumb|230px|对数据使用样条插值得到的图像]] {{Main|样条曲线内插}} 線性插值對每個區間 [''x''<sub>''k''</sub>,''x''<sub>''k+1''</sub>] 使用線性函數。 樣條插值在每個間隔中使用低階多項式,並選擇多項式以使它們平滑地吻合在一起。 結果函數被稱為[[样条函数|樣條曲線]]。 例如,[[样条插值#三次样条插值|三次样条]]是分片段立方,兩次連續可微。 此外,它的二階導數在終點為零。 在上表中插入點的三次樣條函數由下式給出 : <math> f(x) = \begin{cases} -0.1522 x^3 + 0.9937 x, & \text{if } x \in [0,1], \\ -0.01258 x^3 - 0.4189 x^2 + 1.4126 x - 0.1396, & \text{if } x \in [1,2], \\ 0.1403 x^3 - 1.3359 x^2 + 3.2467 x - 1.3623, & \text{if } x \in [2,3], \\ 0.1579 x^3 - 1.4945 x^2 + 3.7225 x - 1.8381, & \text{if } x \in [3,4], \\ 0.05375 x^3 -0.2450 x^2 - 1.2756 x + 4.8259, & \text{if } x \in [4,5], \\ -0.1871 x^3 + 3.3673 x^2 - 19.3370 x + 34.9282, & \text{if } x \in [5,6]. \end{cases} </math> 在這種情況下,我們得到 ''f''(2.5) = 0.5972。 與多項式插值的方法相比較,樣條跟多項式一樣,其插值誤差會小於線性插值,而且插值更平滑;使用樣條會比使用高階多項式更容易評估。 它也不會受到龍格現象的影響。 ===三角内插法=== {{Main|三角内插法}} ===有理內插=== {{Main|有理內插}} ===小波內插=== {{Main|小波內插}} == 以高斯過程處理的插值 == {{Main|高斯過程}} 其他形式的插值可以通過選擇不同的插值類來構造。 例如,有理插值是使用Padé逼近的有理函數插值,而三角插值是使用[[傅里叶级数]]的三角多項式插值。 另一種可能是使用小波。 如果數據點的數量是無限的,則可以使用Whittaker-Shannon插值公式。 有時候,我們不僅知道我們想插入的函數的值,而且也知道它的導數。 這導致Hermite插值問題。 當每個數據點本身就是一個函數時,將插值問題看作是每個數據點之間的局部對流問題是有用的。 這個想法導致了運輸理論中使用的位移插值問題。 ==更高維度== ==數位訊號處理的插值== 在[[数字信号处理]]领域,'''插值'''是指使用各种[[数字滤波器]](例如带限脉冲信号)提高数字信号(例如语音信号)的采样率(即[[升採樣|升采样]])。在升采样的过程中,原始信号的谐波成分需要在不产生高于原始信号[[奈奎斯特频率]](原始信号采样率的一半)的混叠谐波的情况下保留。Rabiner和Crochiere的书''Multirate Digital Signal Processing''对此进行了讨论。<ref>{{Cite web |url=https://www.amazon.com/Multirate-Digital-Signal-Processing-Crochiere/dp/0136051626 |title=R.E. Crochiere and L.R. Rabiner. (1983). Multirate Digital Signal Processing. Englewood Cliffs, NJ: Prentice–Hall. |access-date=2023-03-15 |archive-date=2016-04-13 |archive-url=https://web.archive.org/web/20160413022201/http://www.amazon.com/Multirate-Digital-Signal-Processing-Crochiere/dp/0136051626 |dead-url=no }}</ref> == 相關概念 == 術語[[外推]]用於找到已知數據點範圍之外的數據點。 在曲線擬合問題中,插值必須準確穿過數據點的約束被放寬。 只需要盡可能接近數據點(在一些其他限制內)。 這需要參數化潛在的插值並且有一些測量誤差的方法。 在最簡單的情況下,這導致[[最小二乘法]]逼近。 近似理論研究如何從某個預定的類別的另一個函數找到給定函數的最佳逼近,以及這個近似值有多好。 這明顯產生了內插函數可以近似未知函數的界限。 == 公式 == 本章内容参考了《[[数学手册]]》<ref>《数学手册》编写组,《[[数学手册]]》,高等教育出版社,1979年</ref>。 * [[牛顿第一內插公式]]([[牛顿向前內插公式]]) * [[牛顿第二內插公式]]([[牛顿向后內插公式]]) * [[斯特林內插公式]] * [[贝塞耳內插公式]] * [[拉格朗日内插多项式]] * [[三次样条内插公式]] * [[埃尔米特內插公式]](Hermite) * [[二元內插公式]] * [[一元三点內插公式]] == 参考文献 == {{Reflist}} == 参见 == {{Portal box|数学}} * [[数值分析]] * [[拟合]] * [[样条]] == 外部連結 == * [http://episte.math.ntu.edu.tw/articles/sm/sm_07_02_1/index.html 談補間法] {{Wayback|url=http://episte.math.ntu.edu.tw/articles/sm/sm_07_02_1/index.html |date=20200702201656 }} * [http://sol.gfxile.net/interpolation/index.html Sol Tutorials - Interpolation Tricks] {{Wayback|url=http://sol.gfxile.net/interpolation/index.html |date=20210131063823 }} [[Category:插值论| ]] [[Category:数值分析|C]]
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
分类索引
特色内容
新闻动态
随机页面
联络我们
关于
资助维基百科
interaction
帮助
社群首页
introduction
互助客栈
IRC即时聊天
最近更改
特殊页面
工具
链入页面
相关更改
特殊页面
页面信息