How get this program to calculate derivative properly?

function [Yn]=Jaroslaw_Dabrowski(dt, N)
% Help funkcji [Yn]=Jaroslaw_Dabrowski(dt, N)
%funkcja obliczna pochodne n-tego stopnia i rysuje ich wykres.
%Zmienne wejściowe: dt - odstępy czasowe,
% N - stopień pochodnej.
%Zmienne wyjściowe: Yn - obliczona pochodna.
A=2;
w=1;
hold on
if N>10;
error ('myApp:argChk','Decrease the number of loop iterations')
elseif N<=10;
for i=1:N;
t=-3*pi:dt:3*pi;
Yn=A*sin(w*t);
Ynn=A*sin(w*(t+dt));
Yn(189)=Ynn(188);
size(t);
size(Yn);
dYn=diff(Yn,i)./dt;
size(t);
dYn(189)=dYn(1);
size(dYn);
subplot(5,2,i)
grid on
plot(t,dYn)
xlabel('Time')
ylabel('Amplitude')
legend(strcat('Y_n, n=',num2str(i)))
end
end
end

3 Comments

Can you be more specific? What is wrong?
Show the original curve and the curve you want to see. Show the curve derivative was taken from.
Sorry, i missed answer. Could you check the answer below?
No matter how much you take derivative cos() will be always the same frequency
So your function does return correct output

Sign in to comment.

Answers (2)

Yn=A*sin(w*t);
dYn = A*w*cos(w*t) ;

2 Comments

Replace:
dYn=diff(Yn,i)./dt;
with:
dYn=diff(Yn)./dt;
It won't work like that. i must be there, becouse each plot must be in higher derivative.

Sign in to comment.

It should be like that. Theoretically derivative is wrong in my code, and i have no idea how to correct it

Asked:

on 2 Apr 2020

Commented:

on 2 Apr 2020

Community Treasure Hunt

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

Start Hunting!