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

1 visualizzazione (ultimi 30 giorni)
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.

Risposta accettata

Walter Roberson
Walter Roberson il 10 Giu 2022
Modificato: Walter Roberson il 10 Giu 2022
use children() — or findSymType() and then children()
  2 Commenti
FingersCrossed
FingersCrossed il 10 Giu 2022
Perfect, thank you. Here's my use case for anyone else:
root_children = children(x);
poly = root_children{1};

Accedi per commentare.

Più risposte (1)

FingersCrossed
FingersCrossed il 10 Giu 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