一点二次插值、二点二次插值 ,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
        

  

猜你喜欢

转载自www.cnblogs.com/wander-clouds/p/8855892.html
今日推荐