Central Difference For Loop
    9 views (last 30 days)
  
       Show older comments
    
    Robert  Flores
 on 19 Mar 2019
  
    
    
    
    
    Edited: KALYAN ACHARJYA
      
      
 on 19 Mar 2019
            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
0 Comments
Accepted Answer
  KALYAN ACHARJYA
      
      
 on 19 Mar 2019
        
      Edited: KALYAN ACHARJYA
      
      
 on 19 Mar 2019
  
      -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
9 Comments
  madhan ravi
      
      
 on 19 Mar 2019
				./ is not corrected yet , please by any chance don't delete this answer so that it's pretty clear how many possible mistakes can be made in this problem.
  KALYAN ACHARJYA
      
      
 on 19 Mar 2019
				
      Edited: KALYAN ACHARJYA
      
      
 on 19 Mar 2019
  
			Yes, got it sir, but for small number of iterations, there may be negligible difference.right?
>> matlab_ans_march_19
Without Pre-allocation
Elapsed time is 0.003340 seconds.
%%
>> matlab_ans_march_19
With Pre-allocation
Elapsed time is 0.002957 seconds.
Yes, prefer to use  for better coding performance (always).  
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

