MATLAB Answers

0

Saving all outputs of for for-loop

Asked by Andre Metzger on 19 Sep 2019 at 1:24
Latest activity Commented on by Ankit
on 20 Sep 2019 at 7:51
I have this code saved in an .m file
function yout=euler1(t0,y0,tfinal,h,f)
y=y0;
for n=t0:0.01:tfinal-h;
y=y+(h.*f(n,y));
end
yout=y
end
and need to save all of the outputs in order to be able to graph it.
How could i modify it in order to save all the outputs at each step/loop to be able to graph it.

  1 Comment

Ankit
on 20 Sep 2019 at 7:51
Hello Andre,
you asked a similar question and it was answered. Please check the below link. Are you expecting different results?

Sign in to comment.

1 Answer

Answer by James Tursa
on 19 Sep 2019 at 1:52
Edited by James Tursa
on 19 Sep 2019 at 1:53

Basic steps for you to take would be:
  • Create your range up front, and not as part of the loop indexing. E.g., a t vector
  • Use that range to determine the output variable size, e.g. numel(t)
  • Preallocate the output variable to the size just determined. E.g., y = zeros(something,numel(t))
  • Set the first y value to your initial value. E.g., y(:,1) = y0;
  • Loop on an integer index, e.g. k, that will cover the number of t values
  • Use that index within the loop to calculate your updated values.
For that last step, you would end up with something like this:
for k=1:something
y(:,k+1) = y(:,k) + h * f(t(k),y(:,k));
end
I have used y(:,k) instead of just y(k) to allow for functions that deal with column vectors instead of just scalars.
I have left several details for you to work on. Give it a try and come back to us for more help when you need it.
When you are done, y will contain all of the intermediate values.

  0 Comments

Sign in to comment.