L'algoritmo di Sturm è un algoritmo usato per calcolare il numero di radici reali di un polinomio a coefficienti reali che cadono in un determinato intervallo
(
a
,
b
)
{\displaystyle (a,b)}
.
Sia
f
(
x
)
{\displaystyle f(x)}
un polinomio di grado
n
{\displaystyle n}
, definiamo la successione di polinomi
{
f
1
(
x
)
=
f
(
x
)
f
2
(
x
)
=
f
′
(
x
)
f
i
(
x
)
=
−
{
f
i
−
2
(
x
)
mod
f
i
−
1
(
x
)
}
∀
i
=
3
,
2
,
.
.
.
,
m
{\displaystyle \left\{{\begin{matrix}f_{1}(x)=f(x)\\f_{2}(x)=f'(x)\\f_{i}(x)=-\left\{f_{i-2}(x)\mod f_{i-1}(x)\right\}&\forall i=3,2,...,m\end{matrix}}\right.}
dove con
A
(
x
)
mod
B
(
x
)
{\displaystyle A(x)\mod B(x)}
si indica il polinomio resto nella divisione del polinomio
A
(
x
)
{\displaystyle A(x)}
per il polinomio
B
(
x
)
{\displaystyle B(x)}
.
Il numero di distinti zeri reali di
f
(
x
)
{\displaystyle f(x)}
nell'intervallo
[
a
,
b
]
{\displaystyle [a,b]}
, con
f
(
a
)
≠
0
{\displaystyle f(a)\neq 0}
e
f
(
b
)
≠
0
{\displaystyle f(b)\neq 0}
, è uguale a
V
(
a
)
−
V
(
b
)
{\displaystyle V(a)-V(b)}
, dove
V
(
x
)
{\displaystyle V(x)}
indica il numero di volte che gli elementi della successione
f
1
(
x
)
,
f
2
(
x
)
.
.
.
f
m
(
x
)
{\displaystyle f_{1}(x),f_{2}(x)...f_{m}(x)}
cambiano di segno, ignorando gli zeri.
La successione
{
f
i
(
x
)
}
i
=
1
,
2
,
.
.
.
,
m
{\displaystyle \left\{f_{i}(x)\right\}_{i=1,2,...,m}}
è una sequenza di Sturm , abbiamo che
f
(
x
)
=
(
x
−
z
1
)
μ
1
(
x
−
z
2
)
μ
2
.
.
.
(
x
−
z
r
)
μ
r
g
(
x
)
{\displaystyle f(x)=(x-z_{1})^{\mu _{1}}(x-z_{2})^{\mu _{2}}...(x-z_{r})^{\mu _{r}}g(x)}
dove
z
i
{\displaystyle z_{i}}
è uno zero reale di
f
(
x
)
{\displaystyle f(x)}
con molteplicità
μ
i
{\displaystyle \mu _{i}}
mentre
g
(
x
)
{\displaystyle g(x)}
è un polinomio senza radici reali. Per cui
f
′
(
x
)
f
(
x
)
=
f
2
(
x
)
f
1
(
x
)
=
∑
k
=
1
r
μ
k
x
−
z
k
+
g
(
x
)
{\displaystyle {\frac {f'(x)}{f(x)}}={\frac {f_{2}(x)}{f_{1}(x)}}=\sum _{k=1}^{r}{\frac {\mu _{k}}{x-z_{k}}}+g(x)}
considerando che le molteplicità sono tutte positive si ottiene
I
a
b
f
2
(
x
)
f
1
(
x
)
=
r
{\displaystyle I_{a}^{b}{\frac {f_{2}(x)}{f_{1}(x)}}=r}
dove si è usato l'indice di Cauchy , il teorema sulle sequenze di Sturm afferma
I
a
b
f
2
(
x
)
f
1
(
x
)
=
V
(
a
)
−
V
(
b
)
{\displaystyle I_{a}^{b}{\frac {f_{2}(x)}{f_{1}(x)}}=V(a)-V(b)}
da cui la tesi.