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

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.

 Respuesta aceptada

Walter Roberson
Walter Roberson el 10 de Jun. de 2022
Editada: Walter Roberson el 10 de Jun. de 2022
use children() — or findSymType() and then children()

2 comentarios

Perfect, thank you. Here's my use case for anyone else:
root_children = children(x);
poly = root_children{1};
children(x, 1)
would be shorter for that use case

Iniciar sesión para comentar.

Más respuestas (1)

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));

Categorías

Más información sobre Symbolic Math Toolbox en Centro de ayuda y File Exchange.

Preguntada:

el 10 de Jun. de 2022

Comentada:

el 10 de Jun. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by