How to evaluate a first/second derivative for 5th order spline?

5 次查看(过去 30 天)
I am using 5th order spline for my function. I want to evaluate its first and second derivative. For example, I am using the code as follows
if true
x = [0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1];
y = [0,0.7071,1,0.7071,0,-0.7071,-1,-0.7071,0];
k = 5;
sp = spapi( optknt(x,k), x, y );
xx = 0:.005:1;
yy = fnval(xx,sp);
v_o = 2*pi*cos(2*pi*xx); % First Derivative
a_o = -(2*pi)^2*sin(2*pi*xx); % Second Derivative
plot(xx,yy);
hold on; figure, plot(xx,v_o);
plot(diff(yy,1)); hold off % inaccurate first difference
hold on; figure, plot(xx,a_o);
plot(diff(yy,2)); hold off % inaccurate second difference
end
Please, tell me how can I find first and second derivative for 5th order spline. Thanks
  1 个评论
Abdul Mannan
Abdul Mannan 2015-9-8
编辑:Abdul Mannan 2015-9-8
OK. I got the answer but I am not erasing the question for the future use.
if true
x = [0,0.125,0.25,0.375,0.5,0.625,0.75,0.875,1];
y = [0,0.7071,1,0.7071,0,-0.7071,-1,-0.7071,0];
k = 5;
sp = spapi( optknt(x,k), x, y );
xx = 0:.005:1;
yy = fnval(xx,sp);
dsp = fnder(sp);
dyy = fnval(xx,dsp);
ddsp = fnder(sp,2);
ddyy = fnval(xx,ddsp);
v_o = 2*pi*cos(2*pi*xx); % First Derivative
a_o = -(2*pi)^2*sin(2*pi*xx); % Second Derivative
plot(xx,yy);
hold on; figure, plot(xx,v_o);
plot(xx,dyy), title('first derivative'); hold off
hold on; figure, plot(xx,a_o);
plot(xx,ddyy); title('second derivative'); hold off
end
Use it and please wish me peace and blessings.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Spline Postprocessing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by