埃尔米特(Hermite)插值及其MATLAB程序
%hermite.m
%求埃尔米特多项式和误差估计的MATLAB主程序
%输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量,
%以f'(x_i)=y'_i(i = 1,2,...,n+1)为元素的向量Y1;
%x是以向量形式输入的m个插值点,M在[a,b]上满足|f~(2n+2)(x)|≤M
%注:f~(2n+2)(x)表示f(x)的2n+2阶导数
%输出的量:向量y是向量x处的插值,误差限R,2n+1阶埃尔米特插值多项式H_k及其系数向量
%H_c,误差公式wcgs及其系数向量Cw.
function[y,R,Hc,Hk,wcgs,Cw] = hermite(X,Y,Y1,x,M)
n = length(X);
m = length(x);for t = 1 : m
z = x(t);
H = 0;
q = 1;
c1 = 1;for k = 1 : ns = 0;V = 1;for i = 1 : nif k ~= is = s + (1/(X(k)-X(i)));V = conv(V,poly(X(i)))/(X(k)-X(i));endendh = poly(X(k));g = ([0 1]-2 * h * s);%注意不要写成1-2*h*s,因为是多项式减法,低阶多项式前面必须用零填补,书上的错误,浪费我一晚上时间G = g * Y(k) + h * Y1(k);H = H + conv(G,conv(V,V));%hermite插值多项式b = poly(X(k));b2 = conv(b,b);q = conv(q,b2);
end
Hc = H;
Hk = poly2sym(H);
Q = poly2sym(q);
for i = 1 : 2*n c1 = c1 * i;
end
wcgs = M * Q / c1;
Cw = M * q / c1;
y(t) = polyval(Hc,x(t));
R(t) = polyval(Cw,x(t));
end
%hermite.m
%求埃尔米特多项式和误差估计的MATLAB主程序
%输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量,
%以f'(x_i)=y'_i(i = 1,2,...,n+1)为元素的向量Y1;
%x是以向量形式输入的m个插值点,M在[a,b]上满足|f~(2n+2)(x)|≤M
%注:f~(2n+2)(x)表示f(x)的2n+2阶导数
%输出的量:向量y是向量x处的插值,误差限R,2n+1阶埃尔米特插值多项式H_k及其系数向量
%H_c,误差公式wcgs及其系数向量Cw.
function[y,R,Hc,Hk,wcgs,Cw] = hermite(X,Y,Y1,x,M)
n = length(X);
m = length(x);for t = 1 : m
z = x(t);
H = 0;
q = 1;
c1 = 1;for k = 1 : ns = 0;V = 1;for i = 1 : nif k ~= is = s + (1/(X(k)-X(i)));V = conv(V,poly(X(i)))/(X(k)-X(i));endendh = poly(X(k));g = ([0 1]-2 * h * s);%注意不要写成1-2*h*s,因为是多项式减法,低阶多项式前面必须用零填补,书上的错误,浪费我一晚上时间G = g * Y(k) + h * Y1(k);H = H + conv(G,conv(V,V));%hermite插值多项式b = poly(X(k));b2 = conv(b,b);q = conv(q,b2);
end
Hc = H;
Hk = poly2sym(H);
Q = poly2sym(q);
for i = 1 : 2*n c1 = c1 * i;
end
wcgs = M * Q / c1;
Cw = M * q / c1;
y(t) = polyval(Hc,x(t));
R(t) = polyval(Cw,x(t));
end
从这图片看要比拉格朗日和牛顿插值要好,不过当插值多了以后,也就是埃尔米特多项式的次数高了以后误差会变得很大的。不信我们来试试。
我们还是用sinx,不过这次我们用5个点。
X 0 pi/6 pi/4 pi/3 pi/2
Y 0 0.5 0.7071 0.8660 1
Y1 1 0.8660 0.7071 0.5 0
>> X = [0 pi/6 pi/4 pi/3 pi/2];Y = [0 0.5 0.7071 0.8660 1];Y1 = [1 0.8660 0.7071 0.5 0];
>> M = 1;
>> x = linspace(0, pi, 50);
>> [y,R,Hc,Hk,wcgs,Cw] = hermite(X,Y,Y1,x,M)
>> y1 = sin(x);
>> errorbar(x,y,R,'.g')
>> hold on
>> plot(X, Y, 'or', x, y, '.k', x, y1, '-b');
>> legend('误差','样本点','埃尔米特插值估算','sin(x)');
可以看到拟合的多项式从x=2.5开始远远偏离sinx,并且此时误差公式也失效了.这就是我们后面需要讲到的高次插值的振荡问题。
埃尔米特(Hermite)插值及其MATLAB程序相关推荐
- hermit插值 matlab,埃尔米特(Hermite)插值及其MATLAB程序
%hermite.m %求埃尔米特多项式和误差估计的MATLAB主程序 %输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量, %以f'(x ...
- c语言埃尔米特插值思路,【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插值和样条插值...
1.埃尔米特(Hermite)插值 1.1.Hermite插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶.二阶甚至更高阶的导数值,这就是 Hermite 插值问 ...
- matlab点坐标 一次插值,[转载]坐标转换和插值之matlab程序
坐标转换和插值之matlab程序 Matlab版本:8.1.0.604 (R2013a) 这里需要用到的命令有:maps, defaultm, projfwd, projinv Matlab版本:8. ...
- 艾尔米特插值的MATLAB实现,埃尔米特(Hermite)插值
Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值.对于高阶导数的情况,Hermite插值多项式比较复杂,在实际情况中,常常遇到的是函数值与一阶导数给定的情况.在此情 ...
- 埃尔米特(Hermite)插值
Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值.对于高阶导数的情况,Hermite插值多项式比较复杂,在实际情况中,常常遇到的是函数值与一阶导数给定的情况.在此情 ...
- 牛顿(Newton)插值及其MATLAB程序
拉格朗日插值的优点是格式整齐和规范,有误差估计方式,它的缺点是没有承袭性,当需要增加节点时,必须重新计算插值的基函数li(x).本文给出具有承袭性的牛顿插值法及其MATLAB程序.与牛顿插值有关的差商 ...
- 拉格朗日(lagrange)插值及其MATLAB程序
一.n次拉格朗日插值 根据<插值多项式的性质>中的定理6.1可得 其中(6.19)称为基函数,(6.18)称为拉格朗日多项式,用(6.18)计算插值称为拉格朗日多项式插值. 方法2:通过M ...
- 插值拟合matlab程序,Matlab插值和拟合
数值插值 一维插值 YI=interp1(X,Y,XI,METHOD) X.Y为采样点和样本值,XI为表示要插值的点,METHOD默认是线性插值'linear' METHOD可以取 'nearest' ...
- 埃尔米特插值c语言编程,131张艳-埃尔米特(Hermite)插值逼近的C语言程序.doc
PAGE PAGE 1 论文题目:埃尔米特(Hermite) 插值逼近的C语言程序 院 系: 数学科学学院 专 业: 数学与应用数学 姓 名: 张 艳 学 号: 指导教师: 侯 存 贵 完成时间: 2 ...
最新文章
- 【译】如何精确判断最终用户响应时间过长的原因?
- oracle12c spa,Oracle12c功能加强 新特性之管理功能的加强
- WCF学习之旅—第三个示例之二(二十八)
- 第一个Django应用程序_part1
- 与微软.NET创始人Scott Guthrie面对面,“红衣教主”亲身传授推动成功转型的洪荒之力
- 外设驱动库开发笔记4:AD9833函数发生器驱动
- carplay是否可以用安卓系统_Microsoft Teams正在支持CarPlay通话,我还是期待微信支持CarPlay...
- CSDN博客下载器v2.0发布(导出PDF)
- java镜像劫持_解析映像劫持技术第1/3页
- Multistage GAN for Fabric Defect Detection 用于织物检测的多级GAN
- Excel插件POI-ET扩展(NiceXSSFWorkbook)说明
- 阿里70后程序员的 26 个职场感悟
- 如何刷新微信服务器小程序版本,微信小程序线上更新版本流程及如何运用
- 【放牛娃】奶盘seo自媒体文章伪原创系统
- CCleanner下载安装教程
- ORACLE 按时间创建分区表
- 计算机组成原理-笔记
- 机器学习强基计划2-2:一文详解ID3、C4.5、CART决策树算法+ Python实现
- 八大防火墙评测 谁才是真“金钟罩”
- Juce源码分析(一)Juce的优势