how to find complex polynomial solution

I want to find roots of CDP, T's are constant real values
CDP1 =T_6*(1i*w).^6 +T_5*(1i*w).^5 +T_4*(1i*w).^4 +T_3*(1i*w).^3 +T_2*(1i*w).^2 +T_1*(1i*w) +T_0;
CDP2 =Tp_4*(1i*w)^.4 +Tp_3*(1i*w).^3 +Tp_2*(1i*w).^2 +Tp_1*(1i*w) +Tp_0;
CDP= CDP1*(1i*w).^1.4 +CDP2;

回答(1 个)

Then, after defining all the constant values:
syms w
CDP1 = T_6*(1i*w).^6 + T_5*(1i*w).^5 + T_4*(1i*w).^4 + T_3*(1i*w).^3 + T_2*(1i*w).^2 + T_1*(1i*w) + T_0;
CDP2 = Tp_4*(1i*w)^.4 + Tp_3*(1i*w).^3 + Tp_2*(1i*w).^2 + Tp_1*(1i*w) + Tp_0;
CDP = CDP1*(1i*w).^1.4 + CDP2;
sol = double(solve(CDP))

8 个评论

thank you for your comment Alex, but it gives empty column vector.
My polinomial is like this
CDP = 1.6*(i*w^10)^4.9 + 0.04*(i*w^10)^0.9 + i^3*w^30*(7.76*(i*w^10)^0.9 + 1.6) + i*w^10*(1.64*(i*w^10)^0.9 + 0.72) + i^2*w^20*(7.76*(i*w^10)^0.9 + 2.16) + 0.04
What constant values are you using? Putting random values for those constants i get a solution
Polynomials only use nonnegative integer powers. 0.9 as a polynomial power is not valid.
the power of w is integer, only power of j is noninteger.
When I input constants it gets, like;
CDP = 1.6*(i*w^10)^4.9 + 0.04*(i*w^10)^0.9 + i^3*w^30*(7.76*(i*w^10)^0.9 + 1.6) + i*w^10*(1.64*(i*w^10)^0.9 + 0.72) + i^2*w^20*(7.76*(i*w^10)^0.9 + 2.16) + 0.04
as you can see the power of w is integer, but power of i is non integer
If I collect imaginary part in mupad it gets like this
CDP = (w^30*(7.76*(i*w^10)^0.9 + 1.6))*i^3 + (w^20*(7.76*(i*w^10)^0.9 + 2.16))*i^2 + (w^10*(1.64*(i*w^10)^0.9 + 0.72))*i + 1.6*(i*w^10)^4.9 + 0.04*(i*w^10)^0.9 + 0.04
I think
if I can replace equvalent of i powers, to a powerless i ; it may solve my problem.
w^10 is okay. You then multiply by i and raise the result to 0.9 or 4.9. By the power law, (A*B)^C is A^C*B^C so (i*w^10)^0.9 is i^0.9 * (w^10)^0.9 and that second part is not polynomial
In the case where w is nonnegative real if you are willing to treat 0.9 as 9/10 exactly (which it is not) then you could multiply out to get w^9. But if that is what you want then you need to code it: with the 1i in there, matlab would never compute it that way. You would be getting a different branch of 0.9 power.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Polynomials 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by