Calculate derivative using central differencing

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)

 Akzeptierte Antwort

KALYAN ACHARJYA
KALYAN ACHARJYA am 20 Nov. 2019
Bearbeitet: KALYAN ACHARJYA am 20 Nov. 2019

0 Stimmen

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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by