Réseau de dérivées de fonctions spéciales
Wolfram Language contient plus de 300 fonctions mathématiques intégrées. Considérez l'opération de différenciation appliquée à chacune de ces fonctions. Dans la plupart des cas, une ou plusieurs nouvelles fonctions apparaissent dans les dérivées obtenues. La quantification des connexions permet d'étudier de manière intéressante la relation entre les symboles et les opérations qu'ils subissent. En particulier, l'exemple suivant illustre le réseau qui découle de la différenciation d'ordre inférieur.
Comme nous l'avons appris en calcul élémentaire, la différenciation du logarithme naturel donne la fonction réciproque.
![Click for copyable input](assets.en/special-function-derivative-network/In_274.png)
D[Log[x], x]
![](assets.en/special-function-derivative-network/O_185.png)
D'autre part, pour certaines fonctions, une dérivée peut être exprimée directement par la fonction d'origine.
![Click for copyable input](assets.en/special-function-derivative-network/In_275.png)
D[ProductLog[x], x]
![](assets.en/special-function-derivative-network/O_186.png)
La propriété "LowOrderDerivatives" de MathematicalFunctionData offre un accès rapide et pratique à toutes les dérivées.
![Click for copyable input](assets.en/special-function-derivative-network/In_276.png)
Entity["MathematicalFunction", "EllipticF"][
EntityProperty["MathematicalFunction",
"LowOrderDerivatives"]] // TraditionalForm
![](assets.en/special-function-derivative-network/O_187.png)
Rassemblez toutes les fonctions et leurs modèles d'arguments afin d'identifier la fonction après différenciation. (Pour éviter les occurrences courantes de puissances, ne cherchez pas la fonction puissance et racine carrée). Par exemple, sur la base de l'identité , la fonction Sec implique les fonctions Tan ainsi qu'elle-même, ce qui donne lieu à deux connexions.
![Click for copyable input](assets.en/special-function-derivative-network/In_283.png)
makeConnection[Entity["MathematicalFunction", "Sec"] ,
Function[{x}, Inactivate[D[Sec[x], x] == Sec[x] Tan[x]]]]
![](assets.en/special-function-derivative-network/O_188.png)
Analysez toutes les dérivées, éliminez toutes les boucles triviales dans les graphiques résultants et visualisez la structure du graphe obtenu.
![](assets.en/special-function-derivative-network/O_189.png)
Comptez le nombre de connexions.
![Click for copyable input](assets.en/special-function-derivative-network/In_286.png)
Flatten[allConnections, 1] // Length
![](assets.en/special-function-derivative-network/O_190.png)
Trouvez des boucles automatiques.
![Click for copyable input](assets.en/special-function-derivative-network/In_287.png)
selfLoops =
Select[ConnectedComponents[
Graph[Flatten[allConnections /. DirectedEdge -> UndirectedEdge,
1][[All, 1]]]], Length[#] == 1 &]
![](assets.en/special-function-derivative-network/O_191.png)
Trouvez les groupes de fonctions qui sont fermés sous différenciation et visualisez-les sous forme de graphes étiquetés.
![](assets.en/special-function-derivative-network/O_192.png)
La plupart des fonctions font partie de la composante géante du graphique. Passez la souris sur les sommets pour voir les fonctions et sur les arêtes pour voir les dérivées qui relient les fonctions.
![Click for copyable input](assets.en/special-function-derivative-network/In_290.png)
allConnectionsRest =
Select[Flatten[allConnections, 1],
FreeQ[#,
Alternatives @@
Flatten[{selfLoops, smallLoops}], \[Infinity]] &];
![Click for copyable input](assets.en/special-function-derivative-network/In_291.png)
grf = Graph[allConnectionsRest[[All, 1]],
VertexLabels -> Placed["Name", Tooltip],
EdgeLabels -> ((#1 -> Tooltip[" ", Column[#2]]) & @@@
allConnectionsRest),
PerformanceGoal -> "Quality",
ImageSize -> Full]
![](assets.en/special-function-derivative-network/O_193.png)
La division du graphe en communautés fait apparaître les fonctions elliptiques, les fonctions hypergéométriques, les fonctions à fenêtre, les fonctions zêta et quelques autres groupes de fonctions.
![Click for copyable input](assets.en/special-function-derivative-network/In_292.png)
CommunityGraphPlot[grf,
FindGraphCommunities[grf, Method -> "Modularity"]]
![](assets.en/special-function-derivative-network/O_194.png)