import java.awt.*; import java.awt.event.*; public class c01_iteration extends java.applet.Applet { double a = 2.75; double x0 = 0.2; static final int left = 30; static final int w = 300; static final int m = 1; static final int imax = 10; Graph graph; Controls controls; class Graph extends Canvas { public void paint(Graphics g) { LineTo lt = new LineTo(g); lt.drawLine(left+w, left, left, left+w); for (int i = 1; i <= w; i++) { double xn = (double)i/w; for (int k = 1; k <= m; k++) { xn = a * xn * (1-xn); } lt.lineTo(i+left, (int)(left+w*(1-xn))); } double xn = x0; double x = x0; lt.moveTo((int)(left+w*xn), left+w); for (int i = 1; i <= imax; i++) { for (int k = 1; k <= m; k++) { xn = a * xn * (1-xn); } lt.lineTo((int)(left+w*x), (int)(left+w*(1-xn))); lt.lineTo((int)(left+w*xn), (int)(left+w*(1-xn))); x = xn; } } } class Controls extends Container { private TextField ta; private TextField tx0; private Button redraw; public Controls() { setLayout(new FlowLayout()); add(new Label("a =", Label.RIGHT)); add(ta = new TextField(""+a, 6)); add(new Label("x0 =", Label.RIGHT)); add(tx0 = new TextField(""+x0, 6)); add(redraw = new Button("Redraw")); redraw.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { try { a = Double.valueOf(ta.getText()).doubleValue(); x0 = Double.valueOf(tx0.getText()).doubleValue(); } catch (NumberFormatException nfx) { } c01_iteration.this.graph.repaint(); } } ); } } public void init() { setLayout(new BorderLayout()); add(controls = new Controls(), BorderLayout.SOUTH); add(graph = new Graph(), BorderLayout.CENTER); graph.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { x0 = (double)(e.getX() - left) / w; x0 = (double)Math.round(x0*100) / 100; controls.tx0.setText(""+x0); graph.repaint(); } } ); } }