Contents

Random numbers

% uniform [0, 1]
v = rand(1,1000000);
mean(v)
std(v)

% standard normal
v = randn(1,1000000);
mean(v)
std(v)
ans =
   0.500465275048761
ans =
   0.288946124163335
ans =
    -9.716953244899469e-04
ans =
   0.999581390315130

Monte Carlo to estimate pi

N = 1000000;
v = 2*rand(2,N)-1;
sum(v(1,:).^2+v(2,:).^2<1)/N*4
ans =
   3.140796000000000

Generate Brownian motion

M = 8;
dt = 0.0001;
T = 0:dt:1;
V = randn(M,length(T))*sqrt(dt);
S = cumsum(V,2);

for k = 1:M
    plot(T,S(k,:));
    hold on
end
hold on

Solve the forced harmonic oscillator symbolically

w'' + 2k/(rho*L)*w = -p0/rho*cos(omega*t)

syms w(t) k rho L p0 omega
ode = diff(w(t),t,t) + 2*k/(rho*L)*w(t) == -p0/rho*cos(omega*t)
Dw = diff(w);
cond = [ w(0)==0, Dw(0)==0] % subs(diff(w(t),t),t,0)=0
dsolve(ode,cond)
ode =
diff(w(t), t, t) + (2*k*w(t))/(L*rho) == -(p0*cos(omega*t))/rho
cond =
[w(0) == 0, subs(diff(w(t), t), t, 0) == 0]
ans =
(L*p0*exp((2^(1/2)*t*(-L*k*rho)^(1/2))/(L*rho)))/(2*(- L*rho*omega^2 + 2*k)) + (L*p0*exp(-(2^(1/2)*t*(-L*k*rho)^(1/2))/(L*rho)))/(2*(- L*rho*omega^2 + 2*k)) + (2^(1/2)*L^(1/2)*p0*exp(-(2^(1/2)*k^(1/2)*t*1i)/(L^(1/2)*rho^(1/2)))*exp((2^(1/2)*t*(-L*k*rho)^(1/2))/(L*rho))*(omega*sin(omega*t) - (2^(1/2)*k^(1/2)*cos(omega*t)*1i)/(L^(1/2)*rho^(1/2)))*1i)/(4*k^(1/2)*rho^(1/2)*(omega^2 - (2*k)/(L*rho))) - (2^(1/2)*L^(1/2)*p0*exp((2^(1/2)*k^(1/2)*t*1i)/(L^(1/2)*rho^(1/2)))*exp(-(2^(1/2)*t*(-L*k*rho)^(1/2))/(L*rho))*(omega*sin(omega*t) + (2^(1/2)*k^(1/2)*cos(omega*t)*1i)/(L^(1/2)*rho^(1/2)))*1i)/(4*k^(1/2)*rho^(1/2)*(omega^2 - (2*k)/(L*rho)))

Solve the forced harmonic oscillator numerically

w'' + 2k/(rho*L)*w = -p0/rho*cos(omega*t)

% y = [w(t), w'(t)]
k = 2;
rho = 1;
L = 1;
p0 = 1;
omega = 1;
myode = @(t,y) [y(2); -2*k/(rho*L)*y(1)-p0/rho*cos(omega*t)];
[t, Y] = ode45(myode,[0 20],[0 0]);
hold off
plot(t,Y(:,1),t,cos(omega*t),'--')