[PYTHON] Comment utiliser SymPy

Contexte

Récemment, j'ai parfois eu besoin d'une solution analytique d'un polynôme qui satisfait certaines conditions aux limites. Trouver une solution analytique semblait difficile, j'ai donc essayé de savoir si cela pouvait être rendu plus facile avec SymPy.

SymPy

SymPy est une bibliothèque Python permettant d'effectuer des opérations symboliques. Vous pouvez faire ce qui suit:

Par exemple, supposons que vous souhaitiez trouver la solution analytique des équations simultanées suivantes. $ bx + ay = ab $ $ x - cy = c$ La solution de cette équation simultanée est

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

Le résultat est $ \ frac {ac \ left (b + 1 \ right)} {a + bc}, \ frac {b \ left (a --c \ right)} {a + bc} $ Il peut être obtenu.

Coefficients polygonaux

Ici, polypoly

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

parmi,

f(0) = 0 f(1) = S_{1} f'(0) = 0 f'(1) = 0 f''(0) = 0 f''(1) = 0 Supposons que vous souhaitiez trouver un coefficient satisfaisant.

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)

Tout d'abord, préparez les variables et la fonction que vous souhaitez trouver comme ci-dessus,

La condition de $ f (0) = 0 $ est

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

Il est exprimé comme. De même, toutes les conditions restantes

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

Défini dans.

$ A_ {0}, A_ {1}, A_ {2}, A_ {3}, A_ {4}, A_ {5} $ qui satisfont à toutes ces conditions

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

Alors la réponse est (A_{0},A_{1},A_{2},A_{3},A_{4},A_{5}) = (0, 0, 0, 10 S_{1}, - 15 S_{1}, 6 S_{1}) Quelqu'un m'a demandé.

En remplaçant ce résultat par $ 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}

Ensuite, j'ai trouvé la fonction $ f (x) $ que je voulais trouver.

Recommended Posts

Comment utiliser SymPy
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser Python Argparse
Comment utiliser IPython Notebook
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv
Comment utiliser les dictionnaires redis-py
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Aller] Comment utiliser "... (3 périodes)"
Comment faire fonctionner GeoIp2 de Django
[Python] Comment utiliser input ()
Comment utiliser le décorateur
[Introduction] Comment utiliser open3d
Comment utiliser Python lambda
Comment utiliser Jupyter Notebook
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python
Comment utiliser cron (mémo personnel)