zoukankan      html  css  js  c++  java
  • 数值计算方法实验之Newton 多项式插值(MATLAB代码)

    一、实验目的

      在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函数P(x)(常是多项式),使其在插值基点xi处成立(xi)= yi(i=0,1,……,n),而在[a,b]上的其它点处成立f(x)≈P(x).

     二、实验原理

       

    三、实验内容

        求f(x)=x4在[0,2]上按5个等距节点确定的Lagrange插值多项式

    四、实验程序

       (1).m文件

    %输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标,Y是纵坐标,
    %x是以向量形式输入的m个插值点,M在[a,b]上满足|f~(n+1)(x)|≤M
    %注:f~(n+1)(x)表示f(x)的n+1阶导数
    %输出的量:向量y是向量x处的插值,误差限R,n次牛顿插值多项式L及其系数向量C,
    %差商的矩阵A
    function[y,R,A,C,L] = newton(X,Y,x,M)
    n = length(X);
    m = length(x);
    for t = 1 : m
        z = x(t);
        A = zeros(n,n);
        A(:,1) = Y';
        s = 0.0; p = 1.0; q1 = 1.0; c1 = 1.0;
            for j = 2 : n
                for i = j : n
                    A(i,j) = (A(i,j-1) - A(i-1,j-1))/(X(i)-X(i-j+1));
                end
                q1 = abs(q1*(z-X(j-1)));
                c1 = c1 * j;
            end
            C = A(n, n); q1 = abs(q1*(z-X(n)));
            for k = (n-1):-1:1
                C = conv(C, poly(X(k)));
                d = length(C);
                C(d) = C(d) + A(k,k);%在最后一维,也就是常数项加上新的差商
            end
            y(t) = polyval(C,z);
            R(t) = M * q1 / c1;
    end
    L = poly2sym(C);
    

     (2)命令窗口输入

    X = [0 0.5 1.0 1.5 2.0];  
    Y = [0 0.0625 1 5.0625 16];  
    x = linspace(0,pi,50);  
    M = 1;  
    [y,R,A,C,L] = newton(X, Y, x, M);  
    y1 = x.*x.*x.*x;  %可根据所给函数更改
    errorbar(x,y,R,'.g')  
    hold on  
    plot(X, Y, 'or', x, y, '.k', x, y1, '-b');  
    legend('误差','样本点','牛顿插值估算','x^4');
    

    五、运算结果

        (1) 图像

          

        (2) 运算结果

            第一列为所得多项式系数:

              

  • 相关阅读:
    C++_构造函数与析构函数
    华为模拟机试_C++题解
    OOP_由C到C++
    OOP_面向对象程序设计概述
    java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码
    springmvc SSM 多数据源 shiro redis 后台框架 整合
    【面经】5年Java面试亲身经验
    【快手初面】要求3个线程按顺序循环执行,如循环打印A,B,C
    手工实现HttpBasic校验
    Java 并发系列(一) ThreadPoolExecutor源码解析及理解
  • 原文地址:https://www.cnblogs.com/ynly/p/12762611.html
Copyright © 2011-2022 走看看