[ kepler | Source | Keywords | Summary | Ancestors | All Members | Descendants ]
Back to the top of secondDerive
The class secondDerive contains a large number of static low level routines. I do not see any reason that a user would want to call these routines directly. They compute bounds on the second partial derivatives of various functions defined on a simplex. This class is used by various Taylor approximation procedures to give rigorous upper and lower bounds on various functions.
In the following routines x[] is the lower bound, z[6] the upper on a cell. these are the edges squared, so that often they are in the range [4,8].
Usually it is only the second deriviatives that are needed, but this usually requires computing the function value and the first derivatives as well, so often they are returned too.
Back to the top of secondDerive
Thomas C. Hales
Back to the top of secondDerive
int setChi126(const double x[6],const double z[6],interval DDf[6][6]);
Give interval bounds on the second partial derivatives
of the function chi126.
The input is the upper and lower bounds on the cell.
This procedure writes the partial derivatives to DDf.
1 is the return value. Since chi126 is a polynomial, the computation will always be sucessful (unless outrageous arguments creating overflow are given).
static int setChi126(const double x[6],const double z[6],interval DDf[6][6]);
Back to the top of secondDerive
int setU126(const double x[6],const double z[6], interval DDf[6][6]);
Give interval bounds on the second partial derivatives
of the function u126.
The input is the upper and lower bounds on the cell.
This procedure writes the partial derivatives to DDf.
1 is the return value. Since u126 is a polynomial, the computation will always be sucessful (unless outrageous arguments creating overflow are given).
static int setU126(const double x[6],const double z[6], interval DDf[6][6]);
Back to the top of secondDerive
int setU135(const double x[6],const double z[6], interval DDf[6][6]);
Give interval bounds on the second partial derivatives
of the function u135.
The input is the upper and lower bounds on the cell.
This procedure writes the partial derivatives to DDf.
1 is the return value. Since u135 is a polynomial, the computation will always be sucessful. (unless outrageous arguments creating overflow are given).
static int setU135(const double x[6],const double z[6], interval DDf[6][6]);
Back to the top of secondDerive
int setDelta(const double x[6],const double z[6],interval DDf[6][6]);
Give interval bounds on the second derivatives of the
function delta.
The input is the upper and lower bounds on the cell.
This procedure writes the partial derivatives to DDf.
1 is the return value. Since delta is a polynomial, the computation will always be sucessful. (unless outrageous arguments creating overflow are given).
static int setDelta(const double x[6],const double z[6],interval DDf[6][6]);
Back to the top of secondDerive
int setDihedral(const double x[6],const double z[6],double DDf[6][6]);
Give interval bounds on the function dih, and its
first and second partial derivatives.
The input is the upper and lower bounds on the cell.
This procedure writes the absolute value of the partial derivatives to DDf.
If the derivatives were sucessfully computed a nonzero value is returned.
static int setDihedral(const double x[6],const double z[6],double DDf[6][6]);
Back to the top of secondDerive
int setDihedral(const double x[6],const double z[6],const interval& s, const interval Ds[6],const interval DDs[6][6], interval& h,interval Dh[6],interval DDh[6][6]);
Compute the second derivative of the dihedral angle.
The dihedral angle is that along the first edge of the simplex.
All mixed partial derivatives are computed.
Input lower and upper bounds x,z on the lengths squared of the edges. The function also inputs sqrt(delta) and its first and second derivatives in s, Ds, DDs. The function returns a nonzero value if the calculation is a success. The dihedral angle, and its first and second derivatives are placed in h,Dh, and DDh.
static int setDihedral(const double x[6],const double z[6],const interval& s, const interval Ds[6],const interval DDs[6][6], interval& h,interval Dh[6],interval DDh[6][6]);
Back to the top of secondDerive
int setDih2(const double x[6],const double z[6], const interval& s,const interval Ds[6],const interval DDs[6][6], interval& h,interval Dh[6],interval DDh[6][6]);
Compute the second derivative of the dihedral2 angle.
The dihedral angle is that along the second edge of the simplex.
All mixed partial derivatives are computed.
Input lower and upper bounds x,z on the lengths squared of the edges. The function also inputs sqrt(delta) and its first and second derivatives in s, Ds, DDs. The function returns a nonzero value if the calculation is a success. The dihedral angle, and its first and second derivatives are placed in h,Dh, and DDh.
static int setDih2(const double x[6],const double z[6], const interval& s,const interval Ds[6],const interval DDs[6][6], interval& h,interval Dh[6],interval DDh[6][6]);
Back to the top of secondDerive
int setDih3(const double x[6],const double z[6], const interval& s,const interval Ds[6],const interval DDs[6][6], interval& h, interval Dh[6],interval DDh[6][6]);
Compute the second derivative of the dihedral3 angle.
The dihedral angle is that along the third edge of the simplex.
All mixed partial derivatives are computed.
Input lower and upper bounds x,z on the lengths squared of the edges. The function also inputs sqrt(delta) and its first and second derivatives in s, Ds, DDs. The function returns a nonzero value if the calculation is a success. The dihedral angle, and its first and second derivatives are placed in h,Dh, and DDh.
static int setDih3(const double x[6],const double z[6], const interval& s,const interval Ds[6],const interval DDs[6][6], interval& h, interval Dh[6],interval DDh[6][6]);
Back to the top of secondDerive
int setSolid(const double x[6],const double z[6], const interval ss,const interval Ds[6],const interval DDs[6][6], interval DDx[6][6]);
Compute interval bounds on the second derivative of the
solid angle of a simplex. To call this procedure, it is
necessary first to have computed sqrt(delta) and its first
and second partials.
Input x,z lower and upper bounds on the squares of the lengths of the edges. Input ss,Ds,DDs, the derivative information for sqrt(delta). If the calculation is successful, a nonzero value is returned. When the call is successful, the bounds on the second partials of the solid angle are placed into the array DDx
static int setSolid(const double x[6],const double z[6], const interval ss,const interval Ds[6],const interval DDs[6][6], interval DDx[6][6]);
Back to the top of secondDerive
int setSqrtDelta(const double x[6],const double z[6], interval& sqrt_d,interval Dsqrt_d[6],interval DDsqrt_d[6][6]);
Compute interval bounds on the value, derivatives,
and second derivatives of
the function sqrt(delta).
The lower and upper values of the domain are passed in
the arrays x and z. As usual, these represent the
lengths squared of the variables.
If the values are successfully computed a nonzero value is returned, and the information is placed in sqrt_d, Dsqrt_d, and DDsqrt_d.
If the return is 0, the values of sqrt_d, Dsqrt_d, and DDsqrt_d is undefined.
static int setSqrtDelta(const double x[6],const double z[6], interval& sqrt_d,interval Dsqrt_d[6],interval DDsqrt_d[6][6]);
Back to the top of secondDerive
int setVorAnalytic(const double x[6],const double z[6], double DD[6][6]);
Compute the interval bounds on the second derivatives of
the function vorAnalytic.
The lower and upper values of the domain are passes in
the arrays x and z. As usual, these represent the
lengths squared of the variables.
If the bounds are computed, the return value is nonzero, and the bounds are returned in DD. If the return value is zero, the values of the array DD are undefined.
static int setVorAnalytic(const double x[6],const double z[6], double DD[6][6]);
Back to the top of secondDerive
int setChi2over4uDelta(const double x[6],const double z[6],double DDf[6][6]);
chi^2/(4 u delta)+ eta^2 126 is the circumradius squared of a simplex.
Compute interval bounds on the second derivatives of
chi^2/(4 u delta).
The lower and upper values of the domain are passed in
the arrays x and z. As usual, these represent the lengths
squared of the variables.
If the values are successfully computed a nonzero value is returned, and the information is placed in DDf. Otherwise the value of DDf is undefined.
static int setChi2over4uDelta(const double x[6],const double z[6],double DDf[6][6]);
Back to the top of secondDerive
int setVorVc(const double x[6],const double z[6],double DD[6][6]);
Compute the interval bounds on the second derivatives of
the function vorVc.
The lower and upper values of the domain are passes in
the arrays x and z. As usual, these represent the
lengths squared of the variables.
If the bounds are computed, the return value is nonzero, and the bounds are returned in DD. If the return value is zero, the values of the array DD are undefined.
static int setVorVc(const double x[6],const double z[6],double DD[6][6]);
Back to the top of secondDerive
int setVorVcInverted(const double x[6],const double z[6],double DDv[6][6]);
Compute the interval bounds on the second derivatives of
the function vorVcInverted (used in octavor0).
The lower and upper values of the domain are passes in
the arrays x and z. As usual, these represent the
lengths squared of the variables.
If the bounds are computed, the return value is nonzero, and the bounds are returned in DD. If the return value is zero, the values of the array DD are undefined.
static int setVorVcInverted(const double x[6],const double z[6],double DDv[6][6]);
Back to the top of secondDerive
int setVorSqc(const double x[6],const double z[6],double DDv[6][6]);
Compute the interval bounds on the second derivatives of
the function vorVcSqc, the truncation of voronoi at sqrt(2).
The lower and upper values of the domain are passes in
the arrays x and z. As usual, these represent the
lengths squared of the variables.
If the bounds are computed, the return value is nonzero, and the bounds are returned in DD. If the return value is zero, the values of the array DD are undefined.
static int setVorSqc(const double x[6],const double z[6],double DDv[6][6]);
Back to the top of secondDerive
void selfTest();
Check the correctness of secondDerive routines
static void selfTest();
Back to the top of secondDerive
Back to the top of secondDerive
Back to the top of secondDerive
Back to the top of secondDerive
Report problems to jkotula@unimax.com