[C] funkcja potęgująca macierze

0

oto kod:

int potegowanie(float **macierz1, int lw1,n)
{
    float **macierz2;
    float **macierz_temp;
    int i,j,k,x;
    float suma;
    
    macierz2=(float**)malloc(sizeof(float*)*lw1);
    for(i=0;i<lw1;i++)
        macierz2[i]=(float*)malloc(sizeof(float)*lw1);
        
    macierz_temp=(float**)malloc(sizeof(float*)*lw1);
    for(i=0;i<lw1;i++)
        macierz_temp[i]=(float*)malloc(sizeof(float)*lw1);
        
    for(i=0; i<lw1; i++)
    {
             for(j=0; j<lw1; j++)
             macierz2[i][j]=macierz1[i][j];
    }
    
    for (x=0; x<n; x++)
    {
        for(i=0; i<lw1; i++)
        {        
                 for(j=0; j<lw1; j++)
                 {
                          suma=0;
                          for(k=0; k<lw1; k++)
                          {
                                   suma+=macierz1[i][k]*macierz1[k][j];
                                   macierz_temp[i][j]=suma;
                          }
                          
                 }
        }
	    for(i=0; i<lw1; i++)
        {
                 for(j=0; j<lw1; j++)
                 macierz2[i][j]=macierz_temp[i][j];
        }
        
    }
    
 

  
     for(i=0; i<lw1; i++){
             printf("\n");
             for(j=0; j<lw1; j++)
             printf("%.2f ", macierz2[i][j]);
                        }
}               

gdzie tu jest błąd?

0

Porada na przyszłość: opisz błąd, może pomóc innym go znaleźć. I KOMENTUJ KOD!

Z tego, co widzę, to Twój algorytm polega na (n+1)-krotnym podnoszeniu macierzy do kwadratu:)

A tak serio - błędy masz dwa, pierwszy jest tu:

for (x=0; x<n; x++)

i polega na tym, że powinieneś indeksować od jedynki (inaczej podnosisz macierz do n+1 potęgi)

A drugi tutaj:

suma+=macierz1[i][k]*macierz1[k][j];

, powinno być suma+=macierz2[i][k]*macierz1[k][j];


To, co Ty robisz, to jak już wspomniałem, podnoszenie macierzy macierz1 do kwadratu, zapisywanie jej w macierz2 i tak n+1 razy.
0

ok, zapamiętam porady na przyszłość ;-)

wielkie dzięki [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1