def demo(): """ Demonstrate difference between Euler-Cromer and the scheme for the corresponding 2nd-order ODE. """ I = 1.2 w = 2.0 T = 5 dt = 2 / w # longest possible time step from vib_undamped import solver as solver2 # 2nd-order ODE import scitools.std as plt for k in range(4): dt /= 4 u2, t2 = solver2(I, w, dt, T) u, v, t = solver(I, w, dt, T) plt.figure() plt.plot(t, u, t2, u2, legend=('Euler-Cromer', 'center scheme for $u' '+u=0$'), title='dt=%.3g' % dt) raw_input() plt.savefig('ECvs2nd_%d' % k + '.png') plt.savefig('ECvs2nd_%d' % k + '.pdf')
def test_staggered(): I = 1.2; w = 2.0; T = 5; dt = 2/w u, t, v, t_v = solver(I, w, dt, T) from vib_undamped import solver as solver2 u2, t2 = solver2(I, w, dt, T) error = abs(u - u2).max() nt.assert_almost_equal(error, 0, places=14)
def test_staggered(): I = 1.2; w = 2.0; T = 5; dt = 2/w u, t, v, t_v = solver(I, w, dt, T) from vib_undamped import solver as solver2 u2, t2 = solver2(I, w, dt, T) error = abs(u - u2).max() tol = 1E-14 assert error < tol
def test_solver(): """ Test solver with fixed ic against equivalent scheme for the 2nd-order ODE u'' + u = 0. """ I = 1.2; w = 2.0; T = 5 dt = 2/w # longest possible time step u, v, t = solver_ic_fix(I, w, dt, T) from vib_undamped import solver as solver2 # 2nd-order ODE u2, t2 = solver2(I, w, dt, T) error = abs(u - u2).max() nt.assert_almost_equal(error, 0, places=14)
def test_solver(): """ Test solver with fixed ic against equivalent scheme for the 2nd-order ODE u'' + u = 0. """ I = 1.2; w = 2.0; T = 5 dt = 2/w # longest possible time step u, v, t = solver_ic_fix(I, w, dt, T) from vib_undamped import solver as solver2 # 2nd-order ODE u2, t2 = solver2(I, w, dt, T) error = np.abs(u - u2).max() tol = 1E-14 assert error < tol
def test_solver(): """ Test solver with fixed initial condition against equivalent scheme for the 2nd-order ODE u'' + u = 0. """ I = 1.2; w = 2.0; T = 5 dt = 2/w # longest possible time step u, v, t = solver_ic_fix(I, w, dt, T) from vib_undamped import solver as solver2 # 2nd-order ODE u2, t2 = solver2(I, w, dt, T) error = np.abs(u - u2).max() tol = 1E-14 assert error < tol
def test_solver(): """ Test solver with fixed ic against equivalent scheme for the 2nd-order ODE u'' + u = 0. """ I = 1.2 w = 2.0 T = 5 dt = 2 / w # longest possible time step u, v, t = solver_ic_fix(I, w, dt, T) from vib_undamped import solver as solver2 # 2nd-order ODE u2, t2 = solver2(I, w, dt, T) error = abs(u - u2).max() nt.assert_almost_equal(error, 0, places=14)
def demo(): """ Demonstrate difference between Euler-Cromer and the scheme for the corresponding 2nd-order ODE. """ I = 1.2; w = 2.0; T = 5 dt = 2/w # longest possible time step from vib_undamped import solver as solver2 # 2nd-order ODE from scitools.std import plot, figure, savefig for k in range(4): dt /= 4 u2, t2 = solver2(I, w, dt, T) u, v, t = solver(I, w, dt, T) figure() plot(t, u, t2, u2, legend=('Euler-Cromer', 'center scheme for $u''+u=0$'), title='dt=%.3g' % dt) raw_input() savefig('ECvs2nd_%d' % k + '.png') savefig('ECvs2nd_%d' % k + '.pdf')
def demo(): """ Demonstrate difference between Euler-Cromer and the scheme for the corresponding 2nd-order ODE. """ I = 1.2 w = 2.0 T = 5 dt = 2 / w # longest possible time step from vib_undamped import solver as solver2 # 2nd-order ODE import scitools.std as plt for k in range(4): dt /= 4 u2, t2 = solver2(I, w, dt, T) u, v, t = solver(I, w, dt, T) plt.figure() plt.plot(t, u, t2, u2, legend=("Euler-Cromer", "center scheme for $u" "+u=0$"), title="dt=%.3g" % dt) raw_input() plt.savefig("ECvs2nd_%d" % k + ".png") plt.savefig("ECvs2nd_%d" % k + ".pdf")