==== Zadatak2 ==== === Postavka problema === Za datu matricu (proizvoljnih dimenzija) u datoteci matrica.txt, odrediti za svaku kolonu njenu srednju, minimalnu i maksimalnu vrednost. Zatim za svaku kolonu odrediti koliko se srednja vrednost kolone razlikuje od aritmetičke sredine minimalne i maksimalne vrednosti i te rezultate upisati u odstupanje.txt datoteku. === Rešenje === == Generisanje datoteke matrica.txt == Pošto je u zadatku navedeno da matrica treba biti **proizvoljnih** dimenzija, koristićemo funkciju **''rand()''** da odredi broj vrsta i broj kolona matrice koju ćemo upamtiti u datoteci //matrica.txt// (mogu biti vrednosti od 1 do 10). Takođe, pomoću funkcije **''rand()''** određujemo i vrednosti te matrice. Koristimo i funkciju **''ceil''** kako bi vrednosti koje funkcija **''rand()''** vrati, za dimenzije matrice, bile celobrojne. br = ceil(10 - 9 * rand()); bk = ceil(10 - 9 * rand()); M = 100 - 99 * rand(br,bk); file = fopen('matrica.txt','w'); for i = 1 : br, for j = 1 : bk, fprintf(file,"%.2f ",M(i,j)); end fprintf("\n"); end fclose(file); == Rešavanje problema == Prvo što treba uraditi jeste učitati podatke iz datoteke //matrica.txt //. Zatim treba za svaku kolonu pojedinačno odrediti njen minimalni element(funkcijom ''min''), maksimalni element(funkcijom ''max'') i srednju vrednost te kolone(funkcijom ''mean''). Zatim izračunavamo aritmetičku sredinu minimalne i maksimalne vrednosti kolone i nju upoređujemo sa srednjom vrednošću (računamo njihovu razliku). Tu vrednost upisujemo u datoteku //odstupanje.txt//. A = load('matrica.txt'); bv = size(A,1); bk = size(A,2); file = fopen("odstupanje.txt","w"); for i = 1 : bk, kolona = A(:,i); maks = max(kolona); min = min(kolona); sr_vr = mean(kolona); ar_s = (maks + min) / 2; raz(i) = ar_s - sr_vr; fprintf(file,"%.2f",raz(i)); end plot(raz); title('Odstupanje srednje vrednosti od aritmeticke sredine'); legend('odstupanje','Location','Northeast'); xlabel('x'); ylabel('odstupanje'); fclose(file);