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

后端 未结 5 1598
庸人自扰
庸人自扰 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 10:53

    Use Descartes rule of signs to glean some information. Just count the number of sign changes in the coefficients. This gives you an upper bound on the number of positive real roots. Consider the polynomial P.

    P = 131.1 - 73.1*x + 52.425*x^2 - 62.875*x^3 - 69.225*x^4 + 11.225*x^5 + 9.45*x^6 + x^7

    In fact, I've constructed P to have a simple list of roots. They are...

    {-6, -4.75, -2, 1, 2.3, -i, +i}
    

    Can we determine if there is a root in the interval [0,3]? Note that there is no sign change in the value of P at the endpoints.

    P(0) = 131.1
    P(3) = 4882.5
    

    How many sign changes are there in the coefficients of P? There are 4 sign changes, so there may be as many as 4 positive roots.

    But, now substitute x+3 for x into P. Thus

    Q(x) = P(x+3) = ...
      4882.5 + 14494.75*x + 15363.9*x^2 + 8054.675*x^3 + 2319.9*x^4 + 370.325*x^5 + 30.45*x^6 + x^7
    

    See that Q(x) has NO sign changes in the coefficients. All of the coefficients are positive values. Therefore there can be no roots larger than 3.

    So there MAY be either 2 or 4 roots in the interval [0,3].

    At least this tells you whether to bother looking at all. Of course, if the function has opposite signs on each end of the interval, we know there are an odd number of roots in that interval.

提交回复
热议问题