Kontrollstrukturen
Contents
Kontrollstrukturen#
Die wichtigsten Typen von Kontrollstrukturen sind:
if else Abfrage
for Schleife
while Schleife
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
if else Abfrage#
Beispiel: Determinante und inverse Matrix
Falls eine Matrix eine Determinante nicht Null hat, ist sie invertierbar.
A = np.array([[1, 2],
[3, 4]])
print(A)
[[1 2]
[3 4]]
if np.linalg.det(A) != 0:
B = 1/np.linalg.det(A)*np.array([ [ A[1,1], -A[0,1] ],
[-A[1,0], A[0,0] ] ])
print(B)
print(np.linalg.inv(A))
else:
print("Matrix ist nicht invertierbar.")
[[-2. 1. ]
[ 1.5 -0.5]]
[[-2. 1. ]
[ 1.5 -0.5]]
# Probe:
np.dot(A, B) # oder A@B
array([[1., 0.],
[0., 1.]])
for Schleife#
Beispiel: Arrhenius-Gleichung
Die Arrhenius-Gleichung, benannt nach Svante Arrhenius, beschreibt näherungsweise eine quantitative Temperaturabhängigkeit bei physikalischen und vor allem chemischen Prozessen, bei denen auf molekularer Ebene eine Aktivierungsenergie überwunden werden muss. Die Arrhenius-Gleichung ist eine phänomenologische Beziehung und gilt für sehr viele chemische Reaktionen. Unter anderem wird auch das Alterungsverhalten von Lithium-Ionen-Akkumulatoren damit beschreibbar.
Die Arrhenius-Gleichung beschreibt in der chemischen Kinetik für den Spezialfall monomolekularer Reaktionen die quantitative Abhängigkeit der Reaktionsgeschwindigkeitskonstanten \(k\) von der Temperatur: $\(k = A e^{\frac{-E_A}{RT}}\)$ mit
\(A\) … präexponentieller oder Frequenzfaktor
\(E_A\) … Aktivierungsenergie (Einheit: J mol\(^{-1}\))
\(R\) … universelle Gaskonstante (8,314 J K\(^{-1}\) mol\(^{-1}\))
\(T\) … absolute (thermodynamische) Temperatur (Einheit: K)
Quelle: https://de.wikipedia.org/wiki/Arrhenius-Gleichung
A = 1
EA_values = np.arange(10, 200, 50)
R = 8.314
T = np.linspace(1, 500, num = 100)
plt.figure(figsize=(6,4))
for EA in EA_values:
k = A*np.exp(-EA/(R*T))
plt.plot(T, k, label="EA = {:d} J/mol".format(EA), linewidth=2)
plt.legend(loc='best')
plt.xlabel('T')
plt.ylabel('k')
plt.grid(True)

while Schleife#
Beispiel: Collatz-Problem
Das Collatz-Problem, auch als (3n+1)-Vermutung bezeichnet, ist ein ungelöstes mathematisches Problem, das 1937 von Lothar Collatz gestellt wurde. Bei dem Problem geht es um Zahlenfolgen, die nach einem einfachen Bildungsgesetz konstruiert werden:
Beginne mit irgendeiner natürlichen Zahl \(n>0\).
Ist \(n\) gerade, so nimm als Nächstes \(n/2\),
Ist \(n\) ungerade, so nimm als Nächstes \(3n+1\).
Wiederhole die Vorgehensweise mit der erhaltenen Zahl.
So erhält man zum Beispiel für die Startzahl \(n=19\) die Folge 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, … Anscheinend mündet jede Folge mit \(n>0\) in den Zyklus 4, 2, 1, unabhängig davon, welche Startzahl \(n\) man probiert hat. Die Collatz-Vermutung lautet: Jede so konstruierte Zahlenfolge mündet in den Zyklus 4, 2, 1, egal, mit welcher natürlichen Zahl \(n>0\) man beginnt.
Trotz zahlreicher Anstrengungen gehört diese Vermutung noch immer zu den ungelösten Problemen der Mathematik. Mehrfach wurden Preise für eine Lösung ausgelobt.
Quelle: https://de.wikipedia.org/wiki/Collatz-Problem
n = 70
while True:
if n % 2 == 0: # Der Modulo Operator % liefert den Rest der Division.
n = n/2
else:
n = 3 * n + 1
print(n)
if n == 1:
break
35.0
106.0
53.0
160.0
80.0
40.0
20.0
10.0
5.0
16.0
8.0
4.0
2.0
1.0