### Example 2: Nonlinear Regression with User-supplied Derivatives

In this example a nonlinear model is fitted. The derivatives are supplied by the user.
```
import com.imsl.stat.*;
import com.imsl.math.*;

public class NonlinearRegressionEx2 {

public static void main(String args[]) throws Exception {
NonlinearRegression.Derivative deriv
= new NonlinearRegression.Derivative() {

double ydata[] = {
54.0, 50.0, 45.0, 37.0, 35.0, 25.0, 20.0, 16.0,
18.0, 13.0, 8.0, 11.0, 8.0, 4.0, 6.0
};
double xdata[] = {
2.0, 5.0, 7.0, 10.0, 14.0, 19.0, 26.0, 31.0, 34.0,
38.0, 45.0, 52.0, 53.0, 60.0, 65.0
};
boolean iend;
int nobs = 15;

public boolean f(double theta[], int iobs, double frq[],
double wt[], double e[]) {
if (iobs < nobs) {
wt = 1.0;
frq = 1.0;
iend = true;
e = ydata[iobs] - theta * Math.exp(theta
* xdata[iobs]);
} else {
iend = false;
}
return iend;
}

public boolean derivative(double theta[], int iobs,
double frq[], double wt[], double de[]) {
if (iobs < nobs) {
wt = 1.0;
frq = 1.0;
iend = true;
de = -Math.exp(theta * xdata[iobs]);
de = -theta * xdata[iobs] * Math.exp(theta
* xdata[iobs]);
} else {
iend = false;
}
return iend;
}
};

int nparm = 2;
double theta[] = {60.0, -0.03};
NonlinearRegression regression = new NonlinearRegression(nparm);
regression.setGuess(theta);
double coef[] = regression.solve(deriv);
System.out.println("The computed regression coefficients are {"
+ coef + ", " + coef + "}");
int rank = regression.getRank();
System.out.println("The computed rank is " + rank);
double dfe = regression.getDFError();
System.out.println("The degrees of freedom for error are " + dfe);
double sse = regression.getSSE();
System.out.println("The sums of squares for error is " + sse);
double r[][] = regression.getR();
new PrintMatrix("R from the QR decomposition ").print(r);
}
}
```

#### Output

```The computed regression coefficients are {58.60656292541919, -0.039586447277524736}
The computed rank is 2
The degrees of freedom for error are 13.0
The sums of squares for error is 49.459299862472186
R from the QR decomposition
0        1
0  1.874  1,139.928
1  0      1,139.798

```