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$).
|
15 15 |
... ili:
|
15 15 |
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 190 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 190 |
... ili:
|
190 190 |
Napomena: SageMath ima i ugrađenu funkciju sum() koja zbraja komponente liste.
190 190 |
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 prvoga 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$.
|
4 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.
Napomena: ova je programska funkcija nešto jednostavnija nego funkcija u 5. predavanju, jer se na slikama ne ispisuje stupanj polinoma. Ako Vas zanima kako se to radi, pogledajte odgovarajući kôd u spomenutom predavanju.
|
|
|
11 11 |
![]() |
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$.
|
Rješenje 1. zadatka za zadaću
Što treba promijeniti u kôdu programske funkcije u 1. zadatku da funkcija vrati aritmetičku sredinu komponenata liste. Uputa: broj komponenata liste daje funkcija len(). Primijenite novu funkciju na listu srange(20); trebali biste dobiti rezultat $\dfrac{19}{2}$.
|
19/2 19/2 |
Napomena: Složenije programske funkcije „sastavljaju” se od jednostavnijih funkcija, pa umjesto prepisivanjem kôda uz varijacije (što može imati pedagoškoga, ali ne i praktičnog smisla) funkciju za izračunavanje aritmetičke sredine možemo napisati pomoću funkcija zbroj() i len():
|
19/2 19/2 |
Rješenje 2. zadatka 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}$.
|
137/60 137/60 |
Rješenje 3. zadatka 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 prvoga zadatka za zadaću SageMath-ovu funkciju len() zamijenite vašom funkcijom broj().
Uputa: „Neutralni” element za prebrojavanje je $0$.
|
3 3 |
Izmjena funkcije arit_sredina():
|
19/2 19/2 |
U funkciji arit_sredina() može se upotrijebiti i ranije definirana funkcija zbroj():
|
19/2 19/2 |
Rješenje 4. zadatka 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$.
|
120 120 |
ili:
|
120 120 |
Rješenje 5. zadatka 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$).
|
cos(1)^2 cos(1)^2 |
Rješenje 6. zadatka 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.
|
![]() |
Rješenje 7. zadatka 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.
|
![]() |
Rješenje 8. zadatka 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$.
|
![]() ![]() |
Varijacija na temu: Crtanje monoma različitim bojama, pri čemu je lista boja parametar funkcije (ako je najviši stupanj monoma (povećan za jedan) veći od broja boja, ponovo se upotrebljavaju iste boje):
|
|
![]() |
|