From ea59d8ab22c1d81bf097d4de8115e2246c2ebd7c Mon Sep 17 00:00:00 2001 From: leobr Date: Mon, 10 Oct 2022 08:40:14 +0200 Subject: [PATCH] code improvement ideas --- .gitignore | 1 + Schenk_Brandenberger_S2_Aufg2.py | 36 ++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 5d381cc..ce3c303 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,4 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +/Leo_2.py diff --git a/Schenk_Brandenberger_S2_Aufg2.py b/Schenk_Brandenberger_S2_Aufg2.py index e71da18..6faefa1 100644 --- a/Schenk_Brandenberger_S2_Aufg2.py +++ b/Schenk_Brandenberger_S2_Aufg2.py @@ -6,19 +6,28 @@ xmin = 1.99 xmax = 2.01 x_number_of_points = 500 xsteps = (xmax - xmin) / x_number_of_points + + def f1(x): return x ** 7 - 14 * x ** 6 + 84 * x ** 5 - 280 * x ** 4 + 560 * x ** 3 - 672 * x ** 2 + 448 * x - 128 + + def f2(x): return (x - 2) ** 7 + + x1 = np.arange(xmin, xmax + xsteps, xsteps) + +#todo yf1 = [f1(x_value) for x_value in x1] +#todo yf2 = [f2(x_value) for x_value in x1] yf1 = np.array([]) yf2 = np.array([]) for x_value in x1: yf1 = np.append(yf1, f1(x_value)) yf2 = np.append(yf2, f2(x_value)) -plt.plot(x1, yf1) -plt.plot(x1, yf2) -plt.legend(["f1(x)", "f2(x)"]) +plt.plot(x1, yf1, label='f1(x)') +plt.plot(x1, yf2, label='f2(x)') +plt.legend() plt.title("Aufgabe 2a") plt.figure() @@ -29,7 +38,7 @@ print("min f2: ", min(yf2), "max f2: ", max(yf2)) # sodass Rundungsfehler entstehen wenn die Werte als Fliesskommazahlen # zwischengespeichert werden. In den zwei Funktionen f1 und f2 werden die # Rechenoperationen in einer anderen Reihenfolge ausgeführt. -# bei f1 werden die Terme addiert. Entsprechend ist beim Runden nur der Termin mit dem +# bei f1 werden die Terme addiert. Entsprechend ist beim Runden nur der Term mit dem # grössten Exponent dominant. # bei f2 erhält man immer eine Zahl nahe bei 0. @@ -37,15 +46,22 @@ print("min f2: ", min(yf2), "max f2: ", max(yf2)) xmin = -10 ** -14 xmax = 10 ** -14 xsteps = 10 ** -17 + + def g1(x): return x / (np.sin(1 + x) - np.sin(1)) + + x2 = np.arange(xmin, xmax + xsteps, xsteps) +# todo yg1 = [g1(x_value) for x_value in x2] ? yg1 = np.array([]) for x_value in x2: yg1 = np.append(yg1, g1(x_value)) -plt.plot(x2, yg1) +plt.plot(x2, yg1, label='g1(x)') +#todo print(f'min g1: {min(yg1)} max g1: {max(yg1)}') print("min g1: ", min(yg1), "max g1: ", max(yg1)) + # Die Berechnung des Grenzwertes für x --> 0 g(x) ist nicht stabil. # Der Grenzwert scheint unendlich gross / klein zu sein. @@ -53,12 +69,16 @@ print("min g1: ", min(yg1), "max g1: ", max(yg1)) # a = 1+x, b = 1 def g2(x): return x / (2 * np.cos((1 + x + 1) / 2) * np.sin((x) / 2)) + +#todo yg2 = [g2(x_value) for x_value in x2] yg2 = np.array([]) + for x_value in x2: yg2 = np.append(yg2, g2(x_value)) -plt.plot(x2, yg2) +plt.plot(x2, yg2, label='g2(x)') +#todo print(f'min g2: {min(yg2)} max g2: {max(yg2)}') print("min g2: ", min(yg2), "max g2: ", max(yg2)) -plt.legend(["g1(x)", "g2(x)"]) +plt.legend() plt.title("Aufgabe 2bc") # Der Grenzwert für x = 0 beträgt 1.85. Die Funktion ist nun stabil. Bei g1 ist der Nenner 0 wenn x = 0 @@ -67,5 +87,3 @@ plt.title("Aufgabe 2bc") plt.show() - -