math-expert
math-expert copied to clipboard
Differential Equations
Probably won't do it, the code does not work.
diff --git a/doc.py b/doc.py
index daa7e76..374dc0d 100644
--- a/doc.py
+++ b/doc.py
@@ -1,5 +1,6 @@
+from __future__ import division
from sympy import cos, exp, integrate, sqrt, diff, limit, Limit, oo, \
- simplify, factor, trigsimp
+ simplify, factor, trigsimp, Derivative, dsolve, Function, symbols, Eq
# from sympy.integrals.manualintegrate import manualintegrate, integral_steps
from sympy.integrals.risch import NonElementaryIntegral
from sympy.abc import x
@@ -55,6 +56,16 @@ class MathDoc(Document):
agn.append(r'=')
agn.append(latex(solution))
+ def ODE(self, equation):
+ solution = dsolve(equation, y)
+ print(equation)
+ print(solution)
+ with self.create(Alignat(numbering=True, escape=False)) as agn:
+ agn.append(latex(equation))
+ agn.append(r'=0')
+ agn.append(r'\Rightarrow')
+ agn.append(latex(solution))
+
def Lim(self, equation, a=0):
solution = limit(equation, x, a)
with self.create(Alignat(numbering=True, escape=False)) as agn:
@@ -90,6 +101,11 @@ if __name__ == '__main__':
doc = MathDoc()
file_name = 'full'
+ y = Function("y")(x)
+ y_ = Derivative(y, x)
+ y__ = Derivative(y_, x)
+ y___ = Derivative(y__, x)
+
doc.Heading(title='Integral Homework', author='SalahDin Rezk')
doc.Inte(x/sqrt(1-3*x))
doc.Inte(1/sqrt(1-3*x))
@@ -98,5 +114,7 @@ if __name__ == '__main__':
doc.Diff(x**x, 2)
doc.Diff(x**(1/x), 2)
doc.Lim(1/x, oo)
+ from sympy import sin
+ doc.ODE(2*y_-y-4*sin(3*x))
doc.generate_pdf(file_name, clean_tex=True)
diff --git a/main.py b/main.py
index 318f91c..b412c24 100644
--- a/main.py
+++ b/main.py
@@ -1,13 +1,10 @@
+from __future__ import division
from doc import MathDoc
-from sympy import sin, cos, tan, exp, log, sqrt, sympify, pi, oo, \
- symbols, asin, acos, atan # common math
-from sympy import Function
+from sympy import sin, cos, tan, exp, log, ln, sqrt, sympify, pi, oo, \
+ symbols, asin, acos, atan, cot, csc, sec # common math
+from sympy import Function, Derivative, Eq, dsolve
from gui import QtWidgets, Ui_MainWindow # gui
-# common symbols
-x, y, z, t = symbols('x y z t')
-f, g, h = symbols('f g h', cls=Function)
-
if __name__ == "__main__":
# Setup the ui.
@@ -17,6 +14,14 @@ if __name__ == "__main__":
ui = Ui_MainWindow() # Create the ui.
ui.setupUi(MainWindow) # Setup the ui.
+ # common symbols
+ from sympy.abc import x
+ y = Function("y")
+ y_ = Derivative(y, x, x)
+ y__ = Derivative(y_, x, x)
+ y___ = Derivative(y__, x, x)
+ # ! ValueError: -y + y_ is not a solvable differential equation in y(x)
+
# Setup the document and buttons.
math_doc = MathDoc() # The document.
# math_doc.GenPdf(ui.fileTxt.toPlainText(), ui.titleTxt.toPlainText(),
@@ -28,6 +33,8 @@ if __name__ == "__main__":
ui.limBt.clicked.connect(lambda: math_doc.Lim(
sympify(ui.expTxt.toPlainText().split(',')[0]),
sympify(ui.expTxt.toPlainText().split(',')[1]))) # Limit button.
+ ui.odeBt.clicked.connect(lambda: math_doc.ODE(
+ sympify(ui.expTxt.toPlainText()), y, y__, y___, y___)) # ODE button.
ui.simpBt.clicked.connect(lambda: math_doc.Simp(
sympify(ui.expTxt.toPlainText()))) # simplfiy button
ui.factBt.clicked.connect(lambda: math_doc.Fact(
@@ -35,10 +42,10 @@ if __name__ == "__main__":
ui.plotBt.clicked.connect(lambda: math_doc.Plot(
(ui.expTxt.toPlainText()))) # The plot button.
ui.genPdfBt.clicked.connect(lambda: math_doc.GenPdf(ui.fileTxt.toPlainText(
- ), ui.titleTxt.toPlainText(), ui.authorTxt.toPlainText(), clean_tex=True))
+ ), ui.titleTxt.toPlainText(), ui.authorTxt.toPlainText(), clean_tex=True))
# The generate pdf button.
ui.genLatexBt.clicked.connect(lambda: math_doc.GenTex(ui.fileTxt.toPlainText(
- ), ui.titleTxt.toPlainText(), ui.authorTxt.toPlainText()))
+ ), ui.titleTxt.toPlainText(), ui.authorTxt.toPlainText()))
# The generate tex button.
MainWindow.show()