Calculate derivative using central differencing

1 次查看(过去 30 天)
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)

采纳的回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2019-11-20
编辑:KALYAN ACHARJYA 2019-11-20
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 个评论
Kyle Lazaroff
Kyle Lazaroff 2019-11-20
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

请先登录,再进行评论。

更多回答(0 个)

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by