[PYTHON] Prouvons le théorème d'addition d'une fonction triangulaire en remplaçant la fonction par une fonction dans SymPy (≠ substitution)

sous-marins et remplacer

Les "subs" et "replace" de SymPy sont des non-fonctions similaires de substitution et de remplacement.

from sympy import symbols, sin, cos, exp, I, sqrt, expand, init_printing
init_printing()
x = symbols('x')
f =  sin(x)+sin(x**2)

L'exemple suivant remplace «cos (x)» par «sin (x)».

f.subs(sin(x), cos(x))
\sin{\left (x^{2} \right )} + \cos{\left (x \right )}

Evidemment, dans ce cas, «sin (x ** 2)» n'est pas remplacé par «cos (x ** 2)». Je ne sais pas si c'est la spécification prévue, mais .subs (sin, cos) peut remplacer sin par cos.

f.subs(sin, cos)
\cos{\left (x \right )} + \cos{\left (x^{2} \right )}

Cependant, .subs (sin, sqrt) ne peut pas remplacer sin par sqrt.

f.subs(sin, sqrt)
\sin{\left (x \right )} + \sin{\left (x^{2} \right )}

Je ne suis pas sûr, mais je pense que sympy.core.function.FunctionClass peut être remplacé l'un par l'autre.

for func in [sin, cos, sqrt]:
    print(func.__class__)
<class 'sympy.core.function.FunctionClass'>
<class 'sympy.core.function.FunctionClass'>
<class 'function'>

À l'origine, je pense que «remplacer» est l'utilisation originale pour remplacer une fonction par une fonction.

f.replace(sin, cos)
\cos{\left (x \right )} + \cos{\left (x^{2} \right )}
f.replace(sin, sqrt)
\sqrt{x} + \sqrt{x^{2}}

Vous pouvez utiliser votre propre fonction ou expression lambda comme argument de replace.

f.replace(sin, lambda t: cos(t**2)) # sin(□)Cos(□**2)Remplacer par
\cos{\left (x^{2} \right )} + \cos{\left (x^{4} \right )}

De la formule d'Euler

Officiel d'Euler $ e^{\theta i} = \cos\theta + i\sin\theta\tag{1} $ Dans, si vous remplacez $ \ theta $ par $ - \ theta $, alors de $ \ cos (- \ theta) = \ cos (\ theta), \ \ sin (- \ theta) = - \ sin \ theta $ $ e^{-\theta i} = \cos\theta - i\sin\theta\tag{2} $ est. Par conséquent, à partir de $ (1) + (2) $ $ e^{\theta i} + e^{-\theta i} = 2\cos\theta\ \Longleftrightarrow\ \cos\theta = \frac{e^{\theta i} + e^{-\theta i}}{2} $ À partir de $ (1) - (2) $ $ e^{\theta i} - e^{-\theta i} = 2i\sin\theta\ \Longleftrightarrow\ \sin\theta = \frac{e^{\theta i} - e^{-\theta i}}{2i} $ Tient. Autrement dit, comme il est bien connu, $ \ cos $ et $ \ sin $ peuvent être représentés par des fonctions exponentielles.

cos2exp = lambda t: (exp(t*I) + exp(-t*I))/2
sin2exp = lambda t: (exp(t*I) - exp(-t*I))/(2*I)
(sin(x)+cos(x)).replace(cos, cos2exp).replace(sin, sin2exp)
- \frac{i}{2} \left(e^{i x} - e^{- i x}\right) + \frac{e^{i x}}{2} + \frac{1}{2} e^{- i x}

En utilisant cela, diverses formules de fonctions triangulaires peuvent être prouvées (confirmées).

alpha, beta = symbols(r'\alpha \beta')
A = sin(alpha+beta)
B = sin(alpha)*cos(beta) + cos(alpha)*sin(beta)
expand(A.replace(sin, sin2exp).replace(cos, cos2exp))
- \frac{i}{2} e^{i \alpha} e^{i \beta} + \frac{i}{2} e^{- i \alpha} e^{- i \beta}
expand(B.replace(sin, sin2exp).replace(cos, cos2exp))
- \frac{i}{2} e^{i \alpha} e^{i \beta} + \frac{i}{2} e^{- i \alpha} e^{- i \beta}

Maintenant, ʻA = B`, c'est-à-dire $ \sin(\alpha+\beta) = \sin\alpha\cos\beta + \cos\alpha\sin\beta $ A été confirmé.

Recommended Posts

Prouvons le théorème d'addition d'une fonction triangulaire en remplaçant la fonction par une fonction dans SymPy (≠ substitution)
Récupérer l'appelant d'une fonction en Python
[AWS] Lançons un test unitaire de la fonction Lambda dans l'environnement local
Faisons un saut dans l'industrie manufacturière en utilisant le Web en plus de Python
La valeur de meta lors de la spécification d'une fonction sans valeur de retour avec Dask dataframe s'applique
Présentons la bibliothèque actuellement utilisée par les ingénieurs avec environ 3 ans d'expérience dans Django
Résumons les fonctions de base de TensorFlow en créant un réseau neuronal qui apprend les portes XOR.
Traitez le contenu du fichier dans l'ordre avec un script shell
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
Si vous donnez une liste avec l'argument par défaut de la fonction ...
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Une fonction qui mesure le temps de traitement d'une méthode en python
Créer un lecteur vidéo avec PySimpleGUI + OpenCV 3 Ajout de la fonction de masque
Créez une fonction pour obtenir le contenu de la base de données dans Go
Un mémo organisé en renommant les noms de fichiers dans le dossier avec python
Générez une liste contenant le nombre de jours du mois en cours.
Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Trouvez la valeur minimale de la fonction par la méthode d'optimisation du groupe de particules (PSO)
J'ai fait une erreur en récupérant la hiérarchie avec MultiIndex of pandas
Essayez de calculer la fonction β de Godel avec SymPy
N'hésitez pas à rédiger un test avec nez (dans le cas de + gevent)
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Approximation par la méthode des moindres carrés d'un cercle à deux points fixes
Dessinons la tension du multimètre numérique 34461A de l'instrument de mesure Keysight avec Circuit Python
Comment obtenir une liste de fichiers dans le même répertoire avec python