Law of motion through numerical aproximation

조회 수: 9 (최근 30일)
Urdea Andrei
Urdea Andrei 2020년 1월 9일
답변: David Hill 2020년 1월 9일
A ball of mass m=0.12 kg is a t rest at the origin of the X axis.
At the moment t0=0 a force parallel to the X axis begins to act upon the ball.
The force varies in time by the expression:
F(t)=6*sin(4*pi*t-pi/6)-0.5.
Numerically aproximate the law of motion x(t) of the ball and plot it for the time interval t=[0,10].
m=0.12
initial_time=0;
final_time=10;
N=1001;
t=linspace(initial_time,final_time,N);
dt=t(2)-t(1);
x(1)=0;
x(2)=0;
for i=2:N-1
x(i+1)=2*x(i)-x(i-1)+dt*dt*(6*sin(4*pi*t(i)-pi/6)-0.5);
end;
plot(t,x);
m=0.12 ;
initial_time=0;
final_time=10;
N=1001;
t=linspace(initial_time,final_time,N);
dt=t(2)-t(1);
The ball at t0 is at position 0 on the X axis, so x0=0
there is no initial speed so x1=x0=0
x(1)=0;
x(2)=0;
for i=2:N-1
x(i+1)=2*x(i)-x(i-1)+dt*dt*(6*sin(4*pi*t(i)-pi/6)-0.5)/m;
end
plot(t,x);
I do not think I got the correct solution to this problem, it seems a little bit weird that the ball is only moving in one direction, shouldn't it oscilate araound an center point given that the function is dependant of sin?

채택된 답변

Mark Rzewnicki
Mark Rzewnicki 2020년 1월 9일
Here's a basic integration of the system, along with plots:
% mass, initial time, final time
m = 0.12;
t0 = 0;
tf = 3;
% number of time intervals and resulting spacing dt
N = 1001;
t = linspace(t0,tf,N);
dt = t(2) - t(1);
% vectors for storage of position, velocity, and acceleration
x = zeros(1,N);
xdot = zeros(1,N);
xdoubledot = zeros(1,N);
%initial conditions for position, velocity, and acceleration
x(1) = 0;
xdot(1) = 0;
xdoubledot(1) = (6*sin(4*pi*t(1)-pi/6)-0.5)/m;
% numerical integration
for i = 2:1:N
x(i) = x(i-1) + xdot(i-1)*dt;
xdot(i) = xdot(i-1) + xdoubledot(i-1)*dt;
xdoubledot(i) = (6*sin(4*pi*t(i)-pi/6)-0.5)/m;
end
figure(1)
plot(t,xdoubledot)
title('acceleration')
figure(2)
plot(t,xdot)
title('velocity')
figure(3)
plot(t,x)
title('position')
I left the final time at 3 seconds so you can get a better picture of what's going on. I encourage you to play around with the values of t0 and tf a little bit.
Notice that you have a constant term (-0.5) added to a sinusoidal term. What do you expect the results of this "offset" to be?

추가 답변 (1개)

David Hill
David Hill 2020년 1월 9일
F=@(t)6*sin(4*pi*t-pi/6)-0.5;
t=0:.01:10;
a=F(t)/.12;
v=cumtrapz(a);
d=cumtrapz(v);
plot(t,d);

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by