Roots of five degree equation with variable coefficients

7 views (last 30 days)
syms x y P
a = 3.70575*10^7; %6.448*10^10/1740;
b = 1 +(x^2/y^2); %(*we have two variables omega \ and Ohm*)
c = 3.67471*10^6; %.6394*10^10/1740;
d = 3.67471*10^6; %.6394*10^10/1740;
e = 6.54253*10^6 ; %1.1384*10^10/1740;
f = 2* 1i* x/y;
g = 9.41954*10^6; %1.639*10^10/1740;
h = 2.6028*10^12; %0.6394*300*10^10/1740*2361;
I = 66.7593 *(0.05 +1i/y); %49.2/(1740)*(2361)*(.05 +1i/x);
J = 20.3534; % .05*300/1740*2361;
k = 146.05 ; % 2*10^6*300/1740*2361;
l = 3.197*10^8/(0.05 +1i/x) ; % .05*0.6394*10^10/(.05 + 1i/x);
m = 0.025/(.05 + 1i/x);
n = 0.025/(.05 + 1i/x);
q = 0.005/(.05 + 1i/x);
r = 0.0000277624; %1.1384*10^10/1740*1.753*10^(-15)*(49.2)^2;
s = 0.00634751 ; %h/1740*1.753*10^(-15)*(49.2)^2;
t = 2.43873*10^(-17); %0.01/1740*1.753*10^(-15)*(49.2)^2;
u=1.9977*10^18;
A=[ -a+b*P -c -d e f*P; -f*P 0 0 0 -g+b*P; h*P I-P -J*P k*P 0; l -m n-P q 0; r -s -t -u+P 0]; %Matrix of order 5
D=det(A);%determinant of above matrix
%writing determinant as a polynomial in P(five degree polynomial, coefficients are as follow)
b0= (- b^2-f^2);
b1=(a*b + b*g + I*b^2 + I*f^2 + b^2*n + f^2*n + b^2*u + f^2*u + f^2*k*s + b*c*h + J*b^2*m + J*f^2*m + b^2*k*s);
b2=(- a*g - b^2*n*u + b^2*q*t - f^2*n*u + f^2*q*t - I*a*b - I*b*g - a*b*n + b*d*l - c*g*h - b*g*n - a*b*u + b*e*r - b*g*u - I*b^2*n - I*f^2*n - I*b^2*u - I*f^2*u - a*b*k*s - b*c*h*u - b*c*k*r - b*e*h*s - b*g*k*s - J*b^2*m*u - J*b^2*q*s - J*f^2*m*u - J*f^2*q*s - b^2*k*m*t - b^2*k*n*s - f^2*k*m*t - f^2*k*n*s - J*a*b*m - J*b*c*l - J*b*g*m - b*c*h*n - b*d*h*m);
b3= (I*a*g + a*g*n - d*g*l + a*g*u - e*g*r + a*b*n*u + a*g*k*s - b*d*l*u - b*e*l*t - b*e*n*r + c*g*h*u + c*g*k*r + e*g*h*s - a*b*q*t - b*d*q*r + b*g*n*u - b*g*q*t + I*b^2*n*u - I*b^2*q*t + I*f^2*n*u - I*f^2*q*t + I*a*b*n - I*b*d*l + J*a*g*m + J*c*g*l + I*b*g*n + I*a*b*u - I*b*e*r + I*b*g*u + c*g*h*n + d*g*h*m + J*a*b*m*u + J*b*c*l*u + J*b*e*l*s - J*b*e*m*r + J*a*b*q*s + J*b*c*q*r + J*b*g*m*u + J*b*g*q*s + a*b*k*m*t + a*b*k*n*s + b*c*h*n*u + b*c*k*l*t + b*c*k*n*r + b*d*h*m*u - b*d*k*l*s + b*d*k*m*r + b*e*h*m*t + b*e*h*n*s - b*c*h*q*t + b*d*h*q*s + b*g*k*m*t + b*g*k*n*s);
b4= (- a*g*n*u + d*g*l*u + e*g*l*t + e*g*n*r + a*g*q*t + d*g*q*r - I*a*g*n + I*d*g*l - I*a*g*u + I*e*g*r - I*a*b*n*u + I*b*d*l*u + I*b*e*l*t + I*b*e*n*r + I*a*b*q*t + I*b*d*q*r - J*a*g*m*u - J*c*g*l*u - J*e*g*l*s + J*e*g*m*r - I*b*g*n*u - J*a*g*q*s - J*c*g*q*r + I*b*g*q*t - a*g*k*m*t - a*g*k*n*s - c*g*h*n*u - c*g*k*l*t - c*g*k*n*r - d*g*h*m*u + d*g*k*l*s - d*g*k*m*r - e*g*h*m*t - e*g*h*n*s + c*g*h*q*t - d*g*h*q*s);
b5=(I*a*g*n*u - I*d*g*l*u - I*e*g*l*t - I*e*g*n*r - I*a*g*q*t - I*d*g*q*r);
Y=[b0 b1 b2 b3 b4 b5];
R =roots(Y)
I am getting roots in terms of new variable 'z', I need roots in terms of x and y only. As i have to plot roots(P1,P2,P3,P4,P5) vs x vs y

Answers (2)

Torsten
Torsten on 12 Apr 2018
In general, there is no analytical formula for the roots of polynomials of degree > 4. You will have to assign values to x and y and solve for each combination of x and y separately using the "roots" command.
Furthermore, I doubt that "roots" works with symbolic expressions anyway.
Best wishes
Torsten.

Walter Roberson
Walter Roberson on 12 Apr 2018
Do not worry about it. Those z* variables you see are "bound" variables, dummy variables used to express the root placeholder. MATLAB will take care of their value.
However, computation of the roots will be slow.
Plotting will be a bit tricky. With the constants that you provide, when you start to evaluate to a high enough precision, all 5 of the roots are complex. If your precision is lower, such as the default 30, then you could be fooled into thinking you had a valid real-valued root or perhaps even think you had two.
  6 Comments
Walter Roberson
Walter Roberson on 18 Apr 2018
You were missing a definition for g; I copied it from what you had previously posted.
Because of your x=linspace(1,100,50) a number of your variables are numeric vectors. A number of places in your code had to be changed from ^ to .^ and probably a number had to be changed from * to .* .
Because of the vector x, your b0, b1, b2, etc are all numeric vectors of length 50, except that b5 happens to come out as a scalar. When you then do
Y=[b0 b1 b2 b3 b4 b5];
you are constructing a numeric vector of length 251. roots() of that is then the roots of a polynomial of degree 250, giving you 250 answers.
You need to reconsider your use of x.
Himanshu SINGLA
Himanshu SINGLA on 19 Apr 2018
i will retry it more carefully by taking care of all things that you mentioned, and then will tell you if the problem get solved.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!