二次样条差值算法

//注明:a为存储每段二次曲线的系数的二维矩阵
//
二次样条差值 void fit_second(Point *p, int n, double y0d, vector<vector<double> > &a) { vector <double> va; for (int i=0; i<n-1; i++) { double x0 = p[i].x; double y0 = p[i].y; double x1 = p[i+1].x; double y1 = p[i+1].y; double h0 = x1 - x0; //S(x) = (y1-y0-h0*y0')*(x-x0)^2/(h0^2) + y0'*(x-x0) + y0 double a2 = (y1-y0-h0*y0d)/(h0*h0); double a1 = (-2*x0)*(y1-y0-h0*y0d)/(h0*h0) + y0d; double a0 = (x0*x0)*(y1-y0-h0*y0d)/(h0*h0) - y0d*x0 + y0; y0d = 2*(y1-y0)/h0 - y0d; va.clear(); va.push_back(a0); va.push_back(a1); va.push_back(a2); a.push_back(va); } }
posted @ 2012-04-09 20:40  涵曦  阅读(371)  评论(0编辑  收藏  举报