3 files added
1 files deleted
New file |
| | |
| | | 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 |
| | | ``` |
| | | |
New file |
| | |
| | | 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:] |
New file |
| | |
| | | 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() |