From c97d23edee3e224f1bcba0add74b61934ad69ff7 Mon Sep 17 00:00:00 2001 From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de> Date: Mon, 02 Jun 2025 11:34:19 +0200 Subject: [PATCH] Vorlesung 02.06.2025 --- /dev/null | 23 ----------- polymonial/polynomial.py | 22 +++++++++++ polymonial/README.md | 23 +++++++++++ polymonial/polynomial_test.py | 28 ++++++++++++++ 4 files changed, 73 insertions(+), 23 deletions(-) diff --git a/04-schleife/canvas-bezier/blumen.py b/04-schleife/canvas-bezier/blumen.py deleted file mode 100644 index 1641f3c..0000000 --- a/04-schleife/canvas-bezier/blumen.py +++ /dev/null @@ -1,23 +0,0 @@ -import turtle - -fenster_breite = 800 -fenster_hoehe = 800 - -screen = turtle.Screen() - -screen.setup(fenster_breite, fenster_hoehe) - -anna = turtle.Turtle() - -b = 100 -h = 100 - -pental = 5 -winkel = 360/pental - -for i in range(0,pental): - anna.circle(b) - anna.left(winkel) - -turtle.done() - diff --git a/polymonial/README.md b/polymonial/README.md new file mode 100644 index 0000000..8597a22 --- /dev/null +++ b/polymonial/README.md @@ -0,0 +1,23 @@ +Eine Implementierung von Polynome als Python-Klasse nebst Unittest + +**Virtuelle Umgebung** +(Wenn PyCharm nicht automatisch eine Umgebung erstellt) + +```shell +python -m venv .venv +``` + +(Danach das Projekt mit der virtuellen Umgebung .venv verknüpfen!) + +**Dependencies** + +```shell +pip install pytest pytest-cov +``` + +**Run Unit-Test** + +```shell +pytest *_test.py +``` + diff --git a/polymonial/polynomial.py b/polymonial/polynomial.py new file mode 100644 index 0000000..0f8052e --- /dev/null +++ b/polymonial/polynomial.py @@ -0,0 +1,22 @@ +class Polynomial: + def __init__(self, *argv: float): + self.__coefficients = [] + for c in argv: + self.__coefficients.append(c) + + def __repr__(self) -> str: + coe = [] + for c in self.__coefficients: + coe.append(f'{c}') + return ' '.join(coe) + + def __str__(self): + return self.__repr__() + + def evaluate(self, x: float) -> tuple[float, list[float]]: + p = self.__coefficients[-1] + c = [p] + for ak in self.__coefficients[-2::-1]: + p = ak + (p * x) + c.insert(0, p) + return c[0], c[1:] \ No newline at end of file diff --git a/polymonial/polynomial_test.py b/polymonial/polynomial_test.py new file mode 100644 index 0000000..fc49e68 --- /dev/null +++ b/polymonial/polynomial_test.py @@ -0,0 +1,28 @@ +from polynomial import Polynomial +EPSILON = 0.001 + +def test_polynomial_representation(): + c = Polynomial(5, 6, 0, -7) + s = f'{c}' + assert s == '5 6 0 -7' + +def test_evaluate(): + l = Polynomial(-12.5, 3.6) + x = 0.0 + (y, rest) = l.evaluate(x) + assert abs(y + 12.5) < EPSILON + +def test_evaluate_2(): + l = Polynomial(11, 7, -5, -4, 2) + x = 2 + rest_expected = [-3, -5, 0, 2] + y_expected = 5 + (y, rest) = l.evaluate(x) + + assert abs(y - y_expected) < EPSILON + for (i, r) in enumerate( rest_expected ): + assert abs(r - rest[i]) < EPSILON + + +if __name__ == "__main__": + test_evaluate_2() \ No newline at end of file -- Gitblit v1.10.0-SNAPSHOT