To answer your question: no, the degree is not too high, but you are using the wrong number system, machine numbers. The polynomial has a high degree, so the derivative has a high degree as well, which means that a small change in an argument will give a tremendous change in the function value. Machine numbers are poorly suited to deal with this behaviour.
Mathematica can solve your equation exact, using root expressions:
Let us look at the first solution:
In:= f /. sol[] // RootReduce Out= 0
So it IS a solution. Let us see what happens if we use machine numbers:
In:= f /. N[sol[]]
Out= -3.82475*10^50 + 0. I
When we use arbitrary precision numbers, you get a more reliable result:
In:= f /. N[sol[], 100]
Out= 0.*10^-31 + 0.*10^-31 I
Indeed this is close to zero. Observe that the precision went down almost 70 digits!
Fred Simons Eindhoven University of Technology
Op 24-10-2012 9:32, Alexandra schreef: > I wanted to know all the solutions of f = (-z - 1)^d - (-z^d - 1)==0, where d=54. > I did the following: > > d = 54; f = (-z - 1)^d - (-z^d - 1); > sol = NSolve[f == 0,z]; > a = z /. sol; > > So a is a set of solutions. > > If I compute > f /. z -> a[] // N > It returns a number very close to zero. This is natural. > > But if I compute > f /. (z -> a[]) // N > > Then > Mathematica returns > 12.0047 + 14.7528 I > > I cannot say a[] is a solution of f=0. > > Many other elements in the solution set a does not seem to satisfy the equation. > Only the last few terms in a are satisfactory enough as solutions. > > Is the degree too high? > >