**3.4.5 Equations Involving Functions**

Whenever equations can be reduced to a purely algebraic form, it is possible to solve them systematically using Solve. But at least with the default option setting InverseFunctions->True, Solve will also attempt to handle some other kinds of equations.

Here is a simple transcendental equation for x.
In[1]:= **Solve[ArcSin[x] == a, x]**

Out[1]=

There is no solution to this equation in terms of standard functions.
In[2]:= **Solve[Cos[x] == x, x]**

Solve::tdep: The equations appear to involve transcendental functions of the variables in an essentially non-algebraic way.

Out[2]=

Mathematica can nevertheless find a numerical solution even in this case.
In[3]:= **FindRoot[Cos[x] == x, {x, 0}]**

Out[3]=

In practice, a large fraction of equations involving transcendental functions cannot be solved exactly in symbolic form. And even in those cases where some solutions can be found, it is often impossible to get all the solutions.

Mathematica prints a warning indicating that solutions are lost in this case.
In[4]:= **Solve[Sin[x] == a, x]**

Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found.

Out[4]=

An equation like in principle has an infinite number of solutions for differing by multiples of . However, even with the setting InverseFunctions

->True, Solve gives you only one of the possible solutions.

While all the solutions to this particular equation would be easy to parametrize, most such equations yield much more complicated sets of solutions. With simultaneous trigonometric equations, for example, it is common to end up needing solutions to arbitrary Diophantine equations, which cannot in general be found by any finite procedure.

The fact that Mathematica generates only some of the solutions to each equation means that if you try to solve several simultaneous equations, no solutions may be found, even though solutions do in fact exist.

With an unknown function f, Mathematica produces a warning, then gives a formal solution in terms of the inverse function of f.
In[5]:= **Solve[f[x] == a, x]**

InverseFunction::ifun: Warning: Inverse functions are being used. Values may be lost for multivalued inverses.

Out[5]=

This shows the structure of the inverse function.
In[6]:= **InputForm[%]**

Out[6]//InputForm=

If you ask Mathematica to solve an equation involving an unknown function, it will try to construct a formal solution to the equation in terms of inverse functions. In doing this, Mathematica effectively assumes that the function indeed has a unique inverse. If there are several possible inverses, as in the case of a function like Sin, Mathematica will inevitably lose solutions in such a case.

Inverse functions.

Here is the inverse function of f evaluated with argument a.
In[7]:= **InverseFunction[f][a]**

Out[7]=

Applying f to the previous expression yields a warning, and then gives the result a.
In[8]:= **f[%]**

InverseFunction::ifun: Warning: Inverse functions are being used. Values may be lost for multivalued inverses.

Out[8]=