一点二次插值、二点二次插值 ,matlab
syms f x a b c; f(x)=3*x^4-4*x^3-12*x^2; q(x)=a*x^2+b*x+c; %二点二次插值 x=[-1.2 -0.8]; ff=diff(diff(f)); dif=diff(f); for i=1:3 %[a b c]=solve('f(x(1))=q(x(1))','f(x(2))=q(x(2))','12*x(1)^3-12*x(1)^2-24*x(1)=2*a*x(1)+b','a','b','c'); a=dif(x(1))/(x(1)-x(2))-(f(x(1))-f(x(2)))/(x(1)-x(2))^2; b=(2*x(1)/(x(1)-x(2)))*((f(x(1))-f(x(2)))/(x(1)-x(2)))-(x(1)+x(2))/(x(1)-x(2))*dif(x(1)); t=-b/(2*a); t=vpa(t,5) if dif(t)==0 disp('t*') disp(t) break elseif dif(t)<0 x(1)=t; disp(x(1)) elseif dif(t)>=0 x(2)=t; disp(x(2)) end end %一点二次插值 x=x(1); for i=1:3 t=x-dif(x)/ff(x); t=vpa(t,5) if dif(x)==0 disp('t*') disp(t) break else x=t; disp(x) end end
朝闻道