Central Difference For Loop
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Robert Flores
am 19 Mär. 2019
Bearbeitet: KALYAN ACHARJYA
am 19 Mär. 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 Kommentare
Akzeptierte Antwort
KALYAN ACHARJYA
am 19 Mär. 2019
Bearbeitet: KALYAN ACHARJYA
am 19 Mär. 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 Kommentare
madhan ravi
am 19 Mär. 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
am 19 Mär. 2019
Bearbeitet: KALYAN ACHARJYA
am 19 Mär. 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).
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!