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.
Ici, polypoly
parmi,
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
En remplaçant ce résultat par $ f (x) $
for i in range(6):
exec(f"f = f.subs(A{i}, solution[A{i}])")
Ensuite, j'ai trouvé la fonction $ f (x) $ que je voulais trouver.
Recommended Posts