# solving a univariate equation with a sum of exponentials

I am interested in a method to find the roots of the following equation:

$$f(t) = \sum_{i=1}^n \alpha_i e^{\beta_i t} + \gamma t + \delta = 0.$$

For my application, coefficients $\alpha_i$, $\beta_i$, $\gamma$, and $\delta$ are real. $n$ is typically a small integer, say 10. In particular I am interested in the smallest positive real root of $f$.

For those interested, this equation arises when attempting to compute the point of intersection between the solution to the linear ODE

\begin{align} \dot x(t) &= Ax(t) + b & (A = A^T) \\ x(0) &= x_0 \end{align}

and the boundary of a set of linear constraints

$$Cx(t) \ge d.$$

The initial point is always feasible $(Cx_0\ge d)$. For my purposes, all matrices and vectors are real.

-

Assuming $\alpha_i, \beta_i, \gamma$, and $\delta$ are givens, any numeric root finder should make quick work of this. There won't be an algebraic solution. There is good info at Numerical Recipes chapter 9.

-
As an additional reminder: unless you have good starting points for the roots, you would do well to 1.) plot the function in the range of interest to be able to see where the roots might be; and 2.) use a "safe" rootfinding algorithm like Brent's method. –  Guess who it is. Nov 9 '10 at 0:40
Numerical Recipes suggests strongly that even if you can't look at all the cases, at least look at a bunch to see what they look like. This will give you some ideas. Certainly starting with t=0 for one end of your bracket will help. If you can find a t where the function has the opposite sign, the root is bracketed and you can find it. The risk is that there are three (or more) roots and you don't find the smallest. –  Ross Millikan Nov 9 '10 at 16:19
Thanks Ross and J.M. I have to solve this equation many times in my code. Visual inspection is not an option. Also I need a guarantee that I find the smallest positive real root. When $\gamma = 0$ and $n = 2$, I can reliably use fzero in Matlab to meet my requirements. I first solve $f'(t)=0$ to find the critical points. For the general problem I've been using chebfun, which works, but ends up being slow. I was/am hoping there is a specific algorithm to solve the equation directly. –  nwhsvc Nov 9 '10 at 16:26