数值计算讨论组

欢迎来到数值计算讨论组。 本论坛旨在增强师生交流的时效性,主要讨论数值计算相关问题,包括初等数值分析、矩阵计算、非线性方程(组)数值解法、微分方程数值解法等方面的内容。


    (Newton插值多项式——cos x)帮忙看下这程序为啥不对好吗?谢谢老师和同学

    分享

    tudou

    帖子数 : 1
    注册日期 : 10-10-08

    (Newton插值多项式——cos x)帮忙看下这程序为啥不对好吗?谢谢老师和同学

    帖子 由 tudou 于 周日 十月 24, 2010 10:42 pm

    function[P,G]=fun(xx,n)
    x=[0.0,0.2,0.4,0.6,0.8,1.0,1.2];
    y=[1.0,0.980067,0.921061,0.825336,0.696707,0.540302,0.362358];
    t=[1.0,0,0,0,0,0,0];
    A=[1.0,0,0,0,0,0,0];
    for k=2:n
    t(k)=y(k);
    for j=(k-1):1
    t(j)=(t(j+1)-t(j))/(x(k)-x(j));
    continue
    end
    A(k)=t(1);
    continue
    end
    P=A(n);
    for i=n:2
    P=P*(xx-x(i-1))+A(i-1);
    end
    G=abs(P-cos(xx));

    Admin
    Admin

    帖子数 : 46
    注册日期 : 10-05-13

    回复: (Newton插值多项式——cos x)帮忙看下这程序为啥不对好吗?谢谢老师和同学

    帖子 由 Admin 于 周二 十月 26, 2010 9:08 pm

    下面代码有注释的地方是程序问题所在。按下面的程序运行结果是没问题的。更多问题请在此贴后回复。
    代码:
    clear;clc;
    xx = 0.3;
    n = 7;
    x=[0.0,0.2,0.4,0.6,0.8,1.0,1.2];
    y=[1.0,0.980067,0.921061,0.825336,0.696707,0.540302,0.362358];
    t=[1.0, 0, 0, 0, 0, 0, 0];
    A=[1.0, 0, 0, 0, 0, 0, 0];

    for k=2:n
        t(k)=y(k);
        for j=(k-1):-1:1  %注意此处循环 (k-1):-1:1
            t(j)=(t(j+1)-t(j))/(x(k)-x(j));   
        end
        A(k)=t(1);
    end
    P=A(n);
    for i=n:-1:2  %注意此处循环n:-1:2
        P=P*(xx-x(i-1))+A(i-1);
    end
    G=abs(P-cos(xx));

      目前的日期/时间是周一 五月 21, 2018 4:51 pm