Lagrange interpolating polynomial

来源:互联网 发布:轩辕剑6 知乎 编辑:程序博客网 时间:2024/06/07 09:42
#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


0 0
原创粉丝点击