efficiently determining if a polynomial has a root in the interval [0,T]

后端 未结 5 1996
庸人自扰
庸人自扰 2021-02-19 10:29

I have polynomials of nontrivial degree (4+) and need to robustly and efficiently determine whether or not they have a root in the interval [0,T]. The precise location or number

5条回答
  •  轮回少年
    2021-02-19 11:07

    Sturm's theorem lets you calculate the number of real roots in the range (a, b). Given the number of roots, you know if there is at least one. From the bottom half of page 4 of this paper:

    Let f(x) be a real polynomial. Denote it by f0(x) and its derivative f′(x) by f1(x). Proceed as in Euclid's algorithm to find

    f0(x) = q1(x) · f1(x) − f2(x),
    f1(x) = q2(x) · f2(x) − f3(x),
    .
    .
    .
    fk−2(x) = qk−1(x) · fk−1(x) − fk,
    

    where fk is a constant, and for 1 ≤ i ≤ k, fi(x) is of degree lower than that of fi−1(x). The signs of the remainders are negated from those in the Euclid algorithm.

    Note that the last non-vanishing remainder fk (or fk−1 when fk = 0) is a greatest common divisor of f(x) and f′(x). The sequence f0, f1,. . ., fk (or fk−1 when fk = 0) is called a Sturm sequence for the polynomial f.

    Theorem 1 (Sturm's Theorem) The number of distinct real zeros of a polynomial f(x) with real coefficients in (a, b) is equal to the excess of the number of changes of sign in the sequence f0(a), ..., fk−1(a), fk over the number of changes of sign in the sequence f0(b), ..., fk−1(b), fk.

提交回复
热议问题