1140a81f6f2087def8194ca9986f393417d17707..97dc9f0c94dc9bf0f244be8aedcf137574cc497e
2024-07-23 hbui
fix spell
97dc9f diff | tree
2024-07-22 hbui
neue layout OK
a816d0 diff | tree
8 files modified
460 ■■■■■ changed files
num-int/Readme.md 2 ●●● patch | view | raw | blame | history
num-int/src/numint/guimain.py 12 ●●●● patch | view | raw | blame | history
num-int/src/numint/mainwindow.ui 279 ●●●●● patch | view | raw | blame | history
num-int/src/numint/ui_mainwindow.py 134 ●●●●● patch | view | raw | blame | history
num-int/test/numint/riemann_sum_test.py 5 ●●●●● patch | view | raw | blame | history
stundenplan/Readme.md 22 ●●●●● patch | view | raw | blame | history
stundenplan/pyproject.toml 3 ●●●● patch | view | raw | blame | history
stundenplan/src/pygraph/graphdemo.py 3 ●●●● patch | view | raw | blame | history
num-int/Readme.md
@@ -13,7 +13,7 @@
## Run Unittest
```shell
python3 -m unittet discover --pattern *test.py
python3 -m unittest discover --pattern *test.py
```
## Run programm
num-int/src/numint/guimain.py
@@ -12,11 +12,11 @@
matplotlib.use('QtAgg')
class MplCanvas(FigureCanvasQTAgg):
class PlotCanvas(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)
        super(PlotCanvas, self).__init__(fig)
class MainWindow(QMainWindow):
@@ -24,7 +24,7 @@
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.canvas = MplCanvas(self)
        self.canvas = PlotCanvas(self)
        self._update_plot()
        toolbar = NavigationToolbar(self.canvas, self)
@@ -62,13 +62,13 @@
        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.step(self.x, self.y, color="blue",   where = "pre",  label=self.fn_expr)
        self.canvas.axes.step(self.x, self.y, color="orange", where = "post", label=self.fn_expr)
        self.canvas.axes.step(self.x, self.y, color="blue",   where="pre",  label=self.fn_expr)
        self.canvas.axes.step(self.x, self.y, color="orange", where="post", label=self.fn_expr)
        self.canvas.axes.plot(self.x, self.y, color="black")
        self.canvas.draw()
def main():
    app = QApplication(sys.argv)
    window = MainWindow()
num-int/src/numint/mainwindow.ui
@@ -14,112 +14,86 @@
   <string>Riemann Sum</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QHBoxLayout" name="horizontalLayout_4">
   <layout class="QHBoxLayout" name="horizontalLayout_2">
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <layout class="QVBoxLayout" name="verticalLayout">
        <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>Funktion f(x) = </string>
             </property>
            </widget>
           </item>
           <item>
            <widget class="QLineEdit" name="function">
             <property name="text">
              <string>x ** 2</string>
             </property>
            </widget>
           </item>
           <item>
            <widget class="QLabel" name="label_fn">
             <property name="text">
              <string>start</string>
             </property>
            </widget>
           </item>
           <item>
            <widget class="QLineEdit" name="startValue">
             <property name="text">
              <string>0</string>
             </property>
            </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">
          <item>
           <spacer name="horizontalSpacer">
            <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="QPushButton" name="plotBtn">
            <property name="text">
             <string>Ok</string>
            </property>
           </widget>
          </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:
       <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>
tan(radians(x))
sin(x)
</string>
        </property>
       </widget>
      </item>
      <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>Funktion f(x) = </string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLineEdit" name="function">
           <property name="text">
            <string>x ** 2</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLabel" name="label_fn">
           <property name="text">
            <string>start</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLineEdit" name="startValue">
           <property name="text">
            <string>0</string>
           </property>
          </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>
       <widget class="QGroupBox" name="breakRule">
@@ -201,6 +175,109 @@
        </layout>
       </widget>
      </item>
      <item>
       <widget class="QGroupBox" name="groupBox">
        <property name="title">
         <string>Riemann Summe</string>
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_2">
         <item>
          <layout class="QHBoxLayout" name="horizontalLayout_6">
           <item>
            <widget class="QLabel" name="label">
             <property name="text">
              <string>linke Summe</string>
             </property>
            </widget>
           </item>
           <item>
            <spacer name="horizontalSpacer">
             <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="leftSum">
             <property name="sizePolicy">
              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="readOnly">
              <bool>true</bool>
             </property>
            </widget>
           </item>
          </layout>
         </item>
         <item>
          <layout class="QHBoxLayout" name="horizontalLayout_4">
           <item>
            <widget class="QLabel" name="label_2">
             <property name="text">
              <string>rechte Summe</string>
             </property>
            </widget>
           </item>
           <item>
            <spacer name="horizontalSpacer_4">
             <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="rightSum">
             <property name="sizePolicy">
              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="readOnly">
              <bool>true</bool>
             </property>
            </widget>
           </item>
          </layout>
         </item>
        </layout>
       </widget>
      </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Orientation::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QPushButton" name="plotBtn">
        <property name="text">
         <string>Ok</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
num-int/src/numint/ui_mainwindow.py
@@ -27,12 +27,24 @@
        MainWindow.resize(1411, 889)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.horizontalLayout_4 = QHBoxLayout(self.centralwidget)
        self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
        self.verticalLayout_2 = QVBoxLayout()
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.horizontalLayout_2 = QHBoxLayout(self.centralwidget)
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.verticalLayout = QVBoxLayout()
        self.verticalLayout.setObjectName(u"verticalLayout")
        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.functionInfo = QGroupBox(self.centralwidget)
        self.functionInfo.setObjectName(u"functionInfo")
        self.horizontalLayout = QHBoxLayout(self.functionInfo)
@@ -70,37 +82,6 @@
        self.verticalLayout.addWidget(self.functionInfo)
        self.horizontalLayout_2 = QHBoxLayout()
        self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
        self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
        self.horizontalLayout_2.addItem(self.horizontalSpacer)
        self.plotBtn = QPushButton(self.centralwidget)
        self.plotBtn.setObjectName(u"plotBtn")
        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.breakRule = QGroupBox(self.centralwidget)
        self.breakRule.setObjectName(u"breakRule")
        self.verticalLayout_3 = QVBoxLayout(self.breakRule)
@@ -151,10 +132,70 @@
        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
        self.verticalLayout_2.addWidget(self.breakRule)
        self.verticalLayout.addWidget(self.breakRule)
        self.groupBox = QGroupBox(self.centralwidget)
        self.groupBox.setObjectName(u"groupBox")
        self.verticalLayout_2 = QVBoxLayout(self.groupBox)
        self.verticalLayout_2.setObjectName(u"verticalLayout_2")
        self.horizontalLayout_6 = QHBoxLayout()
        self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
        self.label = QLabel(self.groupBox)
        self.label.setObjectName(u"label")
        self.horizontalLayout_6.addWidget(self.label)
        self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
        self.horizontalLayout_6.addItem(self.horizontalSpacer)
        self.leftSum = QLineEdit(self.groupBox)
        self.leftSum.setObjectName(u"leftSum")
        sizePolicy1.setHeightForWidth(self.leftSum.sizePolicy().hasHeightForWidth())
        self.leftSum.setSizePolicy(sizePolicy1)
        self.leftSum.setReadOnly(True)
        self.horizontalLayout_6.addWidget(self.leftSum)
        self.horizontalLayout_4.addLayout(self.verticalLayout_2)
        self.verticalLayout_2.addLayout(self.horizontalLayout_6)
        self.horizontalLayout_4 = QHBoxLayout()
        self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
        self.label_2 = QLabel(self.groupBox)
        self.label_2.setObjectName(u"label_2")
        self.horizontalLayout_4.addWidget(self.label_2)
        self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
        self.horizontalLayout_4.addItem(self.horizontalSpacer_4)
        self.rightSum = QLineEdit(self.groupBox)
        self.rightSum.setObjectName(u"rightSum")
        sizePolicy1.setHeightForWidth(self.rightSum.sizePolicy().hasHeightForWidth())
        self.rightSum.setSizePolicy(sizePolicy1)
        self.rightSum.setReadOnly(True)
        self.horizontalLayout_4.addWidget(self.rightSum)
        self.verticalLayout_2.addLayout(self.horizontalLayout_4)
        self.verticalLayout.addWidget(self.groupBox)
        self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
        self.verticalLayout.addItem(self.verticalSpacer)
        self.plotBtn = QPushButton(self.centralwidget)
        self.plotBtn.setObjectName(u"plotBtn")
        self.verticalLayout.addWidget(self.plotBtn)
        self.horizontalLayout_2.addLayout(self.verticalLayout)
        self.plotBox = QGroupBox(self.centralwidget)
        self.plotBox.setObjectName(u"plotBox")
@@ -165,7 +206,7 @@
        sizePolicy2.setHeightForWidth(self.plotBox.sizePolicy().hasHeightForWidth())
        self.plotBox.setSizePolicy(sizePolicy2)
        self.horizontalLayout_4.addWidget(self.plotBox)
        self.horizontalLayout_2.addWidget(self.plotBox)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
@@ -183,6 +224,13 @@
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Riemann Sum", 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))\n"
"sin(x)\n"
"", 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))
@@ -190,16 +238,14 @@
        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.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"Riemann Summe", None))
        self.label.setText(QCoreApplication.translate("MainWindow", u"linke Summe", None))
        self.label_2.setText(QCoreApplication.translate("MainWindow", u"rechte Summe", None))
        self.plotBtn.setText(QCoreApplication.translate("MainWindow", u"Ok", None))
        self.plotBox.setTitle(QCoreApplication.translate("MainWindow", u"Plot", None))
    # retranslateUi
num-int/test/numint/riemann_sum_test.py
@@ -2,6 +2,7 @@
import unittest
from numint.riemann_sum import split, numint_epsilon, numint_compact, numint_section
Epsilon = 0.0001
class RiemannSumTestCase(unittest.TestCase):
    """
@@ -31,6 +32,10 @@
        print(l, r)
        pass
    def genauigkeit(self):
        expeted = 12.3456
        result = calculate_complex_fun(...)
        self.assertTrue(abs(expeted - result) < Epsilon)
stundenplan/Readme.md
@@ -1 +1,21 @@
Beispielanwendung von Graph
# Beispielanwendung von Graph
## Installation
Installation das Projekt auf einem virtuellen Python-Umgebung:
````shell
pip install -e .
````
## Run Unittest
```shell
python3 -m unittest discover --pattern *tests.py
```
## Run programm
```shell
```
stundenplan/pyproject.toml
@@ -12,5 +12,6 @@
# [project.scripts]
# To be done
# ttgeo = "turtlegeo.main:main"
# studenplan = "TODO: to-be-done"
stundenplan/src/pygraph/graphdemo.py
@@ -8,6 +8,7 @@
            if not isinstance(vertex, int):
                raise TypeError(f"Argument {vertex} is not a valid vertex")
            self._adjacent[vertex] = set()
            self._vertex_attribute[vertex] = {}
        pass
    def add_edge(self, u, v):
@@ -35,7 +36,7 @@
        """
        if vertex not in self._adjacent:
            raise ValueError(f"Graph does not include vertex {vertex}")
        old_attributes = self._vertex_attribute[vertex]
        old_attributes = self._vertex_attribute.get[vertex]
        self._vertex_attribute[vertex] = old_attributes | properties
        return self
        pass