Lab 4 – macierze cd. Definiowanie własnych funkcji. M. Głowacki, L-10, PK
1 zad. 1.
a)
Utworzyć macierz 𝑅𝑛 × 𝑚 wypełnioną pseudolosowymi liczbami całkowitymi z przedziału [𝑎, 𝑏]. Obliczyć sumę i udział procentowy liczb dodatnich w danej macierzy.
Wykonać obliczenia dla różnych wartości n, m, a, b. W szczególności uwzględnić poniższe przypadki:
a) n = 5, m = 5, a = -10, b = 10.
b) n = 100, m = 100, a = -10, b = 10.
c) n = 100, m = 100, a = -1000, b = 1000.
Dla każdego przypadku wykonać obliczenia kilka razy (dla różnych macierzy pseudolosowych). Zaobserwować jak zmienia się udział procentowy.
Wskazówka: można skorzystać z funkcji randi().
b)
Bazując na skrypcie przygotowanym w podpunkcie a) utworzyć własną funkcję (i zapisać w postaci pliku funkcyjnego), która dla dowolnej macierzy obliczy sumę i udział procentowy liczb dodatnich w tej macierzy.
zad. 2.
Napisać funkcję, która dla dowolnej macierzy 𝐴𝑛 × 𝑚 obliczy:
√∑ ∑ 𝐴2𝑖,𝑗
𝑚
𝑗=1 𝑛
𝑖=1
Wykonać powyższe zadanie na dwa sposoby:
a) Za pomocą pętli for.
b) Za pomocą funkcji sum().
zad. 3.
Napisać funkcję, która dla dowolnej macierzy kwadratowej obliczy sumę elementów pod przekątną. Funkcja powinna sprawdzać, czy podana macierz jest kwadratowa i wykonywać obliczenia tylko w takim przypadku (wykorzystać instrukcję size()).
Sumowanie elementów pod przekątną wykonać na dwa sposoby:
a) Z wykorzystaniem instrukcji warunkowej.
b) Bez instrukcji warunkowej, odpowiednio modyfikując zakresy liczników pętli for.
Porównać liczbę wykonywanych iteracji w obydwu przypadkach.
Lab 4 – macierze cd. Definiowanie własnych funkcji. M. Głowacki, L-10, PK
2 zad. 4.
Napisać funkcję, która porównuje odpowiadające sobie elementy dwóch macierzy o tych samych rozmiarach: 𝐴𝑛 × 𝑚 oraz 𝐵𝑛 × 𝑚. W wyniku funkcja ma zwracać ile elementów 𝐴𝑖,𝑗 jest większych od odpowiadających im elementów 𝐵𝑖,𝑗. Funkcja powinna sprawdzać czy obydwie macierze mają taki sam rozmiar i wykonywać porównania tylko w takim przypadku.