Storing values from a loop when both sym and solve is involved?

1 view (last 30 days)
for V = [20:1:40]
syms ho L
Nudo = 0.3 + [0.62.*Redo.^(1/2).*Pri.^(1/3).*[1+(0.4./Pro).^(2/3)].^(-1/4)].*[1+(Redo./282000).^(5/8)].^(4/5); %IGNORE FOR THIS QUESTION
eq2 = ho * d1 / ko == Nudo; %IGNORE FOR THIS QUESTION
ho = solve(eq2,ho); %IGNORE FOR THIS QUESTION
ho = round(double(ho),3); %IGNORE FOR THIS QUESTION
U = (1/ho + 1/hi).^-1; %INGNORE FOR THIS QUESTION
eq3 = (tg1 - tw2) / (tg1 - tw1) == exp((-pi*d1*L*U)/(mf*cpi)); %solving for L from this eq.
L = solve(eq3,L); %solving for L
L = round(double(L),3) %simplify L with few decimal places
I am looking for various values of L when V is 20-40. RUNNING THE CODE AS IT IS SHOWN, I get individual L values that over ride themselves up until when V = 40.
I want to store ALL the values of L that the code is spitting into a matrix for plotting.
After research, I tried trading the last 2 L with
But that gave me a matrix with 1 value, and the rest = 0. Changing all L to L(V) gives me an error with my other syms variable "ho".
What can I do? I am getting the correct values I want with the code above, but I wan't to plot those values, and I can't do it because L keeps getting overwritten.

Answers (1)

Kavya Vuriti
Kavya Vuriti on 14 Jan 2020
Assuming the values of L to be numeric, you could try declaring an empty variable and then append the values obtained, each time the for loop runs to this variable. It could look something like the code below:
sol= [];
for v = 20:40
% remaining lines of code
L = round(double(L),3);
sol = [sol L];
% plot the values of L


Find more on Mathematics 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!

Translated by