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

1 回表示 (過去 30 日間)
FingersCrossed
FingersCrossed 2022 年 6 月 10 日
コメント済み: Walter Roberson 2022 年 6 月 10 日
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.

採用された回答

Walter Roberson
Walter Roberson 2022 年 6 月 10 日
編集済み: Walter Roberson 2022 年 6 月 10 日
use children() — or findSymType() and then children()
  2 件のコメント
FingersCrossed
FingersCrossed 2022 年 6 月 10 日
Perfect, thank you. Here's my use case for anyone else:
root_children = children(x);
poly = root_children{1};
Walter Roberson
Walter Roberson 2022 年 6 月 10 日
children(x, 1)
would be shorter for that use case

サインインしてコメントする。

その他の回答 (1 件)

FingersCrossed
FingersCrossed 2022 年 6 月 10 日
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));

カテゴリ

Help Center および File ExchangePolynomials についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by