How to extract polynomial "p" from symbolic solution "root(p,x,k)"?

1 vue (au cours des 30 derniers jours)
FingersCrossed
FingersCrossed le 10 Juin 2022
Commenté : Walter Roberson le 10 Juin 2022
When using solve() symbolically and a solution of the form root(f(z),z,k) is produced, is it possible to extract f(z) without manually copying and pasting?
For instance, if I assign an example solution to variable x :
x = root(z^2 + z + 1, z, 1)
Can z^2 + z + 1 or its coefficients be extracted from x?
sym2poly() does not seem to recognize root(). I suppose I could bluntly use regexp(), though it seems there must be a simpler solution.

Réponse acceptée

Walter Roberson
Walter Roberson le 10 Juin 2022
Modifié(e) : Walter Roberson le 10 Juin 2022
use children() — or findSymType() and then children()
  2 commentaires
FingersCrossed
FingersCrossed le 10 Juin 2022
Perfect, thank you. Here's my use case for anyone else:
root_children = children(x);
poly = root_children{1};
Walter Roberson
Walter Roberson le 10 Juin 2022
children(x, 1)
would be shorter for that use case

Connectez-vous pour commenter.

Plus de réponses (1)

FingersCrossed
FingersCrossed le 10 Juin 2022
Use Walter's answer instead of this. Just for fun, here is a convoluted regexp() approach:
[cell_poly,~] = regexp(string(x),'root\((.*?),','tokens','match');
poly = str2sym(string(cell_poly));

Community Treasure Hunt

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

Start Hunting!

Translated by