Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Change language to: English - Português - 日本語 - Русский

pfss

partial fraction decomposition

Syntax

elts = pfss(Sl)
elts = pfss(Sl,rmax)
elts = pfss(Sl,cord)
elts = pfss(Sl,rmax,cord)

Arguments

Sl

A linear dynamical system in state-space, or a transfer function representation (see syslin), or any rational fraction.

rmax

A real number controlling the conditioning of block diagonalization (see bdiag).

cord

A character string with possible values 'c' or 'd'.

elts

List of linear systems, or list of rationals: the components of the decomposition.

If Sl is a transfer function or any other rational and has an integer part (degree(Sl.num)>=degree(Sl.den)), elts(1:\$-1) are rational components and elts(\$) is the integer part (polynomial).

Description

Partial fraction decomposition of the linear system Sl.

elts is the list of linear systems which add up to Sl i.e. elts=list(S1,S2,S3,...,Sn) with:

Sl = S1 + S2 +... +Sn.

Each Si contains some poles of S according to the block-diagonalization of the A matrix of S.

For non proper systems, the polynomial part of Sl is returned in elts(\$).

If Sl is given in transfer form, it is first converted into state-space by tf2ss and each subsystem Si is then converted in transfer form by ss2tf.

The A matrix is of the state-space is put into block diagonal form by function bdiag. The optional parameter rmax is sent to bdiag, rmax should be set to a large number to enforce block-diagonalization.

If the optional flag cord='c' is given the elements in elts are sorted according to the real part (resp. magnitude if cord='d') of the eigenvalues of A matrices.

Examples

// With a linear system (state-space):
W = ssrand(1,1,6);
elts = pfss(W);
W1 = 0;
for k = 1:size(elts)
W1 = W1 + ss2tf(elts(k));
end
clean(ss2tf(W) - W1)
// With a rational (transfer function or any other one), without integer part:
num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3;
den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; // degree(den)>degree(num)
h2 = syslin('c',num/den)
d = pfss(h2)

// With a rational with an integer part: degree(num)>=degree(den):
num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3 + %s^5;
h2 = syslin('c',num/den)
d = pfss(h2)
typeof(d(\$)) // last component = integer part = polynomial

• pbig — projection sur des sous-espaces propres
• bdiag — bloc-diagonalisation, vecteurs propres généralisés
• coffg — Co-facteurs d'une matrice carrée de polynômes ou de fractions rationnelles
• dtsi — Continuous time dynamical systems stable anti-stable decomposition