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

2 visualizaciones (últimos 30 días)
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
FingersCrossed
FingersCrossed el 10 de Jun. de 2022
Perfect, thank you. Here's my use case for anyone else:
root_children = children(x);
poly = root_children{1};
Walter Roberson
Walter Roberson el 10 de Jun. de 2022
children(x, 1)
would be shorter for that use case

Iniciar sesión para comentar.

Más respuestas (1)

FingersCrossed
FingersCrossed el 10 de Jun. de 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