* Returns the values and the
* derivatives of the @p{Polynomial}
* at point @p{x}. @p{values[i],
- * i=0,...,values.size()}
+ * i=0,...,values.size()-1}
* includes the @p{i}th
* derivative.
*
/**
* Class of Lagrange polynomials with equidistant interpolation
* points. The polynomial of order @p{n} has got @p{n+1} interpolation
- * points. The interpolation points are x=0, x=1 and x=intermediate
- * points in ]0,1[ in ascending order. This order gives an index to
- * each interpolation point. A Lagrangian polynomial equals 1 at one
- * interpolation point that is called `support point', and 0 at all other
- * interpolation points.
+ * points. The interpolation points are sorted in ascending
+ * order. This order gives an index to each interpolation point. A
+ * Lagrangian polynomial equals 1 at one interpolation point that is
+ * then called `support point', and 0 at all other interpolation
+ * points.
*
* @author Ralf Hartmann, 2000
*/
LagrangeEquidistant polynom(order, s_point);
// support points in vertices
- if (order>0)
- for (unsigned int i=0; i<=1; ++i)
- {
- double x=i;
- polynom.value(x, values);
- deallog << " p_" << s_point << "(" << x << ")";
-// deallog << "=" << values[0];
- if (equals_delta_ij(values[0], s_point, i))
- deallog << " ok";
- else
- deallog << " false";
- deallog << endl;
- }
- // support points on line
- if (order>1)
- for (unsigned int i=1; i<order; ++i)
- {
- double x=static_cast<double>(i)/order;
- polynom.value(x, values);
- deallog << " p_" << s_point << "(" << x << ")";
-// deallog << "=" << values[0];
- if (equals_delta_ij(values[0], s_point, i+1))
- deallog << " ok";
- else
- deallog << " false";
- deallog << endl;
- }
- deallog << endl;
+ for (unsigned int i=0; i<=order; ++i)
+ {
+ double x=static_cast<double>(i)/order;
+ polynom.value(x, values);
+ deallog << " p_" << s_point << "(" << x << ")";
+// deallog << "=" << values[0];
+ if (equals_delta_ij(values[0], s_point, i))
+ deallog << " ok";
+ else
+ deallog << " false";
+ deallog << endl;
+ }
}
}
deallog << endl << "Test derivatives computed by the Horner scheme:" << endl;
- LagrangeEquidistant pol(4, 3);
+ LagrangeEquidistant pol(4, 2);
vector<double> v_horner(6);
for (unsigned int i=0; i<=10; ++i)
{
deallog << "x=" << xi << ", all derivatives: ";
vector<double> v_exact(6);
- v_exact[0]=64.0*xi*xi*xi*xi-128.0*xi*xi*xi+76.0*xi*xi-12.0*xi;
v_exact[1]=256.0*xi*xi*xi-384.0*xi*xi+152.0*xi-12.0;
+ v_exact[0]=64.0*xi*xi*xi*xi-128.0*xi*xi*xi+76.0*xi*xi-12.0*xi;
v_exact[2]=768.0*xi*xi-768.0*xi+152.0;
v_exact[3]=1536*xi-768;
v_exact[4]=1536;
DEAL::Polynomial p of order 1
DEAL:: p_0(0.00000) ok
DEAL:: p_0(1.00000) ok
-
DEAL:: p_1(0.00000) ok
DEAL:: p_1(1.00000) ok
-
DEAL::Polynomial p of order 2
DEAL:: p_0(0.00000) ok
-DEAL:: p_0(1.00000) ok
DEAL:: p_0(0.500000) ok
-
+DEAL:: p_0(1.00000) ok
DEAL:: p_1(0.00000) ok
-DEAL:: p_1(1.00000) ok
DEAL:: p_1(0.500000) ok
-
+DEAL:: p_1(1.00000) ok
DEAL:: p_2(0.00000) ok
-DEAL:: p_2(1.00000) ok
DEAL:: p_2(0.500000) ok
-
+DEAL:: p_2(1.00000) ok
DEAL::Polynomial p of order 3
DEAL:: p_0(0.00000) ok
-DEAL:: p_0(1.00000) ok
DEAL:: p_0(0.333333) ok
DEAL:: p_0(0.666667) ok
-
+DEAL:: p_0(1.00000) ok
DEAL:: p_1(0.00000) ok
-DEAL:: p_1(1.00000) ok
DEAL:: p_1(0.333333) ok
DEAL:: p_1(0.666667) ok
-
+DEAL:: p_1(1.00000) ok
DEAL:: p_2(0.00000) ok
-DEAL:: p_2(1.00000) ok
DEAL:: p_2(0.333333) ok
DEAL:: p_2(0.666667) ok
-
+DEAL:: p_2(1.00000) ok
DEAL:: p_3(0.00000) ok
-DEAL:: p_3(1.00000) ok
DEAL:: p_3(0.333333) ok
DEAL:: p_3(0.666667) ok
-
+DEAL:: p_3(1.00000) ok
DEAL::Polynomial p of order 4
DEAL:: p_0(0.00000) ok
-DEAL:: p_0(1.00000) ok
DEAL:: p_0(0.250000) ok
DEAL:: p_0(0.500000) ok
DEAL:: p_0(0.750000) ok
-
+DEAL:: p_0(1.00000) ok
DEAL:: p_1(0.00000) ok
-DEAL:: p_1(1.00000) ok
DEAL:: p_1(0.250000) ok
DEAL:: p_1(0.500000) ok
DEAL:: p_1(0.750000) ok
-
+DEAL:: p_1(1.00000) ok
DEAL:: p_2(0.00000) ok
-DEAL:: p_2(1.00000) ok
DEAL:: p_2(0.250000) ok
DEAL:: p_2(0.500000) ok
DEAL:: p_2(0.750000) ok
-
+DEAL:: p_2(1.00000) ok
DEAL:: p_3(0.00000) ok
-DEAL:: p_3(1.00000) ok
DEAL:: p_3(0.250000) ok
DEAL:: p_3(0.500000) ok
DEAL:: p_3(0.750000) ok
-
+DEAL:: p_3(1.00000) ok
DEAL:: p_4(0.00000) ok
-DEAL:: p_4(1.00000) ok
DEAL:: p_4(0.250000) ok
DEAL:: p_4(0.500000) ok
DEAL:: p_4(0.750000) ok
-
+DEAL:: p_4(1.00000) ok
DEAL::Test derivatives computed by the Horner scheme:
DEAL::x=0.00000, all derivatives: ok