Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32

    [C] determinante matrice

    codice:
    #include<stdio.h> 
    #include<stdlib.h>  
    int main() {  
    int **matrix;  
    int i,j;  
    int dim;  
    printf ("Dimensione della matrice: "); 
    scanf ("%d",&dim);  
    matrix = (int**) malloc(dim*dim*sizeof(int)); 
    for (i=0; i<dim; i++)   
    matrix[i] = (int*) malloc(dim*sizeof(int));    
     for (i=0; i<dim; i++) 
    for (j=0; j<dim; j++) {  
    printf ("Elemento [%d][%d]: ",i+1,j+1); 
    scanf ("%d",&matrix[i][j]);  }    
    printf("La matrice e':\n");   
     for(i = 0; i <dim; i++) {    
     for(j = 0; j <dim; j++)      
     printf("%d ", matrix[i][j]);     
    printf("\n");   } 
    free(matrix);   
    return 0; }

    Ciao ho scritto questo codice per la creazione di una qualsiasi matrice dinamica. Ora vorrei aggiungere una funzione che mi permettesse di calcolare il determinante della matrice immessa. Lasciando perdere il caso di una matrice da un solo elemento e di una matrice 2x2. Potreste darmi qualche suggerimento per implementare un codice che mi permetta di calcolare il determinante di matrici con dimensione >=3?? So ovviamente calcolarlo a mano e so la regola per farlo ma non saprei come implementare il codice
    Grazie

  2. #2
    Questo esempio può esserti utile:

    codice:
      
    
    #include <stdio.h>
    
    #define X 2
    #define Y 2
    
    long DET(long **matr) {
    int i, j; long matrice[2][2];
    
    for (i = 0; i < X; i++) {
        for (j = 0; j < Y; j++) matrice[ i ][ j ] = ((long *)matr)[i * Y + j];
    }
    return (long)(matrice[0][0] * matrice[1][1] - matrice[0][1] * matrice[1][0]);
    }
    
    int main () {
    long **array; int i;
    
    array = (long **)malloc(X * sizeof(long));
    for (i = 0; i < X; i++) matr[ i ] = (long *)malloc(Y * sizeof(long));
    
    printf ("%f", DET(array));
    
    return 0;
    }

    Ovviamente - dal momento che "a mano" riesci a farlo - potrai adattare questo esempio alle tue necessità. Nel caso di una matrice 5x5, come faresti? Qual'è l'algoritmo per calcolarne il determinante? Se sai rispondere a questa domanda, sarai in grado anche di scrivere il codice relativo.


    Ciao
    "Memento audere semper"

    IBM Europe - Italy Group

  3. #3
    Ciao,

    se ti è noto potresti anche utilizzare il metodo di eliminazione di Gauss
    in modo da rendere la matrice triangolare;

    ... dovresti trovare molto in rete su questo metodo.

  4. #4
    O più banalmente lo sviluppo di Laplace...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.