/* ニュートン法による平方根の計算 */ /* */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Ex060921e extends JApplet implements ActionListener { JButton bt1; JTextField tf1,tf2; public void init(){ JPanel pl = new JPanel(); setContentPane(pl); pl.setLayout(null); JLabel lb1 = new JLabel("x = "); JLabel lb2 = new JLabel("sqrt(x) = "); lb1.setBounds(5,5,60,25); lb2.setBounds(5,40,60,25); pl.add(lb1); pl.add(lb2); tf1 = new JTextField(80); tf2 = new JTextField(80); tf1.setBounds(65,5,220,25); tf2.setBounds(65,40,220,25); pl.add(tf1); pl.add(tf2); bt1 = new JButton("計 算"); bt1.setBounds(70,80,80,25); bt1.addActionListener(this); pl.add(bt1); } public void actionPerformed(ActionEvent event) { if(event.getSource()==bt1){ double x = Double.valueOf(tf1.getText()).doubleValue(); if(x<0){ tf2.setText("計算不能!"); } if(x==0.0){ tf2.setText("0.0"); } if(x>0){ tf2.setText(Double.toString(sqrt_0(x))); } } } public double sqrt_0 (double xx){ double eps = 1.0e-15; double x0; double x1=1.0; do{ x0 = x1; x1 =(x0+xx/x0)*0.50; }while(Math.abs(x1-x0)>eps); return x1; } }