MPZI_vj11

2477 days ago by fresl

Petlja for


1. zadatak

Napišite programsku funkciju zbroj() koja će izračunati zbroj komponenata liste.

Provjerite ispravnost rada programa na listama  $l_1 = [1, 2, 3, 4, 5]$  (zbroj je $15$)  i  $l_2 =\;$srange(20)  (lista $l_2$ sadrži brojeve  $0, 1, 2, \ldots, 19$,  pa joj je zbroj jednak $190$).

Napomena:  SageMath ima i ugrađenu funkciju sum() koja zbraja komponente liste.

       
       
       


1. zadatak za zadaću

Što treba promijeniti u kôdu programske funkcije u 1. zadatku da funkcija vrati aritmetičku sredinu komponenata liste.  Podsjetnik: broj komponenata liste daje funkcija len().  Primijenite novu funkciju na listu srange(20); trebali biste dobiti rezultat $\dfrac{19}{2}$.

       

 

2. zadatak za zadaću

Napišite programsku funkciju zbroj_rec() koja će zbrojiti recipročne vrijednosti komponenata liste (pretpostavit ćemo da lista nema komponenata koje su jednake nuli).  Zbrojite recipročne vrijednosti komponenata liste  $[1, 2, 3, 4, 5]$;  rezultat je $\dfrac{137}{60}$.

       

 

3. zadatak za zadaću

Napišite programsku funkciju broj() koja će prebrojiti koliko lista ima komponenata. Primijenite funkciju na listu $[-1, 0, 1]$. U rješenju prvog zadatka za zadaću SageMath-ovu funkciju len() zamijenite vašom funkcijom broj()

Uputa:  „Neutralni” element za prebrojavanje je $0$.

       

 

4. zadatak za zadaću

Napišite programsku funkciju umnozak() koja će izračunati umnožak komponenata liste. Testirajte funkciju na listi  $l= [1, 2, 3, 4, 5]$  (trebali biste dobiti rezultat $120$).

Uputa:  Neutralni element za množenje je $1$.

       


5. zadatak za zadaću

Napišite programsku funkciju umnozak_kosinusa() koja će izračunati umnožak kosinusa komponenata liste. Primijenite funkciju na argument $[-1, 0, 1]$  (trebali biste dobiti rezultat $\cos^2 1$).

       

 

2. zadatak

Ako su zadane dvije lista brojeva iste duljine  $l_1=[x_0, x_1, x_2, \ldots, x_n]$  i  $l_2 = [y_0, y1, y2, \ldots, y_n]$,  njihov je skalarni umnožak definiran izrazom

        $l_1\cdot l_2 = x_0\, y_0 + x_1\, y_1 + x_2\, y_2 + \cdots + x_n\, y_n$.

Napišite programsku funkciju skalarni() koja će računati skalarni umnožak dviju lista brojeva iste duljine.  Funkciju primijenite na liste  $l_1 = [1, -1, 2, -2]$  i  $l_2 = [3, 1, 0, -1]$;  rezultat je $4$.

       
       

 

Međuigra

Nova se komponenta na kraj liste dodaje funkcijom .append():

       
1 [1]
2 [1, 4]
3 [1, 4, 9]
4 [1, 4, 9, 16]
5 [1, 4, 9, 16, 25]
1 [1]
2 [1, 4]
3 [1, 4, 9]
4 [1, 4, 9, 16]
5 [1, 4, 9, 16, 25]

 

3. zadatak

Na 7. predavanju (MPZI_predavanje_07) definiran je Taylorov polinom funkcije. Za prikaz kvalitete aproksimacije funkcije $f$ pomoću Taylorovih polinoma u točki $x_0$ od stupnja $0$ do stupnja $n$ upotrijebljena je animacija (koju tada nismo objašnjavali).

Podsjećamo da se Taylorov polinom stupnja $k$ funkcije $f(x)$ u točki $x_0$ u SageMath-u dobiva pozivom funkcije

     taylor (f, x, x0, k)

Napišite programsku funkciju taylor_lista() kojom ćete formirati listu slika koje se mogu animirati naredbom animate(). Svaka komponenta liste treba sadržavati grafički prikaz funkcije, prikaz točke u kojoj se računa Taylorov polinom, te prikaz Taylorovih polinoma od stupnja $0$ do stupnja $n$ za zadane $x_{min}$, $x_{max}$, $y_{min}$, $y_{max}$.

Napisanom programskom funkcijom odredite listu slika aproksimacije funkcije  $f(x) = x^2\,e^{-x}$  u okolišu točke $x_0 = 2$ pomoću Taylorovih polinoma do desetoga stupnja.  (Koliko će slika lista sadržavati?)  Neka su  $x_{min}=-0,\!6$,  $x_{max}=5$,  $y_{min}=-0,\!25$,  $y_{max}=0,\!70$  i neka su Taylorovi polinomi nacrtani crvenom bojom.  Na kraju prikažite animaciju tih slika s razmakom od pola sekunde između dvije slike, pri čemu će se izvesti deset iteracija prikaza slika.

       
       
       
       



6. zadatak za zadaću

Funkcijom taylor_lista(), definiranom u 3. zadatku, generirajte listu slika aproksimacija funkcije  $f(x) = \dfrac{1}{x^2}\sin\dfrac{1}{x}$  Taylorovim polinomima do 20.-oga stupnja u okolini točke $x_0=0,\!21$  za  $x_{min}=0,\!1$,  $x_{max}=0,\!6$,  $y_{min}=-60$  i  $y_{max}=80$.

Animirajte dobivene slike funkcijom animate() i prikažite animaciju funkcijom .show() uz opcije  delay = 75, iterations = 10.

       

 

7. zadatak za zadaću

Napišite programsku funkciju monomi() koja će generirati listu slika monoma $x^i$ za  $i = 0\; .. n$  na segmentu $[0, 1]$. Broj $n$ je parametar funkcije.  Ordinate najniže i najviše točke crteža neka budu $0$ i $1$.  Listu koju ćete dobiti animirajte.

       


8. zadatak za zadaću

Napišite programsku funkciju monomi2() koja će na istoj slici prikazati niz monoma $x^i$ za  $i = 0\; .. n$  na segmentu $[-1, 1]$.  Broj $n$ je parametar funkcije.  Ordinate najniže i najviše točke crteža neka budu $-1$ i $1$.