cgal/Polynomial/doc_tex/Polynomial_ref/PolynomialTraits_d_SturmHab...

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}