《拉格朗日和牛顿插值法》…

    xiaoxiao2021-04-16  33

    原文地址:《拉格朗日和牛顿插值法》  实验报告 作者:家俊

    一、实验名称:  插值问题

     

    二、实验目的:

         用拉格朗日插值和牛顿差值的方法,在已知函数在点x0,x1,xn的函数值y0,y1,yn的情况下,求插值节点x的函数值y,即求f(x)。并比较结果,说明为什么相等。

     

    三、实验方法:

    1)拉格朗日插值

    根据x0,x1,xny0,y1,yn构造插值多项式

    将插值点x代入上式,就可得到函数f(x)在点x处的函数值的近似值。

    2)牛顿插值.

    根据x0,x1,xny0,y1,yn构造插值多项式

    Nn(x)=f(x0)+f(x0,x1)(x-x0)++f(x0,x1,xn)(x-x0)(x-x1)(x-xn-1)

    牛顿差值公式中各项的系数就是函数f(x)的各阶均差(差商)f(x0)f(x0,x1)f(x0,x1,xn),因此,在构造牛顿差值公式时,常常先把均差列成一个表,此表称为均差表。

     

    四.实验内容:   

    从函数表

    x

    0.4

    0.55

    0.8

    0.9

    1

    f(x)

    0.41075

    0.57815

    0.88811

    1.02652

    1.17520

     

    出发,计算f(0.5),f(0.7),f(0.85)的近似值。

    五、实验程序:

    5.1程序编译

    5.1.1 拉格朗日插值法:

    function f=agui_lagrange(x0,y0,x)

    n=length(x0);  m=length(x);

    format long

    s=0.0;

    for k=1:n

        p=1.0;

        for j=1:n

            if j~=k

                p=p*(x-x0(j))/(x0(k)-x0(j));

            end

        end

        s=p*y0(k)+s;

    end

    f=s;

    end

     

    5.1.2 牛顿插值法:

    function f=agui_newton(x0,y0,x)

    n=length(x0);  m=length(x);

    format long

    N=0.0; p=1.0;

    for k=1:n

        p=p*(x-x0(k));

        T=0.0;

        for i=1:k

            q=1.0;

            for j=1:k

                if j~=i

                    q=q*(x0(i)-x0(j));

                end

            end

            T=y0(i)/q + T;

        end 

        N=T*p/(x-x0(k))+N;

    end

    f=N;

    end

     

     

    5.2程序实现:

    >> x0=[0.4 0.55 0.8 0.9 1]

     

    x0 = 0.4000    0.5500    0.8000    0.9000    1.0000

     

    >> y0=[0.41075  0.57815 0.88811 1.02656 1.17520 ]

     

    y0 = 0.4108    0.5782    0.8881    1.0266    1.1752

     

    //拉格朗日插值法求值

    >> f=agui_lagrange(x0,y0,0.5)

     

    f = 0.52110682539683

     

    >> f=agui_lagrange(x0,y0,0.7)

     

    f = 0.75855804761905

     

    >> f=agui_lagrange(x0,y0,0.85)

     

    f = 0.95614258928571

     

    //牛顿插值法求值

    >> f=agui_newton(x0,y0,0.5)

     

    f = 0.52110682539683

     

    >> f=agui_newton (x0,y0,0.7)

     

    f = 0.75855804761905

     

    >> f=agui_newton (x0,y0,0.85)

     

    f = 0.95614258928571

     

     

    六.实验结果

    通过软件求解容易发现,两种算法求出的结果一样,即有:

         

     

    七、结果分析

    2、当插值多项式从n-1次增加到n次时,拉格朗日型插值必须重新计算所有的基本差值多项式;二对于牛顿插值,只需要表格再计算一个n阶均差,然后加上一项就可以了。这样大大减少了计算量,特别在计算结构复杂的多项式的时候,当然本实验中的数据组很少,计算机的计算速度快慢不明显而难以比较两种方法的优劣。

    转载请注明原文地址: https://ju.6miu.com/read-672150.html

    最新回复(0)