00001
00002
00003
00004
00005
00006
00007 #include <stdlib.h>
00008 #include <string.h>
00009
00010 #include "nl.h"
00011
00012 int main()
00013 {
00014 double A[] = {1, 1, 1, 1, 1, 1, 1, 1};
00015 size_t I[] = {0, 1, 2, 3, 1, 2, 3, 4};
00016 size_t J[] = {1, 2, 3, 4, 0, 1, 2, 3};
00017 double D[] = {3, 3, 3, 3, 3};
00018 size_t *IA, *JA;
00019 double *AN;
00020 double b[] = {4, 5, 5, 5, 4};
00021 double x[5];
00022 int it;
00023
00024 sp_create(5, 8, &IA, &JA, &AN);
00025 sp_convert(8, A, I, J, 5, IA, JA, AN);
00026
00027 printf("Метод Гаусса-Зейделя\n");
00028 printf("\nМатрица A (без диагонали):\n");
00029 sp_print_list(IA, JA, AN, 5, 5, 0, 0);
00030 printf("\nДиагональ матрицы A:\n");
00031 nl_dvector_print(D, 5, 0);
00032
00033 printf("\nВектор b:\n");
00034 nl_dvector_print(b, 5, 0);
00035
00036 it = sp_gauss_seidel(IA, JA, AN, D, b, 5, 1, 1e-3, 20, x);
00037
00038 printf("\nРешение системы Ax = b:\n");
00039 nl_dvector_print(x, 5, 0);
00040
00041 printf("\nЧисло итераций: %i \n", it);
00042
00043 sp_free(IA, JA, AN);
00044
00045 return 0;
00046 }