Входные функции сети
Язык программирования содержит более 300 встроенных математических функций. Рассмотрим операцию дифференцирования, применяемую к каждой из этих функций. В большинстве случаев, одна или несколько новых функций появляются в качестве производных. Количественный анализ связей между функциями поможет нам получить представление о взаимосвязи между символами и операциями в Wolfram Language. В частности, следующий пример иллюстрирует процесс получения сети функций, которая возникает на базe дифференцирования низкого порядка.
Согласно элементарному курсу математического анализа, путем дифференциации натурального логарифма, получим производную функцию.

D[Log[x], x]

С другой стороны, для выполнения определенных функций, производная может быть выражена непосредственно через исходную функцию.

D[ProductLog[x], x]

Свойство "LowOrderDerivatives" функции MathematicalFunctionData обеспечивает быстрый и удобный доступ ко всем инструментам для работы с производными.

Entity["MathematicalFunction", "EllipticF"][
EntityProperty["MathematicalFunction",
"LowOrderDerivatives"]] // TraditionalForm

Соберем все необходимые функции и их аргументы для того, чтобы определить функцию после дифференциации. Например, на основе уравнения, , функция Sec включает в себя функции Tan, а также саму себя, в результате чего мы получаем два соединения функций.

makeConnection[Entity["MathematicalFunction", "Sec"] ,
Function[{x}, Inactivate[D[Sec[x], x] == Sec[x] Tan[x]]]]

Проанализируем производные и визуализируем полученную структуру на графике.

Посчитаем количество связей.

Flatten[allConnections, 1] // Length

Найдем петли на графике.

selfLoops =
Select[ConnectedComponents[
Graph[Flatten[allConnections /. DirectedEdge -> UndirectedEdge,
1][[All, 1]]]], Length[#] == 1 &]

Найдем группы функций, закрытых в процессе дифференцирования и визуализируем их на графике.

Большинство функций являются компонентами большого графика, показанного ниже. Вы можете навести курсор на вершины индивидуальных компонентов графика, чтобы увидеть функции, и на стороны, чтобы увидеть производные, которые объединяют эти функции.

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]

Разделение графа на сообщества или кластеры показывает несколько видов функций, включающие эллиптические функции, гипергеометрические функции, функции-окна, дзета-функции.

CommunityGraphPlot[grf,
FindGraphCommunities[grf, Method -> "Modularity"]]
