Marec 2015, J.Slavič in L.Knez

Vprašanje 1: Pojasnite na primeru *proceduralno* in *funkcijsko* programiranje.


```python
# Primer izračuna fakultete
n = 5  

f = 1
for i in range(n):
    f *= i+1

rezultat = f
print(rezultat)
```

    120



```python
from functools import reduce
#?reduce()
def fakulteta_2(n):
    return reduce(lambda x,y: x*y, range(1, n+1))

print(fakulteta_2(5))
```

    120


Vprašanje 2: Definirajte preprosti objekt, naredite nekaj funkcij temu objektu.


```python
# Objekti temeljijo na razredih
import numpy as np

class Valj:
    """ Objekt, ki poda ali pa izračuna lastnosti valja."""
    
    def __init__(self, polmer=2, visina=5, gostota=0): # Konstruktor objekta
        self.polmer = polmer
        self.visina = visina
        self.gostota = gostota
        
    tip = 'Telo'  # Lastnost, ki bo enaka pri vseh objektih
    
    def def_polmer(self, polmer):  # Spremenimo polmer
        self.polmer = polmer
        
    def def_visina(self, visina):  # Spremenimo višino
        self.visina = visina
    
    def def_gostota(self, gostota): # Spremenimo gostoto
        self.gostota = gostota
    
    def volumen(self):  # Izračuna volumen glede na aktualne podatke
        _ = np.pi * self.polmer**2 * self.visina
        return _
        
    def masa(self):  # Izračuna maso glede na aktualen volumen
        _ = self.volumen() * self.gostota  # self.volumen() !! Drugače je metoda*int kar vrne error
        return _
```


```python
# Kreiramo objekt
valj1 = Valj(3, 1, 1000)

# Izpišemo volumen in maso
print('Volumen: ', valj1.volumen())
print('Masa: ', valj1.masa())

# spremenimo polmer in gostoto
valj1.def_polmer(5)
valj1.def_gostota(2500)

# Izpišemo nove rezultate
print('Novi volumen: ', valj1.volumen())
print('Nova masa:', valj1.masa())
```

    Volumen:  28.274333882308138
    Masa:  28274.33388230814
    Novi volumen:  78.53981633974483
    Nova masa: 196349.5408493621


Vprašanje 3 in 4:


```python
class Meritev():
    """Objekt za delo z meritvami"""
    
    def __init__(self, dolzina=1):
        self.data = np.random.rand(dolzina)
```


```python
mer = Meritev(dolzina=10)
```


```python
mer.data
```




    array([ 0.8072141 ,  0.17587614,  0.91655953,  0.35209995,  0.42632983,
            0.32890986,  0.65120093,  0.63513043,  0.70834575,  0.94418833])



...

Vprašanje 8: Uvozite ves naslovni prostor iz ``SymPy``. Nastavite lep izpis rezultatov.


```python
from sympy import *
init_printing()
```

Vprašanje 9: Za trikotnik na sliki definirajte funkcijo za izračun ploščine in volumna.

Vprašanje 10: Izračunajte številčne vrednosti (podatki naj bodo definirani v slovarju in si jih izmislite).


```python
a, b, c = symbols('a b c')
podatki = {a: 1, b: 2, c: 0.01}
```


```python
ploscina = a*b/2
volumen = ploscina*c
```


```python
ploscina.subs(podatki)  # Podatke vstavimo kar v obliki slovarja
```




    1




```python
volumen.subs(podatki)  
```




    0.0100000000000000



Vprašanje 11: Izračunajte statični moment ploskve $S_{xx}=\int_A y\,dA=\int_{0}^{b} y\,x(y)\,dy$, kjer je $x(y)=a-b\,y/b$.


```python
x, y = symbols('x y')
x = a - b*y/b
Sxx = integrate(y*x,(y, 0, b))
Sxx
```

Vprašanje 12: Izračunajte vztrajnostni moment ploskve $I_{xx}=\int_A y^2\,dA$.

Vprašanje 13: Prikažite $I_{xx}$ v odvisnosti od parametra $b$ ($a$ definirate poljubno).


```python
Ixx = integrate(y**2*x,(y, 0, b))   # Krat x ker integriramo po y. dA= dx*dy.
Ixx
```


```python
Ixx_b = Ixx.subs('a', 2)
Ixx_b
```

Vprašanje 14: Nedoločeno in določeno (v mejah od 0 do $\tau$) integrirajte izraz: $\sin(5+t)+e^t$.


```python
x, t, tau = symbols('x t tau')
x = sin(5+t)+E**t

# Nedoločen integral
A = integrate(x, t)
A
```


```python
# Določen integral
B = integrate(x, (t, 0, tau))
B
```


```python
# Računanje integrala na 40 decimalk
C = integrate(x, (t, 0, 1))
N(C, 40)
```

Vprašanje 15: Z odvajanjem pokažite pravilnost nedoločenega integrala iz predhodnega koraka.


```python
x_f = diff(A, t)
x_f
```

040b233e3bf610466bb1000ef0c40434cd387635
ipynb
Jupyter Notebook
pypinm-master/vprasanja za razmislek/Vaja 4 - polovica.ipynb
CrtomirJuren/python-delavnica
db96470d2cb1870390545cfbe511552a9ef08720
MIT
pypinm-master/vprasanja za razmislek/Vaja 4 - polovica.ipynb
CrtomirJuren/python-delavnica
db96470d2cb1870390545cfbe511552a9ef08720
MIT
pypinm-master/vprasanja za razmislek/Vaja 4 - polovica.ipynb
CrtomirJuren/python-delavnica
db96470d2cb1870390545cfbe511552a9ef08720
MIT
Qwen/Qwen-72B
1. YES
2. YES