Petlja for
1. zadatak
Napišite programsku funkciju zbroj() koja će izračunati zbroj komponenata liste.
Provjerite ispravnost rada programa na listama l1=[1,2,3,4,5] (zbroj je 15) i l2=srange(20) (lista l2 sadrži brojeve 0,1,2,…,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 192.
|
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 13760.
|
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 cos21).
|
2. zadatak
Ako su zadane dvije lista brojeva iste duljine l1=[x0,x1,x2,…,xn] i l2=[y0,y1,y2,…,yn], njihov je skalarni umnožak definiran izrazom
l1⋅l2=x0y0+x1y1+x2y2+⋯+xnyn.
Napišite programsku funkciju skalarni() koja će računati skalarni umnožak dviju lista brojeva iste duljine. Funkciju primijenite na liste l1=[1,−1,2,−2] i l2=[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 x0 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 x0 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 xmin, xmax, ymin, ymax.
Napisanom programskom funkcijom odredite listu slika aproksimacije funkcije f(x)=x2e−x u okolišu točke x0=2 pomoću Taylorovih polinoma do desetoga stupnja. (Koliko će slika lista sadržavati?) Neka su xmin=−0,6, xmax=5, ymin=−0,25, ymax=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)=1x2sin1x Taylorovim polinomima do 20.-oga stupnja u okolini točke x0=0,21 za xmin=0,1, xmax=0,6, ymin=−60 i ymax=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 xi 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 xi 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 192.
|
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 13760.
|
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 cos21).
|
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)=1x2sin1x Taylorovim polinomima do 20.-oga stupnja u okolini točke x0=0,21 za xmin=0,1, xmax=0,6, ymin=−60 i ymax=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 xi 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 xi 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):
|
|
![]() |
|