Polt an object in uniform circular motion with Euler method

9 vues (au cours des 30 derniers jours)
Lukas
Lukas le 20 Oct 2022
Modifié(e) : James Tursa le 20 Oct 2022
Hi guys,
I have a little problem with a task that I have to solve. The task is described as follows here:
When I plot my code the points do not go into the negative range.
Here is my code and the plot:
clear
ac(1) = 0.5
ac = 0.5000
xi(1) = 2
xi = 2
yi(1) = 0
yi = 0
xvi(1) = 0
xvi = 0
yvi(1) = 1
yvi = 1
t(1) = 0;
h = 0.1;
Vx(1) = ((-ac*xi(1)) / sqrt(xi(1)^2+yi(1)^2))*t(1)
Vx = 0
Vy(1) = ((-ac*yi(1)) / sqrt(xi(1)^2+yi(1)^2))*t(1)+1
Vy = 1
xstart = 1;
xend = 20;
xiter = (xend-xstart)/h;
for i=1:xiter
t(i+1) = t(i) + h;
xi(i+1) = xi(i) + h * Vx(i);
yi(i+1) = yi(i) + h * Vy(i);
Vx(i+1) = ((-ac*xi(i+1)) / sqrt(xi(i+1)^2+yi(i+1)^2))*t(i+1);
Vy(i+1) = ((-ac*yi(i+1)) / sqrt(xi(i+1)^2+yi(i+1)^2))*t(i+1)+1;
end
plot(xi,yi, '-bo')
title('Circular Euler Method')
xlabel('X')
ylabel('Y')
axis([-3 3 -3 3])
I think the result should look more like this:
Thanks in advance for your help!!
Greetings Lukas

Réponses (1)

James Tursa
James Tursa le 20 Oct 2022
Modifié(e) : James Tursa le 20 Oct 2022
So you have made a good start, but you have errors in your derivatives ... why do you have t's in your derivative equations? There are no t's in the derivative formulas you were given, so they shouldn't appear in your equations.
Also, you kind of have a hybrid method going on in your code. The positions use Euler's Method, but the velocity doesn't. I think the intent of the exercise is to use Euler's Method for everything.
The general code, using your code as an outline, would be something like this:
% In all the following code, PUT THE UNITS USED FOR ANY NUMBERS IN COMMENTS OFF TO THE RIGHT!
___ % Put code here for any constants
___ % Put code here for any fixed calculations, such as h, t_start, t_end, xiter, etc.
___ % Put code here to allocate your state variables xi, yi, Vx, Vy, and t
% Here is the code for initial conditions
t(1) = ___
xi(1) = ___
yi(1) = ___
Vx(1) = ___
Vy(1) = ___
% Now the Euler integration loop
for i=1:xiter
t(i+1) = t(i) + h;
xi(i+1) = xi(i) + h * Vx(i); % Euler step for xi
yi(i+1) = yi(i) + h * Vy(i); % Euler step for yi
Ax = ___ % you fill this in based on xi(i) and yi(i), NO t's!
Ay = ___ % you fill this in based on xi(i) and yi(i), NO t's!
Vx(i+1) = Vx(i) + h * Ax; % Euler step for Vx
Vy(i+1) = Vy(i) + h * Ay; % Euler step for Vy
end
Your job is to fill in the blanks above. The initial conditions are just the numbers you were given (but put the units in comments off to the side). The Ax and Ay are simply the formulas you were given based on the current x and y positions, which are xi(i) and yi(i). Note there are no t's in the Ax and Ay formulas. Acceleration is only dependent on position, not time.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by