#include "interpolating.h"
#include <iostream>
Interpolating::Interpolating()
{
int n = 2;
float* x = new float[n+1];
x[0] = 1.0f;
x[1] = 4.0f;
x[2] = 6.0f;
float* y = new float[n+1];
y[0] = 0;
y[1] = 1.386294f;
y[2] = 1.791760f;
float xx = 2.0f;
float interpolatingSum = Lagrng(x, y, n, xx);
std::cout << "f(2)="<< interpolatingSum <<std::endl;
}
Interpolating::~Interpolating()
{
}
float Interpolating:: Lagrng(float* x, float* y, int n, float xx)
{
float sum = 0.0f;
for(int i = 0; i <= n; i++) {
float product = y[i];
std::cout << "x[" << i << "]=" << x[i]
<< ", y[" << i << "]=" << y[i] << std::endl;
for(int j = 0; j <= n; j++) {
if (i != j) {
product = product * (xx - x[j]) / (x[i] - x[j]);
}
}
sum = sum + product;
}
return sum;
}
results:
x[0]=1, y[0]=0
x[1]=4, y[1]=1.38629
x[2]=6, y[2]=1.79176
f(2)=0.565844
本文通过一个具体的例子展示了拉格朗日插值法的实现过程。使用了三个已知的数据点来估算未知点的函数值,并给出了详细的计算步骤及最终结果。
345

被折叠的 条评论
为什么被折叠?



