How to extract powers of a symbolic polynomial?
34 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I'm working with a symbolic polynomial
y = 0.96*z^3500 + 0.04*z^0
I can extract the coefficients easily with
coeffs(y)
but I cannot figure out a way to pull off the corresponding powers of z into a vector. I've tried doing some wonky stuff with logs, but nothing so far. Am I SOL?
Thank you!!
0 Kommentare
Antworten (3)
Steven Lord
am 22 Mär. 2021
syms z
y = 0.96*z^3500 + 0.04*z^0
[coefficients, powers] = coeffs(y)
syms y positive
exponents = simplify(subs(log(powers)./log(z), z, y))
1 Kommentar
Walter Roberson
am 19 Jul. 2021
Different formulation for finding the exponents.
syms z
y = 0.96*z^randi(9999) + 0.04*z^randi(9999)
[coefficients, powers] = coeffs(y)
exponents = mapSymType(powers, 'power', @(Z) children(Z,2));
if powers(end) == 1; exponents(end) = 0; end
exponents
This particular code relies on an enhancement to children() that was made a small number of releases ago. A workaround is possible for older releases.
Shubham Rawat
am 22 Mär. 2021
Hi Alina,
You may first find coefficients of all variables like this:
coef = sym2poly(y);
Then you can find all the index of all the non zero elements and -1 as indexing start from 1 in MATLAB:
polyPowers = find(coef) - 1;
Hope this Helps!
1 Kommentar
Davy Figaro
am 19 Jul. 2021
This is good, but because symbolic polynomial powers are presented in descending order, you need to double flip to get the polyPowers to line up to the original polynomial:
polyPowers = flip(find(flip(coef))) - 1;
Siehe auch
Kategorien
Mehr zu Calculus finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!