MATLAB之埃公尺特插值

2021-10-05 01:58:03 字數 2193 閱讀 9053

一、演算法原理

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 立方樣條插...