KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > CurveFitter


1 import java.awt.*;
2 import java.awt.event.*;
3 import JSci.awt.*;
4 import JSci.maths.*;
5 import JSci.maths.polynomials.RealPolynomial;
6
7 /**
8 * Sample program demonstrating use of LinearMath.leastSquaresFit method
9 * and the LineTrace graph class.
10 * @author Mark Hale
11 * @version 1.0
12 */

13 public final class CurveFitter extends Frame {
14         private Label fnLabel = new Label("P(x) = ?",Label.CENTER);
15         private LineTrace graph = new LineTrace(-10.0f,10.0f,-10.0f,10.0f);
16         private TextField polyDegreeField = new TextField("4");
17         private Button fitButton = new Button("Fit");
18         private Button clearButton = new Button("Clear");
19
20         public static void main(String JavaDoc arg[]) {
21                 new CurveFitter();
22         }
23         public CurveFitter() {
24                 super("Curve Fitter");
25                 addWindowListener(new WindowAdapter() {
26                         public void windowClosing(WindowEvent evt) {
27                                 dispose();
28                                 System.exit(0);
29                         }
30                 });
31                 fitButton.addActionListener(new ActionListener() {
32                         public void actionPerformed(ActionEvent evt) {
33                                 fitCurve();
34                         }
35                 });
36                 clearButton.addActionListener(new ActionListener() {
37                         public void actionPerformed(ActionEvent evt) {
38                                 graph.clear();
39                         }
40                 });
41                 add(fnLabel,"North");
42                 add(graph,"Center");
43                 Panel buttonPanel=new Panel();
44                 buttonPanel.add(new Label("Polynomial degree:"));
45                 buttonPanel.add(polyDegreeField);
46                 buttonPanel.add(fitButton);
47                 buttonPanel.add(clearButton);
48                 add(buttonPanel,"South");
49                 setSize(500,400);
50                 setVisible(true);
51         }
52         private void fitCurve() {
53                 Graph2DModel model=graph.getModel();
54                 model.firstSeries();
55                 double data[][]=new double[2][model.seriesLength()];
56                 for(int i=0;i<data[0].length;i++) {
57                         data[0][i]=model.getXCoord(i);
58                         data[1][i]=model.getYCoord(i);
59                 }
60                 int degree = Integer.parseInt(polyDegreeField.getText());
61                 RealPolynomial poly = LinearMath.leastSquaresFit(degree, data);
62                 fnLabel.setText(poly.toString());
63         }
64 }
65
66
Popular Tags