Scilab Function
Last update : 16/06/2004

factors - factorisation réelle de polynômes

### Calling Sequence

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

### Parameters

- `pol` : polynôme réel
- `rat` : fraction rationnelle (`rat=pol1/pol2`)
- `lnum` : liste de polynômes (de degrés 1 ou 2)
- `lden` : liste de polynômes (de degrés 1 ou 2)
- `g` : nombre réel
- `flag` : chaîne de caractères, `'c'` ou `'d'`

### Description

renvoie les facteurs du polynôme `pol` dans la liste `lnum` et le "gain" g.

On a pol = g multiplié par le produit des termes de la liste `lnum` (si `flag` n'est pas donné). Si `flag='c'`, on a `|pol(i omega)|` = `|g*prod(lnum_j(i omega)|`. Si `flag='d'` alors on a `|pol(exp(i omega))|` = `|g*prod(lnum_i(exp(i omega))|`. Si l'argument de `factors` est une fraction rationnelle 1x1 `rat=pol1/pol2`, les facteurs du numérateur `pol1` et le dénominateur `pol2` sont renvoyés dans les listes `lnum` et `lden`, respectivement.

Le "gain" est renvoyé dans `g`, c'est à dire rat = g multiplié par (produit des termes dans lnum) / (produit des termes dans lden).

Si `flag` vaut `'c'` (resp. `'d'`), les racines de `pol` sont réfléchies par rapport à l'axe imaginaire (resp. le cercle unité), i.e. les facteurs dans `lnum` sont des polynômes stables. Idem si `factors` est appelé avec des arguments rationnels : les termes dans `lnum` et `lden` sont des polynômes stables si `flag` est donné. `R2=factors(R1,'c')` ou `R2=factors(R1,'d')` avec `R1` une fraction rationnelle ou une liste `syslin` SISO : la sortie `R2` est rationnelle avec un numérateur et un dénominateur stables et de même module que `R1` sur l'axe imaginaire (`'c'`) ou le cercle unité (`'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)))

### See Also

`simp`,