From 5c28e0abb061a32f61ad0626cbba64a1fbcd4576 Mon Sep 17 00:00:00 2001 From: hbui <hong-phuc.bui@htwsaar.de> Date: Fri, 19 Jul 2024 15:23:57 +0200 Subject: [PATCH] fix unittest --- num-int/src/numint/RiemannSum.py | 19 +---- num-int/src/numint/mainwindow.ui | 92 ++++++++++++++++++++++++++++++ num-int/test/numint/RiemannSum_test.py | 8 +- num-int/pyproject.toml | 2 num-int/src/numint/main.py | 14 ++++ 5 files changed, 117 insertions(+), 18 deletions(-) diff --git a/num-int/pyproject.toml b/num-int/pyproject.toml index 007b351..38a34d9 100644 --- a/num-int/pyproject.toml +++ b/num-int/pyproject.toml @@ -11,5 +11,5 @@ where = ["src"] [project.scripts] -numint = "numint.Riemann:main" +numint = "numint.main:main" diff --git a/num-int/src/numint/RiemannSum.py b/num-int/src/numint/RiemannSum.py index 12febc7..826ac3f 100644 --- a/num-int/src/numint/RiemannSum.py +++ b/num-int/src/numint/RiemannSum.py @@ -16,26 +16,22 @@ def numint(f, a, b, epsilon=1e-3): dx = b - a + x = [a, b] # debug only y = [f(a), f(b)] s_left = dx * y[0] s_right = dx * y[1] - (n, parts) = (1, 1) + (n, parts) = (0, 1) while abs(s_right - s_left) > epsilon: - x = [a, b] # debug only parts = 2 * parts dx = dx / 2 n += 1 - print(n, " → ", parts) + # print(n, " → ", parts) for i in range(1, parts, 2): - x.insert(i, a + i * dx) # debug only + x.insert(i, a + i * dx) y.insert(i, f(a + i * dx)) - # print(i, end=" ") - # print() - # print(" ", x) - # print(" ", y) s_left = sum(y[0:-1]) * dx s_right = sum(y[1:]) * dx - return s_left, s_right + return x, y, s_left, s_right, n def numint_compact(f, a, b, epsilon=1e-3): @@ -49,15 +45,10 @@ parts = 2 * parts dx = dx / 2 n += 1 - print(n, " → ", parts) for i in range(1, parts, 2): - # print(i, end=" ") y = f(a + i*dx) y_l += y y_r += y - print() - # print(" ", x) - # print(" ", y) s_left = y_l * dx s_right = y_r * dx return s_left, s_right diff --git a/num-int/src/numint/main.py b/num-int/src/numint/main.py new file mode 100644 index 0000000..e61dd6c --- /dev/null +++ b/num-int/src/numint/main.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt + +from numint.RiemannSum import numint + +def main(): + def f(x): return x**3 + (a,b) = (1,2) + (x, y, l, r, n) = numint(f, a, b, 0.5) + # print(l, r, n) + plt.step(x, y, label="x^3") + plt.step(x, y, where="post", label="x^3") + plt.plot(x,y, color="gray", alpha=0.3) + plt.show() + pass \ No newline at end of file diff --git a/num-int/src/numint/mainwindow.ui b/num-int/src/numint/mainwindow.ui new file mode 100644 index 0000000..2ef3ab5 --- /dev/null +++ b/num-int/src/numint/mainwindow.ui @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget"> + <widget class="QWidget" name=""> + <property name="geometry"> + <rect> + <x>11</x> + <y>11</y> + <width>328</width> + <height>71</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>a</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit"/> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>b</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_2"/> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>Ok</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>26</height> + </rect> + </property> + </widget> + <widget class="QStatusBar" name="statusbar"/> + </widget> + <resources/> + <connections/> +</ui> diff --git a/num-int/test/numint/RiemannSum_test.py b/num-int/test/numint/RiemannSum_test.py index 6711a7e..89731fe 100644 --- a/num-int/test/numint/RiemannSum_test.py +++ b/num-int/test/numint/RiemannSum_test.py @@ -4,15 +4,17 @@ class RiemannSumTestCase(unittest.TestCase): - + """ + TODO (Aufgabe) Schreiben Sie Kriterien in Unittest + """ def test_split_interval(self): split(iteration=6) def test_numint(self): def fn(x) : return x**2 (a, b) = (0, 2) - (l, r) = numint(fn, a, b) - print(l, r) + (l, r, *_) = numint(fn, a, b) + # print(l, r) # print Take too much place on screen pass def test_numint_compact(self): -- Gitblit v1.10.0-SNAPSHOT