num-int/Readme.md | ●●●●● patch | view | raw | blame | history | |
num-int/src/numint/guimain.py | ●●●●● patch | view | raw | blame | history | |
num-int/src/numint/mainwindow.ui | ●●●●● patch | view | raw | blame | history | |
num-int/src/numint/ui_mainwindow.py | ●●●●● patch | view | raw | blame | history | |
num-int/test/numint/riemann_sum_test.py | ●●●●● patch | view | raw | blame | history | |
stundenplan/Readme.md | ●●●●● patch | view | raw | blame | history | |
stundenplan/pyproject.toml | ●●●●● patch | view | raw | blame | history | |
stundenplan/src/pygraph/graphdemo.py | ●●●●● 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