error in Euler method
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Momo
 am 16 Okt. 2018
  
    
    
    
    
    Erneut geöffnet: Walter Roberson
      
      
 am 22 Dez. 2018
            . could you please, check my code I did not get as the following pic.
for i=1:length(T)-1
      x1(i+1)=x1(i)+dX1*h;
      x2(i+1)=x2(i)+dX2*h;
      v1(i+1)=v1(i)+dX3*h;
      v2(i+1)=v2(i)+dX4*h;
  end
2 Kommentare
  James Tursa
      
      
 am 17 Okt. 2018
				Closing your question and deleting your code and comments is not appreciated on this forum since it does not help anyone else later on. Please keep your questions and comments intact for everyone to see. Thanks.
Akzeptierte Antwort
  James Tursa
      
      
 am 16 Okt. 2018
        
      Bearbeitet: James Tursa
      
      
 am 16 Okt. 2018
  
      You need to recalculate the derivatives at each time step. So all of the stuff that goes into calculating dX needs to be inside of your for-loop. Which means that all of the equations for this calculation need to be indexed. E.g., this
r=x1-x2 ;
should be this
r=x1(i)-x2(i) ;
etc.
4 Kommentare
  James Tursa
      
      
 am 16 Okt. 2018
				
      Bearbeitet: James Tursa
      
      
 am 16 Okt. 2018
  
			So, when I wrote that you needed to have your derivative calculations inside of the for-loop, I was talking about your existing for-loop in your original posted code:
for i=1:length(T)-1
    % Put all of your derivative calculations here
    x1(i+1)=x1(i)+dX(1)*h;
    x2(i+1)=x2(i)+dX(3)*h;
    v1(i+1)=v1(i)+dX(2)*h;
    v2(i+1)=v2(i)+dX(4)*h;
end
What you have done is create an additional for-loop (not my intention), and changed your original for-loop indexing (also not my intention). Instead, go back to your original for-loop indexing, and put your derivative code where I have the comment. Basically, at each step you need to recalculate the derivatives based on the current state.
  James Tursa
      
      
 am 16 Okt. 2018
				
      Bearbeitet: James Tursa
      
      
 am 16 Okt. 2018
  
			Why are you using i=1:N instead of the original i=1:length(T)-1? Why are you overwriting dx1(i) and dx2(i) each step without doing the if-test part?
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

