### Topics

### features

### Publications

### Issue Archive

# Real-Time Exponential Curve Fits Using Discrete Calculus

- Wednesday, 01 September 2010

An improved solution for curve fitting
data to an exponential equation (*y* = *Ae ^{Bt}*
+

*C*) has been developed. This improvement is in four areas — speed, stability, determinant processing time, and the removal of limits. The solution presented avoids iterative techniques and their stability errors by using three mathematical ideas: discrete calculus, a special relationship (between exponential curves and the Mean Value Theorem for Derivatives), and a simple linear curve fit algorithm. This method can also be applied to fitting data to the general power law equation

*y*=

*Ax*+

^{B}*C*and the general geometric growth equation

*y*=

*Ak*+

^{Bt}*C*.

This improved method offers several advantages over prior exponential-curve-fitting methods. The advantages are as follows:

- Speed: Iterative (non-linear) methods are 50 to 100 times slower. Previously, only iterative methods could be used when
*C*was not zero, or when all the samples were not zero or greater. - Stability: No bad guesses. There is no chance of making a bad first guess as sometimes happens in iterative (non-linear) techniques. Sometimes the iterative techniques “blow up” when they start with a bad guess.
- Real-Time requires determinism: Being faster would allow this method to be used in real-time applications where non-linear methods take too much processing time. But, most real-time applications require determinism (a consistent processing time from curve fit to curve fit, or at least a known maximum processing time). Iterative techniques vary greatly in the processing time they consume. This new method takes the same amount of processing time (for the same number of data points), no matter what the error distribution is. Iterative techniques sometimes only take 50 times longer and sometimes more than 100 times longer, depending on how the data varies and the initial guesses.
*y*can cross zero: Even if*C*= 0, the non-iterative methods require all sample points to be zero or greater (or transformed to greater than zero). This method does not have any such limitation.

The improved method has a theoretical basis in discrete calculus, statistics, and regular calculus. The following description of the method omits most of the details of the theory for the sake of brevity.

Two Regions of Points that overlap are shown. The slope ratios of these two regions are used in estimating *B*. In this example, *A* =7, *B* = -2 and *C* = 100." class="caption" align="left">The method is embodied in an algorithm for computing *B* in the equation *y* = *Ae ^{Bt}* +

*C*. Once

*B*is known, typical linear methods can be used to solve for

*A*and

*C*. This method presents many ways to compute

*B*. One way is by doing a linear (straight line) curve fit to two different regions in the data. The change in slope of these two regions gives us an estimate for

*B*. The two different regions can even overlap each other to improve the curve fit.

*B*is only dependent on the change in slope and the change in time.

Let S_{R1} be the slope calculated for Region 1 (see figure). Let S_{R2} be the slope calculated for Region 2. Then the change in slope can be estimated by S_{R1}/S_{R2}. The time used to cause this change in slope is equal to the time between the first samples in each region (if each region contains the same number of equally spaced points). It can be shown that:

*B* = *ln*(S_{R1}/S_{R2})/(*t*_{1} –* t*_{2}).

*This work was done by Geoffrey Rowe of ASRC Aerospace Corp. for Kennedy Space Center. For more information, download the Technical Support Package (free white paper) at www.techbriefs.com/tsp under the Software category. KSC-13153*

### This Brief includes a Technical Support Package (TSP).

** Real-Time Exponential Curve Fits Using Discrete Calculus** (reference KSC-13153) is currently available for download from the TSP library.

Please Login at the top of the page to download.

### White Papers

| ||||||