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.)
如果我们以一种可读的形式显示,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:
5961455502964345883.6107318719232
13129164062555735516.306228816905
384835363551770922074.98206986208
So the original polynomial had roots at +/-:
2441609203.5713548816199079241373
3623418836.2036944508869271368416
19617221096.571525415065736091503
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.