exm04122_1.m

来自「这本书是matlab经典书籍」· M 代码 · 共 23 行

M
23
字号
x=(0:0.1:1)*2*pi;y=sin(x);		% 获得样点数据
pp=spline(x,y);			% 求PP形式的样条函数pp,它近似表示 
int_pp=fnint(pp);		% 样条函数pp的数值不定积分int_pp,应近似 。
der_pp=fnder(pp);		% 样条函数pp的数值导函数der_pp,应近似 。
% 在基础区间上,计算三个样条函数与理论值的最大误差
xx=(0:0.01:1)*2*pi;
err_yy=max(abs(ppval(pp,xx)-sin(xx)))
err_int=max(abs(ppval(int_pp,xx)-(1-cos(xx))))
err_der=max(abs(ppval(der_pp,xx)-cos(xx)))  

% 计算y(x)在区间[1,2]上的定积分
DefiniteIntegral.bySpline=ppval(int_pp,[1,2])*[-1;1];		%	<2>
DefiniteIntegral.byTheory=(1-cos(2))-(1-cos(1));
% 计算dy(3)/dx
Derivative.bySpline=fnval(der_pp,3);
Derivative.byTheory=cos(3);
Derivative.byDiference=(sin(3.01)-sin(3))/0.01;	%前向差分近似
DefiniteIntegral,Derivative  

fnplt(pp,'b-');hold on
fnplt(int_pp,'m:'),fnplt(der_pp,'r--');hold off
legend('y(x)','S(x)','dy/dx') 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?