Dokumentacja pliku detMac.c

#include "MyLib.h"

Idź do kodu źródłowego tego pliku.

Funkcje

void WyswietlMacierzInd (int n, int m, double A[][matrix_M], int P[])
void WyswietlWiersz (int m, double w[])
double ObliczWyznacznik (int *row, int P[], int n, int m, double A[][matrix_M])
int main ()

Zmienne

const char det_naF [] = "A.dat"


Dokumentacja funkcji

int main (  ) 

Definicja w linii 106 pliku detMac.c.

Odwołuje się do det_naF, matrix_M, matrix_N, ObliczWyznacznik(), OdczytMacierzy(), WyswietlMacierz() i WyswietlMacierzInd().

00107 {
00108    double det,A[matrix_N][matrix_M];
00109    int n,m,P[matrix_N],row;
00110 
00111    OdczytMacierzy(det_naF, &n, &m, A);
00112    printf("wczytana macierz: \"%s\"\n", det_naF);
00113    WyswietlMacierz(n, m, A);
00114    det = ObliczWyznacznik(&row, P, n, m, A);
00115    if( row!=n )
00116    {
00117       printf("Macierz \"%s\" jest osobliwa\n", det_naF);
00118       exit(-1);
00119    }
00120    puts("-----------------------------");
00121    printf("wyznacznik: %16le\n", det);
00122    puts("-----------------------------");
00123    puts("Wynikowa macierz gornotrojkatna:");
00124    WyswietlMacierzInd(n, m, A, P);
00125    puts("\nBez uwzglednienia przestawien wierszy:");
00126    WyswietlMacierz(n, m, A);
00127    puts("\nPermutacja wierszy:");
00128    for(row=0; row<n; row=row+1)
00129    {
00130       printf("%2i ",row+1);
00131    }
00132    puts("");
00133    for(row=0; row<n; row=row+1)
00134    {
00135       printf("%2i ",P[row]+1);
00136    }
00137    puts("");
00138    return 0;
00139 }

double ObliczWyznacznik ( int *  row,
int  P[],
int  n,
int  m,
double  A[][matrix_M] 
)

obliczenie wyznacznika metoda eleminacji Gaussa (Gaussian elimination),

Parametry:
P opisuje zamiane wierszy,
row okresla wiersz do ktorego metoda "doszla".

Definicja w linii 52 pliku detMac.c.

Odwołuje się do matrix_N.

Odwołania w main().

00053 {
00054    double d[matrix_M],det;
00055    int i,j;
00056 
00057    for(i=0; i<matrix_N; i=i+1)
00058    {
00059       P[i] = i;
00060    }
00061    det = 1.0;
00062    for(*row=0; *row<n; *row=*row+1)
00063    {
00064       if( fabs(A[P[*row]][*row])<=1.0e-100 )
00065       {
00066          for(i=*row+1; i<n; i=i+1 )
00067          {
00068             if( 1.0e-100<fabs( A[P[i]][*row] ) )
00069             {
00070                j       = P[*row];
00071                P[*row] = P[i];
00072                P[i]    = j;
00073                det     = -det;
00074                break;
00075             }
00076          }
00077          if( i==n )
00078          {
00079             for(i=0; i<*row-1; i=i+1)
00080             {
00081                det = A[P[i]][i]*det;
00082             }
00083             return det;
00084          }
00085       }
00086       for(i=*row+1; i<m; i=i+1)
00087       {
00088          d[i] = A[P[*row]][i]/A[P[*row]][*row];
00089       }
00090       for(j=*row+1; j<n; j=j+1)
00091       {
00092          for(i=*row+1; i<m; i=i+1)
00093          {
00094             A[P[j]][i] = A[P[j]][i]-d[i]*A[P[j]][*row];
00095          }
00096          A[P[j]][*row] = 0.0;
00097       }
00098    }
00099    for(i=0; i<n; i=i+1)
00100    {
00101       det = A[P[i]][i]*det;
00102    }
00103    return det;
00104 }

void WyswietlMacierzInd ( int  n,
int  m,
double  A[][matrix_M],
int  P[] 
)

wyswietlenie macierzy z uwzglednieniem permutacji wierszy

Parametry:
P permutacja wierszy

Definicja w linii 22 pliku detMac.c.

Odwołania w main().

00023 {
00024     int i,j;
00025 
00026     for(i=0; i<n; i=i+1)
00027     {
00028         for(j=0; j<m; j=j+1)
00029         {
00030             printf("%6.2lf ",A[P[i]][j]);
00031         }
00032         printf("\n");
00033     }
00034 }

void WyswietlWiersz ( int  m,
double  w[] 
)

Definicja w linii 36 pliku detMac.c.

00037 {
00038     int j;
00039 
00040     for(j=0; j<m; j=j+1)
00041     {
00042         printf("%6.2lf ",w[j]);
00043     }
00044     printf("\n");
00045 }


Dokumentacja zmiennych

const char det_naF[] = "A.dat"

nazwa pliku z macierza

Definicja w linii 16 pliku detMac.c.

Odwołania w main().


Wygenerowano Fri Dec 18 10:26:36 2009 dla WIP w IM UWr. programem  doxygen 1.5.8