# Detecting highest order derivative of a function in an equation

I am working with some code that generates an equation with a number of derivatives. I do not know the order of the derivatives or the order. If I was working with something algebraic, for example:

```
a, b, c = var('a,b,c')
eqn = a**2 + 3*b + c
```

I could use something like

```
coeffs = eqn.coefficients(a)
highest_order = coeffs[-1][1]
```

to find out the highest order of `a`

. It would also be okay if i could figure out the order of every derivative of a given function in an equation. I can do this if I know before-hand what the order of the derivative is

```
function('f')
eqn += f(a,b,c).diff(a,b)
eqn.find(f(a,b,c).diff(a,b))
```

and see that in fact that derivative is there somewhere. But what I really want, is for

```
eqn = f(a,b,c).diff(a,b) + b*f(a,b,c).diff(b,3) + c
```

to have something that (a) tells me 'eqn has `[D[0,1](f)(a,b,c), D[1,1,1](f)(a,b,c)]`

' or, (b) 'the highest order derivative of `eqn`

is `D[1,1,1](f)(a,b,c)`

'.

`eqn.operands()`

comes close to (a). But, it will still take some work to get what you want.