Roots of a sixth order polynomial in symbolic form

12 次查看(过去 30 天)
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