From f12ecb67472aa2453d3b1b3fb68e4eb9521aee77 Mon Sep 17 00:00:00 2001
From: hbui <hong-phuc.bui@htwsaar.de>
Date: Sun, 21 Jul 2024 13:41:27 +0200
Subject: [PATCH] gui ok

---
 /dev/null                               |   32 ---
 num-int/test/numint/riemann_sum_test.py |   38 ++++
 num-int/src/numint/guimain.py           |   58 ++++++
 num-int/src/numint/mainwindow.ui        |  201 ++++++++++++++++-----
 num-int/src/numint/ui_mainwindow.py     |  161 ++++++++++++-----
 num-int/src/numint/riemann_sum.py       |   28 ++
 num-int/src/numint/main.py              |   16 +
 7 files changed, 391 insertions(+), 143 deletions(-)

diff --git a/num-int/src/numint/guimain.py b/num-int/src/numint/guimain.py
index 8ac8d68..f16cd6c 100644
--- a/num-int/src/numint/guimain.py
+++ b/num-int/src/numint/guimain.py
@@ -1,8 +1,22 @@
 import sys
+import matplotlib
 
-from PySide6.QtWidgets import QApplication, QMainWindow
+from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout
 
+from numint.input_parser import parse_function, parse_value
+from numint.riemann_sum import numint_epsilon, numint_section
 from numint.ui_mainwindow import Ui_MainWindow
+from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
+from matplotlib.figure import Figure
+
+matplotlib.use('QtAgg')
+
+
+class MplCanvas(FigureCanvasQTAgg):
+    def __init__(self, parent=None, width=5, height=4, dpi=100):
+        fig = Figure(figsize=(width, height), dpi=dpi)
+        self.axes = fig.add_subplot(111)
+        super(MplCanvas, self).__init__(fig)
 
 
 class MainWindow(QMainWindow):
@@ -10,6 +24,47 @@
         super(MainWindow, self).__init__()
         self.ui = Ui_MainWindow()
         self.ui.setupUi(self)
+        self.canvas = MplCanvas(self)
+        self._update_plot()
+
+        toolbar = NavigationToolbar(self.canvas, self)
+        layout = QVBoxLayout()
+        layout.addWidget(toolbar)
+        layout.addWidget(self.canvas)
+        self.ui.plotBox.setLayout(layout)
+        self.ui.plotBtn.clicked.connect(self._update_plot)
+
+    def _update_plot(self):
+        fn_expr = self.ui.function.text()
+        self.fn_expr = fn_expr
+        start = self.ui.startValue.text()
+        end = self.ui.endValue.text()
+        epsilon = self.ui.espilon.text()
+        try:
+            f = parse_function(fn_expr)
+            (a, b) = (parse_value(start), parse_value(end))
+            if epsilon is not None and len(epsilon.strip()) > 0:
+                eps = parse_value(epsilon)
+                print(f"plot {fn_expr}, {a}, {b}, epsilon = {eps}")
+                (self.x, self.y, *_) = numint_epsilon(f, a, b, eps)
+                self._update_plot_eps()
+            else:
+                section = self.ui.section.text()
+                sec = parse_value(section)
+                print(f"plot f(x) = {fn_expr}, {a}, {b}, section = {sec}")
+                (self.x, self.y, *_) = numint_section(f, a, b, sec)
+                self._update_plot_eps()
+        except Exception as ex:
+            print(ex)
+            pass
+
+    def _update_plot_eps(self):
+        self.canvas.axes.cla()  # Clear the canvas.
+        self.canvas.axes.stairs(self.y[1:],   self.x, baseline=0, fill=True, alpha=0.5, label=self.fn_expr)
+        self.canvas.axes.stairs(self.y[0:-1], self.x, baseline=0, fill=True, alpha=0.5, label=self.fn_expr)
+        self.canvas.axes.plot(self.x, self.y, color="black")
+        self.canvas.draw()
+
 
 
 def main():
@@ -22,4 +77,3 @@
 
 if __name__ == "__main__":
     main()
-
diff --git a/num-int/src/numint/main.py b/num-int/src/numint/main.py
index 0353729..bcfa605 100644
--- a/num-int/src/numint/main.py
+++ b/num-int/src/numint/main.py
@@ -1,7 +1,7 @@
 import sys
 
 from matplotlib import pyplot as plt
-from numint.RiemannSum import numint
+from numint.riemann_sum import numint_epsilon
 from numint.input_parser import parse_function, parse_value
 
 
@@ -10,11 +10,15 @@
 
     (a, b) = (parse_value(start), parse_value(end))
     eps = parse_value(epsilon)
-    (x, y, l, r, n) = numint(f, a, b, eps)
-    # 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)
+    (x, y, l, r, n) = numint_epsilon(f, a, b, eps)
+    fig, ax = plt.subplots()
+    ax.stairs(y[1:], x, baseline=0, fill=True, alpha=1,label=function_expr)
+    ax.stairs(y[0:-1], x, baseline=0, fill=True, color="orange", alpha=0.5, label=function_expr)
+    #ax.step(x, y, label=function_expr)
+    #ax.step(x, y, where="post", label=function_expr)
+
+    ax.plot(x, y, color="black")
+
     plt.show()
     pass
 
diff --git a/num-int/src/numint/mainwindow.ui b/num-int/src/numint/mainwindow.ui
index 974c4a5..2909f6d 100644
--- a/num-int/src/numint/mainwindow.ui
+++ b/num-int/src/numint/mainwindow.ui
@@ -18,65 +18,55 @@
     <item>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
-       <layout class="QHBoxLayout" name="horizontalLayout">
-        <item>
-         <widget class="QLabel" name="label_3">
-          <property name="text">
-           <string>Funktion</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QComboBox" name="functions">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <item>
+       <widget class="QGroupBox" name="functionInfo">
+        <property name="title">
+         <string>Angabe der Funktion</string>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QLabel" name="label_start">
            <property name="text">
-            <string>sin</string>
+            <string>Funktion f(x) = </string>
            </property>
-          </item>
-          <item>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="function">
            <property name="text">
-            <string>cos</string>
+            <string>x ** 2</string>
            </property>
-          </item>
-          <item>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_fn">
            <property name="text">
-            <string>x^2</string>
+            <string>start</string>
            </property>
-          </item>
-          <item>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="startValue">
            <property name="text">
-            <string>x^3</string>
+            <string>0</string>
            </property>
-          </item>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLabel" name="label">
-          <property name="text">
-           <string>start</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLineEdit" name="startValue"/>
-        </item>
-        <item>
-         <widget class="QLabel" name="label_2">
-          <property name="text">
-           <string>end</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLineEdit" name="endValue"/>
-        </item>
-       </layout>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_end">
+           <property name="text">
+            <string>end</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="endValue">
+           <property name="text">
+            <string>4</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
       </item>
       <item>
        <layout class="QHBoxLayout" name="horizontalLayout_2">
@@ -94,7 +84,7 @@
          </spacer>
         </item>
         <item>
-         <widget class="QPushButton" name="pushButton">
+         <widget class="QPushButton" name="plotBtn">
           <property name="text">
            <string>Ok</string>
           </property>
@@ -102,10 +92,115 @@
         </item>
        </layout>
       </item>
+      <item>
+       <widget class="QPlainTextEdit" name="plainTextEdit">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="font">
+         <font>
+          <family>Noto Mono</family>
+         </font>
+        </property>
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+        <property name="plainText">
+         <string>Die Funktion f(x) kann eine belibige Kombination von arithmetischen Operationen und Python mathematische Funktion in Modul math sein. Einige Beispiele sind:
+
+x ** 2
+x ** 3
+tan(radians(x))</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </item>
     <item>
-     <widget class="QGroupBox" name="groupBox">
+     <widget class="QGroupBox" name="breakRule">
+      <property name="title">
+       <string>Abbuchkriterium</string>
+      </property>
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_5">
+         <item>
+          <widget class="QLabel" name="label_4">
+           <property name="text">
+            <string>Maximum Differenz ziwschen Link- und Recht-Summe</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Orientation::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="espilon">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QLabel" name="label_5">
+           <property name="text">
+            <string>Anzahl der Sektionen</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Orientation::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="section">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>8</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="plotBox">
       <property name="enabled">
        <bool>true</bool>
       </property>
diff --git a/num-int/src/numint/RiemannSum.py b/num-int/src/numint/riemann_sum.py
similarity index 61%
rename from num-int/src/numint/RiemannSum.py
rename to num-int/src/numint/riemann_sum.py
index 826ac3f..250f073 100644
--- a/num-int/src/numint/RiemannSum.py
+++ b/num-int/src/numint/riemann_sum.py
@@ -1,3 +1,6 @@
+from typing import Callable
+
+
 def split(iteration=8):
     (a, b) = (0, 8)
     x = [a, b]
@@ -14,7 +17,7 @@
     pass
 
 
-def numint(f, a, b, epsilon=1e-3):
+def numint_epsilon(f:Callable[[float], float], a: float, b: float, epsilon: float = 1e-3):
     dx = b - a
     x = [a, b]  # debug only
     y = [f(a), f(b)]
@@ -25,7 +28,6 @@
         parts = 2 * parts
         dx = dx / 2
         n += 1
-        # print(n, " → ", parts)
         for i in range(1, parts, 2):
             x.insert(i, a + i * dx)
             y.insert(i, f(a + i * dx))
@@ -34,7 +36,27 @@
     return x, y, s_left, s_right, n
 
 
-def numint_compact(f, a, b, epsilon=1e-3):
+def numint_section(f:Callable[[float], float], a: float, b: float, section_count: int = 8):
+    dx = b - a
+    x = [a, b]
+    y = [f(a), f(b)]
+    (n, parts) = (0, 1)
+    s_left = dx * y[0]
+    s_right = dx * y[1]
+    while parts < section_count:
+        parts = 2 * parts
+        dx = dx / 2
+        n += 1
+        for i in range(1, parts, 2):
+            x.insert(i, a + i * dx)
+            y.insert(i, f(a + i * dx))
+        s_left = sum(y[0:-1]) * dx
+        s_right = sum(y[1:]) * dx
+        pass
+    return x, y, s_left, s_right, n
+
+
+def numint_compact(f: Callable[[float], float], a: float, b: float, epsilon=1e-3):
     dx = b - a
     y_l = f(a)
     y_r = f(b)
diff --git a/num-int/src/numint/ui_mainwindow.py b/num-int/src/numint/ui_mainwindow.py
index 51296cb..ff1a693 100644
--- a/num-int/src/numint/ui_mainwindow.py
+++ b/num-int/src/numint/ui_mainwindow.py
@@ -15,8 +15,8 @@
     QFont, QFontDatabase, QGradient, QIcon,
     QImage, QKeySequence, QLinearGradient, QPainter,
     QPalette, QPixmap, QRadialGradient, QTransform)
-from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout,
-    QLabel, QLineEdit, QMainWindow, QMenuBar,
+from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QLabel,
+    QLineEdit, QMainWindow, QMenuBar, QPlainTextEdit,
     QPushButton, QSizePolicy, QSpacerItem, QStatusBar,
     QVBoxLayout, QWidget)
 
@@ -31,49 +31,42 @@
         self.verticalLayout_2.setObjectName(u"verticalLayout_2")
         self.verticalLayout = QVBoxLayout()
         self.verticalLayout.setObjectName(u"verticalLayout")
-        self.horizontalLayout = QHBoxLayout()
+        self.functionInfo = QGroupBox(self.centralwidget)
+        self.functionInfo.setObjectName(u"functionInfo")
+        self.horizontalLayout = QHBoxLayout(self.functionInfo)
         self.horizontalLayout.setObjectName(u"horizontalLayout")
-        self.label_3 = QLabel(self.centralwidget)
-        self.label_3.setObjectName(u"label_3")
+        self.label_start = QLabel(self.functionInfo)
+        self.label_start.setObjectName(u"label_start")
 
-        self.horizontalLayout.addWidget(self.label_3)
+        self.horizontalLayout.addWidget(self.label_start)
 
-        self.functions = QComboBox(self.centralwidget)
-        self.functions.addItem("")
-        self.functions.addItem("")
-        self.functions.addItem("")
-        self.functions.addItem("")
-        self.functions.setObjectName(u"functions")
-        sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.functions.sizePolicy().hasHeightForWidth())
-        self.functions.setSizePolicy(sizePolicy)
+        self.function = QLineEdit(self.functionInfo)
+        self.function.setObjectName(u"function")
 
-        self.horizontalLayout.addWidget(self.functions)
+        self.horizontalLayout.addWidget(self.function)
 
-        self.label = QLabel(self.centralwidget)
-        self.label.setObjectName(u"label")
+        self.label_fn = QLabel(self.functionInfo)
+        self.label_fn.setObjectName(u"label_fn")
 
-        self.horizontalLayout.addWidget(self.label)
+        self.horizontalLayout.addWidget(self.label_fn)
 
-        self.startValue = QLineEdit(self.centralwidget)
+        self.startValue = QLineEdit(self.functionInfo)
         self.startValue.setObjectName(u"startValue")
 
         self.horizontalLayout.addWidget(self.startValue)
 
-        self.label_2 = QLabel(self.centralwidget)
-        self.label_2.setObjectName(u"label_2")
+        self.label_end = QLabel(self.functionInfo)
+        self.label_end.setObjectName(u"label_end")
 
-        self.horizontalLayout.addWidget(self.label_2)
+        self.horizontalLayout.addWidget(self.label_end)
 
-        self.endValue = QLineEdit(self.centralwidget)
+        self.endValue = QLineEdit(self.functionInfo)
         self.endValue.setObjectName(u"endValue")
 
         self.horizontalLayout.addWidget(self.endValue)
 
 
-        self.verticalLayout.addLayout(self.horizontalLayout)
+        self.verticalLayout.addWidget(self.functionInfo)
 
         self.horizontalLayout_2 = QHBoxLayout()
         self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
@@ -81,27 +74,93 @@
 
         self.horizontalLayout_2.addItem(self.horizontalSpacer)
 
-        self.pushButton = QPushButton(self.centralwidget)
-        self.pushButton.setObjectName(u"pushButton")
+        self.plotBtn = QPushButton(self.centralwidget)
+        self.plotBtn.setObjectName(u"plotBtn")
 
-        self.horizontalLayout_2.addWidget(self.pushButton)
+        self.horizontalLayout_2.addWidget(self.plotBtn)
 
 
         self.verticalLayout.addLayout(self.horizontalLayout_2)
 
+        self.plainTextEdit = QPlainTextEdit(self.centralwidget)
+        self.plainTextEdit.setObjectName(u"plainTextEdit")
+        sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.plainTextEdit.sizePolicy().hasHeightForWidth())
+        self.plainTextEdit.setSizePolicy(sizePolicy)
+        font = QFont()
+        font.setFamilies([u"Noto Mono"])
+        self.plainTextEdit.setFont(font)
+        self.plainTextEdit.setReadOnly(True)
+
+        self.verticalLayout.addWidget(self.plainTextEdit)
+
 
         self.verticalLayout_2.addLayout(self.verticalLayout)
 
-        self.groupBox = QGroupBox(self.centralwidget)
-        self.groupBox.setObjectName(u"groupBox")
-        self.groupBox.setEnabled(True)
-        sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding)
+        self.breakRule = QGroupBox(self.centralwidget)
+        self.breakRule.setObjectName(u"breakRule")
+        self.verticalLayout_3 = QVBoxLayout(self.breakRule)
+        self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+        self.horizontalLayout_5 = QHBoxLayout()
+        self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
+        self.label_4 = QLabel(self.breakRule)
+        self.label_4.setObjectName(u"label_4")
+
+        self.horizontalLayout_5.addWidget(self.label_4)
+
+        self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+        self.horizontalLayout_5.addItem(self.horizontalSpacer_2)
+
+        self.espilon = QLineEdit(self.breakRule)
+        self.espilon.setObjectName(u"espilon")
+        sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
         sizePolicy1.setHorizontalStretch(0)
         sizePolicy1.setVerticalStretch(0)
-        sizePolicy1.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
-        self.groupBox.setSizePolicy(sizePolicy1)
+        sizePolicy1.setHeightForWidth(self.espilon.sizePolicy().hasHeightForWidth())
+        self.espilon.setSizePolicy(sizePolicy1)
 
-        self.verticalLayout_2.addWidget(self.groupBox)
+        self.horizontalLayout_5.addWidget(self.espilon)
+
+
+        self.verticalLayout_3.addLayout(self.horizontalLayout_5)
+
+        self.horizontalLayout_3 = QHBoxLayout()
+        self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+        self.label_5 = QLabel(self.breakRule)
+        self.label_5.setObjectName(u"label_5")
+
+        self.horizontalLayout_3.addWidget(self.label_5)
+
+        self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+        self.horizontalLayout_3.addItem(self.horizontalSpacer_3)
+
+        self.section = QLineEdit(self.breakRule)
+        self.section.setObjectName(u"section")
+        sizePolicy1.setHeightForWidth(self.section.sizePolicy().hasHeightForWidth())
+        self.section.setSizePolicy(sizePolicy1)
+
+        self.horizontalLayout_3.addWidget(self.section)
+
+
+        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
+
+
+        self.verticalLayout_2.addWidget(self.breakRule)
+
+        self.plotBox = QGroupBox(self.centralwidget)
+        self.plotBox.setObjectName(u"plotBox")
+        self.plotBox.setEnabled(True)
+        sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding)
+        sizePolicy2.setHorizontalStretch(0)
+        sizePolicy2.setVerticalStretch(0)
+        sizePolicy2.setHeightForWidth(self.plotBox.sizePolicy().hasHeightForWidth())
+        self.plotBox.setSizePolicy(sizePolicy2)
+
+        self.verticalLayout_2.addWidget(self.plotBox)
 
         MainWindow.setCentralWidget(self.centralwidget)
         self.menubar = QMenuBar(MainWindow)
@@ -119,15 +178,23 @@
 
     def retranslateUi(self, MainWindow):
         MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Riemann Sum", None))
-        self.label_3.setText(QCoreApplication.translate("MainWindow", u"Funktion", None))
-        self.functions.setItemText(0, QCoreApplication.translate("MainWindow", u"sin", None))
-        self.functions.setItemText(1, QCoreApplication.translate("MainWindow", u"cos", None))
-        self.functions.setItemText(2, QCoreApplication.translate("MainWindow", u"x^2", None))
-        self.functions.setItemText(3, QCoreApplication.translate("MainWindow", u"x^3", None))
-
-        self.label.setText(QCoreApplication.translate("MainWindow", u"start", None))
-        self.label_2.setText(QCoreApplication.translate("MainWindow", u"end", None))
-        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"Ok", None))
-        self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"Plot", None))
+        self.functionInfo.setTitle(QCoreApplication.translate("MainWindow", u"Angabe der Funktion", None))
+        self.label_start.setText(QCoreApplication.translate("MainWindow", u"Funktion f(x) = ", None))
+        self.function.setText(QCoreApplication.translate("MainWindow", u"x ** 2", None))
+        self.label_fn.setText(QCoreApplication.translate("MainWindow", u"start", None))
+        self.startValue.setText(QCoreApplication.translate("MainWindow", u"0", None))
+        self.label_end.setText(QCoreApplication.translate("MainWindow", u"end", None))
+        self.endValue.setText(QCoreApplication.translate("MainWindow", u"4", None))
+        self.plotBtn.setText(QCoreApplication.translate("MainWindow", u"Ok", None))
+        self.plainTextEdit.setPlainText(QCoreApplication.translate("MainWindow", u"Die Funktion f(x) kann eine belibige Kombination von arithmetischen Operationen und Python mathematische Funktion in Modul math sein. Einige Beispiele sind:\n"
+"\n"
+"x ** 2\n"
+"x ** 3\n"
+"tan(radians(x))", None))
+        self.breakRule.setTitle(QCoreApplication.translate("MainWindow", u"Abbuchkriterium", None))
+        self.label_4.setText(QCoreApplication.translate("MainWindow", u"Maximum Differenz ziwschen Link- und Recht-Summe", None))
+        self.label_5.setText(QCoreApplication.translate("MainWindow", u"Anzahl der Sektionen", None))
+        self.section.setText(QCoreApplication.translate("MainWindow", u"8", None))
+        self.plotBox.setTitle(QCoreApplication.translate("MainWindow", u"Plot", None))
     # retranslateUi
 
diff --git a/num-int/test/numint/RiemannSum_test.py b/num-int/test/numint/RiemannSum_test.py
deleted file mode 100644
index ec24d6f..0000000
--- a/num-int/test/numint/RiemannSum_test.py
+++ /dev/null
@@ -1,32 +0,0 @@
-import sys
-import unittest
-from numint.RiemannSum import split, numint, numint_compact
-
-
-class RiemannSumTestCase(unittest.TestCase):
-    """
-    TODO (Aufgabe) Schreiben Sie Kriterien in Unittest
-    Die Kriterien sind solche Befehlen mit self.assertXXXX
-    """
-    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)  # print Take too much place on screen
-        pass
-
-    def test_numint_compact(self):
-        def fn(x) : return x**2
-        (a, b) = (0, 2)
-        (l, r) = numint_compact(fn, a, b, epsilon=1E9 * sys.float_info.epsilon)
-        print(l, r)
-        pass
-
-
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/num-int/test/numint/riemann_sum_test.py b/num-int/test/numint/riemann_sum_test.py
new file mode 100644
index 0000000..a3233f8
--- /dev/null
+++ b/num-int/test/numint/riemann_sum_test.py
@@ -0,0 +1,38 @@
+import sys
+import unittest
+from numint.riemann_sum import split, numint_epsilon, numint_compact, numint_section
+
+
+class RiemannSumTestCase(unittest.TestCase):
+    """
+    TODO (Aufgabe) Schreiben Sie Kriterien in Unittest
+    Die Kriterien sind solche Befehlen mit self.assertXXXX
+    """
+    def test_split_interval(self):
+        split(iteration=6)
+
+    def test_numint_epsilon(self):
+        def fn(x) : return x**2
+        (a, b) = (0, 2)
+        (x, y, l, r, n) = numint_epsilon(fn, a, b)
+        print(l, r)  # print Take too much place on screen
+        pass
+
+    def test_numint_section(self):
+        def fn(x) : return x**2
+        (a, b) = (0, 2)
+        (x, y, l, r, n) = numint_section(fn, a, b, section_count=8)
+        print(l, r)
+
+    def test_numint_compact(self):
+        def fn(x) : return x**2
+        (a, b) = (0, 2)
+        (l, r) = numint_compact(fn, a, b, epsilon=1E9 * sys.float_info.epsilon)
+        print(l, r)
+        pass
+
+
+
+
+if __name__ == '__main__':
+    unittest.main()

--
Gitblit v1.10.0-SNAPSHOT