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)