matrix hübsch mit tabulate und ruff check compute.py und pyproject.toml
This commit is contained in:
1 parent
b7669e82e8
commit
a484b78c22
2 files changed
+20
-7
No files matched your search
+19
-7
@@ -1,12 +1,16 @@
|
|||||||
"""Hilfsfunktionen für grundlegende Matrixoperationen."""
|
"""Hilfsfunktionen für grundlegende Matrixoperationen."""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from typing import List, Sequence, TypeVar
|
|
||||||
|
from collections.abc import Sequence
|
||||||
|
from typing import TypeVar
|
||||||
|
|
||||||
Number = TypeVar("Number", int, float)
|
Number = TypeVar("Number", int, float)
|
||||||
|
|
||||||
|
|
||||||
def matmul(a: Sequence[Sequence[Number]], b: Sequence[Sequence[Number]]) -> List[List[Number]]:
|
def matmul(
|
||||||
|
a: Sequence[Sequence[Number]], b: Sequence[Sequence[Number]]
|
||||||
|
) -> list[list[Number]]:
|
||||||
"""
|
"""
|
||||||
Multipliziert zwei Matrizen miteinander.
|
Multipliziert zwei Matrizen miteinander.
|
||||||
|
|
||||||
@@ -29,13 +33,15 @@ def matmul(a: Sequence[Sequence[Number]], b: Sequence[Sequence[Number]]) -> List
|
|||||||
raise ValueError("Matrix a ist nicht rechteckig")
|
raise ValueError("Matrix a ist nicht rechteckig")
|
||||||
|
|
||||||
if len(b) != n:
|
if len(b) != n:
|
||||||
raise ValueError("Die Anzahl der Spalten in a muss der Anzahl der Zeilen in b entsprechen")
|
raise ValueError(
|
||||||
|
"Die Anzahl der Spalten in a muss der Anzahl der Zeilen in b entsprechen"
|
||||||
|
)
|
||||||
p = len(b[0])
|
p = len(b[0])
|
||||||
for row in b:
|
for row in b:
|
||||||
if len(row) != p:
|
if len(row) != p:
|
||||||
raise ValueError("Matrix b ist nicht rechteckig")
|
raise ValueError("Matrix b ist nicht rechteckig")
|
||||||
|
|
||||||
result: List[List[Number]] = [[0 for _ in range(p)] for _ in range(m)]
|
result: list[list[Number]] = [[0 for _ in range(p)] for _ in range(m)]
|
||||||
for i in range(m):
|
for i in range(m):
|
||||||
for j in range(p):
|
for j in range(p):
|
||||||
total: Number = 0
|
total: Number = 0
|
||||||
@@ -45,7 +51,7 @@ def matmul(a: Sequence[Sequence[Number]], b: Sequence[Sequence[Number]]) -> List
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def transpose(matrix: Sequence[Sequence[Number]]) -> List[List[Number]]:
|
def transpose(matrix: Sequence[Sequence[Number]]) -> list[list[Number]]:
|
||||||
"""
|
"""
|
||||||
Transponiert eine Matrix.
|
Transponiert eine Matrix.
|
||||||
|
|
||||||
@@ -65,7 +71,7 @@ def transpose(matrix: Sequence[Sequence[Number]]) -> List[List[Number]]:
|
|||||||
|
|
||||||
n_rows = len(matrix)
|
n_rows = len(matrix)
|
||||||
n_cols = row_len
|
n_cols = row_len
|
||||||
transposed: List[List[Number]] = [[0] * n_rows for _ in range(n_cols)]
|
transposed: list[list[Number]] = [[0] * n_rows for _ in range(n_cols)]
|
||||||
for i in range(n_rows):
|
for i in range(n_rows):
|
||||||
for j in range(n_cols):
|
for j in range(n_cols):
|
||||||
transposed[j][i] = matrix[i][j]
|
transposed[j][i] = matrix[i][j]
|
||||||
@@ -74,8 +80,9 @@ def transpose(matrix: Sequence[Sequence[Number]]) -> List[List[Number]]:
|
|||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
|
||||||
# ich soll was ändern
|
# ich soll was ändern
|
||||||
def rot_2D(theta: Number) -> List[List[Number]]:
|
def rot_2D(theta: Number) -> list[list[Number]]:
|
||||||
"""
|
"""
|
||||||
Erstellt die 2D-Rotationsmatrix für einen gegebenen Winkel.
|
Erstellt die 2D-Rotationsmatrix für einen gegebenen Winkel.
|
||||||
|
|
||||||
@@ -91,3 +98,8 @@ def rot_2D(theta: Number) -> List[List[Number]]:
|
|||||||
cos_t = math.cos(theta)
|
cos_t = math.cos(theta)
|
||||||
sin_t = math.sin(theta)
|
sin_t = math.sin(theta)
|
||||||
return [[cos_t, -sin_t], [sin_t, cos_t]]
|
return [[cos_t, -sin_t], [sin_t, cos_t]]
|
||||||
|
|
||||||
|
|
||||||
|
from tabulate import tabulate
|
||||||
|
|
||||||
|
print(tabulate(rot_2D(1.0)))
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "matrixmania"
|
name = "matrixmania"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = ["tabulate", "ruff"]
|
||||||
Reference in new issue
Block a user