• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB实例:Hermite插值多项式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

问题描述:清华大学出版社李庆扬《数值分析》第五版教材P49习题14:

求次数小于等于3的多项式P(x),使其满足条件 P(0)=0, P’(0)=1, P(1)=1, P’(1)=2

1. MATLAB程序

Hermite_kailugaji.m

function f = Hermite_kailugaji(t,y,y_1,t0)
%t y为坐标向量 y_1为一阶导的值 t0为插值点的t坐标|| f0为t0对应的值
syms x;
f = 0.0;

if(length(t) == length(y))
    if(length(y) == length(y_1))
        n = length(t);
    else
        disp('y和y的导数的维数不相等!');
        return;
    end
else
    disp('x和y的维数不相等!');
    return;
end

for i=1:n
    h = 1.0;
    a = 0.0;
    for j=1:n
        if( j ~= i)
            h = h*(x-t(j))^2/((t(i)-t(j))^2);
            a = a + 1/(t(i)-t(j));
        end
    end
    
    f = f + h*((t(i)-x)*(2*a*y(i)-y_1(i))+y(i));

    
    if(i==n)
        if(nargin == 4)
            f = subs(f,'x',t0);
        else
            f = vpa(f,6);
        end
    end
end

demo.m

clear
clc
% 求次数小于等于3的多项式P(x),使其满足条件
% P(0)=0, P’(0)=1, P(1)=1, P’(1)=2
x=[0 1];
y=[0 1];
y_1=[1 2];
%x, y为坐标向量, y_1为一阶导的值, x0为插值点的x坐标|| f0为x0对应的值
f=Hermite_kailugaji(x,y,y_1);
f=collect(f); % Matlab 合并同类项,将多项式化为一般式
fprintf('Hermite插值多项式为: y=%s\n', f);
f=Hermite_kailugaji(x,y,y_1,2);
fprintf('在x=2处的Hermite插值为: %f\n', f);

2. 结果

Hermite插值多项式为: y=x^3 - 1.0*x^2 + 1.0*x
在x=2处的Hermite插值为: 6.000000

提示:MATLAB多项式整理小技巧:collect()是化为一般式,factor()是因式分解,合并同类项。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab之图像处理(2)发布时间:2022-07-18
下一篇:
使用双线性插值法放大图像(matlab实现)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap