Collect function doesn't work as intended

3 visualizaciones (últimos 30 días)
Cesar Adolfo Cruz Vargaya
Cesar Adolfo Cruz Vargaya el 1 de Nov. de 2022
Comentada: Torsten el 1 de Nov. de 2022
syms z w K
% Previous steps executed, expresion directly copied from workspace
GzSFDen = 1.0*z^2 + (0.36788*K - 1.3679)*z + 0.26424*K + 0.36788;
GzSFDen = vpa(GzSFDen)
GzSFDen = 
% Substitution of z with (w+1)/(w-1)
Gw = subs(GzSFDen,z,(w+1)/(w-1))
Gw = 
% Obtained answer, coefficient of w^2 should only be 31606 K
incorrect = collect(Gw,w)
incorrect = 
% Expected answer, numerically close, num and den divided by 5
% Manually obtained
correct = (6141*K*w^2 + (12642 - 4924*K)*w - 1217*K + 27358)/(10000*w^2 - 20000*w + 10000);
correct = collect(correct,w)
correct = 
  5 comentarios
Cesar Adolfo Cruz Vargaya
Cesar Adolfo Cruz Vargaya el 1 de Nov. de 2022
is there a way to avoid that? Or there is a way to get rid of small values?
Torsten
Torsten el 1 de Nov. de 2022
Sure.
Replace
GzSFDen = 1.0*z^2 + (0.36788*K - 1.3679)*z + 0.26424*K + 0.36788;
by
GzSFDen = 1.0*z^2 + (0.36788*K - 1.36788)*z + 0.26424*K + 0.36788;

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by