/*
*/
// Project 1.3 by Stephanie Morris
// Newton.java
// Uses Newton-Raphson method to find zero of f(x)
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Newton extends Applet implements Runnable
{
Thread thr = new Thread(this) ; // new Thread
Tracer tr = new Tracer("Newton-Raphson") ; // new instance of Tracer
double r, x, xi, newx, delta, result ; // some variables we need
int ypos;
public void init() // set up Tracer
{
thr.start() ;
}
public void run ()
{
while (true) {
r = tr.trace("r value:", r) ; // get trial x value
xi = tr.trace("Trial x value:", xi) ; // get trial x value
// showStatus("r= "+r);
repaint();
}
}
public void paint(Graphics g)
{
ypos = 15; // starting y position on applet
g.drawString("r = " + r, 15, ypos);
ypos += 15; x = xi;
g.drawString("x = " + x + " F(x) = " + F(x), 15, ypos); // draw initial values
ypos += 15;
do {
delta = -F(x)/dFdx(x) ;
newx = x + delta ; // Newton-Raphson step
result = F(newx);
g.drawString("x = " + newx + " F(x) = " + result, 15, ypos); // draw results
x = newx; // get new estimate for x
ypos += 15;
} while(Math.abs(result) > 0.00000000000000000001) ; // continue until a root is found
}
double F (double x ) {
return x * (r-1) - r*x*x; // the function
}
double dFdx (double x ) {
return r - 1 - 2*r*x; // the derivative of the function
}
}