Roots of five degree equation with variable coefficients
조회 수: 3 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
답변 (2개)
Torsten
2018년 4월 12일
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.
댓글 수: 0
Walter Roberson
2018년 4월 12일
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
Walter Roberson
2018년 4월 18일
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.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!