[PYTHON] Erstellen Sie mit Sympy + Jupyter die stärkste Taschenrechnerumgebung

Erstellen wir mit Sympy + Jupyter die stärkste Taschenrechnerumgebung.

Was ist Sympy?

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

Verwenden Sie Sympy von Jupyter

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)
\frac{3 \pi}{2} + \frac{e{i x}}{x{2} + y}

Wenn die Formel herauskommt, ist sie erfolgreich.

Untitled - Google Chrome_021.png

Über init_session ()

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/

Symboleinstellungen

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

Vereinfachung von Formeln

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

Löse die Gleichung

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 ]

Weisen Sie einer Variablen in einem Ausdruck einen Wert zu

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)

Differenzierung / partielle Differenzierung

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

Factoring / Prime Factoring

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.

Matrix / Vektor

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]

Kopieren Sie Formeln und fügen Sie sie in Latex ein

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.

メニュー_013.png

Ein Popup wie dieses wird angezeigt. Kopieren Sie die Formel und fügen Sie sie ein.

MathJax Equation Source - Google Chrome_015.png

Dieser Latex ist praktisch, da er direkt auf Qiita geklebt werden kann.

Ausgabeformel mit AA

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.

Schreiben Sie eine Grafik

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))

ダウンロード (9).png

Beginnen Sie schnell mit einer .ipynb-Vorlage

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.

Zusammenarbeit zwischen Jupyter und PyCharm

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.

メニュー_011.png

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 ein .ipynb-Generierungsskript

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.")

Registrieren Sie sich als externes Tool für PyCharm

Öffnen Sie das Menü "Datei (F)" von PyCharm und wählen Sie "Einstellungen ...".

メニュー_016.png

Wählen Sie im Einstellungsdialog "Extras" -> "Externe Tools" und drücken Sie die Taste "+".

Settings_017.png

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$

Edit Tool_018.png

.Ipynb kann jetzt über das Kontextmenü von PyCharm generiert werden!

Wählen Sie "Externe Aufgaben" -> "Name des registrierten Werkzeugs" aus dem Kontextmenü von PyCharm.

メニュー_019.png

Wenn Sie den Dateinamen in die Konsole eingeben, werden von Anfang an verschiedene vorgefüllte .ipynb-Dateien generiert.

python35 - [~-PycharmProjects-python35] - ...-document-document.ipynb - PyCharm Community Edition 2016.3.2_020.png

Wenn Sie eine bequemere Möglichkeit haben, es zu verwenden, posten Sie es bitte.

Nachwort

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

Erstellen Sie mit Sympy + Jupyter die stärkste Taschenrechnerumgebung
Erstellen Sie eine Umgebung mit virtualenv
Wechseln Sie die virtuelle Umgebung mit Jupiter
Reflektieren Sie die von Miniconda erstellte virtuelle Umgebung im Jupyter-Notizbuch
Einfache Jupyter-Umgebungskonstruktion mit Cloud9
Erstellen Sie eine virtuelle Umgebung mit Python!
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Holen Sie sich die stärkste Umgebung mit VS Code, Remote-Containern und Remote-Docker-Daemon
Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen Sie mit dem Sympy-Modul ein Diagramm
Erstellen Sie eine Ausführungsumgebung für Jupyter Lab
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Die stärkste Python-Entwicklungsumgebung PyCharms Empfehlung
Die stärkste in Python integrierte Entwicklungsumgebung PyCharm
nb_conda_kernels wird empfohlen, wenn Sie die virtuelle Umgebung mit jupyter betreten möchten
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Erstellen einer Analyseumgebung mit Docker (Jupyter Notebook + PostgreSQL)
Ausführungsumgebung im Web von "Project Jupyter"
Erstellen Sie mit boot2docker eine Ausführungsumgebung für jede Sprache
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Versuchen Sie, die virtuelle Umgebung von conda mit Jupyter Notebook zu verwenden
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Füllen Sie die Breite des Jupyter-Notizbuchs, um den Browser zu füllen
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Erstellen Sie ein Übersetzungswerkzeug mit dem Translate Toolkit
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Erstellen Sie eine virtuelle Umgebung mit Anaconda, die über Pyenv installiert ist
Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Die stärkste PySide / PyQt-Entwicklungsumgebung ist auch PyCharm
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Code-Server-Online-Umgebung (2) Erstellen Sie mit Boto3 ein virtuelles Netzwerk
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Installieren Sie Ubuntu 20.04 mit GUI und bereiten Sie die Entwicklungsumgebung vor
Erstellen Sie eine japanische OCR-Umgebung mit Anaconda (Tesseract + Pyocr).
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
[Venv nicht erforderlich] Die stärkste Python-Entwicklungsumgebung, die mit Remote Containern erstellt wurde [VS Code / Docker]
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS mit anaconda