Solving an Equation 5th degree
19 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi Guys, After i have done some research i need still a little bit explanation and help. I hope that sb can help me.
I have an Equation of 5th degree. I solved this equation with the command solve and i get 5 Solution with roots(...,z)
My Questions:
1. Is there any posibility to get an explicit Solution (like MaxDegree, 5) --> I think not.
2. How can i solve these roots without symbolic Toolbox ? I used vpa() but i don*t want to use the symbolic Toolbox.
3. I think that maybe with an numerical approximation these roots could be solved.Is that right ? Are there any numerical function from Matlab which could be used for that? or which are special for this problem ?
4.Is there any way how i could solve the roots without Symbolic Toolbox or Numeric approximation ? Maybe with a function of Matlab or an self created solver ?
0 Kommentare
Antworten (2)
James Tursa
am 2 Jul. 2018
Bearbeitet: James Tursa
am 2 Jul. 2018
5th order polynomials cannot be solved symbolically in general. E.g., see this:
You could get all of the solutions numerically with the roots() function. You could also write your own code to get the roots, but I don't know why you would want to.
EDIT
If you don't want to use the roots() function for some reason, you could pick some method to get one of the guaranteed real roots (e.g. even a simple bisection method will work), then do a polynomial divide using this real root to reduce the 5th order polynomial to 4th order, then calculate the remaining roots explicitly using known formulae. E.g., see general formula for roots of a quartic here:
That being said, I have no idea how much time this will save, or how well/poorly behaved the explicit formulae will be numerically for the specific coefficients you will be using vs the eigenvalue method used by roots().
0 Kommentare
IlPadrino
am 2 Jul. 2018
Bearbeitet: IlPadrino
am 2 Jul. 2018
5 Kommentare
John D'Errico
am 2 Jul. 2018
Bearbeitet: John D'Errico
am 2 Jul. 2018
You CANNOT have a symbolic, explicit solution. No matter how badly you want it, the mathematically impossible is still just impossible.
Constraints are irrelevant. You cannot just decide that you want only to solve for the real roots analytically. There is no simple way around the mathematical facts.
Anyway, roots is not that slow. In fact, it is pretty fast, certainly so compared to any code that you would write yourself.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!