# Koeficijenti prijenosne funkcije

Za razne operacije proračuna stabilnosti sustava potrebno je prijenosnu funkciju pojednostaviti, rasčlaniti, odvojiti brojnik i nazivnik u zasebne varijable te potom odvojiti sve koeficijente uz potencije s-a u zasebne varijable.

Bez toga nije moguće odraditi hurwitzov i routhov kriterij stabilnosti.

Python funkcije koje se koriste za ove operacije dio su ```Sympy``` knjižnice.
```python
* symbols
* poly
* simplify
* expand
* fraction
```

### Primjer s numerickim koeficijentima

Za početak potrebno je obrisati sve varijable iz memorije.


```python
import os
clear = lambda: os.system('cls')
clear()
```




    0




```python
from sympy.interactive import printing
printing.init_printing(use_latex=True)
from sympy import symbols, poly, simplify, expand, fraction
```

Potrebno je definirati sva imena matematičkih varijabli koje koristimo.


```python
s = symbols('s')
```

Potenciranje u pythonu vršimo s ```**``` u obliku ```VARIJABLA**POTENCIJA```


```python
tf = (1 / ((s+6)*(s**2+2)))
display(tf)
```

Funkciju možemo razviti u polinom putem funkcije ```expand()```


```python
tf_poly = expand(tf)
display(tf_poly)
```

Koeficijente uz ```S^n``` možemo dobiti putem funkcije ```poly(n, s)```
No za to je prvo potrebno odvojiti brojnik i nazivnik


```python
brojnik, nazivnik = fraction(tf_poly)
display(brojnik)
display(nazivnik)
```

Sada kada smo odvojili brojnik i nazivnik u zasebne varijable možemo primjeniti ```poly()``` funkciju


```python
s_coeffs = poly(nazivnik, s)
display(s_coeffs)
```

Za matricu koeficijenata potrebno je primjeniti funkciju ```coeffs()```


```python
s_coeffs = s_coeffs.coeffs()
display(s_coeffs)
```

Koeficijenti su zapisani u matricu obrnutim redoslijedom nego što inače zapisujemo, na prvom mjestu je koeficijent uz najviši eksponent s-a stoga treba paziti u izvlačenju koeficijenata.


```python
s0 = s_coeffs[3]
s1 = s_coeffs[2]
s2 = s_coeffs[1]
s3 = s_coeffs[0]
display(s0, s1, s2, s3)
```

Na ovaj način smo odvojili koeficijente uz eksponente s-a u zasebne varijable ```s0``` ```s1``` ```s2``` i ```s3```.
U ovom slučaju radi se o numeričkim koeficijentima, no na isti način bi smo odvojili i koeficijente u obliku simboličkih varijabli.

### Primjer s simboličkim koeficijentima


```python
k, m = symbols('k m')
```


```python
tf = (1 / ((s+(2*k+4*m))*(s**2+(k**2*4))))
display(tf)
```


```python
tf_simp = expand(tf)
display(tf_simp)
```


```python
brojnik, nazivnik = fraction(tf_simp)
display(brojnik)
display(nazivnik)
```


```python
s_coeffs = poly(nazivnik, s)
display(s_coeffs)
```


```python
s_coeffs = s_coeffs.coeffs()
display(s_coeffs)
```


```python
s0 = s_coeffs[3]
s1 = s_coeffs[2]
s2 = s_coeffs[1]
s3 = s_coeffs[0]
display(s0, s1, s2, s3)
```

edf0e45ab4f622ed20495089339081e8c1e70799
ipynb
Jupyter Notebook
koeficijenti_prijenosne_funkcije.ipynb
dnemec/Python-Control-Systems
54854fde3ec752d61632084fd869e2440f6e0a63
MIT
koeficijenti_prijenosne_funkcije.ipynb
dnemec/Python-Control-Systems
54854fde3ec752d61632084fd869e2440f6e0a63
MIT
koeficijenti_prijenosne_funkcije.ipynb
dnemec/Python-Control-Systems
54854fde3ec752d61632084fd869e2440f6e0a63
MIT
Qwen/Qwen-72B
1. YES
2. YES