diff --git a/src/lineare_algebra/task3.py b/src/lineare_algebra/task3.py new file mode 100644 index 0000000..cae43af --- /dev/null +++ b/src/lineare_algebra/task3.py @@ -0,0 +1,85 @@ +#%% +import numpy as np +import sympy as sp +from IPython.display import display, Math + +#%% +# Parameter +A = np.array([[1,3,-1],[4,-2,8]]) +B = np.array([[-3,9,3],[-6,6,3]]) + +# Layout +print(60 * "-") +print("Aufgabe 3. Matrizen berechnen (Numpy)") +print(__file__) +print(60 * "-") + +#Berechnung +C=A+B +D=-2*A +E=(1/3)*B +F=2*B-A + +#Ausgabe +print(f"C = {C}") +print(f"D = {D}") +print(f"E = {E}") +print(f"F = {F}") +print(60 * "-") + +#%% +# Parameters +A = sp.Matrix([[1, 3, -1], [4, -2, 8]]) +B = sp.Matrix([[-3, 9, 3], [-6, 6, 3]]) + +# Layout +print("-" * 60) +print("Aufgabe 3. Matrizen berechnen (Sympy)") +print(__file__) +print("-" * 60) + +# Berechnung +C = A + B +D = -2 * A +E = sp.Rational(1, 3) * B # ← keeps fractions exact, e.g. 1 not 0.333... +F = 2 * B - A + +# Ausgabe – symbolic, paper-style +for name, matrix in [("C", C), ("D", D), ("E", E), ("F", F)]: + display(Math(rf"{name} = {sp.latex(matrix)}")) + +print("-" * 60) + +# %% +# Parameters +A = sp.Matrix([[4,-3,2],[6,2,5],[-1,-2,3]]) +B = sp.Matrix([[3,4],[1,2],[5,6]]) +u = sp.Matrix([0,2,-4]) +v = sp.Matrix([1,3,-3]) + +# Layout +print("-" * 60) +print("Aufgabe 6. Produkte mit Matrizen") +print(__file__) +print("-" * 60) + +# Berechnung +berechnungen = [ + ("a", lambda: A * B), + ("b", lambda: B * A), + ("c", lambda: A * u), + ("d", lambda: A ** 2), + ("e", lambda: B * B), + ("f", lambda: v.T * u), + ("g", lambda: v * u), + ("h", lambda:u * v.T), + ("i", lambda: B.T * v), + ("j", lambda: v.T * B) +] + +for name, berechnung in berechnungen: + try: + result = berechnung() + display(Math(rf"{name} = {sp.latex(result)}")) + except Exception as e: + display(Math(rf"{name} = \text{{Fehler: }} \text{{{e}}}")) \ No newline at end of file