牛顿(Newton)插值法的Matlab实现

  • 算法
  • 程序
  • 运行
  • 对已知点计算
  • 手算例题

本篇为Newton插值法,构造插值多项式
拉格朗日(Lagrange)插值法链接如下:
链接: Lagrange插值法的matlab实现.

算法

关于Newton插值多项式的具体内容和算法见《数值计算方法》—丁丽娟,P130-134

该算法核心是差商表的建立


上图来自《数值计算方法》—丁丽娟,P133-134

程序

Matlab代码如下:

//  输入量
xi: 离散样点的横坐标值
yi: 离散样点的纵坐标值
x: 插值多项式中自变量符号// 输出量:
y: Newton插值多项式
// An highlighted block
function p= Newton_fun(x,xi,yi)
n=length(xi);
f=zeros(n,n);% 对差商表第一列赋值
for k=1:n      f(k)=yi(k);
end
% 求差商表
for i=2:n       % 差商表从0阶开始;但是矩阵是从1维开始存储!!!!!!for k=i:nf(k,i)=(f(k,i-1)-f(k-1,i-1))/(xi(k)-xi(k+1-i));  end
end
disp('差商表如下:');
disp(f);%求插值多项式
p=0;
for k=2:nt=1;for j=1:k-1t=t*(x-xi(j));disp(t)endp=f(k,k)*t+p;disp(p)
end
p=f(1,1)+p;end

注意:

  1. 书中算法存储数据下标从0开始,但实际要从1开始
  2. 第三步对书上算法稍稍改动了一点儿,同阶差商计算顺序从低到高。

运行

运行示例为《数值计算方法》—丁丽娟 P-134 例三
例一

// Command Window 输入
>> xi=[11 12 13];
>> yi=[2.3979 2.4849 2.5649];
>> x=sym('x');
>> p= Newton_fun(x,xi,yi)

运行结果如下:

实际上上式与 p = (87*(x - 11))/1000 - (7*(x - 11)*(x - 12))/2000 + 23979/10000 一模一样。
例二

// Command Window 输入
>> xi=[10 11 12 13 14];
>> yi=[2.3026 2.3979 2.4849 2.5649 2.6391];
>> x=sym('x');
>> p= Newton_fun(x,xi,yi)
>> a=10:0.1:14;
>> p=subs(p,x,a);
>> plot(a,p)

运行结果如下:

插值多项式:
p = (953x)/10000 - (18689938453587(x - 10)(x - 11))/4503599627370496 + (7993589098605227(x - 10)(x - 11)(x - 12))/36893488147419103232 - (614891469122219*(x - 10)(x - 11)(x - 12)*(x - 13))/147573952589676412928 + 1687/1250

对已知点计算

运行示例为《数值计算方法》—丁丽娟 P-134 例三

Command Window 输入
>> p= Newton_fun(11.5,xi,yi)

输出如下:

手算例题

计算插值多项式方法和程序算法一模一样。
此处多了一个误差估计:

牛顿(Newton)插值法的Matlab实现相关推荐

  1. 牛顿(Newton)插值及其MATLAB程序

    拉格朗日插值的优点是格式整齐和规范,有误差估计方式,它的缺点是没有承袭性,当需要增加节点时,必须重新计算插值的基函数li(x).本文给出具有承袭性的牛顿插值法及其MATLAB程序.与牛顿插值有关的差商 ...

  2. 拉格朗日插值法matlab上机,拉格朗日插值法使用MATLAB做的例题

    <拉格朗日插值法使用MATLAB做的例题>由会员分享,可在线阅读,更多相关<拉格朗日插值法使用MATLAB做的例题(2页珍藏版)>请在人人文库网上搜索. 1.一物体廓线数据如下 ...

  3. Lagrange插值法与Newton插值法

    Lagrange插值法   考虑有nnn个不同的点 (x1,y1),(x2,y2),(xi,yi)-(xn,yn){(x_1,y_1),(x_2,y_2),(x_i,y_i)\dots (x_n,y_ ...

  4. 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 插值算法 一.插值法的定义 1.插值函数一共有三种: 2.多项式插值法原理 3.分段插值法原理: 4.具体如何求插值函数呢? (1) ...

  5. 牛顿斯科特MATLAB求积分,详解Matlab求积分的各种方法

    详解Matlab求积分地各种方法 一.符号积分 符号积分由函数int来实现.该函数地一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示地默认变量对被积函数或符号 ...

  6. 埃尔米特插值法在MATLAB中的应用

    埃尔米特插值法 为了让插值函数能更好的和原来的函数重合,不但要求二者在节点上函数值相等,而且要求相切,对应导数也相等,甚至要求高阶导数也相等.--这类插值被称为切触插值,或埃尔米特插值,满足这种要求的 ...

  7. 牛顿迭代法解线性方程matlab程序,牛顿迭代法matlab程序(解线性方程组)

    <牛顿迭代法matlab程序(解线性方程组)>由会员分享,可在线阅读,更多相关<牛顿迭代法matlab程序(解线性方程组)(4页珍藏版)>请在金锄头文库上搜索. 1.牛顿迭代法 ...

  8. matlab求线性方程组的符号解,Newton迭代法在MATLAB中解线性方程组

    导师让我用牛顿迭代法解方程组,在MATLAB里,在办公室的前辈的帮助下终于搞出来了,在此记录一下. 我是初学者,所以代码会有些幼稚,别介意.网上的版本我不是运行不了就是提示不能用R2013a版本,所以 ...

  9. matlab牛顿解方程,牛顿迭代法解非线性方程matlab实现

    1 .功能 本程序采用牛顿法,求实系数高次代数方程 f(x)=a0xn+a1xn-1+ -+an-1x+an= 0 (an ≠0 ) ( 1 ) 的在初始值 x 0 附近的一个根. 2. 使用说明 ( ...

最新文章

  1. 高通与苹果宣布“复合”,英特尔黯然退场 | 极客头条
  2. EF中一对多的关系中,用单字段保存ID拼接字符串
  3. Java中的运行期类型鉴定
  4. asp 与 database (3)
  5. SQL基础【三、Select】
  6. junit单元测试断言_简而言之,JUnit:单元测试断言
  7. Spring模块介绍
  8. foobar插件_如何为 caddy 添写自定义插件
  9. iforums之UEditor上传图片提示【未知错误】
  10. Android的异步多线程消息处理机制
  11. Modbus 调试工具: Modbus poll与Modbus slave下载与使用(上)
  12. HDFS-windows下测试hdfs命令
  13. 评价——TOPSIS
  14. python程序设计语言中的小于等于号_Python(matplotlib)小于或等于tex中的符号
  15. 【Si24R2F+ Demo板】介绍说明与使用建议
  16. 一个选手和小丫姐的搞笑对话
  17. 微信小程序改变页面背景颜色
  18. A Survey on Deep Transfer Learning 2018 翻译
  19. crawler:AJAX动态网页数据抓取、Selenium使用
  20. 基于ssm的校园二手物品交换系统

热门文章

  1. OpenGL学习之VS2017+glfw+glew/glad/freeglut的基本配置与中文教程汇总
  2. (纪中)1439. airship
  3. 解决simnow客户端登录报CTP:客户端认证失败
  4. BIOS追code之PEI phase
  5. [构造]Array 2022牛客多校第6场 A
  6. 2022.11.13 第三十次周报
  7. oracle shared pool size,SHARED_POOL_RESERVED_SIZE参数的设置及作用
  8. 获取网络连接名称“本地连接”的两种方法
  9. 全国计算机竞赛保送清华,全国数学奥赛金牌、保送清华,别人家的孩子了解一下...
  10. 2008圣诞新年祝语之师长、上司篇