示例#1
0
	double polynomialInterpolation (double x, vector<Vector> points) throw(CoincidentPointsException)  {
		size_t n = points.size();
		double px = 0.0;
		vector<double> lagrangian(n, 1.0);

		for (size_t i=0; i < n; i++)
			for (size_t j=0; j < n; j++)
				if (i != j)
					lagrangian[i] *= ( (x - points[j][0]) / (points[i][0] - points[j][0]) );

		for (size_t i=0; i < n; i++)
			px += (points[i][1] * lagrangian[i]);

		return px;
	}
示例#2
0
Force3 force(unsigned i, Parameters ps, Configurations c, Length dx)
{
    Configurations cx = c;
    Configurations cy = c;
    Configurations cz = c;
    cx.position[i] = c.position[i] + dx * ex;
    cy.position[i] = c.position[i] + dx * ey;
    cz.position[i] = c.position[i] + dx * ez;
    Force fx = (lagrangian(i, ps, cx) - lagrangian(i, ps, c)) / dx;
    Force fy = (lagrangian(i, ps, cy) - lagrangian(i, ps, c)) / dx;
    Force fz = (lagrangian(i, ps, cz) - lagrangian(i, ps, c)) / dx;
    Force3 f = fx * ex + fy * ey + fz * ez;
    return f;
}