jacobi and gauss solve function working

This commit is contained in:
2020-03-10 19:43:16 +01:00
parent 077a54af18
commit 8bd26b9a9c

18
main.c
View File

@@ -256,16 +256,26 @@ Vector* solve(Method method, Matrix* A, Vector* b, Vector* x, double e) {
Vector* vectors = malloc(sizeof(Vector) * (MAX_ITERATION_STEPS + 1)); Vector* vectors = malloc(sizeof(Vector) * (MAX_ITERATION_STEPS + 1));
initVector(&vectors[0], b->n); initVector(&vectors[0], b->n);
memcpy(vectors[0].data, b->data, b->n * sizeof(double)); memcpy(vectors[0].data, x->data, b->n * sizeof(double));
int vectorCount = 1; int vectorCount = 1;
double temp;
double delta = 0.0; double delta = 0.0;
do { do {
delta= 0.0;
for(int i=0; i<b->n; i++){
temp=0.0;
for(int j=0; j<b->n; j++){
if(j!=i){
temp= temp+A->data[i][j]*vectors[vectorCount-1].data[j];
}
}
vectors[vectorCount].data[i]=1/A->data[i][i]*(b->data[i]-temp);
delta=fmax(fabs(vectors[vectorCount].data[i]-vectors[vectorCount-1].data[i]),delta);
}
// CODE // CODE
printVector(&vectors[vectorCount]);
vectorCount++; vectorCount++;
} while (delta < e && vectorCount < MAX_ITERATION_STEPS); } while (delta < e && vectorCount < MAX_ITERATION_STEPS);