//ラグランジュの補間法 #define MAX 32 class lagrange{ double x[MAX],f[MAX]; int N; //ユーザーが設定した分点の数 double L(int k,double xx); double P(double xx); public: void set(double px[],double pf[],int n); void set(int px[],int pf[],int n); double hokan(double xx); }; double lagrange::L(int k,double xx) { int n=N-1; double d=1; for(int m=0;m<=n;m++) if(m!=k) d*=(xx-x[m])/(x[k]-x[m]); return d; } double lagrange::P(double xx) { int n=N-1; double d=0; for(int k=0;k<=n;k++) d+=f[k]*L(k,xx); return d; } void lagrange::set(double px[],double pf[],int n) { for(int i=0;i