Roots of a sixth order polynomial in symbolic form

조회 수: 34 (최근 30일)
RAN
RAN 2021년 3월 18일
댓글: Bruno Luong 2021년 4월 6일
Hello all,
I have a sixth order polynomial in symbolic form:
eqn1=a1*s^6 + a2*s^5 + a3*s^4 a4*s^3 + a5*s^2 +a6*s + a7 == 0
There is no way of finding analytical roots of the polynomial in symbolic form.
After substituting values of co-efficients, and using "root" function, I end up with six roots (complex and real) in numerical form.
Each of these numerical root is a function of the coefficients and that is clear. Now I would like to extract this function of co-efficient to sort of make it more analytic.
Any idea how to do it?

채택된 답변

Bruno Luong
Bruno Luong 2021년 3월 19일
편집: Bruno Luong 2021년 3월 19일
"Ok let me elaborate a bit further. I have a system with a sixth order denominator polynomial, like i mentioned in the question. I want to evaluate the settling time, which is now dependent on the coefficient of the polynomial. The aim is to find out which coefficients of the polynomial have the most influence on the settling time. To that end, I found the poles of the denominator and time constant associated with each pole numerically. So now if I want to increase or decrease the settling time, i do not know which coefficient to change. What I would like to do is figure out which coefficient has most effect on settling time and change accourdingly. Is that possible?"
If you want to have the sensitivity of the roots with respect to the coefficiensts, then you can just make the derivative of the equation
P(s) = 0;
P is polynomial associates with a(:).
with respect to the coefficient ak:=a(k), you'll find out that
ds/dak = s.^(length(a)-k)./(polyval(polyder(a),s));
So now you know how to change the coefficients to make the setting time changes, at least locally, close to the current polyomial.
You might also be interested in function MATLAB stock function poly() that gives the coefficient from the roots.
Check the formula for a random third order polynomial:
a=rand(1,4);
for k=1:length(a)
step=1e-3;
ap=a;
ap(k)=ap(k)+step;
s=roots(a);
t=roots(ap);
dsdak_num = (t-s)/eps % finite difference
dsdak = s.^(length(a)-k)./(polyval(polyder(a),s))
end
  댓글 수: 6
RAN
RAN 2021년 4월 6일
@Bruno Luong: In my case, all coefficients, i.e a1=f(x1,x2), a2=f(x1,x2)...etc. are a function of two variables x1 and x2 which I have the freedom to play with. Unfortunately I cannot disclose all the details. So if i take a derivative of d (roots)/da1, by changing x1 or/and x2 then other coefficients change as well. Hence I come back to the same question as to which coefficient affected the most. Unfortunately, in this case there is no possible way of finding the sensitivity of roots by changing a single co-efficient while keeping the rest of the co-efficients unchanged. Your answer could have worked if all co-efficients were not dependent on each other.
Bruno Luong
Bruno Luong 2021년 4월 6일
If your decision parameters are (x1,x2) and not (a1,a2) then you might use the derivative chain rule to compute the sensitivity to the decision parameter.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2021년 3월 18일
편집: Walter Roberson 2021년 3월 18일
"Each of these numerical root is a function of the coefficients and that is clear."
However, the roots cannot reliably be expressed as algebraic functions of the coefficients: that is, as expressions involving only addition, subtraction, multiplication, division, integer powers, integer roots.
  댓글 수: 6
RAN
RAN 2021년 3월 19일
편집: Walter Roberson 2021년 3월 19일
Hi Walter,
Thank you for the detailed answer You did comment on a question asked many years ago, that there could be a solution for 5th order in special cases ( https://uk.mathworks.com/matlabcentral/answers/106964-roots-of-quintic-equation-using-matlab ). Please can you comment on these cases?
Also I think there exist a general solution to quintic which was a recent development.
Specifically reducing the 5th order to Bring-Jerrard form. Is there any sort of implementation of this in Matlab?
Walter Roberson
Walter Roberson 2021년 3월 19일
some quintics can be factored into pieces that are individually of degree no more than 4; roots can be found for the fragments individually. For example quintics that have constant coefficient 0 can be factored .

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Polynomials에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by