If you mean finding an exact solution by hand, there is no such way aside from trial-and-error.

If you're ok with approximations, then you turn to **root-finding algorithms** for that. Some popular approximate/numerical methods are:

* Bisection Method - solves for an x that satisfies

f(x) = 0

assuming that f(x) is a continuous function. Requires a starting closed interval [a_1, b_1] such that f(a_1) and f(b_1) have opposing signs. Get a new interval [a_2, b_2] by getting the half of [a_1, b_1] which satisfies the opposite sign condition at the endpoints. Keep getting a new interval [a_n, b_n] until it becomes short enough to your liking. Then you can approximate x as any value within [a_n, b_n].

* Newton-Rhapson Method - solves for an x that satisfies

f(x) = 0

assuming that f(x) has a continuous first derivative f'(x). Pick a starting guess x_1 = a then find the next approximate root by

x_2 = x_1 - f( x_1 )/f'( x_1)

Keep iterating

x_{k + 1} = x_k - f( x_k )/f'( x_k)

until k = n such that

| f( x_{n + 1} ) - f( x_n ) | << 1

Then x_n is your approximate root.

Note that each method I just outlined gives you only one root. Which root you'd get depends on your starting condition (starting interval [a_1, b_1] for Bisection Method, starting guess root x_1 for Newton-Rhapson)