Função especial de rede de derivadas
A Wolfram Language contém mais de 300 funções matemáticas integradas. Considere a operação de diferenciação aplicada a cada uma destas funções. Na maioria dos casos, uma ou mais novas funções aparecem nas derivadas resultantes. A quantificação das conexões resulta em um estudo interessante sobre a relação entre os símbolos e operações sobre elas. Em particular, o exemplo a seguir deriva da rede que surge da diferenciação de ordem inferior.
Conforme aprendido em cálculo elementar, diferenciar o logaritmo natural resulta uma função inversa.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_278.png)
D[Log[x], x]
![](assets.pt-br/special-function-derivative-network/O_183.png)
Por outro lado, para algumas funções, uma derivada pode ser expressa diretamente através da função original.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_279.png)
D[ProductLog[x], x]
![](assets.pt-br/special-function-derivative-network/O_184.png)
A propriedade "LowOrderDerivatives" de MathematicalFunctionData oferece acesso rápido e conveniente a todas as derivadas.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_280.png)
Entity["MathematicalFunction", "EllipticF"][
EntityProperty["MathematicalFunction",
"LowOrderDerivatives"]] // TraditionalForm
![](assets.pt-br/special-function-derivative-network/O_185.png)
Colete todas as funções e seus padrões de argumento para identificar a função após a diferenciação. (Para evitar ocorrências comuns de potências, não busque pela potência nem a função de raiz quadrada.) Por exemplo, com base na identidade , a função Sec envolve as funções Tan assim como a ela mesma, resultando em duas conexões.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_287.png)
makeConnection[Entity["MathematicalFunction", "Sec"] ,
Function[{x}, Inactivate[D[Sec[x], x] == Sec[x] Tan[x]]]]
![](assets.pt-br/special-function-derivative-network/O_186.png)
Analise todas as derivadas, elimine todas as reincidências nos gráficos resultantes e visualize a estrutura gráfica resultante.
![](assets.pt-br/special-function-derivative-network/O_187.png)
Conte o número de conexões.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_290.png)
Flatten[allConnections, 1] // Length
![](assets.pt-br/special-function-derivative-network/O_188.png)
Ache as reincidências.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_291.png)
selfLoops =
Select[ConnectedComponents[
Graph[Flatten[allConnections /. DirectedEdge -> UndirectedEdge,
1][[All, 1]]]], Length[#] == 1 &]
![](assets.pt-br/special-function-derivative-network/O_189.png)
Encontre os grupos de funções que são fechados sob diferenciação e visualize como gráficos legendados.
![](assets.pt-br/special-function-derivative-network/O_190.png)
A maioria das funções são parte do componente gigante do gráfico. Passe o mouse sobre os vértices para ver as funções e sobre as bordas para ver as derivadas que conectam as funções.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_294.png)
allConnectionsRest =
Select[Flatten[allConnections, 1],
FreeQ[#,
Alternatives @@
Flatten[{selfLoops, smallLoops}], \[Infinity]] &];
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_295.png)
grf = Graph[allConnectionsRest[[All, 1]],
VertexLabels -> Placed["Name", Tooltip],
EdgeLabels -> ((#1 -> Tooltip[" ", Column[#2]]) & @@@
allConnectionsRest),
PerformanceGoal -> "Quality",
ImageSize -> Full]
![](assets.pt-br/special-function-derivative-network/O_191.png)
Dividir o gráfico em comunidades mostra funções elípticas, funções hipergeométrica, funções de janela, funções zeta, e mais alguns grupos de funções.
![Click for copyable input](assets.pt-br/special-function-derivative-network/In_296.png)
CommunityGraphPlot[grf,
FindGraphCommunities[grf, Method -> "Modularity"]]
![](assets.pt-br/special-function-derivative-network/O_192.png)