MATLAB: Central Difference For Loop

central differencefor loop

Hello, I am trying to use the central difference for the function sin(2*pi*x), centered around x=0.313. I know what value should be, that is my "act" variable. If someone can help me why my for loop is messed-up, it'll be much appreciated.
CODE:
clc, clear, close all
syms x
% Actual Value
f = sin(2*pi*x);
df = diff(f,x);
x = 0.313;
true_value = 2*pi*cos(2*pi*x)
% Central Difference
for i=1:3
x = 0.313;
for h = [0.01 0.1 0.25]
df_dx(i) = (sin(2*pi*(x+h))-sin(2*pi*(x-h)))/2*h
end
end
act = (sin(2*pi*0.314)-sin(2*pi*0.312))/0.02

Best Answer

-If someone can help me why my for loop is messed-up-
clc, clear, close all
syms x
% Actual Value

f=sin(2*pi*x);
df=diff(f,x);
x=0.313;
true_value=2*pi*cos(2*pi*x);
h=[0.01 0.1 0.25];
df_dx=zeros(1, length(h));
% Central Difference

for i=1:3
df_dx(i)=(sin(2*pi*(x+h(i)))-sin(2*pi*(x-h(i))))/2*h(i);
end
act=(sin(2*pi*0.314)-sin(2*pi*0.312))/0.02;
Output:
df_dx=
-0.0002 -0.0227 -0.0964
Without for loop
clc, clear, close all
syms x
% Actual Value
f=sin(2*pi*x);
df=diff(f,x);
x=0.313;
true_value=2*pi*cos(2*pi*x);
h=[0.01 0.1 0.25];
% Central Difference
df_dx=(sin(2*pi.*(x+h))-sin(2*pi.*(x-h)))./(2*h);
act=(sin(2*pi*0.314)-sin(2*pi*0.312))/0.02;
Command Window:
>> df_dx
df_dx =
-0.0002 -0.0227 -0.0964
Related Question