Erstellen wir mit Sympy + Jupyter die stärkste Taschenrechnerumgebung.
Sympy ist eine in Python geschriebene algebraische Bibliothek. Stellen Sie sich Mathematica oder Maxima vor. Dies ist für Programmierer einfacher zu verwenden, da sie Formeln in Python schreiben können. Die folgende Seite ist eine großartige Einführung in Sympy. Wenn Sie Sympy nicht kennen, lesen Sie es bitte.
3.2. Sympy: Algebraische Berechnung in Python
Sie müssen nichts Besonderes tun, sondern "magisch" eingeben, um die Formeln und Diagramme in der ersten Zelle von Jupyter anzuzeigen.
from sympy import *
init_printing()
Als nächstes geben wir die Formel ein.
x = Symbol('x')
y = Symbol('y')
Rational(3 ,2)*pi + exp(I*x) / (x**2 + y)
Wenn die Formel herauskommt, ist sie erfolgreich.
Nach den Informationen von @ void99_ gibt es eine ausgefeiltere "init_session" als "init_printing".
from sympy import *
init_session()
Häufig verwendete Variablen und Funktionen sind vordefiniert, was praktisch ist.
IPython console for SymPy 1.0 (Python 3.5.2-64-bit) (ground types: python)
These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
>>> init_printing()
Documentation can be found at http://docs.sympy.org/1.0/
Formelsymbole können mit "Symbol" gesetzt werden.
x = Symbol('x')
y = Symbol('y')
Mit "Symbolen" können mehrere Symbole gleichzeitig eingestellt werden.
x, y = symbols("x y")
Sie kann auch mit dem Modul sympy.abc
eingestellt werden.
from sympy.abc import x, y
Die bequemste Funktion bei der Handhabung als Taschenrechner besteht darin, die Formel zu vereinfachen. Wenn Sie die Formel kneten, können Sie eine sehr lange Formel erstellen. Wenn Sie jedoch Sympy verwenden, ist dies ein Schuss.
Angenommen, Sie haben die folgende Formel: Diese Formel ist wahrscheinlich eine Bezier-Kurvenformel oder etwas, das ich geknetet habe.
(A-B)*C + B**2 + (-B-A)*C + B**2
In Sympy geschrieben sieht es so aus:
from sympy.abc import A, B, C
f = (A-B)*C + B**2 + (-B-A)*C + B**2
2 B^{2} + C \left(- A - B\right) + C \left(A - B\right)
Durch Einsetzen eines Ausdrucks in Sympy werden die Begriffe aus Gründen der Übersichtlichkeit sortiert. Wenn Sie die Formel weiter vereinfachen möchten, verwenden Sie "simpfly".
simplify(f)
2 B \left(B - C\right)
Das "A" ist verschwunden und es ist extrem einfach geworden. Sie können auch "Ratsimp" verwenden, das häufig in Maxima verwendet wird.
ratsimp(f)
2 B^{2} - 2 B C
Es gibt viele Arten von Formelvereinfachungen, siehe unten für Details.
http://docs.sympy.org/dev/modules/simplify/simplify.html
from sympy.abc import A, B, C, D
(A-B)*D + C**2 + (-B-A)*C+B**2
B^{2} + C^{2} + C \left(- A - B\right) + D \left(A - B\right)
Wenn Sie "A" in der obigen Formel lösen möchten, verwenden Sie "lösen".
solve((A-B)*D + C**2 + (-B-A)*C+B**2, A)
\left [ \frac{1}{C - D} \left(B^{2} - B C - B D + C^{2}\right)\right ]
Sie können einer Variablen in einem Ausdruck mit "subs" einen Wert zuweisen.
f = (A-B)*D + C**2 + (-B-A)*C+B**2
# A,B,Weisen Sie C einen Wert zu
f.subs([(A, 10), (B, 20), (C, 30)])
- 10 D + 400
Dem Argument "subs" kann auch ein Wörterbuch übergeben werden.
f.subs({A: 10, B: 20, C: 30})
- 10 D + 400
Wenn Sie nur eine Variable zuweisen möchten, können Sie im ersten Argument eine Variable und im zweiten Argument einen Wert angeben.
f.subs(A, 10)
B^{2} + C^{2} + C \left(- B - 10\right) + D \left(- B + 10\right)
Verwenden Sie "diff" zur Differenzierung / partiellen Differenzierung.
diff(x**2 + 3*x + 100)
2 x + 3
Geben Sie zur teilweisen Differenzierung das zweite Argument an.
diff(3*x**2 + 3*x*y + y**2, x)
6 x + 3 y
Beim Factoring wird "Faktor" verwendet.
factor(x**2-x-6)
\left(x - 3\right) \left(x + 2\right)
Verwenden Sie factor int
für die Primfaktorisierung.
factorint(3417)
>>> {3:1,17:1,67:1}
Das Wörterbuch wird zurückgegeben, was "3 ^ 1 * 17 ^ 1 * 67 ^ 1 = 3417" bedeutet.
Verwenden Sie die Matrix-Klasse.
Matrix([[1, 0], [0, 1]])
\left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]
Es gibt Vektoren, aber sie sind schwierig zu verwenden, daher werden sie als einspaltige Matrix behandelt.
θ = Symbol("θ")
P = Matrix([2*cos(θ), 2*sin(θ)])
\left[\begin{matrix}2 \cos{\left (θ \right )}\\2 \sin{\left (θ \right )}\end{matrix}\right]
Wenn Sie einen Vektor berechnen möchten, verwenden Sie die Funktion "Transponieren", um ihn zu transponieren.
transpose(P) * P
\left[\begin{matrix}4 \sin^{2}{\left (θ \right )} + 4 \cos^{2}{\left (θ \right )}\end{matrix}\right]
Mit Jupyter und Sympy können Sie die Ausgabeformeln einfach nach Qiita kopieren. Klicken Sie mit der rechten Maustaste auf die Formel und wählen Sie Mathematik anzeigen als → Tex-Befehle.
Ein Popup wie dieses wird angezeigt. Kopieren Sie die Formel und fügen Sie sie ein.
Dieser Latex ist praktisch, da er direkt auf Qiita geklebt werden kann.
Wenn Sie "pprint" verwenden, handelt es sich um ASCII-Kunst? Sie können auch Formeln mit ausgeben.
pprint(Integral(sqrt(1/x), x), use_unicode=True)
"""
⌠
⎮ ___
⎮ ╱ 1
⎮ ╱ ─ dx
⎮ ╲╱ x
⌡
"""
Dies ist praktisch, wenn Sie Formeln in den Quellcode einfügen.
Sie können ein Diagramm mit sympy.plotting.plot
zeichnen.
Dies ist praktisch, da Sie die Formel "Sympy" als Argument übergeben können.
from sympy.plotting import plot
y = -(x+2)*(x+1)*(x-1)
#x ist-Zeichnen Sie eine Grafik von 4 bis 4
plot(y, (x, -4, 4))
Jupyter + Sympy ist sehr praktisch, aber Sie müssen jedes Mal "Magie" in die erste Zelle eingeben. Das ist überraschend mühsam, nicht wahr?
In meinem Artikel gibt es Jupyter-Notizbuch ".ipynb" in Python generieren. Verwenden Sie dies. Lassen Sie uns ein Skript schreiben, das ipynb generiert, das von Anfang an eingegeben wurde.
PyCharm ist eine integrierte Python-Entwicklungsumgebung (IDE), die über sehr leistungsstarke Komplementärfunktionen verfügt und die stärkste Python-Entwicklungsumgebung ist. Tatsächlich kann PyCharm mit Jupyter verknüpft werden, und Jupyters Ausdruckskraft + PyCharms leistungsstarke Komplementärfunktion sind recht komfortabel.
Wenn Sie sich jedoch mit mathematischen Formeln befassen, ist die Jupyter-Ausgabe von PyCharm schlecht, daher ist es besser, die Browserversion von Jupyter zu verwenden. Ich verwende also nicht Jupyter von PyCharm, sondern "Extranal Tools".
Erstellen Sie das folgende Skript an einer Stelle, auf die Sie leicht verweisen können.
#!/usr/bin/env python3
# coding:utf-8
import sys
import os
import nbformat
output_dir = sys.argv[1]
output_file = input("input ipynb name:")
nb = nbformat.v4.new_notebook()
title = "#Titel"
code = """
%matplotlib inline
from sympy import *
init_session()
"""
nb["cells"] = [
nbformat.v4.new_markdown_cell(title),
nbformat.v4.new_code_cell(code)
]
if not output_file.endswith(".ipynb"):
output_file += ".ipynb"
with open(os.path.join(output_dir, output_file), "w") as f:
nbformat.write(nb, f)
print("ok.")
Öffnen Sie das Menü "Datei (F)" von PyCharm und wählen Sie "Einstellungen ...".
Wählen Sie im Einstellungsdialog "Extras" -> "Externe Tools" und drücken Sie die Taste "+".
Das Einstellungsdialogfeld wird angezeigt. Fügen Sie daher die folgenden Elemente hinzu.
Artikel | Eingang |
---|---|
Name | Bitte geben Sie einen passenden Namen ein |
Description | Bitte geben Sie eine entsprechende Erklärung ein |
Program | Python-Pfad, in dem Jupyter installiert ist |
Parameters | Der Skriptpfad von früher$FileDir$ |
Wählen Sie "Externe Aufgaben" -> "Name des registrierten Werkzeugs" aus dem Kontextmenü von PyCharm.
Wenn Sie den Dateinamen in die Konsole eingeben, werden von Anfang an verschiedene vorgefüllte .ipynb-Dateien generiert.
Wenn Sie eine bequemere Möglichkeit haben, es zu verwenden, posten Sie es bitte.
Die Ausgabe von .ipynb war länger als Sympy, aber Sympy ist sehr nützlich.
Ideal für Spielprogrammierer und diejenigen, die Formeln verwenden. Dies ist eine Bibliothek, die Leute, die nicht gut in Mathe sind, auf jeden Fall benutzen sollten.
Recommended Posts