Calcul avec Sympy
#Sympy 1 dans le Google Colab actuel.1.Contient 1.
# Sympy 1.Puisque 1 ne peut pas calculer la «solution spéciale» décrite plus loin, 1.Passez à 3.
!pip install sympy==1.3
Collecting sympy==1.3
[?25l Downloading https://files.pythonhosted.org/packages/dd/f6/ed485ff22efdd7b371d0dbbf6d77ad61c3b3b7e0815a83c89cbb38ce35de/sympy-1.3.tar.gz (5.9MB)
[K |████████████████████████████████| 5.9MB 4.1MB/s
[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.6/dist-packages (from sympy==1.3) (1.1.0)
Building wheels for collected packages: sympy
Building wheel for sympy (setup.py) ... [?25l[?25hdone
Created wheel for sympy: filename=sympy-1.3-cp36-none-any.whl size=5199947 sha256=bc14a07ac6744969566fce4c541612a22adecb5bc83223ccc225ed28f415c38d
Stored in directory: /root/.cache/pip/wheels/6c/59/86/478e3c0f298368c119095cc5985dedac57c0e35a85c737f823
Successfully built sympy
Installing collected packages: sympy
Found existing installation: sympy 1.1.1
Uninstalling sympy-1.1.1:
Successfully uninstalled sympy-1.1.1
Successfully installed sympy-1.3
import sympy as sym
from sympy.plotting import plot
sym.init_printing(use_unicode=True)
%matplotlib inline
#Si vous utilisez Google Colab, exécutez pour prendre en charge l'affichage TeX par Sympy
def custom_latex_printer(exp,**options):
from google.colab.output._publish import javascript
url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=default"
javascript(url=url)
return sym.printing.latex(exp,**options)
sym.init_printing(use_latex="mathjax",latex_printer=custom_latex_printer)
Traite le caractère spécifié comme un symbole (caractère représentant une variable).
a = sym.Symbol('a')
Si vous souhaitez les définir tous ensemble, procédez comme suit.
a, b, c, x, y = sym.symbols("a b c x y")
Traite le caractère spécifié comme une fonction.
f = sym.Function('f')
g = sym.Function('g')
#La formule est une expression numérique ou une formule numérique en anglais
expr = x**2-12*x+8
expr
#Illustré la fonction obtenue
plot(expr, (x, -20, 20))
<sympy.plotting.plot.Plot at 0x7faf57ced080>
#Affacturage
expr = x**2 + 2*x + 1
sym.factor(expr)
#Équation ou égalité en anglais
eq = sym.Eq(expr)
eq
#Vous pouvez spécifier le côté droit comme ceci
eq = sym.Eq(x**2-12*x, -8)
eq
#Résous l'équation
sym.solve(eq)
#Peut gérer des expressions à l'aide de l'algèbre
eq = sym.Eq(a * x ** 2 + b * x + c)
eq
#Résoudre pour x
sym.solve(eq, x)
#Équations simultanées
eq1 = 3 * x + 5 * y - 29
eq2 = x + y - 7
sym.solve([eq1, eq2])
expr = 2 * x ** 2 + 5 * x - 3
expr
#différentiel
sym.Derivative(expr)
#Calculez le différentiel
sym.Derivative(expr).doit()
#C'est pareil même si c'est écrit comme ça
sym.diff(expr)
# sym.Noté comme une équation utilisant Eq
sym.Eq(sym.Derivative(expr), sym.diff(expr))
#Il a la même signification que ci-dessus, mais s'il n'y a qu'une seule variable, elle peut être omise comme ci-dessus.
#S'il y a deux variables ou plus, vous devez spécifier ce que vous voulez différencier.
sym.Eq(sym.Derivative(expr, x), sym.diff(expr, x))
#Différentiel de second ordre
sym.Eq(sym.Derivative(expr, x, 2), sym.diff(expr, x, 2))
#Différencier sur x x=Remplaçant 1
sym.diff(expr).subs(x, 1)
#Différencier sur x
expr = a * x ** 2 + b * x * y + c * y ** 2
sym.diff(expr, x)
#Différencier sur x x=Remplaçant 1
sym.diff(expr, x).subs(x, 1)
Complétez la formule différentielle suivante à l'aide de Sympy. [Indice] Lorsque vous utilisez une fonction telle que sin dans Sympy, écrivez-la sous la forme sym.sin.
1-1.
1-2.
1-3.
1-4.
1-5.
1-6.
1-7.
1-8.
1-9.
1-10.
1-11.
1-12.
1-13.
1-14.
Résoudre $ 2 f '(x) + 5 f (x) = 0 $
#Équation différentielle normale
eq = sym.Eq(2 * f(x).diff(x,1) + 5 * f(x))
eq
#Solution générale
ans = sym.dsolve(eq)
print(ans)
ans
Eq(f(x), C1*exp(-5*x/2))
#Solution spéciale
ans = sym.dsolve(eq, ics={f(0):1})
print(ans)
ans
Eq(f(x), exp(-5*x/2))
plot(ans.rhs, (x, -10, 10)) #rhs est le bon côté(Right-hand side)Sens de
<sympy.plotting.plot.Plot at 0x7faf54dd4320>
#Solution spéciale x=Quand
print(ans.subs(x, 2))
ans.subs(x, 2)
Eq(f(2), exp(-5))
#Si vous utilisez une méthode appelée evalf, elle se développera en virgule flottante
ans.subs(x, 2).evalf()
Répondez aux questions suivantes sur l'équation différentielle normale $ f '' (x) + f '(x) + 4 f (x) = 0 $.
Trouvez une solution générale.
Trouvez la solution spéciale lorsque $ f (0) = 1 $, $ f '(0) = 1 $.
[Indice] ʻics = {f (0): 1, f () .diff (x, 1) .subs (, _): 1} Écrivez `` et remplissez _ de manière appropriée pour résoudre le problème.
#Équation d'intégration
expr = x ** a
integ = sym.Integral(expr, x)
print(integ)
integ
Integral(x**a, x)
#Effectuer l'intégration
integ.doit()
#C'est pareil même si c'est écrit comme ça
sym.integrate(expr, x)
# sym.Noté comme une équation utilisant Eq
eq = sym.Eq(sym.Integral(expr, x), sym.integrate(expr, x))
print(eq)
eq
Eq(Integral(x**a, x), Piecewise((x**(a + 1)/(a + 1), Ne(a, -1)), (log(x), True)))
Complétez la formule d'intégration suivante à l'aide de Sympy.
3-1.
3-2.
3-3.
3-4.
3-5.
3-6.
3-7.
3-8.
3-9.
3-10.
3-11.
expr = (x-a)*(b-x)
eq = sym.Eq(sym.Integral(expr, (x, a, b)), sym.integrate(expr, (x, a, b))).factor()
print(eq)
eq
Eq(-Integral((-a + x)*(-b + x), (x, a, b)), -(a - b)**3/6)
expr = x/(x**2 + 1)
eq = sym.Eq(sym.Integral(expr, (x, 1, 2)), sym.integrate(expr, (x, 1, 2)))
print(eq)
eq
Eq(Integral(x/(x**2 + 1), (x, 1, 2)), -log(2)/2 + log(5)/2)
sym.integrate(expr, (x, 1, 2)).evalf()
Résolvez l'équation intégrale constante suivante à l'aide de Sympy.
Recommended Posts