// 多項式の計算 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); } }