// Simpson則による数値積分 sqrt(4.0-x^2) x=0〜2.0
/* */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Ex060923c extends JApplet implements ActionListener{
JLabel lb1,lb2;
JTextField tf ;
Ex060923c_Simpson intg;
public void init(){
Container cp = getContentPane();
JPanel pl = new JPanel();
int num; // 分割数
lb1 = new JLabel("分割数=");
lb2 = new JLabel("計算値=");
tf = new JTextField(20);
tf.addActionListener(this);
pl.add(lb1);
pl.add(tf);
pl.add(lb2);
cp.add(pl);
}
public void actionPerformed(ActionEvent event){
int num = Integer.valueOf(tf.getText()).intValue();
intg = new Ex060923c_Simpson(0,2.0,num);
lb2.setText("計算値= "+intg.calc());
}
}
// Simpson則による数値積分
class Ex060923c_Simpson{
double xf; // 積分開始値
double xl; // 積分終了値
int num ; // 分割数
double h;
Ex060923c_Simpson(double x0, double x1){
xf=x0;
xl=x1;
num = 100;
h = (x1-x0)/(double)num;
}
Ex060923c_Simpson(double x0, double x1, int num){
xf=x0;
xl=x1;
this.num=num;
h = (x1-x0)/(double)num;
}
double calc(){
double f0,f1,f2;
double x0,x1,x2;
double val=0.0;
x0=xf;
f0=func(x0);
for(x1=h;x1