Change language to:
English - Français - 日本語 - Português -

See the recommended documentation of this function

Справка Scilab >> Polynomials > factors

# factors

numeric real factorization

### Syntax

```[lnum,g]=factors(pol [,'flag'])
[lnum,lden,g]=factors(rat [,'flag'])
rat=factors(rat,'flag')```

### Arguments

pol

real polynomial

rat

real rational polynomial (`rat=pol1/pol2`)

lnum

list of polynomials (of degrees 1 or 2)

lden

list of polynomials (of degrees 1 or 2)

g

real number

flag

character string `'c'` or `'d'`

### Description

returns the factors of polynomial `pol` in the list `lnum` and the "gain" g.

One has pol= g times product of entries of the list `lnum` (if `flag` is not given). If `flag='c'` is given, then one has `|pol(i omega)|` = `|g*prod(lnum_j(i omega)|`. If `flag='d'` is given, then one has `|pol(exp(i omega))|` = `|g*prod(lnum_i(exp(i omega))|`. If argument of `factors` is a 1x1 rational `rat=pol1/pol2`, the factors of the numerator `pol1` and the denominator `pol2` are returned in the lists `lnum` and `lden` respectively.

The "gain" is returned as `g`,i.e. one has: rat= g times (product entries in lnum) / (product entries in lden).

If `flag` is `'c'` (resp. `'d'`), the roots of `pol` are reflected wrt the imaginary axis (resp. the unit circle), i.e. the factors in `lnum` are stable polynomials.

Same thing if `factors` is invoked with a rational arguments: the entries in `lnum` and `lden` are stable polynomials if `flag` is given. `R2=factors(R1,'c')` or `R2=factors(R1,'d')` with `R1` a rational function or SISO `syslin` list then the output `R2` is a transfer with stable numerator and denominator and with same magnitude as `R1` along the imaginary axis (`'c'`) or unit circle (`'d'`).

### Examples

```n=poly([0.2,2,5],'z');
d=poly([0.1,0.3,7],'z');
R=syslin('d',n,d);
R1=factors(R,'d')
roots(R1('num'))
roots(R1('den'))
w=exp(2*%i*%pi*[0:0.1:1]);
norm(abs(horner(R1,w))-abs(horner(R,w)))```