MatrixTest.c
// File MatrixTest.c #include <stdio.h> #include "Matrix.h" FILE *fout = stdout; FILE *fin = stdin; void TestGaussalg() { double a[NMAX][NMAX]; double x[NMAX]; int i; int n; // Anzahl der Gleichungen int m; // m = n + 1 .... erweiterte Matrix int result; // um die Daten aus einer Datei zu lesen, sind die // folgenden Zeilen zu aktivieren if ((fin = fopen("gleichung.txt", "r")) == NULL) { printf("File nicht vorhanden\n"); fin = stdin; } fout = fopen("resultat.txt", "w"); MatIn(fin, a, &n, &m); // Gleichungssystem einlesen MatOut(fout, a, n, m); // Kontrollausgabe result = Gaussalg (a, n, x); if (result) { fprintf(fout, "\nLoesung des Gleichungssystems %2d Unbekannten\n", n); for (i = 0; i < n; i++) fprintf(fout, "x[%2d] = %+12.6g\n", i+1, x[i]); } else { fprintf(fout, "Gleichungssystem nicht loesbar\n"); } if (fout != stdout) { if (result) { fprintf(stdout, "\nLoesung des Gleichungssystems %2d Unbekannten\n\n", n); for (i = 0; i < n; i++) fprintf(stdout, "x[%2d] = %+12.6g\n", i+1, x[i]); } else { fprintf(stdout, "Gleichungssystem nicht loesbar\n"); } } } void TestInverse() { double a[NMAX][NMAX] = {0.0}; double ainv[NMAX][NMAX] = {0.0}; double aKopie[NMAX][NMAX] = {0.0}; int n; // Anzahl der Gleichungen int result; // um die Daten aus einer Datei zu lesen, sind die // folgenden Zeilen zu aktivieren if ((fin = fopen("bsp3.txt", "r")) == NULL) { printf("File nicht vorhanden\n"); fin = stdin; } fout = fopen("resultat.txt", "w"); MatIn(fin, a, &n, &n); // Matrix einlesen Copy(a, aKopie, n); // kopieren der originalen Matrix auf aKopie fprintf(fout, "Matrix a\n"); MatOut(fout, a, n, n); // Kontrollausgabe // Inverse berechnen, dabei wird auch aKopie verändert result = Inverse(aKopie, ainv, n); if (result) { fprintf(stdout, "\nInverse Matrix:\n"); MatOut(stdout, ainv, n, n); fprintf(fout, "\nInverse Matrix:\n"); MatOut(fout , ainv, n, n); // Kontrolle: a * ainv muss eine Einheitsmatrix ergeben Produkt(a, ainv, aKopie, n); fprintf(stdout, "\nProbe: a x ainv = E\n"); MatOut(stdout, aKopie, n, n); fprintf(fout, "\nProbe: a x ainv = E\n"); MatOut(fout, aKopie, n, n); } else { fprintf(fout, "Matrix ist singulär\n"); fprintf(stdout, "Matrix ist singulär\n"); } } int main(void) { //TestGaussalg(); //fprintf(stdout, "\nWeiter mit Eingabetaste!"); //fgetc(stdin); TestInverse(); fprintf(stdout, "\nEnde mit Eingabetaste!"); fgetc(stdin); return 0; } Zurück