Calculate derivative using central differencing

2 vues (au cours des 30 derniers jours)
Kyle Lazaroff
Kyle Lazaroff le 20 Nov 2019
Commenté : Kyle Lazaroff le 20 Nov 2019
dx = 0.01;
x = 0:dx:2*pi;
signal = sin(x).*cos(10*x);
dsignaldx_true = cos(x).*cos(10*x) - 10*sin(x).*sin(10*x);
dsignaldx_forward = ForwardO1(signal, x);
dsignaldx_central =
for i =
end
error_forward_max = max(abs(dsignaldx_forward(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The maximum relative error encountered when using forward differencing with O(dx) error is %f\n', error_forward_max)
error_central_max =
fprintf('The maximum error encountered when using central differencing with O(dx^2) error is %f\n', error_central_max)
error_forward_average = mean(abs(dsignaldx_forward(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The average error encountered when using forward differencing with O(dx) error is %f\n', error_forward_average)
error_central_average =
fprintf('The average error encountered when using central differencing with O(dx^2) error is %f\n', error_central_average)

Réponse acceptée

KALYAN ACHARJYA
KALYAN ACHARJYA le 20 Nov 2019
Modifié(e) : KALYAN ACHARJYA le 20 Nov 2019
Is this?
234.png
dx=0.01;
x=0:dx:2*pi;
signal=sin(x).*cos(10*x);
diff_cen=(sin(x+dx).*cos(10*(x+dx))-sin(x).*cos(10*x))/(2*dx);
diff_cen
# I hope, rest you will do
  1 commentaire
Kyle Lazaroff
Kyle Lazaroff le 20 Nov 2019
dx = 0.01;
x = 0:dx:2*pi;
signal = sin(x).*cos(10*x);
dsignaldx_true = cos(x).*cos(10*x) - 10*sin(x).*sin(10*x);
dsignaldx_forward = ForwardO1(signal, x);
dsignaldx_central = (sin(x+dx).*cos(10*(x+dx))-sin(x).*cos(10*x))/(2*dx);
dsignaldx_central(1) = NaN;
dsignaldx_central(length(dsignaldx_central)) = NaN;
for i = 2:length(dsignaldx_central)-1;
dsignaldx_central(i) = (signal(i+1)-signal(i-1))/2*dx;
end
error_forward_max = max(abs(dsignaldx_forward(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The maximum relative error encountered when using forward differencing with O(dx) error is %f\n', error_forward_max)
error_central_max = max(abs(dsignaldx_central(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The maximum error encountered when using central differencing with O(dx^2) error is %f\n', error_central_max)
error_forward_average = mean(abs(dsignaldx_forward(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The average error encountered when using forward differencing with O(dx) error is %f\n', error_forward_average)
error_central_average = mean(abs(dsignaldx_central(2:end-1) - dsignaldx_true(2:end-1)));
fprintf('The average error encountered when using central differencing with O(dx^2) error is %f\n', error_central_average)
this is what I have, but the central derivative and the max error are not correct. I'm not sure where the mistake is

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by