Filter löschen
Filter löschen

Error when using residue function

4 Ansichten (letzte 30 Tage)
Luan Nguyen Thanh
Luan Nguyen Thanh am 6 Dez. 2017
Please tell me if there's something with my code or it just because of the function "residue"
syms z
dz = (2*z + 1)^4*(3*z + 1)^2*(z + 1)^3;
% get all coefficients of the above polynomial, dz (largest degree --> smallest one)
cs = fliplr( double(coeffs(fz)) );
% partial fraction decomposition of "1/dz" using "residue" function
[r,p,k] = residue(1,cs);
The result shows that
p = [-1.0000 -1.0000 -1.0000 -0.5005 -0.5005 -0.4995 -0.4995 -0.3333 -0.3333]
However, should it be like this to be correct? (notice the differences of the 4th-7th elements in two results)
p = [-1.0000 -1.0000 -1.0000 -0.5000 -0.5000 -0.5000 -0.5000 -0.3333 -0.3333]
Also by using r,p,k achieved from "residue" function, I cannot convert the partial fraction expansion back to polynomial coefficients. How can I fix it?
  2 Kommentare
Jan
Jan am 6 Dez. 2017
Please explain, why you assume that the second value of p is correct.
Luan Nguyen Thanh
Luan Nguyen Thanh am 6 Dez. 2017
Bearbeitet: Luan Nguyen Thanh am 6 Dez. 2017
I think there are 3 reasons:
1) As explained in "https://www.mathworks.com/help/matlab/ref/residue.html#outputarg_p", p represents the poles of 1/dz, so I think it should be
p = [-1.0000 -1.0000 -1.0000 -0.5000 -0.5000 -0.5000 -0.5000 -0.3333 -0.3333]
2) Same as 1), you can see that -0.5005 and -0.4995 can not be the poles of 1/dz.
3) I explained in my question that with the coefficients "r,p,k" obtained from using residue, I cannot recover the partial fraction expansion to polynomial coefficients, which means when I write:
[r,p,k] = residue(1,cs)
[b2,a2] = residue(r,p,k)
I will get b2 and a2 different from 1 and cs, respectively.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Star Strider
Star Strider am 6 Dez. 2017
If you have R2015a or later, use the partfrac (link) function.

Community Treasure Hunt

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

Start Hunting!

Translated by