This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
Wolfram Research, Inc.

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]

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]

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]

Out[5]=

This shows the structure of the inverse function.

In[6]:= InputForm[%]

Out[6]//InputForm= {{x -> InverseFunction[f, 1, 1][a]}}

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[%]

Out[8]=