How do i store the output from my for loop for each iteration
3 views (last 30 days)
Show older comments
I am trying to store the output of the solution after each iteration. can someone help?
initial_guess = f_0 ;
sol = tosolve(initial_guess)
function [sol] = tosolve(initial_guess)
rho = 1.23 ; %fluid density kg/m^3
mu = 1.79*10^(-5) ; %fluid viscosity Ns/m^2
D = 0.005 ; %pipe diameter m
u = 40 ; %fluid velocity m/s
e = 0.0015e-3; %pipe roughness mm
Re = rho*u*D/mu ; %Reynolds number
sol = initial_guess ;
for i = 1:10
RHS = -2.0*(log10( (e./(3.7*D)) + (2.51./(Re.*sqrt(sol)))));
f_est = ((1./RHS)).^2 ;
error = (sol - f_est)./sol ;
if abs(error) > 0.00005
sol = f_est ;
store(i,:) = [sol] ;
else
end
end
end
0 Comments
Answers (1)
Torsten
on 30 Aug 2023
Edited: Torsten
on 30 Aug 2023
You must return "store", not "sol" to the program calling the function "tosolve".
2 Comments
Torsten
on 30 Aug 2023
f_0 = 10.0;
initial_guess = f_0 ;
store = tosolve(initial_guess)
function [store] = tosolve(initial_guess)
rho = 1.23 ; %fluid density kg/m^3
mu = 1.79*10^(-5) ; %fluid viscosity Ns/m^2
D = 0.005 ; %pipe diameter m
u = 40 ; %fluid velocity m/s
e = 0.0015e-3; %pipe roughness mm
Re = rho*u*D/mu ; %Reynolds number
sol = initial_guess ;
store(1) = sol;
for i = 1:10
RHS = -2.0*(log10( (e./(3.7*D)) + (2.51./(Re.*sqrt(sol)))));
f_est = ((1./RHS)).^2 ;
error = (sol - f_est)./sol ;
if abs(error) > 0.00005
sol = f_est ;
store = [store,sol] ;
else
end
end
end
See Also
Categories
Find more on Graph and Network Algorithms 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!