shm1.jl |
# shm1.jl --- simple harmonic motion # using DifferentialEquations using Plots using Printf function shm!(y,x,p,t) omega2,=p y[1] = x[2] y[2] = - omega2 * x[1] end omega = 1; omega2 = omega * omega; p=(omega2,) t0=0; T=20; tspan=(t0, T) x0=1; v0=0; X0=[x0,v0] prob = ODEProblem(shm!,X0,tspan,p) sol = solve(prob, reltol=1e-8, abstol=1e-8); plot(sol, xlim=(t0, T), ylim=(-1.2, 1.2), title="simple harmonic motion: dx/dt=y, dy/dt=-ω^2 x, x(0)=1, y(0)=0", xlabel="t", ylabel="x and y", size=(800,500)) savefig("shm1_julia.png") savefig("shm1_julia.pdf") |
shm1.jl |
# shm2.jl --- simple harmonic motion # using DifferentialEquations using Plots using Printf function shm!(y,x,p,t) omega2,=p y[1] = x[2] y[2] = - omega2 * x[1] end function draworbits(omega) omega2 = omega * omega; p=(omega2,) t0=0; T=2*pi/omega; tspan=(t0, T) for i=0:30 x0=0.1*i; v0=0; X0=[x0,v0] prob = ODEProblem(shm!,X0,tspan,p) sol = solve(prob, reltol=1e-4); if i==0 plot(sol, vars=(1,2), xlim=(-2, 2), ylim=(-2, 2), aspect_ratio=1, title="simple harmonic motion: dx/dt=y, dy/dt=-ω^2 x", xlabel="t", ylabel="x and y", legend=:none) else global fig=plot!(sol, vars=(1,2), xlim=(-2,2), ylim=(-2,2),legend=:none) end end return fig end if abspath(PROGRAM_FILE) == @__FILE__ print("こうやって実行すると時間がかかります。") draworbits(1.0) savefig("shm2_julia.png") savefig("shm2_julia.pdf") else println("draworbits(omega)") println("savefig(\"なんとか.png\")") end |