《数值分析2.6》由会员分享,可在线阅读,更多相关《数值分析2.6(6页珍藏版)》请在金锄头文库上搜索。
1、2.6 插值和拟合的若干Matlab文件,总结,2.6.3 二次最小二乘拟合的Matlab函数文件,2.6.2 Newton插值多项式的Matlab函数文件,2.6.1 Lagrange插值多项式的Matble函数文件,2.6 插值和拟合的若干Matlab函数文件,2.6.1 Lagrange插值多项式的Matble函数文件,function c=lagrange_coef(x,y) % 计算Lagrunge函数的系数。 n=length(x); for k=1:n d(k)=1; for i=1:n if i=k d(k)=d(k)*(x(k)-x(i); end c(k)=y(k)/d(k
2、); end end,function p=lagrange_eval(t,x,c) % 计算Lagrange插值多项式在x=t处的值. m=length(x) for i=1:length(t) p(i)=0 for j=1:m N(j)=1 for k=1:m if j=k N(j)=N(j)*(t(i)-x(k); end end p(i)=p(i)+N(j)*c(j); end end,function a=newton_coef(x,y) n=length(x); % 计算Newton插值多项式的系数。 a(1)=y(1); for k=1:n-1 d(k,1)=(y(k+1)-y(
3、k)/(x(k+1)-x(k); % 1阶均差 end for j=2:n-1 for k=1:n-j d(k,j)=(d(k+1,j-1)-d(k,j-1)/(x(k+j)-x(k); % 二阶均差 end end for j=2:n a(j)=d(1,j-1); end,2.6.2 Newton插值多项式的Matlab函数文件,function p=newton_eval(t,x,a) n=length(x); for i=1:length(x) ddd(1)=1; c(1)=a(1); for j=2:n ddd(j)=(t(i)-x(j-1)*ddd(j-1); % 计算第j项 c(j0=a(j).*ddd(j); end p(i)=sun(c); end,function quad_ls(x,y) %二次表达式,按行或按列向量输入x和y. n=length(x);x=(:);y=y(:); sx=sum(x);sx2=sum(x.2); sx3=sum(x.3);sx4=sum(x.4); sy=sum(y);sx4=sum(x.4); sx2y=sum(x.*x.*y);,2.6.3 二次最小二乘拟合的Matlab函数文件,