Vežbe 13

Vežbe ćete raditi u grupama po 2-3 (svaki red je jedan tim). Na taj način moći ćete da se međusobno dopunjujete dok rešavate probleme. Rešenja pišite ispod svakog zadatka. Ideja prilikom izrade zadataka jeste da potražite najelegantnije rešenje ako možete. Naravno, koristite Help. Opišite postupak u radu. Posle sačuvajte to što ste radili na USB.

Zadatak br 1

Na času smo videli kako Select može da se napiše kao glava čiste funkcije da bira podatke po određenom kriterijumu. Generišite listu od 100 slučajnih parova gde je svaki element slučajni realni broj od 0 do 10. Nazovite tu listu

parovi

Onda napišite čistu funkciju čija je glava Select koja će iz tih parova izdvajati one čija je suma kvadrata manja od 30.

Zadatak br 2

Pretpostavimo da želite da napravite funkciju koja računa prve diference proste liste. Takva funkcija već postoji u WL i zove se Differences. Ukoliko je lista

{x1,x2,x3,x4,x5}

njene prve diference bi bile

Differences[{x1,x2,x3,x4,x5}]

Pretpostavimo, međutim, da ne znamo tu funkciju i da hoćemo da napišemo čistu funkciju koja to radi pomoću funkcija koje smo prethodno naučili. Na primer, oduzimanje se radi pomoću Subtract, a korisna je i podela u podliste pomoću Partition. Možete li koristeći te funkcije kao i Apply da napišete čistu funkciju koja, kada se primeni na prostu listu, daje isti rezultat kao i Differences?

Sada napišite čistu funkciju koja će da računa prve diference za svaku složenu listu ponaosob na nivou 1. Na primer, ukoliko je početna lista

{{x1,x2,x3,x4,x5},{y1,y2,y3,y4,y5}}

treba da dobijemo kao rezultat primene te funkcije na tu listu sledeći izraz

Zadatak 3

Koristeći Thread ili MapThread napravite 50 kružnica sa slučajnim centrom sa x i y koordinatama između -1 i 1, i radijusima takođe slučajnim između 0.25 i 1.5.

Zadatak 4

Napišite čistu funkciju koja kao input uzima dva vektora istih dimenzija i računa njihov skalarni proizvod. Na primer, ukoliko su ta dva vektora

{x1,x2,x3}

i

{y1,y2,y3}

kada primenimo na tu čistu funkciju (nazovimo je ovde skalarniProizvod) par ovih vektora

skalarniProizvod[{x1,x2,x3},{y1,y2,y3}]

treba da kao autput dobijemo

Proverite kako radi funkcija i za dve liste većih dimenzija (recimo dimenzije 10).