java实现拉格朗日插值法(附完整源码)
时间: 2023-11-09 16:05:33 浏览: 48
拉格朗日插值法是一种常用的插值方法,可以通过已知的数据点来推断出一个多项式,从而可以在这些数据点之外的位置进行插值或者外推。下面是一个简单的Java实现拉格朗日插值法的代码:
```java
public class LagrangeInterpolation {
private double[] x;
private double[] y;
public LagrangeInterpolation(double[] x, double[] y) {
this.x = x;
this.y = y;
}
public double interpolate(double xi) {
double yi = 0;
for (int i = 0; i < x.length; i++) {
double li = 1;
for (int j = 0; j < x.length; j++) {
if (i != j) {
li *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi += y[i] * li;
}
return yi;
}
}
```
这个LagrangeInterpolation类有两个属性:x和y,分别是已知的数据点的x坐标和y坐标。构造函数将这些数据点保存下来。interpolate()方法接受一个x坐标值,返回对应的y坐标值。
使用示例:
```java
double[] x = {1, 2, 3, 4, 5};
double[] y = {2, 3, 5, 8, 13};
LagrangeInterpolation li = new LagrangeInterpolation(x, y);
System.out.println(li.interpolate(2.5));
```
这个例子给出了5个数据点,然后构造了一个拉格朗日插值器li,并使用2.5作为插值点来计算对应的y坐标值。