What are Root objects with multiple polynomials?
Let's read what the docs say:
Root[{$f_1, f_2 ,\ldots$}, {$k_1, k_2 ,\ldots$}] represents the last coordinate of the exact vector {$a_1, a_2, \ldots$} such that $a_i$ is the $k_i$th root of the polynomial equation $f_i(a_1, \ldots, a_{i-1}, x)=0$.
This, though a bit confusing, is a pretty accurate and straightforward description. Let's assume two functions ($f_1$ and $f_2$), and substitute $i=1$ into the description. Then we can read
... such that $a_1$ is the $k_1$th root of the polynomial equation $f_1(x)=0$.
With your example, this means that
f1 = 327680000000000000 - 1280000000 #1^8 + #1^16 &
f2 = #1 + 25 #2 + 25 #2^5 &
k1 = 7;
k2 = 3;
and
a1 = Root[f1, k1] // N
(* ==> -8.28089 - 8.28089 I *)
Now put in $i=2$, and read the description again:
Root[{$f_1, f_2$}, {$k_1, k_2$}] represents $a_2$ such that $a_2$ is the $k_2$th root of the polynomial equation $f_2(a_1, x) = 0$.
So let's do
a2 = Root[f2[a1, #] &, k2]
(* ==> 0.353233 + 0.353233 I *)
This is indeed the numerical value of your Root
object:
N@Root[{f1, f2}, {7, 3}]
(* ==> 0.353233 + 0.353233 I *)
I hope this clarifies the definition of the multi-polynomial Root
objects.
Now why would they introduce this? I don't know. I always assumed that Root
is not meant for end users to construct directly. It's simply a representation of algebraic numbers that Mathematica's algorithms can work efficiently with. I assume that some algorithms in version 9 can work better with this type of Root
object than with the single-polynomial ones.
You can always convert these to a single-polynomial Root
object using RootReduce
:
RootReduce@Root[{f1, f2}, {7, 3}]
(* ==>
Root[268435456 - 160000000000 #1^8 - 1280000000000 #1^12 +
14593486328125 #1^16 + 296215781250000 #1^20 +
2277618359375000 #1^24 + 10672192343750000 #1^28 +
34709265117187500 #1^32 + 83311708281250000 #1^36 +
152740318515625000 #1^40 + 218200683593750000 #1^44 +
245475769042968750 #1^48 + 218200683593750000 #1^52 +
152740478515625000 #1^56 + 83312988281250000 #1^60 +
34713745117187500 #1^64 + 10681152343750000 #1^68 +
2288818359375000 #1^72 + 305175781250000 #1^76 +
19073486328125 #1^80 &, 46]
*)
Or just use N
on them to get a numerical approximation.
First consider :
Root[327680000000000000 - 1280000000 #1^8 + #1^16 &, 7] // ToRadicals // FullSimplify
(-2 - 2 I) 5^(3/4) (10 - 2 Sqrt[5])^(1/8)
now substitute #1
with this number in #1 + 25 #2 + 25 #2^5 &
switching #2
to #1
and compare with your original Root
object :
Root[(-2 - 2 I) 5^(3/4) (10 - 2 Sqrt[5])^(1/8) + 25 #1 + 25 #1^5 &, 3] ==
Root[{327680000000000000 - 1280000000 #1^8 + #1^16 &, #1 + 25 #2 + 25 #2^5 &}, {7, 3}]
True
Now it appears quite obvious what the updated Root
object is supposed to represent and the documentation makes no more confusion.
For the sake of simplicity let's repeat the above procedure for another simpler example of a Root
object taking it from documentation:
Root[#1^2 - 3 &, 1]
-Sqrt[3]
Root[#1^2 + Sqrt[3] - 5 &, 2]
Sqrt[5 - Sqrt[3]]
i.e. it is the same as
Root[{#1^2 - 3 &, #2^2 - #1 - 5 &}, {1, 2}]
Sqrt[5 - Sqrt[3]]
i.e. we have
Root[#1^2 - Root[#1^2 - 3 &, 1] - 5 &, 2] == Root[{#1^2 - 3 &, #2^2 - #1 - 5 &}, {1, 2}]
True
To conclude: this new capability of Root
allows for much simpler representation (we needn't nest many Root
objects) of algebraic numbers (roots of univariate polynomials of rational coefficients) and provides quite terse notation of even complicated algebraic objects.
To give a vague analogy instead of the precise examples given above.
One could think of the equations in the multidimensional version of Root
as a (lower) triangular system of equations where each equation is a polynomial with coefficients in the roots of the proceeding equations. Which of the roots are taken as coefficients is specified by the indices.
In the linear case this is exactly an lower triangular linear system of equations, where each equation has exactly on solution.
Is there a more abstract, unifying way to think of this using, say, Groebner Bases? I wonder.