mirror of https://github.com/CGAL/cgal
74 lines
2.4 KiB
TeX
74 lines
2.4 KiB
TeX
\begin{ccRefConcept}{PolynomialTraits_d::SturmHabichtSequence}
|
|
|
|
\textbf{Note:} This functor is optional!
|
|
|
|
\ccDefinition
|
|
|
|
Computes the Sturm-Habicht sequence
|
|
(aka the signed subresultant sequence)
|
|
of a polynomial $f$ of type
|
|
\ccc{PolynomialTraits_d::Polynomial_d} with respect to a certain variable $x_i$.
|
|
The Sturm-Habicht sequence is similar to the polynomial subresultant sequence
|
|
of $f$ and its derivative $f':=\frac{\partial f}{\partial x_i}$
|
|
with respect to $x_i$. The implementation is based on the following definition:
|
|
|
|
Let $n:=\deg f$ and $\delta_k:=(-1)^{k(k+1)/2}$.
|
|
For $k\in\{0,\ldots,n\}$, the {\it $k$-th Sturm-Habicht polynomial}
|
|
of $f$ is defined as:
|
|
|
|
\begin{ccTexOnly}
|
|
$$\mathrm{Stha}_k(f)=\left\{\begin{array}{cl}
|
|
f & \textrm{if\ } k=n\\
|
|
f' & \textrm{if\ } k=n-1\\
|
|
\delta_{n-k-1}\mathrm{Sres}_k(f,f') &\textrm{if\ } 0\leq k\leq n-2
|
|
\end{array}\color{white}\right\}\color{black}$$
|
|
\end{ccTexOnly}
|
|
|
|
\begin{ccHtmlOnly}
|
|
<CENTER>
|
|
<IMG BORDER=0 SRC="./sturm_habicht_def.gif" ALIGN=middle ALT="Sturm-Habicht sequence">
|
|
</CENTER>
|
|
\end{ccHtmlOnly}
|
|
|
|
where $\mathrm{Sres}_k(f,f')$ is defined
|
|
as in the concept \ccc{PolynomialTraits_d::PolynomialSubresultants}.
|
|
|
|
The result is written in an output range,
|
|
starting with the $0$-th Sturm-Habicht polynomial (which is equal to
|
|
the discriminant of $f$ up to a multiple of the leading coefficient).
|
|
|
|
\ccRefines
|
|
\ccc{AdaptableBinaryFunction}\\
|
|
\ccc{CopyConstructible}\\
|
|
\ccc{DefaultConstructible}\\
|
|
|
|
|
|
\ccCreationVariable{fo}
|
|
\ccOperations
|
|
\ccMethod{template<typename OutputIterator>
|
|
OutputIterator operator()(Polynomial_d f,
|
|
OutputIterator out);}
|
|
{ computes the Sturm-Habicht sequence of $f$,
|
|
with respect to the outermost variable. Each element is of type
|
|
\ccc{PolynomialTraits_d::Polynomial_d}.}
|
|
|
|
\ccMethod{template<typename OutputIterator>
|
|
OutputIterator operator()(Polynomial_d f,
|
|
OutputIterator out,
|
|
int i);}
|
|
{ computes the Sturm-Habicht sequence of $f$
|
|
with respect to the variable $x_i$.}
|
|
|
|
%\ccHasModels
|
|
|
|
\ccSeeAlso
|
|
|
|
\ccRefIdfierPage{Polynomial_d}\\
|
|
\ccRefIdfierPage{PolynomialTraits_d}\\
|
|
\ccRefIdfierPage{PolynomialTraits_d::Resultant}\\
|
|
\ccRefIdfierPage{PolynomialTraits_d::PrincipalSturmHabichtSequence}\\
|
|
\ccRefIdfierPage{PolynomialTraits_d::SturmHabichtSequenceWithCofactors}\\
|
|
\ccRefIdfierPage{PolynomialTraits_d::PolynomialSubresultants}\\
|
|
|
|
\end{ccRefConcept}
|