This commit is contained in:
Sandro Zimmermann 2026-06-04 08:33:26 +02:00
commit 5010997af7
11 changed files with 8301 additions and 0 deletions

View File

@ -0,0 +1,44 @@
# Python
# AUEM
# 2026-05-06
# Begin
# --------------------------------------------------------------------------------------
# Python initialisieren:
from PIL import Image, ImageOps
import matplotlib.pyplot as pl
import numpy as np
# Parameter:
N = 10
sc_r = 100
pr = 3
fig = 1
# Import:
img = Image.open("./Bild.JPG")
img_sw = ImageOps.grayscale(img)
A = np.asarray(img_sw)
# Berechnungen;
[U, S, Vt] = np.linalg.svd(A)
U_red = U[:, :N]
S_red = S[:N]
Vt_red = Vt[:N, :]
A_red = U_red @ np.diag(S_red) @ Vt_red
G = A.size
G_red = U_red.size + S_red.size + Vt_red.size
r = G_red / G
# Anzeige der Bilder:
fh = pl.figure(fig)
pl.imshow(A, cmap="gray")
fig = fig + 1
fh = pl.figure(fig)
pl.imshow(A_red, cmap="gray")
# Ausgabe:
print("--------------------------------------------------")
print(__file__)
print("--------------------------------------------------")
print(f"Groesse original: G = {G}")
print(f"Groesse komprimiert: G_red = {G_red}")
print(f"Datenkompression: r = {r*sc_r:#.{pr}g}%")
print("--------------------------------------------------")
# --------------------------------------------------------------------------------------
# End

View File

@ -0,0 +1,28 @@
"""
Frobenius-Norm ||A||F
A Matrix:
[4 9]
[2 7]
"""
import numpy as np
import sympy as sp
# Numpy
A = np.array([[4, 9], [2, 7]])
n = np.linalg.norm(A, ord="fro")
print(n.round(4))
# Sympy
A = sp.Matrix([[4, 9], [2, 7]])
n = A.norm(ord="fro")
print(n)
"""
Ausgabe:
12.2474
5*sqrt(6)
"""

View File

@ -0,0 +1,45 @@
"""
Simpson-Regel
Integration der funktion:
2
I = | (x + sin(x))^(2/3)) dx
0
"""
import numpy as np
import scipy.integrate as ig
# Parameter
x_0 = 0
x_E = 2
n = 10
N = 201
pr = 6
f = lambda x: np.sqrt(x + np.sin(x))
# Berechnung
for k in range(0, n):
x_data = np.linspace(x_0, x_E, N)
y_data = f(x_data)
I = ig.simpson(y=y_data, x=x_data)
print(f"I = {I:#.16g} | N = {N:g}")
N *= 2
print(f"I = {I:#.{pr}g}")
"""
Ausgabe:
I = 2.490070783046884 | N = 201
I = 2.490260152603558 | N = 402
I = 2.490326897146905 | N = 804
I = 2.490350466364332 | N = 1608
I = 2.490358796310514 | N = 3216
I = 2.490361741357393 | N = 6432
I = 2.490362782708113 | N = 12864
I = 2.490363150933651 | N = 25728
I = 2.490363281138151 | N = 51456
I = 2.490363327177379 | N = 102912
I = 2.49036
"""

View File

@ -0,0 +1,45 @@
"""
Trapez-Regel
Integration der funktion:
2
I = | (x + sin(x))^(2/3)) dx
0
"""
import numpy as np
import scipy.integrate as ig
# Parameter
x_0 = 0
x_E = 2
n = 10
N = 201
pr = 6
f = lambda x: np.sqrt(x + np.sin(x))
# Berechnung
for k in range(0, n):
x_data = np.linspace(x_0, x_E, N)
y_data = f(x_data)
I = ig.trapezoid(y=y_data, x=x_data)
print(f"I = {I:#.16g} | N = {N:g}")
N *= 2
print(f"I = {I:#.{pr}g}")
"""
Ausgabe:
I = 2.490070783046884 | N = 201
I = 2.490260152603558 | N = 402
I = 2.490326897146905 | N = 804
I = 2.490350466364332 | N = 1608
I = 2.490358796310514 | N = 3216
I = 2.490361741357393 | N = 6432
I = 2.490362782708113 | N = 12864
I = 2.490363150933651 | N = 25728
I = 2.490363281138151 | N = 51456
I = 2.490363327177379 | N = 102912
I = 2.49036
"""

View File

@ -0,0 +1,37 @@
"""
LR-Zerlegung
Matrix A:
[3, 2]
[1, 4]
"""
import numpy as np
import scipy as sc
# Parameter
A = np.array([[3, 2], [1, 4]])
pr = 3
[P, L, R] = sc.linalg.lu(A)
with np.printoptions(precision=pr):
print(f"P = \n{P}\n\nL = \n{L}\n\nR = \n{R}")
"""
Ausgabe:
P =
[[1. 0.]
[0. 1.]]
L =
[[1. 0. ]
[0.333 1. ]]
R =
[[3. 2. ]
[0. 3.333]]
"""

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,45 @@
#%%
"""
Maclaurin Entwicklungen
"""
import IPython.display as dp
import sympy as sp
# Konfig
sp.init_printing()
x = sp.symbols("x")
# Parameter
n = 2
F = sp.sqrt(1 + x)
# Berechnungen
T = sp.series(F, x, 0, n+2)
# Ausgabe
dp.display(F)
dp.display(T)
# Parameter
n = 2
F = sp.log(sp.sqrt(sp.cos(x)))
# Berechnungen
T = sp.series(F, x, 0, n+3)
# Ausgabe
dp.display(F)
dp.display(T)
# Parameter
n = 2
F = 1 / (1 + 2 * sp.sin(x))
# Berechnungen
T = sp.series(F, x, 0, n+1)
# Ausgabe
dp.display(F)
dp.display(T)
# %%

View File

@ -0,0 +1,34 @@
"""
QR-Zerlegung
A Matrix:
[3 1]
[6 9]
"""
import numpy as np
import scipy as sc
# Parameter
A = np.array([[3, 1], [6, 9]])
pr = 3
# Berechnung
[Q, R] = sc.linalg.qr(A)
# Ausgabe
with np.printoptions(precision=pr):
print(f"Q = \n{Q}\n\n R = \n{R}")
"""
Ausgabe:
Q =
[[-0.447 -0.894]
[-0.894 0.447]]
R =
[[-6.708 -8.497]
[ 0. 3.13 ]]
"""

View File

@ -0,0 +1,43 @@
# %%
# Polyfit tutorial mit Plot
# Python initialisieren
import matplotlib.pyplot as plt
import numpy as np
# Parameter
x_0 = 1
x_E = 7.0
y_a = -2
y_b = 3
dg = 1
pr = 3
lw = 3
fig = 1
tc_x = np.r_[x_0 : x_E + 0.5 : 0.5]
tc_y = np.r_[y_a : y_b + 0.5 : 0.5]
# Daten
x_data = np.r_[x_0 : x_E + 1]
y_data = np.array([2.5, 2.2, 1.5, 1.0, 0.6, -0.3, -1.4])
# Berechnungen
p = np.polyfit(x_data, y_data, dg)
g_data = np.polyval(p, x_data)
# Ausgabe
print(60 * "*")
print("__file__")
print(60 * "*")
print(f"Steigung: m = {p[0]:#.{pr}g}")
print(f"y-Achsenabschnitt: q = {p[1]:#.{pr}g}")
# Plot
fh = plt.figure(fig)
plt.plot(x_data, g_data, linewidth=lw)
plt.plot(x_data, y_data, "o", linewidth=lw)
plt.xlabel(r"$x$")
plt.ylabel(r"$y$")
plt.xticks(tc_x)
plt.yticks(tc_y)
plt.grid(visible=True)
plt.axis("image")

View File

@ -0,0 +1,28 @@
"""
Spektral-Norm ||A||2
A Matrix:
[4 9]
[2 7]
"""
import numpy as np
import sympy as sp
# Numpy
A = np.array([[4, 9], [2, 7]])
n = np.linalg.norm(A, ord=2)
print(n.round(4))
# Sympy
A = sp.Matrix([[4, 9], [2, 7]])
n = A.norm(ord=2)
print(n)
"""
Ausgabe:
12.2201
sqrt(5*sqrt(221) + 75)
"""

View File

@ -0,0 +1,42 @@
"""
Singulärwertzerlegung SVD
A Matrix:
[4 6]
[3 -8]
"""
import numpy as np
import scipy as sc
# Parameter
A = np.array([[4.0, 6.0], [3.0, -8.0]])
pr = 3
# Berechnung
[U, S, Vt] = sc.linalg.svd(A)
# Ausgabe
with np.printoptions(precision=pr):
print(f"U = \n{U}\n\nS = \n{S}\n\nV = \n{Vt.T}")
"""
Ausgabe:
U =
[[-0.6 -0.8]
[ 0.8 -0.6]]
S =
[10. 5.]
V =
[[-0. -1.]
[-1. -0.]]
"""
# S = Vektor mit den Singulärwerten (o1, o2)
# Nicht die ganze Matrix:
# [10 0]
# [0 5]