How to extract powers of a symbolic polynomial?

48 visualizaciones (últimos 30 días)
Alina Rossi-Conaway
Alina Rossi-Conaway el 18 de Mzo. de 2021
Comentada: Walter Roberson el 25 de Sept. de 2023
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!!

Respuestas (3)

Steven Lord
Steven Lord el 22 de Mzo. de 2021
syms z
y = 0.96*z^3500 + 0.04*z^0
y = 
[coefficients, powers] = coeffs(y)
coefficients = 
powers = 
syms y positive
exponents = simplify(subs(log(powers)./log(z), z, y))
exponents = 
  1 comentario
Walter Roberson
Walter Roberson el 19 de Jul. de 2021
Different formulation for finding the exponents.
syms z
y = 0.96*z^randi(9999) + 0.04*z^randi(9999)
y = 
[coefficients, powers] = coeffs(y)
coefficients = 
powers = 
exponents = mapSymType(powers, 'power', @(Z) children(Z,2));
if powers(end) == 1; exponents(end) = 0; end
exponents
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.

Iniciar sesión para comentar.


Shubham Rawat
Shubham Rawat el 22 de Mzo. de 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 comentario
Davy Figaro
Davy Figaro el 19 de Jul. de 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;

Iniciar sesión para comentar.


sil das
sil das el 25 de Sept. de 2023
(x+1)^2
  1 comentario
Walter Roberson
Walter Roberson el 25 de Sept. de 2023
Could you explain how that line of code solves the problem mentioend by @Alina Rossi-Conaway ?

Iniciar sesión para comentar.

Categorías

Más información sobre Polynomials en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by