Applying Chaos Theory to Embedded Applications

- TechOnline - June 24, 2009

A unique chaotic-expansion formula that can be used to approximate chaotic sequences, and where the coefficients of the expansion formula are matched to the sequence through linear determination.

Chaotic data sequences are found in nature in everything from turbulence in the weather to tumor growth in biological systems. Chaotic sequences are the result of non-linear that govern physical systems, which for years have eluded closed form solution and therefore a coherent, mathematical explanation.

Most advances in have resulted with the advent of the computer from the mid-20th century forward because the solutions to these non-linear equations have been found in individual cases with computer simulation of the difference equations that approximate them.

The use of these difference equations that approximate chaotic solutions has also found use in the world of encryption, compression and wireless transmission. In these areas it is found that understanding the theory behind non-linear equations may not be as essential as in using its obscure nature to compress or hide data more efficiently.

Because non-linear differential equations are so sensitive to initial conditions, these initial conditions are often used as the keys to encryption, the codebook for compression or the type of whitening sequence that is generated for spread spectrum[4].

Based on these applications, there has been a necessity to develop a deterministic, chaotic expansion algorithm that approximates these non-linear differential equations, which may also lead to the development of the characteristic equation that underlies the data [1].

In this article a unique chaotic expansion formula that is  presented that approximates, where the coefficients of the expansion formula are matched to the sequence through linear determination.

The initial conditions of the sequence are used in the linear determination of the coefficients in the formula that are then used to fit the sequence. This method has uses in compression of data sequences, for instance, where the few values of the initial conditions and prameters of the equation are the only data required to reproduce the original sequence.

The Expansion Formula
A standard Wein-Bridge oscillator circuit was modified so that the frequency of the oscillator is a function of the output voltage (which is changing with time) raised to the second power. This is accomplished by the use of a MOSFET in parallel with one of the Wein-bridge feedback resistors.

The differential equations that govern the chaotic oscillator circuit were reduced to difference equations (see reference [3]) and then analyzed for chaotic behavior. The result is the difference equation in (1) which has been expanded by following the form of the original difference equation of two variables (one for each of the capacitors in the circuit, and raising additional terms p to the power p, where p is the number of initial conditions which correspond to additional capacitors in the oscillator circuit. Analyzing the results of Equation (1) below in software shows bifurcations approaching an attractor based on the initial conditions xn and parameter k.

The difference equation in (1) uses history terms xn, where xn is the currently computed sequence value, xn-i is the history of sequence values for historical index i, and ki is the coefficient for each history sample (which is related to the gain of the oscillator) with xn-i raised to the power p.

The general form of (1) above is then a finite expansion of power sequences where the power p of each term is the same number of terms in the expansion. The accuracy of the approximation is based on p, which determines both the number of terms in the expansion and the power of each term.

The requirements for approximating a sequence is to linearly determine the coefficients ki based on the expansion formula of (1) as shown below  in (2):

Where Ki is the coefficient matrix and Xn is the current value matrix that consists of a selection of values in the sequence which should include the initial conditions of the sequence based on the sensitivity of the system to initial conditions.

Xh is the history matrix which are history values in the sequence raised to the power p, where the history values are the terms xpn-i shown in (1). Ki is then found as the product of the current value matrix Xn and the history matrix Xh.

{pagebreak}Simulating the Expansion Formula in Software
The following BASIC code simulates the expansion formula for two initial conditions. Each initial conditions is represented by x[n] and x[n-1] and the output of the sequence generator is printed to a file.

More initial conditions can be added (which improves the accuracy of approximating the sequence) by following the example of the code for x[n-2], x[n-3], etc. and by taking the terms to the power which corresponds to the number of initial conditions. The limit of this expansion is the floating-point capability of the processor.

Rem Simulation of Chaotic Expansion Formula with two initial conditions (x1, x2).
Rem x1 = x[n], x2= x[n-1] .When x1=x2 the unstable region is x1 < -.263 and x1 >.263 if
Rem param1 = 3 and param2 = 2
Rem For these parameters, chaotic behavior occurs when
Rem x1 > -.263 and x1 <.263 (assuming x1 = x2)
Rem x1 and x2 are initial conditions, param1 and param2 are characteristic
Rem values of the equation (see line70)
Rem stability points are proportional to (1/param1 || 1/param2)
Rem If param1 = param2, stability points = 1/(2*param1)
Rem current paramters on line 12 and 13
12 param1 = 3
13 param2 = 2
15 INPUT "INPUT INITIAL X1 VALUE "; x1
16 INPUT "INPUT INITIAL X2 VALUE "; x2
20 INPUT "INPUT OUT FILE NAME "; FILE\$
Rem Line 20 asks for the output file to write data to
Rem the output file is data sequentially calculated on line 70
Rem and is basically time-domain output
50 OPEN "O", #1, FILE\$
52 For A = 2.8 To 4! Step 0.025
60 For I = 1 To 1000
65 Rem characteristic equation below
70 x = param1 * A * X1 * X1 - param2 * A * X2 * X2
71 X2 = X1: X1 = x
Rem Line 71 says - update x1 and x2. x2 is the oldest value so it gets
Rem transfered from x1 first. Then x1 gets updated from the new x value
Rem The differential equation starts with Vc1 and Vc2 and all of its
Rem derivatives. The difference equation takes this and converts the
Rem derivatives to Vo(k-n) where n is the nth derivative of Vc. This
Rem is because the time rate of change of function (derivative) can
Rem be expressed as [Vo(k) - Vo(k-1)]/T, where T is taken to be 1 time
Rem unit, or T = 1 for the first derivative.
Rem 72 IF I > 80 THEN 80 ELSE 90

80 Print #1, A, x
85 N = N + 1
90 Next I
95 Next A
100 Close #1
105 Print N

{pagebreak}

Approximating other chaotic sequences
The requirements for approximating a sequence is to linearly determine the coefficients ki based on the expansion formula of (1):

Where Ki is the coefficient matrix and Xn is the current value matrix that consists of a selection of values in the sequence which should include the initial conditions of the sequence based on the sensitivity of the system to initial conditions.

Xh is the history matrix which are history values in the sequence raised to the power p, where the history values are the terms xpn-i shown in Equation (1) above. Ki is then found as the product of the current value matrix Xn and the history matrix Xh.

We consider an example of approximating a simple, first-order sequence of population dynamics [2]:

We will refer to Equation (3) above as the target function and we note that it approaches a chaotic attractor at a = 3.8 with a corresponding initial condition x0 = 0.7. To approximate this sequence with these conditions we use the first five points of the sequence, {x0...x5} which includes the initial condition, in the solution of (2).

We also use values throughout the sequence for the solution of (2) that would indicate changes or bifurcation on a phase diagram so that these are reflected in the expansion formula. The mathematical solution of (2) for expansion constants ki as it applies to the simple first-order equation of (3) with x0 = 0.7 is as follows:

By incorporating the ki constants above into (1) and using the same initial condition x0 = 0.7, we find the mean-squared error by taking the square of the difference of the approximation expansion of (1) from the target function of (3) over 5000 sequence points starting with the initial condition.

The MSE is found to be 0.14, and the standard deviation of the error terms found by taking the absolute value of the difference between the approximation (1) and target function (3) is 0.486 over 5000 sequence points.

From this standard deviation of the error terms it is found that 82.6% of the error terms are less within one standard deviation of the mean of the target function. By randomly changing constants in (4), the MSE is found to increase into single or double digits greater than 1 and with a confidence interval from the standard deviation of error terms that is less than that for a normal distribution.

If we were attempting to store the sequence generated by (3) in a smaller data set (basically compressing it), we would only have to store the four initial conditions of (4) and the constants of the equation (1) to recreate the sequence. The compression ratio in this example would be 5000 sequence points / 4 initial conditions = 1250.

Of course the compression is lossy (MSE is 0.14 from above), so the benefits of loss versus compression ratio have to be weighed. Below is an example C program that compresses a file by finding the constants (k1, k2, k3) and initial conditions (m1_3, m2_3, m3_3) of the expansion formula for p = 3.

#include
#include

#define BINS 5
// This program is for determining the constants and initial conditions for
// a three-variable expansion. This is all that is requried to compress a file
// so these values are written out as the compressed file after they are
determined

main(argc,argv)
int argc;
char *argv[];
{
float outbuff[BINS];     // this is the write buffer that is written to the compressed file
float x[BINS];             // this is the input buffer from the source file
float k1,k2,k3;           //k1-k3 are the constants to be determined from source file values
float det; // the determinant for the 3x3 array allows solution of k1-k3
float xm1_3, xm2_3, xm3_3; //initial conditions all raised to the 3rd power
int i,j,k,filesize; // count variables and filesize
FILE *f1,*f2; // f1 is the source file, f2 is the compressed output file
char ch;

printf("ChaoCompress \n");
printf("Usage: compress \n");

printf(" \n\n");

if(NULL==(f1=fopen(argv[1],"r")))
{
fprintf(stderr,"Can't open infile \n");
fclose(f1);
}

i = 0;
j = 0;
det = 0;
filesize = 0;

// initialize variables then read in values from source file

while(i <= BINS) {
fscanf(f1,"%f",&x[i]);
i++;
}

// Get file count
while ((ch=getchar())!= EOF)
j++;

fclose(f1);
filesize = BINS*sizeof(float) + j;
// find determinant from source file values
// then solve for k1 - k3, adjoint of matrix is built into this formula

det = pow(x[2],3)*( pow(x[2],6) - pow((x[3]*x[1]),3) )
+ pow(x[1],3)*( pow((x[1]*x[4]),3) - pow((x[2]*x[3]),3) )
- pow(x[0],3)*( pow((x[2]*x[4]),3) - pow(x[3],6) );

k1 = (x[3]*(pow(x[2],6)-pow((x[1]*x[3]),3) )
- x[4]*(pow((x[1]*x[2]),3) - pow((x[0]*x[3]),3) )
+ x[5]*(pow(x[1],6) - pow((x[0]*x[2]),3) )) / det;

k2 = (x[3]*(pow((x[1]*x[4]),3) - pow((x[3]*x[2]),3) )
+ x[4]*(pow((x[0]*x[4]),3) - pow(x[2],6) )
- x[5]*(pow((x[2]*x[1]),3) - pow((x[0]*x[3]),3))) / det;

k3 = (x[3]*(pow((x[2]*x[4]),3) - pow(x[3],6) )
+ x[4]*(pow((x[2]*x[3]),3) - pow((x[1]*x[4]),3) )
+ x[5]*(pow((x[1]*x[3]),3) - pow(x[2],6) )) / det;

// calculate initial conditions x(-1),x(-2), and x(-3) after finding k1-k3

xm1_3 = -(x[2] - k3*pow(x[1],3) + k2*pow(x[0],3) ) / k1;

xm2_3 = -(x[1] - k3*pow(x[0],3) + k2*xm1_3 ) / k1;

xm3_3 = -(x[0] - k3*xm1_3 + k2*xm2_3 ) / k1;

if(NULL==(f2=fopen(argv[2],"w")))
{
fprintf(stderr,"Can't open outfile \n");
fclose(f2);
}

fprintf(f2,"%d",filesize); //write total filesize first
fprintf(f2,"%f",k1);     // write constants k1-k3
fprintf(f2,"%f",k2);
fprintf(f2,"%f",k3);
fprintf(f2,"%f",xm1_3);     //write initial conditions x(-1),x(-2),x(-3)
fprintf(f2,"%f",xm2_3);
fprintf(f2,"%f",xm3_3);
fclose(f2);

}

{pagebreak}Using the encryption formula in encryption
An example of the expansion formula in encryption is found in the Chaocrypt program (Figure 1 below), which uses the private encryption keys provided by the user as the initial conditions for generating a sequence from the formula in (1).

This sequence is then XORed with the input data to produce the encrypted data. The use of the same keys in the decryption routine produces a sequence which when XORed with the encrypted data produces the original, unencrypted data.

This technique of encryption has been shown to be useful as the sequence is hard to predict (even if the formula in (1) is known), without knowing the keys that were used to create the initial conditions.

In conclusion, chaos theory is becoming more useful in encryption (where the chaotic sequence is used to secure data), in data compression (where the chaotic sequence is curve-fitted to the data and the initial conditions that generate the sequence are used as compression values) and in wireless transmission (where the chaotic sequence is used to create a whiter sequence for Direct Sequence Spead Spectrum).

Michael Harney is an Electrical Engineer working in industrial and vehicle electronics. He is the holder of  four patents and has a Bachelor of Science in Electrical Engineering from Utah State University

References:
[1] Carroll, T.L., Phys. Rev. E 59, 1615"1621, 1999.
[2] Lawrance, A.J., Balakrishna, N. J. Royal Stat Soc Vol. 63, No. 4, 2001, pp. 843-853
[3] Harney, M. URL: http://www.signaldisplay.com/chaos.zip
[4] Umeno, Ken; Kitayama, Ken-ichi, Improvement of SNR with Chaotic Spreading Sequences for CDMA