Oefening 7: word wakker

Doel

Multidimensionele arrays verkennen.

Opdracht

Maak methodes om twee matrices met elkaar te vermenigvuldigen.

Matrix

  1. Een array kan arrays als elementen bevatten. Bvb. een array van arrays van integers stelt bvb. een wiskundige matrix van gehele getallen voor. Een voorbeeld:

    int[][] A = { {1,2}, {3,4}, {5,6} };
    int vier = A[1][1]; //haal de waarde op positie [1][1] van matrix A
    
    1. int[][] is het type van de variabele A. A is een array van arrays van ints.
    2. De matrix A heeft 3 rijen en 2 kolommen. A wordt geinitialiseerd met de opgegeven waarden.

      Voorbeeld van een 3x2 matrix A

      Figuur 1: A is een 3x2 matrix. Zowel de rijen, als de elementen kunnen benaderd worden door gebruik te maken van de index notatie van een array, i.e. [].

    3. Een volgend voorbeeld:

      double[][] B = new double[2][4];
      

      De matrix B bevat doubles en bestaat uit 2 rijen en 4 kolommen. De elementen van de arrays zijn niet geïnitialiseerd.

    Vraag 1

    Gegeven: int[][] A = { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} };
    
    Wat zijn de correcte indices van het element 12 in de array A?
    
  2. Maak een methode toString die een matrix van doubles in een String weergeeft. Indien deze String in het terminal venster wordt weergegeven dat staan de elementen rij per rij gerangschikt.

Matrix vermenigvuldiging

  1. Maak een methode mogenVermenigvuldigen die aangeeft indien de vermenigvuldiging van twee matrices mogelijk is. Een matrix vermenigvuldiging is enkel mogelijk indien het aantal kolommen van de matrix links van de operator gelijk is aan de het aantal rijen van de matrix rechts van de operator. bvb. een 3x2 matrix mag vermenigvuldigen met een 2x4 matrix, maar een 2x4 matrix niet met een 3x2 matrix.

  2. Maak een methode vermenigvuldig die twee matrices vermenigvuldigt. Voor alle elementen van de matrices, neem de som van de vermenigvuldiging van elementen rij per rij wat betreft de matrix aan links van de operator en kolom per kolom wat betreft de matrix rechts van de operator. bvb.

    Voorbeeld van matrix vermenigvuldiging

Vraag 2

Gegeven:
  double[][] A = {{0.5,0.25},{5,10},{0.125, 20}};
  double[][] B = {{0.3,0.9,1.2},{3,6,9}};
  Wat is de som van alle elementen van matrix X = A*B?

Matrix chaining

  1. Matrix vermenigvuldiging is associatief. D.w.z. dat de oplossing van de vermenigvuldiging altijd hetzelfde is, ongeacht de volgorde waarin de matrices met elkaar vermenigvuldigd worden. bvb. (AB)C = A(BC).
  2. Echter het aantal bewerkingen is niet noodzakelijk hetzelfde: bvb. A is 10x30 B is 30x5 en C is 5x60.
    1. (AB)C vereist (10x30x5) + (10x5x60) = 4500 bewerkingen
    2. A(BC) vereist (30x5x60) + (10x30x60) = 27000 bewerkingen
  3. Maak een methode aantalBewerkingen die het aantal bewerkingen voor de vermenigvuldiging van 2 matrices berekend.

    Vraag 3

    Wat is het aantal bewerkingen voor een vermenigvuldiging van een matrix met dimensies 50x60 maal matrix met dimensies 60x20?
    
  4. Maak een methode minimaalAantalBewerkingen die voor de vermenigvuldiging van 3 matrices het minimaal aantal bewerkingen berekend. Geef de dimensies op in een array van gehele getallen. bvb. [10,30,5,60] voor het bovenstaand voorbeeld van matrices A(10x30), B(30x5), C(5x60).

Vraag 4

 Wat is het minimaal aantal bewerkingen voor AxBxC met dimensies A 10x60, dimensies B 60x5 en dimensies C 5x70?

Extra

  1. Bereken de determinant van een matrix.
  2. Bereken de inverse van een matrix.

results matching ""

    No results matching ""