Effacer les filtres
Effacer les filtres

Fixing the root of polynomial

2 vues (au cours des 30 derniers jours)
Yahor
Yahor le 12 Juin 2014
Commenté : Yahor le 13 Juin 2014
Hello,
I have 4th power polynomial with complex coefficients and parameter a. Real part of one root is physical. However, when I am plotting it as a function of parameter I see discontinuity. I think it is because MATLAB is switching roots.
Any ideas how to fix that physical root?
Thannk you.

Réponse acceptée

Roger Stafford
Roger Stafford le 12 Juin 2014
Presumably you are using matlab's 'roots' function, which for fourth degree polynomials will give four roots, so your task is to select out of those four, as your parameter changes, that root which is regarded as a "physical" root in your particular application.
There does exist a specific formula for solving fourth degree polynomial equations, but it is quite complicated. I would suggest instead making use of that same discontinuity you have observed in conjunction with 'roots'.
Provide the changing parameter in very small and equal incremental changes, and having started with a particular root, always select the root among the four which is closest in absolute difference to the last one chosen. That should provide some kind of continuity. It would be roughly analogous to the use of matlab's 'unwrap' function.
Of course there is the possible problem of arriving at duplicate roots for a particular parameter value. You might have trouble deciding which one of these to follow after that point. Discontinuity can also be tested at the first derivative level if you use sufficiently small and accurate parameter increments, and that might be used to resolve such a dilemma.
The statements I have made above are necessarily vague since I have no way of knowing the nature of your coefficients' dependence on your parameter and its effect on the roots.
  2 commentaires
Roger Stafford
Roger Stafford le 13 Juin 2014
To make a little more clear what I suggested earlier, suppose you have successfully tracked what you regard as the correct "physical branch" of root values up to the n-1st value (including both the real and imaginary parts.) You could use the most recent three values, r(n-3), r(n-2), and r(n-1) to reasonably predict that the n-th value would be approximately r(n) = 3*r(n-1)-3*r(n-2)+r(n-3). At this n-th step you could then take the 'abs' of the difference between this complex predicted value and each of the four complex roots obtained from 'roots' and select the one closest to the predicted value. Or perhaps only the most recent two values are needed, in which case your prediction would be 2*r(n-1)-r(n-2) for the n-th value. In this way you should be able to continue tracking the correct branch of roots making use of the concept of continuity.
Note: These prediction formulas assume you are using a constant increment in your parameter 'a'.
Yahor
Yahor le 13 Juin 2014
Cool! I will try approximation of 2nd and 3rd order and tell you which will work. Thanks a lot I forgot about extrapolation. I was trying to solve it using back substitution in 'FindRoot' on Mathematica, but since I will need that function for numerical integration (which is impossible on uniform grid in Mathematica) I switched to Matlab. Thank you.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by