MATLAB——數值插值之拉格朗日(Lagrange)插值法
阿新 • • 發佈:2018-12-16
由於MATLAB中沒有現成的拉格朗日插值命令,因此我們可以根據Lagrange插值法的定義編寫一個Lagrange插值命令。
定義:
給定n個插值節點x1,x2,...,xn和對應的函式值y1,y2,...yn,利用拉格朗日插值多項式公式(注:k從0到n累加),其中, ,可以得到插值區間內任意x的函式值y為。從公式中可以看出,生成的多項式與用來插值的資料密切相關,資料變化則函式就要重新計算。
以下為M語言編寫的函式檔案lagrange.m
%拉格朗日插值命令 function yy=lagrange(x,y,xx) %Lagrange 插值,求資料(x,y)所表示式的函式在插值點xx處的插值 m=length(x); n=length(y); if m~=n error('向量x,y長度必須一致'); end s=0; for i=1:n t=ones(1,length(xx)); for j=1:n if j~=i t=t.*(xx-x(j))/(x(i)-x(j)); end end s=s+t*y(i); end yy=s;
注:拉格朗日插值的一個特點為:擬合出的多項式通過原x,y的每一個對應的點。