// 多項式の計算 Horner法
/* */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Ex060923a extends JApplet implements ActionListener{
double x;
JLabel lb3;
JTextField tf;
Ex060923a_polynomial pol;
public void init(){
Container cp = getContentPane();
JPanel pl = new JPanel();
int n=5;
double co[]={2.8,-1.5,2.4,3.0,-2.2,1.5}; // 1.5x^5-2.2x^4+3x^3+2.4x^2-1.5x+2.8
pol = new Ex060923a_polynomial(n , co);
JLabel lb1 = new JLabel("f(x)=1.5x5-2.2x4+3x3+2.4x2-1.5x+2.8 の値");
pl.add(lb1);
JLabel lb2 = new JLabel("x = ");
pl.add(lb2);
tf = new JTextField(15);
tf.addActionListener(this);
pl.add(tf);
lb3 = new JLabel();
pl.add(lb3);
cp.add(pl);
}
public void actionPerformed(ActionEvent event){
x = Double.valueOf(tf.getText()).doubleValue();
lb3.setText("f(x)= "+pol.horner(x));
}
}
class Ex060923a_polynomial{
int num;
double a[];
Ex060923a_polynomial(int n){
num = n;
a = new double[n+1];
for(int i=0;i<=n;i++)
a[i]=0.0;
}
Ex060923a_polynomial(int n , double co[]){
num = n;
a = new double[n+1];
for(int i=0;i<=n;i++)
a[i]=co[i];
}
void set(int i, double x){
a[i]=x;
}
double horner(double x){
double val=a[num];
for(int i=num-1; i>=0;i--)
val=val*x+a[i];
return(val);
}
}