import numpy as np import matplotlib.pyplot as plt def s2n(s1n): return np.sqrt(2 - 2 * np.sqrt(1 - ((s1n ** 2) / 4))) def s2n_new(s1n): return np.sqrt((s1n ** 2) / (2 * (1 + np.sqrt(1 - ((s1n ** 2) / 4))))) r = 1 # Radius n = 6 # Anzahl Ecken sn = r sn_new = r x = np.array([]) y = np.array([]) y_new = np.array([]) for i in range(50): sum_s = sn * n sum_s_new = sn_new * n pi2 = sum_s pi2_new = sum_s_new print(f'n: {n} sn: {sn_new} pi: {pi2}') x = np.append(x, n) y = np.append(y, pi2) y_new = np.append(y_new, pi2_new) n = n * 2 sn = s2n(sn) sn_new = s2n_new(sn_new) plt.plot(x, y, label='2*pi') plt.plot(x, y_new, label='2*pi_new') plt.xscale('log', base=2) plt.xlim((2 ** 3, 2 ** 31)) plt.ylim((6.25, 6.3)) plt.legend() plt.title("Aufgabe 3") plt.show() # mit der ersten Formel stimmt der berechnete Wert ab n = 50331648 nicht mehr. # Durch Rundungsfehler steigt der Wert fälschlicherweise an und fällt anschliessend durch # Auslöschung auf 0. # mit der zweiten Formel tritt der Fehler nicht auf und der Wert nähert sich an 2*pi