牛顿(Newton)插值法的Matlab实现
牛顿(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
注意:
- 书中算法存储数据下标从0开始,但实际要从1开始
- 第三步对书上算法稍稍改动了一点儿,同阶差商计算顺序从低到高。
运行
运行示例为《数值计算方法》—丁丽娟 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实现相关推荐
- 牛顿(Newton)插值及其MATLAB程序
拉格朗日插值的优点是格式整齐和规范,有误差估计方式,它的缺点是没有承袭性,当需要增加节点时,必须重新计算插值的基函数li(x).本文给出具有承袭性的牛顿插值法及其MATLAB程序.与牛顿插值有关的差商 ...
- 拉格朗日插值法matlab上机,拉格朗日插值法使用MATLAB做的例题
<拉格朗日插值法使用MATLAB做的例题>由会员分享,可在线阅读,更多相关<拉格朗日插值法使用MATLAB做的例题(2页珍藏版)>请在人人文库网上搜索. 1.一物体廓线数据如下 ...
- 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_ ...
- 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践
温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 插值算法 一.插值法的定义 1.插值函数一共有三种: 2.多项式插值法原理 3.分段插值法原理: 4.具体如何求插值函数呢? (1) ...
- 牛顿斯科特MATLAB求积分,详解Matlab求积分的各种方法
详解Matlab求积分地各种方法 一.符号积分 符号积分由函数int来实现.该函数地一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示地默认变量对被积函数或符号 ...
- 埃尔米特插值法在MATLAB中的应用
埃尔米特插值法 为了让插值函数能更好的和原来的函数重合,不但要求二者在节点上函数值相等,而且要求相切,对应导数也相等,甚至要求高阶导数也相等.--这类插值被称为切触插值,或埃尔米特插值,满足这种要求的 ...
- 牛顿迭代法解线性方程matlab程序,牛顿迭代法matlab程序(解线性方程组)
<牛顿迭代法matlab程序(解线性方程组)>由会员分享,可在线阅读,更多相关<牛顿迭代法matlab程序(解线性方程组)(4页珍藏版)>请在金锄头文库上搜索. 1.牛顿迭代法 ...
- matlab求线性方程组的符号解,Newton迭代法在MATLAB中解线性方程组
导师让我用牛顿迭代法解方程组,在MATLAB里,在办公室的前辈的帮助下终于搞出来了,在此记录一下. 我是初学者,所以代码会有些幼稚,别介意.网上的版本我不是运行不了就是提示不能用R2013a版本,所以 ...
- matlab牛顿解方程,牛顿迭代法解非线性方程matlab实现
1 .功能 本程序采用牛顿法,求实系数高次代数方程 f(x)=a0xn+a1xn-1+ -+an-1x+an= 0 (an ≠0 ) ( 1 ) 的在初始值 x 0 附近的一个根. 2. 使用说明 ( ...
最新文章
- 高通与苹果宣布“复合”,英特尔黯然退场 | 极客头条
- EF中一对多的关系中,用单字段保存ID拼接字符串
- Java中的运行期类型鉴定
- asp 与 database (3)
- SQL基础【三、Select】
- junit单元测试断言_简而言之,JUnit:单元测试断言
- Spring模块介绍
- foobar插件_如何为 caddy 添写自定义插件
- iforums之UEditor上传图片提示【未知错误】
- Android的异步多线程消息处理机制
- Modbus 调试工具: Modbus poll与Modbus slave下载与使用(上)
- HDFS-windows下测试hdfs命令
- 评价——TOPSIS
- python程序设计语言中的小于等于号_Python(matplotlib)小于或等于tex中的符号
- 【Si24R2F+ Demo板】介绍说明与使用建议
- 一个选手和小丫姐的搞笑对话
- 微信小程序改变页面背景颜色
- A Survey on Deep Transfer Learning 2018 翻译
- crawler:AJAX动态网页数据抓取、Selenium使用
- 基于ssm的校园二手物品交换系统
热门文章
- OpenGL学习之VS2017+glfw+glew/glad/freeglut的基本配置与中文教程汇总
- (纪中)1439. airship
- 解决simnow客户端登录报CTP:客户端认证失败
- BIOS追code之PEI phase
- [构造]Array 2022牛客多校第6场 A
- 2022.11.13 第三十次周报
- oracle shared pool size,SHARED_POOL_RESERVED_SIZE参数的设置及作用
- 获取网络连接名称“本地连接”的两种方法
- 全国计算机竞赛保送清华,全国数学奥赛金牌、保送清华,别人家的孩子了解一下...
- 2008圣诞新年祝语之师长、上司篇