1) ,j=0,1,…,n。
2) 在每个区间[xi, xj]上是线性连续函数。则插值函数称为区间[a, b]上对应n个数据点的分段线性插值函数。
三次样条插值: 给定区间[a, b]一个分划 ⊿:a=x0 1) S(x)在每个区间[xi, xj]上是不高于3次的多项式。 2) S(x)及其2阶导数在[a, b]上连续。则称S(x)使关于分划⊿的三次样条函数。 程序设计: 本实验采用Matlab的M文件编写。其中待插值的方程写成function的方式,如下 function y=f(x); y=1/(1+25*x*x); 写成如上形式即可,下面给出主程序 Lagrange插值源程序: n=input('将区间分为的等份数输入:\\n'); s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数 x=-1:0.01:1; f=0; for q=1:n+1; l=1;%求插值基函数 for k=1:n+1; if k~=q; l=l.*(x-s(k))./(s(q)-s(k)); else l=l; end end f=f+Rf(s(q))*l;%求插值函数 end plot(x,f,'r')%作出插值函数曲线 grid on hold on 分段线性插值源程序 clear n=input('将区间分为的等份数输入:\\n'); s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数 m=0; hh=0.001; for x=-1:hh:1; ff=0; for k=1:n+1;%%%求插值基函数 switch k case 1 if x<=s(2); l=(x-s(2))./(s(1)-s(2)); else l=0; end case n+1 if x>s(n); l=(x-s(n))./(s(n+1)-s(n)); else l=0; end otherwise if x>=s(k-1)&x<=s(k); l=(x-s(k-1))./(s(k)-s(k-1)); else if x>=s(k)&x<=s(k+1); l=(x-s(k+1))./(s(k)-s(k+1)); else l=0; end end end ff=ff+Rf(s(k))*l;%%求插值函数值 end m=m+1; f(m)=ff; end %%%作出曲线 x=-1:hh:1; plot(x,f,'r'); grid on hold on 三次样条插值源程序:(采用第一边界条件) clear n=input('将区间分为的等份数输入:\\n');
相关推荐: