Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

10x10 luk matrisin çarpımı

Konu, 'C / C++' kısmında ledan tarafından paylaşıldı.

  1. ledan

    ledan Yeni Üye

    Kayıt:
    30 Kasım 2014
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    Selam,
    bilinen 10x10 luk matrisin tersini alıp bilinen 10x10 luk matris ile çarpmam gerekiyor. Matrisin tersini biraz zorda olsa aldım simdi ise almış oldugum matrisi carpmam lazım bir türlü yapamadım. Amacımız AxB = C matrisi ise Bnin tersi x C = A matrisini bulmak. Lütfen yardımcı olurmusunuz .

    Kod:
    #include <stdio.h>  
    #include <conio.h> 
    
    int main()      
    {
    float a[10][10]={3,1,4,8,6,3,2,1,9,10,1,6,8,9,3,2,1,6,4,7,4,8,11,3,9,6,5,4,3,1,8,9,3,4,1,5,7,9,11,13,6,3,9,1,6,4,3,2,1,1,3,2,6,5,4,8,7,6,5,4,2,1,5,7,3,7,5,6,9,3,1,6,4,9,2,6,6,8,2,1,9,4,3,11,1,5,9,2,10,9,10,7,1,13,1,4,3,1,9,11};
    float e[10][10]={262,251,205,335,134,234,261,193,349,358,217,297,252,326,155,229,236,243,292,309,208,254,370,285,247,279,256,270,261,232,390,331,289,576,179,350,365,339,487,483,135,157,243,165,182,193,176,178,174,150,254,227,265,319,175,286,281,262,310,264,256,232,236,323,148,273,296,250,324,287,199,237,244,286,140,246,242,285,274,253,328,293,247,450,162,331,362,329,510,494,298,310,216,441,136,287,329,314,493,538 };
    
    float b[10][10],c[10][10],f[10][10] = { 0 },i,j,k;
    
          printf ("Matris \n");     
    
        for (int i = 0; i <10; i++) {         
        for (int j = 0; j <10; j++) {         
            printf (" %f ", a[i][j]);    
            }
                   printf ("\n");   
        }
        
        for (int i=0; i<10; i++) {          
        for (int j=0; j<10; j++) {          
                      if(i==j)
                      b[i][j]=1;
                        else
                            b[i][j]=0;
                                        }
                               }
                            
     float d,g ;
     for (int i=0; i<10; i++) {  
      d=a[i][i];  
      for (int j=0; j<10; j++) {  
     
     a[i][j]=a[i][j]/d;
      b[i][j]=b[i][j]/d;     }
     for (int x=0; x<10; x++) {  
     if(x!=i) {
     g=a[x][i];          
     for (int j=0; j<10; j++) {          
     a[x][j]=a[x][j]-(a[i][j]*g);         
     b[x][j]=b[x][j]-(b[i][j]*g);        
              
     }
     }
     }
     }
        printf("\n Matrisin Tersi \n");         
    for (int i=0; i<10; i++) {           
    for (int j=0; j<10; j++)           
       printf(" %f " ,b[i][j] ); 
       
       
      printf("\n"); 
      
        }
       printf("\n 2.Matris \n");
      for (int i=0; i<10; i++) {           
    for (int j=0; j<10; j++)           
       printf(" %f " ,e[i][j] ); 
      
               
        }
        // Burdan itibaren çarpma işlemini yapmam lazım yapamadım
        for (i = 0; i < 10; i++) {            
        for (j = 0; j < 10; j++) {            
        for (k = 0; k < 10; k++)              
    
        f[i][j] += b[i][k] * e[i][k];            
       }  
            printf("\n");  
        }  
    
        printf ("Sonuc:--------\n");            
    
        for (i = 0; i < 10; i++) {      
        for (k = 0; k < 10; k++)        
    
            printf ("\t%f",f[i][k]);        
            printf ("\n");  
        
        
           
       
        getch();                      
        return 0;                     
    }
    
    
     
  2. ledan

    ledan Yeni Üye

    Kayıt:
    30 Kasım 2014
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    arkadaşlar konu hakkında yardımcı olabilecek biri yok mu acaba

    --- Ekleme ---

    [A]*[B ]=[C ] ise =[A[SUP]-1[/SUP]]*[C] olduğundan A matrisinin tersini alıp C matrisi ile çarpıyoruz.

    kimse yardımcı olmadı ben çözümünü buldum o yüzden burdan paylaşayımda benden sonra birileri faydalansın.

    Bu kod ile yazmış oldugumuz matrisin tersini alıp diğer matris ile çarpıyoruz.

    Kod:
    #include <stdio.h>  
    #include <conio.h> 
    
    int main()      
    {
    float a[10][10]={3,1,4,8,6,3,2,1,9,10,1,6,8,9,3,2,1,6,4,7,4,8,11,3,9,6,5,4,3,1,8,9,3,4,1,5,7,9,11,13,6,3,9,1,6,4,3,2,1,1,3,2,6,5,4,8,7,6,5,4,2,1,5,7,3,7,5,6,9,3,1,6,4,9,2,6,6,8,2,1,9,4,3,11,1,5,9,2,10,9,10,7,1,13,1,4,3,1,9,11};
    float e[10][10]={262,251,205,335,134,234,261,193,349,358,217,297,252,326,155,229,236,243,292,309,208,254,370,285,247,279,256,270,261,232,390,331,289,576,179,350,365,339,487,483,135,157,243,165,182,193,176,178,174,150,254,227,265,319,175,286,281,262,310,264,256,232,236,323,148,273,296,250,324,287,199,237,244,286,140,246,242,285,274,253,328,293,247,450,162,331,362,329,510,494,298,310,216,441,136,287,329,314,493,538 };
    
    float b[10][10],c[10][10],f[10][10] = { 0 },i,j,k;
    
          printf ("Matris \n");     
    
        for (int i = 0; i <10; i++) {         
        for (int j = 0; j <10; j++) {         
            printf (" %f ", a[i][j]);    
            }
                   printf ("\n");   
        }
        
        for (int i=0; i<10; i++) {          
        for (int j=0; j<10; j++) {          
                      if(i==j)
                      b[i][j]=1;
                        else
                            b[i][j]=0;
                                        }
                               }
                            
     float d,g ;
     for (int i=0; i<10; i++) {  
      d=a[i][i];  
      for (int j=0; j<10; j++) {  
     
     a[i][j]=a[i][j]/d;
      b[i][j]=b[i][j]/d;     }
     for (int x=0; x<10; x++) {  
     if(x!=i) {
     g=a[x][i];          
     for (int j=0; j<10; j++) {          
     a[x][j]=a[x][j]-(a[i][j]*g);         
     b[x][j]=b[x][j]-(b[i][j]*g);        
              
     }
     }
     }
     }
        printf("\n Matrisin Tersi \n");         
    for (int i=0; i<10; i++) {           
    for (int j=0; j<10; j++)           
       printf(" %f " ,b[i][j] ); 
       
       
      printf("\n"); 
      
        }
       printf("\n 2.Matris \n");
      for (int i=0; i<10; i++) {           
    for (int j=0; j<10; j++)           
       printf(" %f " ,e[i][j] ); 
      
               
        }
    
    
        for (int i = 0; i < 10; i++) {          
        for (int j = 0; j < 10; j++) {          
        for (int k = 0; k < 10; k++)            
    
            f[i][j] += b[i][k] * e[k][j];          
        }
            printf("\n");
        }
    
        printf ("Sonuc: \n");          
    
        for (int i = 0; i < 10; i++) {    
        for (int k = 0; k < 10; k++)      
            
            printf ("%f ",f[i][k]);      
            printf ("\n");                
        }
    
           
       
        getch();                      
        return 0;                     
    }