kilon
Artikelen: 0
Berichten: 11
Lid geworden op: do 14 jan 2010, 18:10

C++ matrix 4x4 determinanten

Als je niet zoveel van matrices afweet kan het misschien lastig zijn om me te helpen, maar misschien lukt het wel of zijn er andere mensen die me kunnen helpen.

Ik moet van een 4x4 matrix de minor bepalen. Dit is dezelfde matrix waarbij rij i en kolom j van het element a(i,j) wordt verwijderd.

Je houdt dus een matrix met de dimensies 3x3 over.

Aangenomen wordt dat de input waarden de matrix A en de waarden i en j zijn.

Het prototype van de functie is als volgt:

Code: Selecteer alles

double minor(double a[][4], int i, int j);
Ik weet nu hoe je matrices in moet lezen en moet printen.

Dus:

Code: Selecteer alles

#include <iostream>

using namespace std;

//Definieren van de maximale grootte van de matrix

#define MAX_SIZE 4

//Definieren van het type voor de matrices

typedef double matrix[MAX_SIZE][MAX_SIZE];

//Functie prototype

void lees_matrix(matrix a, int k, int l);

void print_matrix(matrix c, int k,int j);

//double minor(matrix a, int i, int j);

int main()

{

//Declaraties

matrix a;

int rij, kolom; 

  

cout <<"Voer het aantal rijen en kolommen voor de matrix in" << endl;

cin >> rij >> kolom;

if(rij>MAX_SIZE || kolom>MAX_SIZE)

{

cout << "De maximale grootte van de rijen of kolommen wordt overschreden." << endl;

exit(1);

}

lees_matrix(a, rij, kolom);

print_matrix(a, rij, kolom);

   // minor(a, rij, kolom);

return 0;

}

/*------------------------------------------------------------*/

//Functie voor het lezen van een matrix

void lees_matrix(matrix a, int k, int l)

{

int rij, kolom;

for (rij=0; rij<k; rij++)

{

cout << "Voer de data in voor rij "<< rij+1 << endl;

for(kolom=0; kolom<l; kolom++)

{

cin >> a[rij][kolom];

}

}

cout << endl;

return;

}

/*------------------------------------------------------------*/

//Functie voor het printen van een matrix

void print_matrix(matrix a, int k,int j)

{

int rij, kolom;

for(rij=0; rij<k; rij++)

{

for(kolom=0; kolom<j; kolom++)

{

cout << a[rij][kolom] << " ";

}

cout << endl;

}

return;  

}

/*------------------------------------------------------------*/

//Functie bepalen van een minor

double minor(matrix a, int i, int j)

{

int rij, kolom;

}
Waarbij ik typedef heb gebruikt omdat ik dit prettiger vind werken.

Dit werkt dus, maar er staat dan ook nog niks in de functie voor de minor.

Je moet iets doen met minimaal 2 for loops en met -1 of iets..

Het is niet nodig om classes of pointers te gebruiken.

Daarna moet er nog een functie voor de cofactor zijn:

Code: Selecteer alles

double cofactor(double a[][4], int i, int j);
Waarbij cofactor = minor a(i,j) * (-1)^(i+j)

en uiteindelijk de determinant

Code: Selecteer alles

double det_c(double a[][4])
Die als volgt te berekenen is:

a) Selecteer een kolom

b) vermenigvuldig elk element van de ko,lom met hn cofactor

c) Tel alle producten van b) bij elkaar op.
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C++ matrix 4x4 determinanten

Wat is je uiteindelijk vraag of lees ik daar volledig over?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Terug naar “Informatica en programmeren”