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

1 Ansicht (letzte 30 Tage)
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.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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