Hallo,
ich habe ein Problem mit meinem Programm und weiß leider nicht so recht wo der Fehler steckt. Es geht um den Teil „Bau der Matrix (LHS) für das zu lösende Gleichungssystem“. In dieser Funktion soll eine große Matrix erstellt werden, im Bsp. 13x13. Wenn ich das ganze in Dev C++ als .cpp speicher und kompiliere dann gibt er mir die gewünschte Matrix aus, ABER als .c gespeichert leider nicht mehr. Vielleicht kann ja mal jemand drüber sehen und findet das Problem.
Die LHS hat die Form
(0 At E)
(A 0 0)
(E 0 E)
E = Einheitsmatrix, At ist A transponiert, 0 = Nullmatrix.
Ich bin jeder Hilfe dankbar.
Bis dann
Constanze
#include
#include
#include
#include
#include
#include
#define TOL 1.0e-12
#define EPS 1.0e-5
#define ROWS 3
#define COLS 5
#define e(row,col,d) ((col)*d)+(row)
/*---------------------------------------------------------------*/
/* Beispiel Nr.2 */
void initExample_2(double* A, double* b, double* c, double* e,double* x,double* s, double* y)
{
//double Aref[COLS][ROWS] = {{1, 2, 0}, {-1, -1, 1}, {1, 1, -1}, {0, 1, 1}, {1, -2, -4}};
//show(Aref,ROWS,COLS);
//A=&Aref[0];
//show(A,ROWS,COLS);
A[e(0,0,ROWS)] = 1.0;
A[e(0,1,ROWS)] = 2.0;
A[e(0,2,ROWS)] = 1.0;
A[e(0,3,ROWS)] = 0.0;
A[e(0,4,ROWS)] = 0.0;
A[e(1,0,ROWS)] = 1.0;
A[e(1,1,ROWS)] = 1.0;
A[e(1,2,ROWS)] = 0.0;
A[e(1,3,ROWS)] = 1.0;
A[e(1,4,ROWS)] = 0.0;
A[e(2,0,ROWS)] = 0.0;
A[e(2,1,ROWS)] = 3.0;
A[e(2,2,ROWS)] = 0.0;
A[e(2,3,ROWS)] = 0.0;
A[e(2,4,ROWS)] = 1.0;
b[0]=170;
b[1]=150;
b[2]=180;
c[0]=-300;
c[1]=-500;
c[2]=0;
c[3]=0;
c[4]=0;
e[0]=1;
e[1]=1;
e[2]=1;
e[3]=1;
e[4]=1;
x[0]=1;
x[1]=1;
x[2]=1;
x[3]=1;
x[4]=1;
s[0]=1;
s[1]=1;
s[2]=1;
s[3]=1;
s[4]=1;
y[0]=1;
y[1]=1;
y[2]=1;
return;
}
/*------------------------------------------------------------------*/
/*------------------------------------------------------------------*/
/* zur übersichtlicheren Ausgabe */
void show(double* A, int rows, int cols)
{
int row,col;
printf("\n---------------------------------------------------------\n");
for(row=0;row