[PYTHON] [Note] Réécrire la notation de la fonction exponentielle ⇆ fonction triangulaire avec Sympy.rewrite ()

Comme son titre l'indique, il s'agit d'un article en tant que mémorandum personnel. Nous vous serions reconnaissants si vous pouviez signaler des erreurs évidentes.

De plus, je suis actuellement en train de changer d'emploi (Boss)

À propos de Sympy

SymPy 1.5 documentation

Sympy est une bibliothèque qui vous permet d'effectuer des calculs de symboles sur Python, et vous pouvez transformer des expressions par programme à l'aide de cahiers et de stylos papier pour trouver des solutions aux équations. J'y prête attention car cela peut être utile lors de l'apprentissage en suivant le processus de dérivation de la théorie expliquée dans les livres académiques et les livres techniques, ou lorsqu'il est nécessaire de préparer les formules mathématiques nécessaires pour plus de commodité. Sympy.rewrite() sympy.core.basic.Basic.rewrite Cette méthode est utilisée pour ré-exprimer la fonction spécifiée dans une autre forme de fonction. Fonction exponentielle ⇆ La transformation de formule de fonction triangulaire est souvent effectuée dans le processus de calcul du mouvement d'onde ou d'une fonction complexe, mais la simplification de la formule sympy.simplify () Il semble pratique à utiliser en combinaison avec /simplify/simplify.html) etc.

exemple

Considérons la situation où la fonction complexe w de l'équation suivante est divisée en une partie réelle et une partie imaginaire. (U et α sont des constantes) $ w = U e^{-i \alpha } \tag{1} $ Pour l'équation (1) $ u = Re[w],  v = -Im[w] $ Ensuite, exprimons l'équation (1) comme suit. $ w = u - iv \tag{2} $ Trouvez u et v dans cette équation (2).

Pour l'équation (1), réécrivez la fonction exponentielle comme la somme des termes réels et imaginaires en utilisant la formule d'Euler de l'équation suivante. $ e^{i \theta } = \cos{\theta} + i\sin{\theta} \tag{3} $ Appliquer l'équation (3) à l'équation (1), $ w = U (\cos{\alpha} - i\sin{\alpha}) \tag{4} $ Donc, $ u = Re\left[w\right]=U\cos{\alpha},$$v = -Im\left[w\right]=U\sin{\alpha} $

Ecrire dans Sympy

#Importation de bibliothèques et de modules
import sympy as sp
from sympy import * 

#U constant,Définir le symbole pour α
U, alpha = symbols('U alpha')

#Définir la fonction w
w = Function("w")
w = U*exp(-I*alpha)

afficher

print(w)  #w s'affiche sous forme de caractère
w         #Afficher w sous forme mathématique

résultat スクリーンショット 2019-12-25 17.53.11.png Ici, rewrite () est utilisé pour ré-exprimer en utilisant la fonction triangulaire (sin, cos).

w.rewrite(exp, sin, cos)

résultat スクリーンショット 2019-12-25 17.57.14.png Vous pouvez également utiliser expand () pour développer une expression.

expand(w.rewrite(exp, sin, cos))

résultat スクリーンショット 2019-12-25 17.59.54.png

De plus, l'utilisation de re () spécifiera les parties réelles et imaginaires de la formule.

re(expand(w.rewrite(exp, sin, cos)))

résultat スクリーンショット 2019-12-25 18.10.41.png

Résumé

J'ai beaucoup d'erreurs de calcul manuel, alors je suis tombé sur Sympy lorsque je me suis demandé si je pouvais lui substituer Python. (Cela fait environ 3 jours que je me suis rencontré au moment de la rédaction de cet article ...) Il semble que cela puisse être utilisé pour vérifier chaque partie du processus de calcul et pour l'auto-restauration d'exemples, alors j'ai pensé que si je me rencontrais quand j'étais étudiant, j'aurais fait beaucoup de progrès. Les notes d'apprentissage ne sont pas des notes papier volumineuses, mais si vous les écrivez en .ipynb à l'aide de Jupyter et que vous les gérez sur Github, vous pouvez enregistrer le processus d'apprentissage, et c'est pratique car vous pouvez l'utiliser pour rédiger des articles de cette manière. Il y a aussi Notability de l'application de notes manuscrites (plutôt pour prendre des notes avec des chiffres tels que des conférences), mais à la fin, il y avait un problème car elle était obstruée par des erreurs de calcul, donc l'existence d'une bibliothèque comme Sympy est utile. Je m'y habituerai davantage à l'avenir.


Comme je l'ai mentionné au début, à partir de fin 2019, je suis en train de changer de poste en ingénieur. Si vous pensez "Qu'est-ce que ce gars!?", Vous pouvez suivre Lapras, Wantedly, etc. à partir du compte lié, donc je serais heureux si vous pouviez voir diverses informations. Twitter_DM(@RiSE_blackbird)

Recommended Posts

[Note] Réécrire la notation de la fonction exponentielle ⇆ fonction triangulaire avec Sympy.rewrite ()
Remarque pour le formatage des nombres avec la fonction de format python