To add your own function you first need to download all of the applet files to your hard drive. On a PC using Netscape you can do this by opening the "Java Console" and then typing "l" (lower case L) in this window before going to the first page of the applet (the one with the "Start" button). Alternatively you can download a zip file of all source files here.

You must now write a Java program called "Map1DMyFunction.java" in the top directory in which the programs were downloaded. A template for the program follows. The function must map the interval 0<x<1 onto itself ( i.e. for any value of x in this range, f(x) must also be in this range). There is no error checking for iterated values diverging! The program also must return a value for the derivative. Up two two parameters (e.g. a,b) are allowed. Some quantities are plotted as a function of the first map parameter a. If the maximum value of a for which the function is a map of the unit interval depends on b, this can be calculated in the getAMaximum method.

The program must be compiled e.g. with javac.

### Program Template

```import java.util.*;                                    // Only needed if Math calls are used

//******************************************************************************************
/** Class to return iterate of user's map function. */
//******************************************************************************************

public class Map1DMyFunction extends Map1DFunction {

Map1DMyFunction() {
nParameters=2;                              // Number of parameters of map (1 or 2)
a=new double[nParameters];                  // Required
aDefault = new double[nParameters];         // Required
aDefault[0]=2.0;                            // Default value of first parameter a
aDefault[1]=0.3;                            // Same for second parameter b if present
aMinimum=0.;                                // Mimimum value of a in parameter scans
aMaximum=4.;                                // Maximum value of a in parameter scans
enforceARange=true;                         // "true" if a-range must be enforced
enforceBRange=true;                         // "true" if b-range must be enforced
bMinimum=0.;                                // Mimimum value of b allowed
bMaximum=1.;                                // Maximum value of b allowed
x0Default=0.2;                              // Default starting value of x
title = "Shifted tent";                     // Title of function to label plot
}

public double evaluateFunction(double x) {        // Must return f(x)
return .......;
}

public double evaluateDerivative(double x) {      // Must return derivative f'(x)
return .......;
}

public double getAMaximum(double d) {             // If maximum value of a depends on the
return .......;                             // second parameter, return the expression
}                                                 // here (otherwise aMaximum is used).
}
```