Simulating pendulum with a for loop

9 vues (au cours des 30 derniers jours)
Laidog
Laidog le 26 Août 2022
Commenté : Voss le 26 Août 2022
I was asked to simulate a pendulum with a for loop. However, I was struggling with the hold on and off command, and the animation I generated only consists of the x and y points, but the line that connects to moving x and y points remains at the original position. Any help or explanation will be appreicated.
Below is my code so far
L = 2;
g = 9.81;
squarerootvalue_gl = sqrt(g./L);
squarerootvalue_lg = sqrt(L./g);
T = 2 .* pi .* squarerootvalue_lg;
t = 0:0.01:T;
theta = pi./3 .* cos(squarerootvalue_gl*t);
x = L .* sin(theta);
y = L .* (1 - cos(theta));
A = [0 x];
B = [L y];
figure
line(A,B)
hold on
axis equal
for i = 1:length(t)
plot (A(i),B(i),'b.', 'MarkerSize', 10)
drawnow
end

Réponses (1)

Voss
Voss le 26 Août 2022
Notice that in each iteration of your loop you plot one point: (A(i),B(i)). That's why only the end of the pendulum shows up. If you want to show the entire pendulum moving, you have to plot two points - the other one being the fixed point at the top of the pendulum, (0,L), which is also (A(1),B(1)).
L = 2;
g = 9.81;
squarerootvalue_gl = sqrt(g./L);
squarerootvalue_lg = sqrt(L./g);
T = 2 .* pi .* squarerootvalue_lg;
t = 0:0.01:T;
theta = pi./3 .* cos(squarerootvalue_gl*t);
x = L .* sin(theta);
y = L .* (1 - cos(theta));
A = [0 x];
B = [L y];
figure
temp = [min(A) max(A)];
axis([temp 1+temp]);
p = line(NaN, NaN, 'Color','b', 'Marker','.', 'MarkerSize', 10);
for i = 2:length(t)
set(p,'XData',A([1 i]),'YData',B([1 i]));
drawnow
end
  4 commentaires
Laidog
Laidog le 26 Août 2022
I don't know how to upload my animation here, but when I run it, it lasted less than 1 second, and it didn't even swing past the origin. I am just confused what's wrong.
Voss
Voss le 26 Août 2022
Post your code as it is now.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by