[PYTHON] Verwendung von SymPy

Hintergrund

In letzter Zeit brauchte ich manchmal eine analytische Lösung eines Polynoms, das bestimmte Randbedingungen erfüllt. Es schien schwierig zu sein, eine analytische Lösung zu finden, und ich versuchte herauszufinden, ob dies mit SymPy einfacher gemacht werden könnte.

SymPy

SymPy ist eine Python-Bibliothek zum Ausführen symbolischer Operationen. Sie können Folgendes tun:

Angenommen, Sie möchten die analytische Lösung der folgenden simultanen Gleichungen finden. $ bx + ay = ab $ $ x - cy = c$ Die Lösung dieser simultanen Gleichung ist

import sympy
a = sympy.symbols("a")
b = sympy.symbols("b")
c = sympy.symbols("c")
x = sympy.symbols("x")
y = sympy.symbols("y")
sympy.solve([b*x+a*y-b*a,x-c*y-c],(x,y))

Das Ergebnis ist $ \ frac {ac \ left (b + 1 \ right)} {a + bc}, \ frac {b \ left (a --c \ right)} {a + bc} $ Es kann erhalten werden.

Polygonale Koeffizienten

Hier Polypoly

f(x) = A_{0}+A_{1} x+A_{1} x^{2} + A_{3} x^{3} + A_{4} x^{4} + A_{5} x^{5}

unter,

f(0) = 0 f(1) = S_{1} f'(0) = 0 f'(1) = 0 f''(0) = 0 f''(1) = 0 Angenommen, Sie möchten einen Koeffizienten finden, der erfüllt.

for i in range(6):
    exec(f"A{i} = sympy.Symbol(\"A{i}\")")
S1 = sympy.Symbol("S1")
x = sympy.Symbol("x")

f = A0 + A1*(x) + A2*(x)**2 + A3*(x)**3 + A4*(x)**4 + A5*(x)**5
f1 = sympy.diff(f, x)
f2 = sympy.diff(f1, x)

Bereiten Sie zunächst die Variablen und die Funktion vor, die Sie wie oben finden möchten.

Die Bedingung von $ f (0) = 0 $ ist

cond0 = f.subs(x, 0) - 0

Es wird ausgedrückt als. Ebenso alle übrigen Bedingungen

cond1 = f.subs(x, 1) - S1
cond2 = f1.subs(x, 0) - 0
cond3 = f1.subs(x, 1) - 0
cond4 = f2.subs(x, 0) - 0
cond5 = f2.subs(x, 1) - 0

Definiert in.

$ A_ {0}, A_ {1}, A_ {2}, A_ {3}, A_ {4}, A_ {5} $, die alle diese Bedingungen erfüllen

solution = sympy.solve([cond0, cond1, cond2, cond3, cond4, cond5],(A0,A1,A2,A3,A4,A5))

Dann lautet die Antwort (A_{0},A_{1},A_{2},A_{3},A_{4},A_{5}) = (0, 0, 0, 10 S_{1}, - 15 S_{1}, 6 S_{1}) Ich wurde gefragt.

Einsetzen dieses Ergebnisses in $ f (x) $

for i in range(6):
    exec(f"f = f.subs(A{i}, solution[A{i}])")

f(x) = 10S_{1}x^{3} -15S_{1}x^{4} + 6S_{1}x^{5} f'(x) = 30S_{1}x^{2} -60S_{1}x^{3} + 30S_{1}x^{4} f''(x) = 60S_{1}x -180S_{1}x^{2} + 120S_{1}x^{3}

Dann fand ich die Funktion $ f (x) $, die ich finden wollte.

Recommended Posts

Verwendung von SymPy
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Verwendung von IPython Notebook
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Go] Verwendung von "... (3 Perioden)"
So bedienen Sie GeoIp2 von Django
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?
So verwenden Sie Jupyter Notebook
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory
Verwendung von Python-Bytes
Verwendung von cron (persönliches Memo)