There is another possibly more important problem, beyond those mentioned by @Yongjian Feng.
While you may, personally think the inverse function is of the form you show. But what if you wanted to see an inverse in terms of a?
You have TWO parameters in there: a AND x. And yes, surely you think of x as a variable, with a as an unknown parameter. We get conditioned to think of things that way.
But suppose we made this a simpler problem, without x in there?
Now finverse actually succeeds, because it sees only the one variable: a.
So I will argue the problem is not so much that MATLAB was worried a might have special values that invalidated the existence of an inverse, but that MATLAB was unsure what the inverse function means when you have TWO variables.
As you should see, in the first case, MATLAB still gets upset, because for some values of a, the inverse does not exist. It tells you that. I could probably tell MATLAB to assume a never takes on problematic values. I'm actually a little surprised that in the second case, the inverse function becomes problematic if x==1, in which case again an inverse will not exist. Regardless, there would be two very different inverses, depending on whether a or x is the variable.
Had your function been of the form:
f = x^(y-1)
my guess is you might have recognized this as an issue. But we are conditioned to think of x as a variable, whereas a is always a parameter. We get this from schooling, from books, etc. MATLAB does not have such preconceptions, nor should it.
But you should see the issue now. MATLAB needs to know if it should consider this a function of a or of x, where the other variable is just a parameter. You needed to provide guidance to finverse.