69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
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
|
|
|
|
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
|
|
|
|
|
|
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()
|
|
|
|
|