from typing import List, Tuple import matplotlib.pyplot as plt def euler( initial_q: float, initial_p: float, n: int = 10000, delta: float = 0.01 ) -> Tuple[List[float], List[float]]: q_list = [] p_list = [] q = initial_q p = initial_p for _ in range(n): q_list.append(q) p_list.append(p) _q = q + delta * p _p = p - delta * q q = _q p = _p return (q_list, p_list) def symplectic_euler( initial_q: float, initial_p: float, n: int = 10000, delta: float = 0.01 ) -> Tuple[List[float], List[float]]: q_list = [] p_list = [] q = initial_q p = initial_p for _ in range(n): q_list.append(q) p_list.append(p) _q = q + delta * p _p = p - delta * _q q = _q p = _p return (q_list, p_list) fig = plt.figure() axes = fig.subplots(2) euler_result = euler(1.0, 0.0) axes[0].scatter(euler_result[0], euler_result[1], s=1) symplectic_euler_result = symplectic_euler(1.0, 0.0) axes[1].scatter(symplectic_euler_result[0], symplectic_euler_result[1], s=1) plt.savefig("graph.png")