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