# How to populate a table with results from a while function

Does anybody know how to save the intermediate results inside a while function in a table? Here is my code. I would like to save the x,y,counter values in a table in every step that while takes. Thank you!

counter = 0;
While[counter < 5,
counter = counter + 1;
sol = NSolve[{2 x + y - counter == 0,
3 y + 5 x - 2 counter == 0}, {x, y}];
]


counter = 0;
sol = {};
While[counter < 5, counter = counter + 1;
AppendTo[sol, Flatten[{counter, {x, y} /.
NSolve[{2 x + y - counter == 0, 3 y + 5 x - 2 counter == 0}, {x,  y}]}]]]

sol


{{1, 1., -1.}, {2, 2., -2.}, {3, 3., -3.}, {4, 4., -4.}, {5, 5., -5.}}

or

counter = 0;
sol2 = ConstantArray[0, 5];
While[counter < 5, counter = counter + 1;
sol2[[counter]] = Flatten@{counter, {x, y} /.
NSolve[{2 x + y - counter == 0, 3 y + 5 x - 2 counter == 0}, {x, y}]}]
sol2


{{1, 1., -1.}, {2, 2., -2.}, {3, 3., -3.}, {4, 4., -4.}, {5, 5., -5.}}

Use Sow and Reap :

counter = 0;
Reap @ While[counter < 5, counter = counter + 1;
sol = NSolve[{2 x + y - counter == 0,
3 y + 5 x - 2 counter == 0}, {x, y}];
Sow[{x, y, counter} /. sol]]


I think other answer take your question too literally. You do not really need While. IMHO Mathematica way of solving this is to use Table.

Assuming, that your equation always gives a single solution:

Table[
{x, y, counter} /.
First@NSolve[{2 x + y - counter == 0,
3 y + 5 x - 2 counter == 0}, {x, y}], {counter, 5}] // TableForm To reach the same end, as you mentioned Table (a digression: if you know Python, you can compare Wolfram's Table with its list comprehensions, which is attached with more conciseness and readability.), the most direct method is just to use it:

Table[
Append[
NSolve[{2 x + y - counter == 0, 3 y + 5 x - 2 counter == 0}, {x, y}],
counter
],
{counter, 4}
]


{ {{x -> 1., y -> -1.}, 1}, {{x -> 2., y -> -2.}, 2}, {{x -> 3., y -> -3.}, 3}, {{x -> 4., y -> -4.}, 4} }

• Using Append you abuse the list of solutions from NSolve. I would make a {NSolve,counter} instead of Append[NSolve,counter].
– Johu
Sep 8 '18 at 11:44