Differences

This shows you the differences between two versions of the page.

zadatak_3 [2012/02/06 15:43] (current)
milos.simic created
Line 1: Line 1:
 +===== Postavka problema =====
 +//Neka su date 3 ulazne datoteke, ulaz1.txt, ulaz2.txt i ulaz3.txt gde svaka sadrži isti broj vrednosti u decimalnom zapisu koje su rezultati nekog eksperimenta. Vrednosti ima onoliko koliko je bilo vremenskih trenutaka u kojima je vrednost posmatrana. Odrediti aritmetičku srednju vrednost za svaki vremenski trenutak na osnovu vrednosti u sve 3 datoteke. Zatim odrediti koja datoteka sadrži najviše vrednosti koji su najudaljenije od srednje vrednosti (vrednost se najviše razlikuje).//
 +
 +-----
 +
 +//Primer :
 +Neka ima 1000 vrednosti u svakoj datoteci. Ako se desilo da u prvoj ima 340, u drugoj 450 i trećoj 210 vrednosti koje su najviše udaljene od srednje vrednosti u trenutku posmatranja, onda ispisujemo ime datoteke ulaz2.txt.//
 +
 +===== Rešenje =====
 +
 +==== Pomoćna skripta za generisanje proizvoljnih vektora ====
 +
 +<file m pomocna.m>
 +% generise tri proizvoljne kolone
 +% i upisuje ih u tri datoteke
 +% ulaz1.txt, ulaz2.txt i ulaz3.txt
 +
 +n=round(1000-9999*rand(1,1));
 +
 +vektor1=round(1000-999*rand(1,n))';
 +vektor2=round(1000-999*rand(1,n))';
 +vektor3=round(1000-999*rand(1,n))';
 +
 +save ulaz1.txt vektor1
 +save ulaz2.txt vektor2
 +save ulaz3.txt vektor3
 +</file>
 +
 +Deo koda <code m>round(1000-999*rand(1,1))</code>
 +zaokrugljuje proizvoljan razlomljen broj iz intervala (1,1000) na najbliži ceo broj. Tako dobijamo dimenziju vektora. Na isti način generišemo proizvoljni vektor((Matrica dimenzija //m// x //n//, koja sadrži proizvoljne vrednosti iz intervala //(0,1)//, može se napraviti pomoću funkcije rand(m,n). **Vektor je matrica čija je jedna dimenzija 1**.)).
 +
 +==== Glavna skripta ====
 +
 +<file m glavna.m>
 +% Ucitava vrednosti tri vektora,
 +% Nalazi aritmeticku sredinu (takodje vektor),
 +% i vektor koji najvise odstupa od nje
 +
 +load ulaz1.txt vektor1
 +load ulaz2.txt vektor2
 +load ulaz3.txt vektor3
 +
 +aritmeticka=(vektor1+vektor2+vektor3)/3;
 +domen=1:1:numel(vektor1);
 +
 +od1=abs(vektor1-aritmeticka);
 +od2=abs(vektor2-aritmeticka);
 +od3=abs(vektor3-aritmeticka);
 +n1=0;
 +n2=0;
 +n3=0;
 +for i=domen
 + z=[od1(i) od2(i) od3(i)];
 + m=max(z);
 + if od1(i)==m
 +  n1=n1+1;
 + endif
 + if od2(i)==m
 +  n2=n2+1;
 + endif
 + if od3(i)==m
 +  n3=n3+1;
 + endif
 +end
 +
 +m=max([n1 n2 n3]);
 +
 +if n1==m
 + 'ulaz1.txt'
 +endif
 +if n2==m
 + 'ulaz2.txt'
 +endif
 +if n3==m
 + 'ulaz3.txt'
 +endif
 +</file>
 +
 +Niz **aritmeticka*** čuva aritmetičku sredinu vrednosti vektora. U okviru petlje, za svaku vrstu pronađemo maksimum i smestimo ga u promenljivu **m**. Odstupanje svakog vektora smestićemo u odgovarajući vektor. Naredba **max( [ a b c ... x] )** nalazi maksimum vektora čiji su elementi **a**, **b**, **c** ... **x**. Promenljive **n1**, **n2** i **n3** sadrže informacije o tome u koliko vrsta su vektori **vektor1**, **vektor2**, odnosno **vektor3**  imali najveće odstupanje od aritmetičke sredine. Na kraju pronađemo maksimalni broj odstupanja i uporedimo ga sa svakom od vrednosti **n1**, **n**2 i **n3**  zato što se može desiti da bar dve od njih budu jednake maksimalnoj vrednosti. Svaka vrednost jednaka maksimumu dovodi do štampanja naziva datoteke na koju se odnosi.
 
zadatak_3.txt · Last modified: 2012/02/06 15:43 by milos.simic
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki