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.
D[Log[x], x]
D'autre part, pour certaines fonctions, une dérivée peut être exprimée directement par la fonction d'origine.
D[ProductLog[x], x]
La propriété "LowOrderDerivatives" de MathematicalFunctionData offre un accès rapide et pratique à toutes les dérivées.
Entity["MathematicalFunction", "EllipticF"][
EntityProperty["MathematicalFunction",
"LowOrderDerivatives"]] // TraditionalForm
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.
makeConnection[Entity["MathematicalFunction", "Sec"] ,
Function[{x}, Inactivate[D[Sec[x], x] == Sec[x] Tan[x]]]]
Analysez toutes les dérivées, éliminez toutes les boucles triviales dans les graphiques résultants et visualisez la structure du graphe obtenu.
Comptez le nombre de connexions.
Flatten[allConnections, 1] // Length
Trouvez des boucles automatiques.
selfLoops =
Select[ConnectedComponents[
Graph[Flatten[allConnections /. DirectedEdge -> UndirectedEdge,
1][[All, 1]]]], Length[#] == 1 &]
Trouvez les groupes de fonctions qui sont fermés sous différenciation et visualisez-les sous forme de graphes étiquetés.
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.
allConnectionsRest =
Select[Flatten[allConnections, 1],
FreeQ[#,
Alternatives @@
Flatten[{selfLoops, smallLoops}], \[Infinity]] &];
grf = Graph[allConnectionsRest[[All, 1]],
VertexLabels -> Placed["Name", Tooltip],
EdgeLabels -> ((#1 -> Tooltip[" ", Column[#2]]) & @@@
allConnectionsRest),
PerformanceGoal -> "Quality",
ImageSize -> Full]
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.
CommunityGraphPlot[grf,
FindGraphCommunities[grf, Method -> "Modularity"]]