拉格朗日差值牛顿插值以及三次样条插值的matlab实现.docVIP

  • 17
  • 0
  • 约2.94千字
  • 约 4页
  • 2015-09-26 发布于重庆
  • 举报

拉格朗日差值牛顿插值以及三次样条插值的matlab实现.doc

拉格朗日差值牛顿插值以及三次样条插值的matlab实现

% Lagrange插值 clear clc %----------------------------- n=10; %结点个数 lb=-1; %下界 ub=1; %上界 step=0.01; %作图点步长 %----------------------------- % 原始函数图形 x0=lb:step:ub; y0=1./(1+25*x0.^2); plot(x0,y0,r-); hold on %----------------------------- % 插值函数 for i=1:n+1 xi(i)=lb+(ub-lb)*(i-1)/n; yi(i)=1/(1+25*xi(i)^2); end %------------------------------ count=1; for x=lb:step:ub fl=0; %-------------------------- %求出pn(xk) for k=1:n+1 up=1; dn=1; %---------------------- %求出f(xk) for i=1:n+1 if k~=i up=up*(x-xi(i)); dn=dn*(xi(k)-xi(i)); end end %---------------------- fl=fl+yi(k)*up/dn; end pn(count)=fl; %-------------------------- fi(count)=1/(1+25*x^2);%求原函数的值 count=count+1; end %------------------------------ % L插值函数图 x=lb:step:ub; plot(x,pn,g--) %------------------------------ num=(ub-lb)/step+1; for i=1:num p_f(i)=pn(i)-fi(i); end center=fix(num/2); scale=fix(num/10); a=center-scale; b=center+scale; disp pn(i)-fi(i) 的值为: p_f(a:b) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all clc %Newton迭代法求解极小值点 %===================================== disp 几点说明: disp 1.程序中的函数采用课本P102例3.3.2。 disp 2.只需改变所需要求的函数和初始点的值。 disp =================================================== %===================================== %定义函数 disp 函数 f(x) 为: syms x1 x2 f=(x1-2)^4+(x1-2)^2*x2^2+(x2+1)^2 disp 初始点的值: x0=[1;1] %===================================== %求函数的梯度和海色阵 disp 函数f的梯度: g=jacobian(f,[x1;x2]) disp 函数f的Hesse矩阵: G=jacobian([g(1);g(2)],[x1,x2]) %===================================== %定义迭代的最大次数 n=10; %===================================== %一些初始值的计算 g0=subs(g,{x1,x2},{x0(1),x0(2)}); G0=subs(G,{x1,x2},{x0(1),x0(2)}); f0=subs(f,{x1,x2},{x0(1),x0(2)}); %===================================== %迭代点集合 x和函数值F的初始化 x=zeros(2,n); F=zeros(1,n); %运用Newton方程解出下一近似值 x(:,1)=x0-in

文档评论(0)

1亿VIP精品文档

相关文档