1
$\begingroup$

I have the following polynomial.

P[y_] = Abs[(1 - (0.` + 0.07746031519319982` I) y) (1 - (0.` + 
         0.09713096490596462` I) y) (1 - (0.` + 
         0.11290521136530342` I) y) (1 - (0.` + 
         0.1543104523227209` I) y) (1 - (0.` + 
         0.1643663550989435` I) y) (1 - (0.` + 
         0.16548737406015293` I) y) (1 - (0.` + 
         0.1881552825358055` I) y) (1 - (0.` + 
         0.19197400546206703` I) y) (1 - (0.` + 
         0.22342052082962607` I) y) (1 - (0.` + 
         0.26298357988150745` I) y) (1 - (0.` + 
         0.4139062323983639` I) y) (1 - (0.` + 
         0.45635519944296904` I) y) (1 - (0.` + 
         1.1299490429781665` I) y)]^2 - 
  3.937120617288008`*^-14 Abs[(0.` - 
       3.599575709269318`*^10 y^750 + (0.` + 
          4.1369578222829004`*^11 I) y^751 + 
       2.0598989195696348`*^12 y^752 - (0.` + 
          5.812817063223797`*^12 I) y^753 - 
       1.020659679238148`*^13 y^754 + (0.` + 
          1.151615734564845`*^13 I) y^755 + 
       8.302837789701031`*^12 y^756 - (0.` + 
          3.6376383713469365`*^12 I) y^757 - 
       8.169501684177294`*^11 y^758 + (0.` + 
          1.4155844385164032`*^10 I) y^759 - 
       3.157306920812451`*^10 y^760 + (0.` + 
          3.236108245829668`*^9 I) y^761 - 
       8.054207066661339`*^8 y^762 + (0.` + 
          7.948663505649126`*^7 I) y^763 - 
       2.7306473070848003`*^7 y^764 + (0.` + 
          3.770534300184887`*^6 I) y^765 - 
       17878.37393655826` y^766 + (0.` + 
          8799.475929888991` I) y^767 - 
       519.5109976114682` y^768)/(y^435 ((0.` + 
            5.898860617750132` I) y^63 + 
         10.44629168600992` y^64)^5)]^2

I want to know if it always evaluates to postive value for any possible root $y$ (Real). So I tried Solve[]

Solve[Abs[P[y]] < 0, y]

But it executes forever. Is there any way to confirm that this polynomial is always postive?

$\endgroup$
2
  • 1
    $\begingroup$ I'm probably being pedantic, but you do mean "...for any possible input $y$ (Real)." right? A "root" would be a specific input value where the polynomial evaluates out to exactly zero by definition - and so your function wouldn't "evaluate to positive value" since it evaluates to precisely zero. $\endgroup$
    – DotCounter
    Oct 20, 2022 at 19:41
  • $\begingroup$ Yes sorry I have no idea why I said root $\endgroup$
    – Morcus
    Oct 21, 2022 at 7:58

2 Answers 2

3
$\begingroup$

Redefining your function

Clear[p, y]

p[y_] := 
 Abs[(1 - (0.` + 0.07746031519319982` I) y) (1 - (0.` + 
          0.09713096490596462` I) y) (1 - (0.` + 
          0.11290521136530342` I) y) (1 - (0.` + 
          0.1543104523227209` I) y) (1 - (0.` + 
          0.1643663550989435` I) y) (1 - (0.` + 
          0.16548737406015293` I) y) (1 - (0.` + 
          0.1881552825358055` I) y) (1 - (0.` + 
          0.19197400546206703` I) y) (1 - (0.` + 
          0.22342052082962607` I) y) (1 - (0.` + 
          0.26298357988150745` I) y) (1 - (0.` + 
          0.4139062323983639` I) y) (1 - (0.` + 
          0.45635519944296904` I) y) (1 - (0.` + 
          1.1299490429781665` I) y)]^2 - 
  3.937120617288008`*^-14 Abs[(0.` - 
        3.599575709269318`*^10 y^750 + (0.` + 
           4.1369578222829004`*^11 I) y^751 + 
        2.0598989195696348`*^12 y^752 - (0.` + 
           5.812817063223797`*^12 I) y^753 - 
        1.020659679238148`*^13 y^754 + (0.` + 
           1.151615734564845`*^13 I) y^755 + 
        8.302837789701031`*^12 y^756 - (0.` + 
           3.6376383713469365`*^12 I) y^757 - 
        8.169501684177294`*^11 y^758 + (0.` + 
           1.4155844385164032`*^10 I) y^759 - 
        3.157306920812451`*^10 y^760 + (0.` + 
           3.236108245829668`*^9 I) y^761 - 
        8.054207066661339`*^8 y^762 + (0.` + 
           7.948663505649126`*^7 I) y^763 - 
        2.7306473070848003`*^7 y^764 + (0.` + 
           3.770534300184887`*^6 I) y^765 - 
        17878.37393655826` y^766 + (0.` + 
           8799.475929888991` I) y^767 - 
        519.5109976114682` y^768)/(y^435 ((0.` + 
              5.898860617750132` I) y^63 + 
           10.44629168600992` y^64)^5)]^2

Then check with Reduce

Reduce[ForAll[y, Element[y, Reals], p[y] > 0]]  (* False *)

Let's inspect what is going on

p[0.1] (* Indeterminate *)
Plot[p[y], {y, -1, 1}]

plot

$\endgroup$
4
  • $\begingroup$ What is the minimum number that is considered 0 and above which we get positive? $\endgroup$
    – Morcus
    Oct 20, 2022 at 16:06
  • $\begingroup$ I don’t quite understand. Do you mind rephrasing ? $\endgroup$ Oct 20, 2022 at 22:48
  • $\begingroup$ Yeah sure sorry I will try. The second answer to this post showed a number p(y) = -5.92568*10^-14 at y = 10^-2. If it happend that it was -5.92568*10^-19, would Reduce[ForAll[y, Element[y, Reals], p[y] >= 0]] give true or false? $\endgroup$
    – Morcus
    Oct 21, 2022 at 7:55
  • 1
    $\begingroup$ Are you looking for something like FindRoot[p[y], {y, 0.4}]; (*{y -> 0.399272}*) p[y] /. %; (*4.94803*10^-10*) ? $\endgroup$ Oct 21, 2022 at 10:11
3
$\begingroup$

Obviously you can not calculate differences with such high exponents using machine precision. Therefore you must rationalize your coefficients . However, your coefficients have only a limited precision and the following could be wrong due to this. Anyway, having no other information I assume that your coefficients are exact.

To rationalize your function write:

P[y_] = Rationalize[
  Abs[(1 - (0.` + 0.07746031519319982` I) y) (1 - (0.` + 
           0.09713096490596462` I) y) (1 - (0.` + 
           0.11290521136530342` I) y) (1 - (0.` + 
           0.1543104523227209` I) y) (1 - (0.` + 
           0.1643663550989435` I) y) (1 - (0.` + 
           0.16548737406015293` I) y) (1 - (0.` + 
           0.1881552825358055` I) y) (1 - (0.` + 
           0.19197400546206703` I) y) (1 - (0.` + 
           0.22342052082962607` I) y) (1 - (0.` + 
           0.26298357988150745` I) y) (1 - (0.` + 
           0.4139062323983639` I) y) (1 - (0.` + 
           0.45635519944296904` I) y) (1 - (0.` + 
           1.1299490429781665` I) y)]^2 - 
   3.937120617288008`*^-14 Abs[(0.` - 
         3.599575709269318`*^10 y^750 + (0.` + 
            4.1369578222829004`*^11 I) y^751 + 
         2.0598989195696348`*^12 y^752 - (0.` + 
            5.812817063223797`*^12 I) y^753 - 
         1.020659679238148`*^13 y^754 + (0.` + 
            1.151615734564845`*^13 I) y^755 + 
         8.302837789701031`*^12 y^756 - (0.` + 
            3.6376383713469365`*^12 I) y^757 - 
         8.169501684177294`*^11 y^758 + (0.` + 
            1.4155844385164032`*^10 I) y^759 - 
         3.157306920812451`*^10 y^760 + (0.` + 
            3.236108245829668`*^9 I) y^761 - 
         8.054207066661339`*^8 y^762 + (0.` + 
            7.948663505649126`*^7 I) y^763 - 
         2.7306473070848003`*^7 y^764 + (0.` + 
            3.770534300184887`*^6 I) y^765 - 
         17878.37393655826` y^766 + (0.` + 
            8799.475929888991` I) y^767 - 
         519.5109976114682` y^768)/(y^435 ((0.` + 
               5.898860617750132` I) y^63 + 
            10.44629168600992` y^64)^5)]^2, 10^-20]

For y==0 this results in a divide by zero. However for y near zero this gives negative values. E.g.

P[10^-2] // N
(* -5.92568*10^-14 *)
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.