4. vježbe

Primjer 4-1

Zadatak

Napišite program koji će imati dva argumenta; prvi argument je matrica x a drugi argument realan broj r. Program treba vratiti matricu koja je umnožak svojih argumenata, tj. matricu r·x.

Znamo: 
1.) Matrica se množi brojem tako da se svaki element pomnoži s tim brojem.
2.) Ako je x matrica tada je njen element u i-tom retku i j-tom stupcu jednak
                        x[[i, j]].
 npr. x[[2, 3]] je element matrice x koji se nalazi u 2. retku i 3. stupcu. 
3.) Naredbom
                ConstantArray[0, {m, n}] 
 kreiramo matricu s m redaka i n stupaca kojoj su svi elementi jednaki 0.
 4.) Ako je x matrica tada naredba
                 Dimensions[x]
 vraća dvočlanu listu koja sadrži broj redaka i broj stupaca od x.

Izrada

mnozenje[x_List , r_Real ]:= Module[{m, n, rez},
(*
 m je broj redaka matrice x
n je broj stupaca matrice x
rez je rezultirajuća matrica
*)
{m, n}=Dimensions[x];
rez=ConstantArray[0, {m, n}];
Do[
Do[
rez[[i,j]]=r*x[[i,j]];
,
{j, 1, n}
];
,{i, 1, m}
];
Return[rez];
];

Testiranje

a={{-2, 3, -7},{1, -5, 9}, {-4, 8, 2}}; 
mnozenje[a, 2.]

Primjer 4-2

Zadatak

Napišite program koji ima jedan argument i to matricu te računa broj njenih pozitivnih elemenata.

Izrada

brojpoz[x_List]:=Module[{m,n, broj=0},
{m, n}= Dimensions[x];
Do[
Do[
If[x[[i,j]]>0, broj=broj+1; ];
,
{j, 1, n}
];
,{i, 1, m}
];
Return[broj];
];

Testiranje

a={{-2, 3, -7},{1, -5, 9}, {-4, 8, 2}}; 
brojpoz[a]

b={{1,3,-2, 5},{3, 2, 0, 1}, {2, 5, -4, -1}};
brojpoz[b]

Varijacije

Što treba promijeniti da program računa:
1.) broj negativnih elemenata matrice?
2.) broj elemenata matrice koji su veći od 3?

If[x[[i,j]]<0, broj=broj+1; ];
If[x[[i,j]]>3, broj=broj+1; ];