这个可以用插值来做import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Interpose extends JFrame {
public Interpose() {
super();
setBounds(0, 0, 600, 600);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
dispose();
System.exit(0);
}
});
setVisible(true);
}
//Lagrange interpose
public double Lagrange(double x[], double y[], double value) {
double sum = 0;
double L;
for (int i = 0; i < x.length; i++) {
L = 1;
for (int j = 0; j < x.length; j++) {
if (j != i)
L = L * (value - x[j]) / (x[i] - x[j]);
}
sum = sum + L * y[i];
}
return sum;
}
public void paint(Graphics g) {
//double[] X = { 100, 50, 150, 200 };
//double[] Y = { 150, 200, 300, 50 };
double[] X = { 123.334, 134.4532,133.1233 };
double[] Y = { 224.567, 245.565,257.899}; double min=Double.MAX_VALUE;
double max=Double.MIN_VALUE;
for(int i=0;i
if(X[i]>max) max=X[i];
if(X[i]
}
g.setColor(Color.red);
for (double x = min; x <= max; x = x + 0.01) {
g.drawLine((int) x, (int) Lagrange(X, Y, x), (int) x,
(int) Lagrange(X, Y, x));
}
}
public static void main(String[] args) {
new Interpose();
}
}
你的数据中的Y坐标太小,效果不明显,我把它拉伸了10倍,
2008年8月15日 19:41