资源描述:
《Matlab插值算法程序集_计算机软件及应用_IT计算机_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Matlab插值算法程序集一、插值算法1.Atkenfunctionf二Atken(x,y,xO)symst;if(length(x)==length(y))n=length(x);elsedispfx和y的维数不相等!’);return;end%检错yl(l:n)=t;for(i=l:n-l)for(j=i+l:n)%符号函数数组要赋初值yl(j)=y(j)*(t・x(i))/(x(j)・x(i))+y(i)*(t・x(j))/(x(i)・x(j));endy=yi;simplify(yl);endif(nargin==3)f=subs(yl(n),'t:xO);%计算插值点的函数值
2、elsesimplify(yl(n));f=collect(yl(n));f=vpa(f,6);end%化简%将插值多项式展开%将插值多项式的系数化成6位榕度的小数2.BSamplefunctionfO=BSample(abn“y_by_N,xO)fo=0.0;h=(b-a)/n;c=zeros(n+3,1);b=zeros(n+1,1);fori=0:n-lif(a+i*h<=xO)&&(a+i*h+h>=xO)index=i;break;endA=diag(4*ones(n+l,l));I=eye(n+l,n+l);AL=[l(2:n+l/:);zeros(l/n+l)J;AU=[
3、zeros(l,n+l);l(l:n,:)];A=A+AL+AU;%形成系数矩阵fori=2:nb(i,l)=6*y(i);endb(l)=6*y(l)+2*h*y_l;b(n+l)=6*y(n+l)-2*h*y_N;d=followup(A,b);%用追赶法求出系数c(2:n+2)=d;c(l)=c(2)-2*h*y_l;%c(-l)c(n+3)=c(3)+2*h*y_N;%c(n+l)xl=(a+index*h-h-xO)/h;ml=c(index+l)*(-((abs(xl))A3)/6+(xl)A2-2*abs(xl)+4/3);x2=(a+index*h-xO)/h;m2=c
4、(index+2)*((abs(x2))A3/2-(x2)A2+2/3);x3=(a+index*h+h-xO)/h;m3=c(index+3)*((abs(x3))A3/2-(x3)A2+2/3);x4=(a+index*h+2*h-x0)/h;m4=c(index+4)*(-((abs(x4))A3)/6+(x4)A2-2*abs(x4)+4/3);fO=ml+m2+m3+m4;%求出插值1.DCSfunctionf=DCS(x,y,xO)symst;if(length(x)==length(y))n=length(x);c(l:n)=0.0;elsedisp('x和y的维数不相等
5、!');return;endc(l)=y(l);for(i=l:n-l)for(j=i+l:n)yl(j)=(x(j)-x(i))/(y(j)-y(i));endc(i+l)=yl(i+l);y=yi;endf二c(n);for(i=l:n-l)f=c(n-i)+(t-x(n-i))/f;f=vpa(f,6);if(i==n-l)if(nargin==3)f=subs(f,'t',xO);elsef=vpa(f,6);endendend;1.DHfunctionfz=DH(x,y,xO,yO,zx,zy,zxy)n=length(x);m=length(y);fori=l:nif(x(
6、i)<=xO)&&(x(i+l)>=xO)index_x=i;break;%找到xO所在区间%找到yO所在区间%插值坐标归一化%插值坐标归-化endendfori=l:mif(y(i)<=yO)&&(y(i+l)>=yO)index_y=j;break;endendhx=x(index_x+l)■刈index_x);hy=y(index_y+l)-y(index_y);tx=(xO-x(index_x))/hx;ty=(yO-y(index_y))/hy;HI=[(l-tx)A2*(l+2*tx)tx*tx*(3-2*tx)tx*(l-tx)A2tx*tx*(tx-l)];%左向量Hr
7、=[(l-ty)A2*(l+2*ty);ty*ty*(3-2*ty);ty*(l-ty)A2;ty*ty*(ty-l)];%右向量C=[Z(index_x,index_y)Z(index_x,index_y+l)zy(index_x,index_y)...zy(index_x,index_y+l);Z(index_x+1,index_y)Z(index_x+l,index_y+l)zy(index_x+bindex_y)…zy(index_x+