一、演算法原理
1、問題引入
在實際問題中,對所構造的插值多項式,不僅要求函式值重合,而且要求若干階導數也重合,即要求插值函式 p(x) 滿足:
此類問題被稱為埃公尺特插值,相應的插值多項式成為埃公尺特插值多項式。
2、考慮函式值與導數值個數相等的情況
設在節點a≤x0要求插值多項式h(x)=h2n+1(x)=a0+a1*x+a2*x^2+...+a(2n+1)*x^(2n+1),其中a0,a1,...,a(2n+1)為待定係數。
3、lagrange型hermite插值構造
共有2n+2個條件,函式值點有n+1個條件,一階導數點有n+1個,分別構造【函式值點重合】和【一階導數值點重合】的lagrange插值多項式。
使其滿足條件
下面的問題就是求滿足條件的基函式αj(x)及βj(x),利用lagrange插值基函式:假設
根據滿足條件,可知
整理得
同理可得
二、matlab程式
%% 埃公尺特插值(承襲性方法的hermite插值)
clcclear
close
x=[1 2 3 4];
y=[2 11 32 71];
yy=[4 15 27 51];%一階導數值
function h=hermite(x,y,x0,y0)
% hermite 插值
% x為資料點x座標
% y為資料點y座標
% x0為一階導數點x座標
% y0為一階導數值
syms x
m=length(x);
n=newton(x,y); %求出函式值點的牛頓插值多項式
n1=diff(n); %求導
w=prod(x-x); %計算連乘積
a=zeros(1,m); %預分配記憶體
for j=1:m
w=diff(w); %對w求導
a(j)=(y0(j)-subs(n1,x,x0(j)))/subs(w,x,x0(j));
end a=newton(x0,a); %利用牛頓插值求出a的插值多項式
h=expand(n+a*w); %埃公尺特插值多項式
h1=sym2poly(h);
x=x(1):0.1:x(end); %
y=polyval(h1,x);
subplot(2,1,1);
plot(x,y);
subplot(2,1,2);
plot(x,y);
endfunction n=newton(x,y) %對牛頓插值稍作更改
m=length(x);
c=cha(x,y);
syms x
for i=1:m-1
d1=x-x(1:i);
d(i)=prod(d1);
endn=expand(sum(d.*c)+y(1))
end
樣條之埃爾公尺特(Hermite)
埃爾公尺特 charles hermite,1822 1901 法國數學家。巴黎綜合工科學校畢業。曾任法蘭西學院 巴黎高等師範學校 巴黎大學教授。法蘭西科學院院士。在函式論 高等代數 微分方程等方面都有重要發現。1858年利用橢圓函式首先得出五次方程的解。1873年證明了自然對數的底e的超越性。在現...
全區間厄公尺特插值演算法
在某些插值問題中,不僅給出了插值點的值,也給出了插值點的導數值,這便可以運用厄公尺特插值公式進行插值。厄公尺特插值公式如下 下面給出 hermite插值 函式宣告double hermit double x,double y,double dy,int n,double t x為存放給定n個結點的指...
初學matlab之插值擬合
窒息了,現在處於啥都看不懂的階段,寫部落格純為記錄學習過程和一些知識點。今天看了 數學建模演算法與應用 第5章 插值與擬合。裡面涉及的函式有 1.y interp x0,y0,x,method 是一維插值函式,method有nearest 最近項插值 linear 線性插值 spline 立方樣條插...