From 2f141642f68a8565cf6647dd51e4ebe8cc47812e Mon Sep 17 00:00:00 2001 From: leobr Date: Thu, 27 Oct 2022 21:31:55 +0200 Subject: [PATCH] added A2.py --- Schenk_Brandenberger_S4_Aufg2.py | 66 ++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/Schenk_Brandenberger_S4_Aufg2.py b/Schenk_Brandenberger_S4_Aufg2.py index e69de29..6e78d3e 100644 --- a/Schenk_Brandenberger_S4_Aufg2.py +++ b/Schenk_Brandenberger_S4_Aufg2.py @@ -0,0 +1,66 @@ +import numpy as np +import matplotlib.pyplot as plt + +# a) +# Durch ausprobieren, von unterschiedlichen a's +# in die untere Funktion ergibt sich folgendes: +# a anziehend: +# [0.25, 0.5, 1.00, 1.50, 2.00, 2.50, 3.00] +# a abstossend: +# [3.25, 3.75, 4.0] + +# b) +# Für die Aufgabe hat der Fixpunkt die bedeutung das die Anzahl Neuerkrankung gleich ist wie die der gesund +# werdenden Kindern, somit bleibt die Anzahl von kranken Kindern nach einer gewissen Zeit konstant. + +# c) +# Weil der Fipunkt immer gleich bleibt, kann man folgendes annehmen: + +# k(i) = k(i + 1) = k + +# Fixpunktgleichung: k = a * k * (1-k) + +# Aufgelöst nach a: + +# k = a * k * (1-k) +# 1 = a * (1-k) +# 1 / (1-k) = a |Aufgelöst nach a = alpha + +# Aufgelöst nach k: + +# 1 / (1-k) = a | *(1-k) +# 1 = a * (1-k) | :a +# 1 / a = 1 - k | +k +# k + 1 / a = 1 | - (1 / a) +# k = 1 - (1 / a) |Aufgelöst nach k + +# Damit gilt: +# Für alle a ≤ 1 die Krankheit stirbt aus. +# Für alle a > 1 die Krankheit bleibt erhalten. + +import numpy as np +import matplotlib.pyplot as plt + +alphaList = np.array([0.25, 0.5, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 2.50, 2.75, 3.00]) # alpha anziehend +alphaList = np.append(alphaList, [3.25, 3.5, 3.75, 4.0]) # alpha abstossend +k = np.arange(0.00, 4.00, pow(10, -2)) # x-Werte +for currentAlpha in alphaList: + y = fixpunkt(currentAlpha) + plt.title('Alpha: ' + str(currentAlpha)) + plt.xlabel('alpha-Werte') + plt.ylabel('y-Werte der Iterationsformel') + plt.plot(y) + plt.grid() + plt.show() + + +def fixpunkt(alpha): + print('Alpha:', alpha) + k = 0.1 + F = lambda x: alpha * x * (1 - x) + y = np.array([]) + for j in range(100): + y = np.append(y, k) + k = F(k) # y-Werte, Fixpunktgleichung: k = a * k * (1-k) + print(y) + return y