//
// Written by Nicholas D. Exner, Exner Enterprises C.2000, May 2000
// Class DrawPoly uses code references to other classes such as
// ManagePanel.class and Box.class that are the intellectual propertyof
// Nicholas Exner. These classes have been included here with the
// consent of the author.
//N= 3620092 X: 15.679225524625934
import java.applet.*;
import java.awt.*;
import java.math.*;
import java.util.*;
import java.awt.event.*;
import java.awt.image.*;
public class SumSeries extends Applet { // implements Runnable {
boolean threadRun=true;
Thread runner;
Image offscreenImg;
Graphics h;
TextField tf,tft,tfcur;
Choice digitIn;
Image sumImg;
public void init(){
sumImg = getImage(getCodeBase(),"title.gif");
setLayout(new BorderLayout());
setBackground(new Color(150,150,255));
Panel p2 = new Panel();
p2.setLayout(new FlowLayout(FlowLayout.LEFT));
p2.setBackground(new Color(150,150,255));
Panel p = new Panel();
p.setLayout(new GridLayout(4,3,5,5));
p.setBackground(new Color(150,150,255));
offscreenImg = createImage(this.size().width, this.size().height);
h = offscreenImg.getGraphics();
tf = new TextField(6);
tft = new TextField(6);
tfcur = new TextField(6);
tf.setText("0");
tft.setText("0");
tfcur.setText("0");
digitIn = new Choice();
digitIn.addItem("Select Precision");
for (int i=1;i<6;i++){
digitIn.addItem(""+i);
}
digitIn.select("Select");
p.add(new Label("Precision:"));
p.add(digitIn);
p.add(new Label("Current Term:"));
p.add(tfcur);
p.add(new Label("Partial Sum:"));
p.add(tf);
p.add(new Label("# of Terms:"));
p.add(tft);
p2.add(p);
Panel hi = new Panel();
hi.setLayout(new GridLayout(4,1));
hi.add(new Button("Compute Next Term"));
hi.add(new Button("Compute Next 10 Terms"));
hi.add(new Button("Compute Next 100 Terms"));
hi.add(new Button("Compute All"));
p2.add(hi);
add("South",p2);
}
public void paint(Graphics g){
g.drawImage(sumImg,15,30,this);
}
public void calcSeries(){
BigDecimal newx = new BigDecimal("1");
BigDecimal oldx = new BigDecimal("0");
BigDecimal change = new BigDecimal("1");
int n=2;
while(!oldx.equals(newx)){
change = new BigDecimal(""+n);
change = operationInverse(change,digitIn.getSelectedIndex());
change = correctScale(change,digitIn.getSelectedIndex());
newx = correctScale(newx,digitIn.getSelectedIndex());
oldx = newx;
// System.out.print("C: "+change.toString());
// System.out.println(" D: "+newx.toString());
newx = newx.add(change);
newx = correctScale(newx,digitIn.getSelectedIndex());
tf.setText(newx.toString());
tft.setText(""+n);
tfcur.setText(change.toString());
n++;
}
if (digitIn.getSelectedIndex() < 1)
tft.setText("0");
}
public void calcSeries(int xx){
int n=(int)Integer.parseInt(tft.getText());
int x = xx;
if (n <= 0) {
n=0;
tft.setText("1");
tf.setText("0");
tfcur.setText("1");
//x--;
}
BigDecimal newx = new BigDecimal(tf.getText());
BigDecimal change = new BigDecimal(tfcur.getText());
int nn = n+1;
for (int i=nn;i