Limitation on poly and roots functions?
3 views (last 30 days)
Show older comments
Dear All,
I have a query regarding the maximum polynomial order that can be treated using "roots" or "poly" functions. I am facing following problem:
P= Polynomial of order N=512;
R=roots(P);
P1=poly( R );
Coefficients of P are not equal to P1.
Coefficients match for lower orders such as N=8, 16, 64, 128. I shall appreciate if anyone could explain this to me or suggest what I am missing here. Thanks in advance.
Asim
0 Comments
Accepted Answer
Adam Filion
on 22 Jun 2012
Note from the documentation: "For vectors, roots and poly are inverse functions of each other, up to ordering, scaling, and roundoff error."
So these are not perfect inverses of each other. I ran your test through a loop of N=1:1024 using random inputs and for each iteration P==P1. However I'm sure there's some cases out there where they won't be exactly equal, particularly with larger values. Are you seeing very small differences, or are they significant? If they are small then I would guess it is expected.
More Answers (1)
Walter Roberson
on 22 Jun 2012
Round-off, I would expect. roots() is a numeric solver and so is limited to the precision of double precision numbers (about 53 bits). Multiply 512 double-precision numbers together, losing one bit of theoretical accuracy due to round-off per multiplication, and you are looking at accumulated error far far bigger than 53 bits of precision can hold.
2 Comments
Walter Roberson
on 23 Jun 2012
Use the symbolic toolbox with a large number of decimal places. I estimate 155 significant figures would be required for complete reconstruction.
See Also
Categories
Find more on Polynomials in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!