hermit插值 matlab,埃尔米特(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 : n
s = 0;
V = 1;
for i = 1 : n
if k ~= i
s = s + (1/(X(k)-X(i)));
V = conv(V,poly(X(i)))/(X(k)-X(i));
end
end
h = 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 : n
s = 0;
V = 1;
for i = 1 : n
if k ~= i
s = s + (1/(X(k)-X(i)));
V = conv(V,poly(X(i)))/(X(k)-X(i));
end
end
h = 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,并且此时误差公式也失效了.这就是我们后面需要讲到的高次插值的振荡问题。
hermit插值 matlab,埃尔米特(Hermite)插值及其MATLAB程序相关推荐
- c语言埃尔米特插值思路,【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插值和样条插值...
1.埃尔米特(Hermite)插值 1.1.Hermite插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶.二阶甚至更高阶的导数值,这就是 Hermite 插值问 ...
- 艾尔米特插值的MATLAB实现,埃尔米特(Hermite)插值
Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值.对于高阶导数的情况,Hermite插值多项式比较复杂,在实际情况中,常常遇到的是函数值与一阶导数给定的情况.在此情 ...
- 埃尔米特(Hermite)插值
Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值.对于高阶导数的情况,Hermite插值多项式比较复杂,在实际情况中,常常遇到的是函数值与一阶导数给定的情况.在此情 ...
- 【12月学习进度3/31—计算机图形学期末准备01】拉格朗日插值 + 三次Hermite插值
相关概念 型值点:事先给定的离散点 插值:得到的曲线通过所有的型值点 逼近:不要求通过给定的所有型值点,用给定型值点控制曲线形状 Hermite多项式 拉格朗日插值 拉格朗日插值是当 j=0j=0j= ...
- 埃尔米特(Hermite)插值及其MATLAB程序
%hermite.m %求埃尔米特多项式和误差估计的MATLAB主程序 %输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量, %以f'(x ...
- 埃尔米特插值c语言编程,131张艳-埃尔米特(Hermite)插值逼近的C语言程序.doc
PAGE PAGE 1 论文题目:埃尔米特(Hermite) 插值逼近的C语言程序 院 系: 数学科学学院 专 业: 数学与应用数学 姓 名: 张 艳 学 号: 指导教师: 侯 存 贵 完成时间: 2 ...
- 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值
插值:求过已知有限个数据点的近似函数. 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小. 插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似 ...
- 数学建模之Hermite插值法和三次样条插值法(附上详细的matlab代码)
插值算法 一般定义 若P(x)为次数不超过n的代数多项式,即 P(x)=a0+a1x+...+anxnP(x)=a_0+a_1x+...+a_nx^n P(x)=a0+a1x+...+anxn ...
- 机器人路径规划之分段三次Hermite插值(PCHIP) [包括Python和Matlab代码实现]
前言 在机器人的路径规划中针对离散采样点做插值计算生成平滑的曲线轨迹也是挺重要的一部分,本文主要介绍一下目前使用较多也是个人觉得挺好用的一个插值方法--分段三次 Hermite 插值(PCHIP),并 ...
最新文章
- 计算器软件----表达式求值
- 路由怎么定位到当前页面的组件_Angular 重载当前路由
- 函数指针使用场景和选择_在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体...
- CDN价格战外P2P重获关注,谁才是幕后推手
- 用easyx画五角星_【洛谷日报#195】有个东西叫EasyX
- 中国制造特斯拉亮相 中文车尾标亮了!网友:好抠吗?
- 110+优秀作品、20+热门领域曝光, 高通如何玩转“AI 的夏天”!
- 常用数据存储格式之xml
- 文件浏览器及数码相框 -2.3.2-freetype_arm-1
- Android模拟器SDL_app:emulator.exe 解决方法
- 初识WEB:输入URL之后的故事
- Python编程之输出素数
- 英雄联盟闪退显示无法连接服务器,英雄联盟一直闪退显示重新连接什么原因?lol崩溃进不去游戏怎么办...
- html 英文逗号,英语写作中不可小觑的五大错误 逗号别乱用
- word里的表格出现换页表格不会自动跳到下一页(已解决)
- 【githubshare】基于 C 语言编写的一款 2D 太空射击游戏,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试
- hMailServer设置
- owlBus 的uwp版本上架了
- 软工网络15个人作业3——案例分析 201521123056 吴剑通
- VBA发送email
热门文章
- HTML+CSS+JS零食官网网站设计——美食零食官网(6页) html网页制作期末美食作业成品_小吃类网页设计期末作业
- js打印三角形超详解
- 个人使用华为云服务器的经验分享
- 【Reproduced】modbus4j userguide
- 思维导图(二):绘制规则
- MAME模拟器debug帮助文档汉化一(介绍)
- 局部全局变量、匿名函数、递行函数
- leetcode 栈739. 每日温度
- Express Cookie的使用
- (Lightweight multi-scale aggregated residual attention networks for image super-resolution)阅读笔记