HM1_Aufgabenserie4/Schenk_Brandenberger_S4_Auf...

67 lines
1.7 KiB
Python
Raw Normal View History

2022-10-27 21:31:55 +02:00
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