分段線性插值


首先,科普一下插值的含義:在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點。

插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。

插值的方法有很多:拉格朗日插值法,牛頓插值法,分段線性插值,樣條插值等,每種插值方法都有自己的優缺點。

今天,我們介紹的是比較簡單的分段線性插值方法,分段線性將每兩個相鄰的節點用直線連起來,如此形成的一條折線就是分段線性插值函數。計算點的插值時,只用到左右的兩個節點,計算量與節點個數n無關。

假設兩個節點為(x1,y1)和(x2,y2),則該區間上的一次線性方程為:

 

 

 

下面講解一下證明過程(證明過程很簡答,大家在初中就學過了):

 

 

 

 

 

 

 

以上就是分段線性插值的原理,可以看出原理十分簡單。分段線性插值運算量較小,插值誤差較小,插值函數具有連續性,但是由於在已知點的斜率是不變的,所以導致插值結果不光滑,存在角點。

下面給出分段線性插值的MATLAB實現函數:

function y_output = piecewiselinearinterp(x,y,x_input)
%該函數實現分段線性插值
%x為已知的數據點
%y為已知的數據點
%x_input為待插值的橫坐標
%y_output為插值后的到的結果
%The Author:等等登登-Ande
%The Email:18356768364@163.com
%The Blog:qq_35166974
 
n = length(x);
nn = length(x_input);
 
for j=1:nn
    for i=1:n-1
        if (x_input(j)>x(i) && x_input(j)<=x(i+1))
            y_output(j) = ((x_input(j)-x(i+1))/(x(i)-x(i+1)))*y(i)+(((x_input(j)-x(i))/(x(i+1)-x(i)))*y(i+1));
        end
    end
end

 


函數運行結果是:

 

 

 

 

從運行結果可以看出,插值總體趨勢是正確的,但是存在着很多角點,當節點越多時,插值效果會越好。
————————————————
版權聲明:本文為CSDN博主「等等登登-Ande」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35166974/article/details/90115563


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM