Hallo miteinander,
ich habe folgendes Problem:
Ich bin noch relativer C++ Anfänger, habe es aber geschafft, ein Programm zu schreiben, mit Hilfe dessen ein lineares Gleichungssystem Ax=b gelöst werden kann.
Dabei wird A und b im Source Code fest angegeben.
Was ich jetzt die ganze Zeit versuche ist aus einer vorgegebenen CSV Datei die Matrix A und den Vektor b auszulesen, die Berechnung durchzuführen und den Lösungsvektor x in eine neue CSV Datei zu schreiben. Dies sollte am besten dynamisch passieren, dass heißt der Umfang der Matrizen und des Vektors sollte egal sein.
Bis jetzt hatte ich da nur die Ausgabe am Bildschirm.
Das Programm sah bis jetzt so aus:
#include „gauss-seidel.h“
#include „Gauss.h“
#include „gauss-seidel.c“
#include
#include
#include
double matrix[MATRIX_DIM][MATRIX_DIM] = { { 4.0, 9.0, 23.0 },
{ 1.0, 237.0, 0.0 },
{ 2.0, 0.0, 23.0 } };
double vector[MATRIX_DIM] = { 4.0, 5.0, 0.0 };
static void print_equation(double a[3][3], double b[3]);
static void print_vectors(double result[3]);
int main(void)
{
unsigned int iterations;
double result[3];
(void) printf(„Loesung eines linearen Gleichungssystems mit Hilfe des Gauss-Seidel-Verfahrens \n\n“);
iterations = lineq_gauss_seidel(matrix,
vector, result, 4);
print_equation(matrix, vector);
print_vectors(result);
(void) printf („Anzahl der benoetigten Iterationen: %d“, iterations);
getch();
return EXIT_SUCCESS;
}
static void print_equation(double a[3][3], double b[3])
{
(void)printf("[%.2f %.2f %.2f] [%.2f]\n", a[0][0], a[0][1],
a[0][2], b[0]);
(void)printf("[%.2f %.2f %.2f] x = [%.2f]\n", a[1][0], a[1][1],
a[1][2], b[1]);
(void)printf("[%.2f %.2f %.2f] [%.2f]\n\n", a[2][0], a[2][1],
a[2][2], b[2]);
}
static void print_vectors(double result[3])
{
(void)printf(" [%.6f]\n", result[0]);
(void)printf(„Loesungsvektor x: [%.6f]\n“, result[1]);
(void)printf(" [%.6f]\n\n", result[2]);
Wie Ihr seht, werden die Matrix und der Vektor im Source Code angegeben, diese statische Vorgehensweise will ich verhindern.
Ich hab so einiges zum Thema durchgelesen, z.B. zu fscanf(), verschiedene Streams usw…, mittlerweile habe ich aber die Übersicht total verloren.
Ich wäre euch sehr dankbar, wenn ihr mir irgendwie heöfen könntet, bzw. Hinweise geben könntet, wie dies zu bewerkstelligen wäre.
Vielen Dank,
Tomi