求解高阶方程时如何让MATLAB return数值?

How to let MATLAB return numeric value when solving high-order equations?

当我试图解方程时(因为我没有足够的声誉所以我只能post这里方程的乳胶代码)

\begin{equation}
\Comb{5}{1} P_s(1-P_s)^4+\Comb{5}{5} P_s^5\geq0.9
\end{equation}

(方程看起来差不多like:5*P*(1-P)^4+P^5=0.9)

通过 MATLAB,
我使用了代码:

clc;close all; clear all;
syms x
eqn=5*x*((1-x)^4)+x^5==0.9;
% solx=solve(eqn,x)
solve(eqn,x)

然后 MATLAB 返回了这个:

ans =

 RootOf(z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20, z)[1]
 RootOf(z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20, z)[2]
 RootOf(z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20, z)[3]
 RootOf(z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20, z)[4]
 RootOf(z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20, z)[5]

然后我继续尝试通过这段代码获取数值:

clc;close all; clear all;
syms z
eqn=z^5 - (10*z^4)/3 + 5*z^3 - (10*z^2)/3 + (5*z)/6 - 3/20==0;
solve(eqn,z)

但是 MATLAB 仍然返回这个:

ans =

 RootOf(z1^5 - (10*z1^4)/3 + 5*z1^3 - (10*z1^2)/3 + (5*z1)/6 - 3/20, z1)[1]
 RootOf(z1^5 - (10*z1^4)/3 + 5*z1^3 - (10*z1^2)/3 + (5*z1)/6 - 3/20, z1)[2]
 RootOf(z1^5 - (10*z1^4)/3 + 5*z1^3 - (10*z1^2)/3 + (5*z1)/6 - 3/20, z1)[3]
 RootOf(z1^5 - (10*z1^4)/3 + 5*z1^3 - (10*z1^2)/3 + (5*z1)/6 - 3/20, z1)[4]
 RootOf(z1^5 - (10*z1^4)/3 + 5*z1^3 - (10*z1^2)/3 + (5*z1)/6 - 3/20, z1)[5]

有人可以给我一些解决这个问题的想法或者一些我应该参考的 link 吗?我参考了 Mathwork 上的 link(http://www.mathworks.com/help/symbolic/solve.html#zmw57dd0e111578) 但没有帮助获取数值。

请支持 非常感谢。

你必须对那些 RootOf 使用 vpa 来获得数值近似值:

clc;close all; clear all;
syms x
eqn=5*x*((1-x)^4)+x^5==0.9;
% solx=solve(eqn,x)
sol = solve(eqn,x);
my_sol = vpa(sol)

结果:

>> mysol = vpa(sol)

mysol =

                                        0.9791481609736960010570740114736
 0.13006272993340436563484822895086 + 0.23845812045897270134074538059624i
   1.047029856246414300503281431979 + 0.99001796114505954590535961748791i
   1.047029856246414300503281431979 - 0.99001796114505954590535961748791i
 0.13006272993340436563484822895086 - 0.23845812045897270134074538059624i