Let me know RootOf, X90(and X98 ... X_variable) to solve equation by using of Symbol method

1 回表示 (過去 30 日間)
Jonghyeon Kim
Jonghyeon Kim 2011 年 8 月 31 日
for example, matlab code is here
syms Ls Lm Cs Cm w=solve('(Cm^2/4)*(Lm^2-Ls^2)^2*w^4+(50^2*Cm^2*(Lm^2-Ls^2)^2+(3/4)*Cm^2*Ls^2*50^2)*w^2-Lm^2*((50*(Cs+Cm))/2)*w=Lm^2-Cm^250^4')
and The result is here, no error.
w =
RootOf(2*Cm^2*Lm^2*Ls^2*X90^4 - Cm^2*Ls^4*X90^4 - Cm^2*Lm^4*X90^4 + 20000*Cm^2*Lm^2*Ls^2*X90^2 - 10000*Cm^2*Ls^4*X90^2 - 7500*Cm^2*Ls^2*X90^2 - 10000*Cm^2*Lm^4*X90^2 + 100*Cs*Lm^2*X90 + 100*Cm*Lm^2*X90 + 4*Lm^2 - 4*Cm^1000, X90)
This is the result. However the problem is that I cannot understand this. help me. specialists!

回答 (1 件)

Kai Gehrs
Kai Gehrs 2011 年 8 月 31 日
Hi,
the 'RootOf' is a way to encode the symbolic solutions of polynomials of higher degree for which either no symbolic closed form exists or for which the symbolic representation is quite lengthy.
Note that for polynomials of degree 5 or higher (if they are irreducible) there is no way to express the roots in closed symbolic form.
In case of your exmaple the polynomial has degree 4. For degree 4 polynomials there is a way to express the solutions in explicit form, but in general it leads to huge expression swell.
If you are using a more current release of the Symbolic Math Toolbox, then you can use the 'MaxDegree' option for 'solve' to set the value to '4' in order to force MATLAB to give you explicit solutions for your equation:
w=solve('(Cm^2/4)*(Lm^2-Ls^2)^2*w^4+(50^2*Cm^2*(Lm^2-Ls^2)^2+(3/4)*Cm^2*Ls^2*50^2)*w^2-Lm^2*((50*(Cs+Cm))/2)*w=Lm^2-Cm^250^4','MaxDegree',4)
If you working with an older version, the only workaround I see is using the 'evalin' command and directly calling MuPAD's solve (MuPAD is the symbolic engine for the Symbolic math Toolbox):
>> syms Ls Lm Cs Cm ;
>> evalin(symengine,'solve((Cm^2/4)*(Lm^2-Ls^2)^2*w^4+(50^2*Cm^2*(Lm^2-Ls^2)^2+(3/4)*Cm^2*Ls^2*50^2)*w^2-Lm^2*((50*(Cs+Cm))/2)*w=Lm^2-Cm^250^4,w,MaxDegree=4,IgnoreSpecialCases)')
ans =
[ (9*((3^(1/2)*(128*(Cm^1000/((Cm^2*Lm^4)/4 + (Cm^2*Ls^4)/4 - (Cm^2*Lm^2*Ls^2)/2) - Lm^2/((Cm^2*Lm^4)/4 + (Cm^2*Ls^4)/4 - (Cm^2*Lm^2*Ls^2)/2))^2*((2500*Cm^2*Lm^4)/((Cm^2*Lm^4)/4 +
...
Hope this helps and best regards,
-- Kai

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by