Algebraic Numbers

The representation of algebraic numbers.

When you enter a (RefLink[Root, paclet:ref/Root]) object, the polynomial that appears in it is automatically reduced to a minimal form:

Root[24-2#+4 #^5&,1]

This extracts the pure function which represents the polynomial, and applies it to x:

First[%][x]

(RefLink[Root, paclet:ref/Root]) objects are the way that the Wolfram Language represents algebraic numbers. Algebraic numbers have the property that when you perform algebraic operations on them, you always get a single algebraic number as the result.

Here is the square root of an algebraic number:

Sqrt[Root[2-#+#^5&,1]]

(RefLink[RootReduce, paclet:ref/RootReduce]) reduces this to a single (RefLink[Root, paclet:ref/Root]) object:

RootReduce[%]

Here is a more complicated expression involving an algebraic number:

Sqrt[2]+Root[2-#+#^5&,1]^2

Again this can be reduced to a single (RefLink[Root, paclet:ref/Root]) object, albeit a fairly complicated one:

RootReduce[%]

Operations on algebraic numbers.

In this simple case the (RefLink[Root, paclet:ref/Root]) object is automatically expressed in terms of radicals:

Root[#^2-#-1&,1]

When cubic polynomials are involved, (RefLink[Root, paclet:ref/Root]) objects are not automatically expressed in terms of radicals:

Root[#^3-2&,1]

(RefLink[ToRadicals, paclet:ref/ToRadicals]) attempts to express all (RefLink[Root, paclet:ref/Root]) objects in terms of radicals:

ToRadicals[%]

If (RefLink[Solve, paclet:ref/Solve]) and (RefLink[ToRadicals, paclet:ref/ToRadicals]) do not succeed in expressing the solution to a particular polynomial equation in terms of radicals, then it is a good guess that this fundamentally cannot be done. However, you should realize that there are some special cases in which a reduction to radicals is in principle possible, but the Wolfram System cannot find it. The simplest example is the equation (x^5)+20x+32==0, but here the solution in terms of radicals is very complicated. The equation (x^6)-9(x^4)-4(x^3)+27(x^2)-36x-23 is another example, where now x==(2^(1/3))+(3^(1/2)) is a solution.

This gives a (RefLink[Root, paclet:ref/Root]) object involving a degree six polynomial:

RootReduce[2^(1/3)+Sqrt[3]]

Even though a simple form in terms of radicals does exist, (RefLink[ToRadicals, paclet:ref/ToRadicals]) does not find it:

ToRadicals[%]

Beyond degree four, most polynomials do not have roots that can be expressed at all in terms of radicals. However, for degree five it turns out that the roots can always be expressed in terms of elliptic or hypergeometric functions. The results, however, are typically much too complicated to be useful in practice.

Sums of roots.

This computes the sum of the reciprocals of the roots of 1+2x+(x^5):

RootSum[(1+2#+#^5)&,(1/#)&]

Now no explicit result can be given in terms of radicals:

RootSum[(1+2#+#^5)&,(#Log[1+#])&]

This expands the (RefLink[RootSum, paclet:ref/RootSum]) into an explicit sum involving (RefLink[Root, paclet:ref/Root]) objects:

Normal[%]

This recovers (Sqrt[2]) from a numerical approximation:

RootApproximant[N[Sqrt[2]]]

In this case, the result has degree at most 4:

RootApproximant[N[Sqrt[2]+Sqrt[3]],4]

This confirms that the (RefLink[Root, paclet:ref/Root]) expression does correspond to (Sqrt[2])+(Sqrt[3]):

RootReduce[Sqrt[2]+Sqrt[3]]