How do I create variable vectors with a new value for each iteration of a loop?
    4 views (last 30 days)
  
       Show older comments
    
I wrote the following function, where t and y are supposed to give values for each iteration of the Euler method. However, I don't know how to properly allocate space for the values, nor ensure that the values change and are added to a 1Xn array for each iteration of the loop. Thanks!
function [t,y]=eulerMethod(f3, dt, Tf, t0, y0)
n=(Tf-t0)/dt;
nf=round(n,1);
y= zeros(1, nf);
yp = zeros(1, nf);
yn = zeros(1, nf);
tp= zeros(1, nf);
yp=y0;
tp(n+1,:);
for n=0:nf
    tp(n+1)=t0+n*dt;
    f3p(n+1)=f3(tp(n+1),yp(n+1));
    yn(n+1)=yp(n+1)+dt*f3p(n+1);
    yp(n+1) = yn(n+1);
end
t=tp;
y=yp;
end
0 Comments
Accepted Answer
  darova
      
      
 on 5 Apr 2021
        Here are some corrections
% yp=y0;      % you are replacing variable yp with y0
yp(1) = y0;   % you need to replace first value only
corrections2
tp= zeros(1, nf);   % length of array nf
for n=1:nf-1        % start from '1' index
    tp(n)=t0+n*dt;  % you can access tp(n+1). It doesn't exist
    f3p(n)=f3(tp(n),yp(n));
    yp(n+1) = yp(n) + dt*f3p(n);
    %yp(n+1) = yn(n+1); % you don't need yn variable at all
end
2 Comments
  darova
      
      
 on 5 Apr 2021
				Increase size of tp
tp= zeros(1, nf+1);   % length of array nf
for n=1:nf            % till the end
Modify tp a bit
tp(n)=t0+(n-1)*dt;  % you can access tp(n+1). It doesn't exist
More Answers (0)
See Also
Categories
				Find more on Annotations 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!
