Filter löschen
Filter löschen

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

5 Ansichten (letzte 30 Tage)
Abdul Mannan
Abdul Mannan am 8 Sep. 2015
Bearbeitet: Abdul Mannan am 8 Sep. 2015
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 Kommentar
Abdul Mannan
Abdul Mannan am 8 Sep. 2015
Bearbeitet: Abdul Mannan am 8 Sep. 2015
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.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by