Dr. Mark Humphrys School of Computing. Dublin City University. My big idea: Ancient Brain Search:

# Using the neural network as a function approximator

```// input x
// output y
// adjust difference between y and f(x)

```

# Define the function f:

```
double f ( double x )
{
// 	return sqrt(x);
return sin(x);
//	return sin(x)+sin(2*x)+sin(5*x)+cos(x);
}

// I = x = double lox to hix
const double lox = 0;
const double hix = 9;

// want it to store f(x) = double lof to hif
const double lof = -2.5;		// approximate bounds
const double hif = 3.2;

// O = f(x) normalised to range 0 to 1

double normalise ( double t )
{
return (t-lof) / (hif-lof);
}

double expand ( double t )		// goes the other way
{
return lof + t*(hif-lof);
}

```

# Define the kind of Neural Network we will need to represent f:

```

const int NOINPUT  = 1;
const int NOHIDDEN = 30;
const int NOOUTPUT = 1;

const double RATE = 0.3;

const double C = 0.1;				// start w's in range -C, C

// #include the basic Neural Network code at this point

NeuralNetwork :: newIO()
{
double x = float_randomAtoB ( lox, hix );

// there is only one, just don't want to remember number:
for_i
I[i] = x;

// there is only one, just don't want to remember number:
for_k
O[k] = normalise(f(x));
}

// Note it never even sees the same exemplar twice!

NeuralNetwork :: reportIO ( ostream& stream )
{
double x,_y;
for_i
x = I[i];
for_k
_y = expand(y[k]);

sprintf ( buf, "x    %.2f",   x  ); stream << buf << "\n";
sprintf ( buf, "y    %.2f",  _y  ); stream << buf << "\n";
sprintf ( buf, "f(x) %.2f", f(x) ); stream << buf << "\n";
}

```

# Finally the main function:

```
main ( int argc, char **argv )
{
int CEILING = atoi ( argv[1] );

net.init();

net.print(cout);
net.learn ( CEILING );
net.print(cout);

net.exploit();
}

```
```
```
ancientbrain.com      w2mind.org      humphrysfamilytree.com

On the Internet since 1987.

Wikipedia: Sometimes I link to Wikipedia. I have written something In defence of Wikipedia. It is often a useful starting point but you cannot trust it. Linking to it is like linking to a Google search. A starting point, not a destination. I automatically highlight in red all links to Wikipedia and Google search and other possibly-unreliable user-generated content.