Why do you think there is a problem. We can shorten the coefficients of Z a bit, just to look at what is happening.
2.33e-7*w^8 - 9.42e+13*w^6 + 1.73e+33*w^4 - 7.02e+51*w^2
So Z is an 8th degree polynomial in w. Much of the time, there would be no analytical solution. We can alwaus look at the roots using numerical methods of course.
So, what happens with solve? We expect 8 roots.
wsol = solve(Z,w,'maxdegree',8);
But, a lengthy mess that vpa can resolve.
- 19617221100.0 + 0.000000001019512392i
2441609204.0 - 0.0000003591893407i
3623418836.0 + 0.0000002475562557i
19617221100.0 - 0.000000001019512392i
- 2441609204.0 + 0.0000003591893407i
- 3623418836.0 - 0.0000002475562557i
There are two real roots at w == 0. All other roots are complex. There are NO non-zero real roots. Of course, the imaginary parts of those roots are pretty tiny in comparison to the real parts. My guess is the way this was constructed, those are all essentially real roots. Looking at the coefficients of the polynomial, that makes complete sense. And then when we look at the polynomial itself, you should realize that we could have written the problem in a related form as a 4th degree polynomial. (I could also have divided by w^2 also to deflate the double root at 0.)
And if we display that in a readable form, though this time with 16 digits in the coefficients...
Zhat = simplify(subs(Z, w, sqrt(u)));
0.0000002331181919822607*u^4 - 94162494878960.04*u^3 + 1.730905943624151e+33*u^2 - 7.021671728455703e+51*u
which has its roots at:
So the original polynomial had roots at +/-:
WTP? Looks ok to me. The imaginary parts from the direct solve are spurious, floating point trash.
Effectively, you did nothing wrong. You just do not know how to look at the solutions, and reduce them to something useful.