How do i store the output from my for loop for each iteration

3 Ansichten (letzte 30 Tage)
Hung Yu
Hung Yu am 30 Aug. 2023
Kommentiert: Torsten am 30 Aug. 2023
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

Antworten (1)

Torsten
Torsten am 30 Aug. 2023
Bearbeitet: Torsten am 30 Aug. 2023
You must return "store", not "sol" to the program calling the function "tosolve".
  2 Kommentare
Hung Yu
Hung Yu am 30 Aug. 2023
can you show it in my code thanks.
Torsten
Torsten am 30 Aug. 2023
f_0 = 10.0;
initial_guess = f_0 ;
store = tosolve(initial_guess)
store = 1×7
10.0000 0.0168 0.0313 0.0287 0.0290 0.0290 0.0290
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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Graph and Network Algorithms finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by