Collect function doesn't work as intended

3 Ansichten (letzte 30 Tage)
Cesar Adolfo Cruz Vargaya
Cesar Adolfo Cruz Vargaya am 1 Nov. 2022
Kommentiert: Torsten am 1 Nov. 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 Kommentare
Cesar Adolfo Cruz Vargaya
Cesar Adolfo Cruz Vargaya am 1 Nov. 2022
is there a way to avoid that? Or there is a way to get rid of small values?
Torsten
Torsten am 1 Nov. 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;

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by