No BSD License
-
...
sampler - function to sample density and velocities
-
...
sampler - function to sample density and velocities
-
FNewt(x,a)
Function used by the N-variable Newton's method
-
NaiveGE(a,b)
Forward elimination
-
bess(m_max,x)
Function to calculate of Bessel function
-
bess(m_max,x)
Function to calculate of Bessel function
-
colide(v,cell_n,...
colide - Function to process collisions in cells
-
colide(v,cell_n,...
colide - Function to process collisions in cells
-
fnewt(x,a)
Function used by the N-variable Newton's method
-
fund(x,n)
Return function value or derivative
-
fund(x,n)
Return function value or derivative
-
gravrk(s,time,GM)
The time is not used in this version
-
gravrk(s,time,GM)
The time is not used in this version
-
intrpf(xi,x,y)
Function to interpolate between data points
-
intrpf(xi,x,y)
Function to interpolate between data points
-
legndr(n,x)
Legendre polynomials
-
legndr(n,x)
Legendre polynomials
-
linreg(x,y,sigma)
Function to perform linear regression (fit a line)
-
linreg(x,y,sigma)
Function to perform linear regression (fit a line)
-
lorzrk(a,time,param)
Function to define the Lorenz model equations
-
lorzrk(a,time,param)
Function to define the Lorenz model equations
-
mover(x,v,npart, ...
mover - Function to move particles by free flight
-
mover(x,v,npart, ...
mover - Function to move particles by free flight
-
my_f(x,param)
Error function integrand
-
my_f(x,param)
Error function integrand
-
naivege(a,b)
x=naivege(a,b) performs naive (no pivoting) Gaussian elimination
-
pollsf(x, y, sigma, M)
Function to fit a polynomial to data
-
pollsf(x, y, sigma, M)
Function to fit a polynomial to data
-
rk4(x,t,tau,derivsRK,param)
Runge-Kutta integrator (4th order)
-
rk4(x,t,tau,derivsRK,param)
Runge-Kutta integrator (4th order)
-
rkA(x,t,tau,err,derivsRK,para...
Adaptive Runge-Kutta routine
-
rka(x,t,tau,err,derivsRK,para...
Adaptive Runge-Kutta routine
-
rombf(a,b,N,func,param)
Function to compute integrals by Romberg algorithm
-
rombf(a,b,N,func,param)
Function to compute integrals by Romberg algorithm
-
sorter(x,npart,ncell,L)
sorter - Function to sort particles into cells
-
sorter(x,npart,ncell,L)
sorter - Function to sort particles into cells
-
spinview(nviews,wait)
spinview - Routine to rotate a 3D plot
-
sprrk(a,time,param)
Function to compute 3 mass-spring system
-
sprrk(a,time,param)
Function to compute 3 mass-spring system
-
tri_GE(a,b)
Function to solve b = a*x by Gaussian elimination where
-
tri_GE(a,b)
Function to solve b = a*x by Gaussian elimination where
-
yt=sft(y)
Slow Fourier transform function
-
yt=sft(y)
Slow Fourier transform function
-
zeroj(m_order,n_zero)
Function which returns the zeros of the Bessel function J(x)
-
zeroj(m_order,n_zero)
Function which returns the zeros of the Bessel function J(x)
-
aftcs.m
-
aftcs.m
-
aftcs_p.m
-
balle.m
-
balle.m
-
balle_p.m
-
contents.m
-
contents.m
-
contents.m
-
contents.m
-
deriv.m
-
deriv.m
-
deriv_p.m
-
dftcs.m
-
dftcs.m
-
dftcs_p.m
-
dsmceq.m
-
dsmceq.m
-
dsmceq_p.m
-
dsmcne.m
-
dsmcne.m
-
dsmcne_p.m
-
factn.m
-
factn.m
-
facts.m
-
facts.m
-
fftpoi.m
-
fftpoi.m
-
fftpoi_p.m
-
galrkn.m
-
galrkn.m
-
galrkn_p.m
-
interp.m
-
interp.m
-
interp_p.m
-
jacobi.m
-
jacobi.m
-
jacobi_p.m
-
lorenz.m
-
lorenz.m
-
lorenz_p.m
-
lsftest.m
-
lsftest.m
-
lsftst_p.m
-
newtn.m
-
newtn.m
-
newtn_p.m
-
orbe.m
-
orbe.m
-
orbe_p.m
-
orbec.m
-
orbec.m
-
orbrk.m
-
orbrk.m
-
orbrka.m
-
orbrka.m
-
orthog.m
-
orthog.m
-
pendul.m
-
pendul.m
-
pendul_p.m
-
pendulv.m
-
pendulv.m
-
rndoff.m
-
rndoff.m
-
rndoff_p.m
-
schro.m
-
schro.m
-
schro_p.m
-
schrot.m
-
schrot.m
-
sftdem_p.m
-
sftdemo.m
-
sftdemo.m
-
sprfft.m
-
sprfft.m
-
sprfft_p.m
-
traffic.m
-
traffic.m
-
trafic_p.m
-
View all files
|
|
| pendul.m |
% pendul - Program to compute the motion of a simple pendulum
% using the Euler method
clear; help pendul % Clear the memory and print header
theta0 = input('Enter initial angle (in degrees) - ');
theta = theta0*pi/180; % Convert angle to radians
omega = 0; % Set the initial velocity
tau = input('Enter time step - ');
g_over_L = 1; % The constant g/L
time_old = -1; % Fake value (see below)
irev = 0; % Used to count number of reversals
nstep = 300; % Number of time steps
time = 0;
%%%%% MAIN LOOP %%%%%
for istep=1:nstep
t_plot(istep) = time; % Record time and angle
th_plot(istep) = theta*180/pi; % for plotting
accel = -g_over_L*sin(theta); % Gravitational acceleration
theta_old = theta;
theta = theta + tau*omega; % Euler method
omega = omega + tau*accel;
time = time + tau;
if( theta*theta_old < 0 ) % Test position for sign change
fprintf('Turning point at time t= %f \n',time);
if( time_old < 0 ) % If this is the first change,
time_old = time; % just record the time
else
irev = irev + 1; % Increment the number of reversals
period(irev) = 2*(time - time_old);
time_old = time;
end
end
end
fprintf('Average period = %g +/- %g\n',mean(period),...
std(period)/sqrt(irev));
% Graph the oscillations
plot(t_plot,th_plot,'+');
xlabel('Time');
ylabel('Theta (degrees)');
title('Simple pendulum');
|
|
Contact us at files@mathworks.com