# DSolve can't solve DSolve[f'[x] == InverseFunction[f][x], f[x], x]

Here is the code I tried.

DSolve[f'[x] == InverseFunction[f][x], f[x], x]


The pop-up message is DSolve::dvnoarg: The function f appears with no arguments.

But I don't think this is a valid reason. I have the argument x.

• If f has an argument x, it would appear as f[x], not InverseFunction[f][x]. The argument to InverseFunction is f without an x. The argument to InverseFunction[f] is x, but x is not an argument to f. You could try the equivalent DSolve[f[f'[x]] == x, f[x], x] to get a different error, indicating (imo) that DSolve does solve this type of equation (which is not an ODE in the normal sense as defined by standard textbooks, nor a DDE, but a more general functional differential equation). Commented Aug 24, 2020 at 3:13

## 1 Answer

Here's a way to get a solution, which I arrived at after trying a fixed-point iteration à la Picard iteration:

eqn = f'[x] == InverseFunction[f][x];
Off[InverseFunction::ifun];
Block[{f = a #^k &, eqn0},
eqn0 = PowerExpand@eqn;
ksol = First@Solve[Exponent[#, x] & /@ eqn0 && k > 0, k];
asol = First@Solve[eqn0 /. ksol /. x -> 1, a];
f0 = f /. asol /. ksol
]

(*
E^(((1 + Sqrt[5]) (Log[2] - Log[1 + Sqrt[5]]))/(3 + Sqrt[5])) *
#1^(1/2 (1 + Sqrt[5])) &
*)


Check:

Simplify[eqn /. f -> f0]
On[InverseFunction::ifun];

(*  True  *)