Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void print_lematrix(float **lematrix, int dim) {
- int i, j;
- for (j = 0; j < dim; j++) {
- for (i = 0; i < dim + 1; i++)
- printf("%10.4f", lematrix[j][i]);
- printf("\n");
- }
- printf("\n\n");
- }
- float **allocate_lematrix(int dim) {
- float **A = (float **)malloc(dim * sizeof(float *));
- for (int i = 0; i < dim; ++i) {
- A[i] = (float *)malloc((dim + 1) * sizeof(float));
- }
- return A;
- }
- void gem(float **A, int n, float *x) {
- int i, j, k;
- float c, sum = 0.0;
- print_lematrix(A, n);
- for (i = 0; i < n - 1; i++) {
- for (j = i + 1; j < n; j++) {
- c = A[j][i] / A[i][i];
- for (k = i; k < n + 1; k++) {
- A[j][k] -= c * A[i][k];
- }
- }
- }
- print_lematrix(A, n);
- for (i = n - 1; i >= 0; i--) {
- sum = 0.0;
- for (j = i + 1; j < n; j++) {
- sum += A[i][j] * x[j];
- }
- x[i] = (A[i][n] - sum) / A[i][i];
- }
- }
- int main() {
- int i, n;
- n = 3;
- float **A = allocate_lematrix(n);
- float **B = allocate_lematrix(n);
- float *x = (float *)malloc(n * sizeof(float));
- A[0][0] = 1.0;
- A[0][1] = 1.0;
- A[0][2] = 1.0;
- A[0][3] = 9.0;
- A[1][0] = 2.0;
- A[1][1] = -3.0;
- A[1][2] = 4.0;
- A[1][3] = 13.0;
- A[2][0] = 3.0;
- A[2][1] = 4.0;
- A[2][2] = 5.0;
- A[2][3] = 40.0;
- B[0][0] = 10.0;
- B[0][1] = -7.0;
- B[0][2] = 3.0;
- B[0][3] = 5.0;
- B[1][0] = -6.0;
- B[1][1] = 8.0;
- B[1][2] = 4.0;
- B[1][3] = 7.0;
- B[2][0] = 2.0;
- B[2][1] = 6.0;
- B[2][2] = 9.0;
- B[2][3] = -1.0;
- gem(A, n, x);
- printf("\nReseni: \n");
- for (i = 0; i < n; i++) printf("\nx%d=%f", i, x[i]);
- printf("\n\n\n\n\n\n");
- gem(B, n, x);
- printf("\nReseni: \n");
- for (i = 0; i < n; i++) printf("\nx%d=%f", i, x[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement