📄 exp4_3.m
字号:
% exp4_3.m --- 三次样条的学习
% ---------- 外推样条 -------------
% [简介] 外推样条(extrapolated)
% 不需要附加端点条件(实际上根据下面要求等于补充了两个端点条件)
% 即第一区间的三次多项式是第二个区间的三次多项向左延长而得,
% 同样最后一个区间的是倒数第二个区间的向右延长而得
% [调用] pp = spline(x,y)
% x,y 是插值点(采样点)
% pp 是分段多项式,它是matlab的结构数组(暂不管它是什么,先学会使用)
% 它可被许多其它函数调用(如样条求值,样条积分,样条微分等)
% 插值点(x(i),y(i))为:
x=[0 1 2 3];
y=[0 0.5 2 1.5];
% 求三次样条:
pp = spline(x,y);
% 作图:
xx = linspace(0,3,101); % 加细插值点
yy = ppval(pp,xx); % 这是专门的分段多项式求值命令(pp的格式要符合要求)
plot(x,y,'o',xx,yy,'-'); % 作图
% 看一看分段多项式的系数
P = pp.coefs % P的第j行表示第j个三次多项式的4系数
% 把分段多项式写成我们习惯的样子
P1 = poly2str(P(1,:),'(x-0)') % [注意]自变量是减插值点的
P2 = poly2str(P(2,:),'(x-1)')
P3 = poly2str(P(3,:),'(x-2)')
% ---------- I型样条 -------------
% [简介] 在两个端点上附加一阶导数的值我们称为I型样条(matlab 叫 clamped '压紧的样条')
% [调用] 例如第一个端点和最后一个端点的导数分别为 0,1 可这样调用
% pp = spline(x,[0,y,1]);
% 其它与前同,你不妨试一试.
% --------- 我的请教 -----------
% 其它样条(如自然样条等)应如何调用??
% ******** 你的实验 ********
% 【实验一】 样条插值的收敛性
% 用样条对exp4_2.m发生Runge现象的函数插值,看看效果
%
% 【实验二】 一个有趣的例子
% 把下面一段程序拷贝为一个单独的程序运行(把行前的'%'去掉)
% 剪一个你喜欢的图形或者把你的手放在计算机屏幕上,
% 用出现的十字标来选择图形上的一些点(全部选完后回车)
% 看看计算机为你画了什么?
% figure
% set(gcf,'menubar','none')
% axes('position',[0 0 1 1])
% [x,y] = ginput;
% n = length(x);
% s = (1:n)';
% t = (1:0.05:n)';
% u = spline(s,x,t);
% v = spline(s,y,t);
% clf reset
% plot(x,y,'.',u,v,'-')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -