/* A-2; version 1.0 */ /* (c) copyright Ian Hickson 2000, distributed under the GNU GPL */ #include "dynamic-2d-arrays.h" #include "gauss-elimination.h" #define Q12 3 #define Q23 1 #define Q24 1 #define Q34 1.5 #define Q41 1 #define Qp1 2 #define Qp2 1 /*#define Qp3 0.5*/ #define Qp4 1.5 #define Cp1 0.02 #define Cp3 0.10 main() { array2d* array; array2d* answers; geNumber value, Qp3; int x, y; /* allocate memory */ array = geAllocArray(4); /* init array */ for (x = 0; x < 5; x++) { for (y = 0; y < 4; y++) { geSet(array, x, y, 0); } } geSet(array, 0, 0, Q12); geSet(array, 3, 0, -Q41); geSet(array, 4, 0, Qp1*Cp1); geSet(array, 0, 1, Q12); geSet(array, 1, 1, -(Q23+Q24+Qp2)); geSet(array, 1, 2, -Q23); geSet(array, 2, 2, Q34); /*geSet(array, 4, 2, Qp3*Cp3);*/ geSet(array, 1, 3, Q24); geSet(array, 2, 3, Q34); geSet(array, 3, 3, -(Qp4+Q41)); /* perform loop */ printf(" Qp3 | C4 \n"); printf("------+----------\n"); for (Qp3 = 0.5; Qp3 < 2.1; Qp3 += 0.1) { geSet(array, 4, 2, Qp3*Cp3); /* do gauss elimination */ answers = geGaussElimination(array); /* dump output */ value = *(geNumber*)getArray2D(answers, 0, 3); printf(" %4.2f | %6.5f", Qp3, value); /* deduce critical value */ if (value > 0.12) { printf(" ** DANGER! ** "); } printf("\n"); /* free memory for answers */ freeArray2D(answers); } /* free all memory */ freeArray2D(array); }