Korrekte Berechnung des Lyapunov Exponenten?
Berechnet dieser Code den Lyapunov Exponent richtig? the10 = 2 the20 = 0 the1_d0 = 10 the2_d0 = 10 initial_conditions = [the10, the1_d0, the20, the2_d0] t = np.linspace(0, 100, 3000) pertubation = 0.01 initial_conditions_perturbed = [the10 + pertubation, the1_d0 + pertubation, the20 + pertubation, the2_d0+pertubation] ans = solve_ivp(dSdt, (0, t.max()), t_eval=t, args=(k, l0, m1, m2, r1, r2, M0), y0=initial_conditions, method='DOP853', rtol=1e-10, atol=1e-10) ans_perturbed = solve_ivp(dSdt, (0, t.max()), t_eval=t, args=(k, l0, m1, m2, r1, r2, M0), y0=initial_conditions_perturbed, method='DOP853', rtol=1e-10, atol=1e-10) diff = ans.y - ans_perturbed.y betrag_diff = np.linalg.norm(diff, axis=0) lyapunov_array =[] for time_index, val in enumerate(t): if time_index != 0: lyapunov_array.append(np.log(betrag_diff[time_index]/pertubation)/val) else: lyapunov_array.append(0) lyapunov_exponent = np.mean(lyapunov_array) Die Simulationen (ans, ans_pertubated) sind korrekt. Das Problem das ich habe ist dass wenn ich Lyapunov_array gegen die Zeit plote, es gegen 0 konvertiert. Je länger ich die Simulation also laufen lassen würde desto kleiner wäre der Lyapunov Exponent, was ja nicht sein kann.
