00001
00002
00003
00004
00005 #include "nl.h"
00006
00007 int main()
00008 {
00009 size_t *IA, *JA, m, n, N, nz;
00010 double *AN, *AD, **A;
00011
00012 m = n = 3;
00013 N = m * n;
00014
00015 printf("5-точечная аппроксимация уравнения Пуассона\n");
00016 printf("Решетка 3x3\n");
00017 printf("\nРазреженное полное представление:\n");
00018
00019 gall_laplace_size(m, n, &N, &nz);
00020 sp_create(N, nz, &IA, &JA, &AN);
00021 gall_laplace(m, n, IA, JA, AN);
00022 sp_print(IA, JA, AN, N, N, NULL);
00023
00024 A = nl_dmatrix_create(N, N);
00025 sp_full(IA, JA, AN, N, N, A);
00026
00027 printf("\nПлотное представление:\n");
00028 nl_dmatrix_print(A, N, N, NULL);
00029
00030 sp_free(IA, JA, AN);
00031
00032 printf("\nРазреженное неполное представление\n");
00033 printf("(верхнетреугольная часть):\n");
00034
00035 gall_laplace_sym_size(m, n, &N, &nz);
00036 sp_create_sym(N, nz, &IA, &JA, &AN, &AD);
00037 gall_laplace_sym(m, n, IA, JA, AN, AD);
00038 sp_print(IA, JA, AN, N, N, NULL);
00039
00040 A = nl_dmatrix_create(N, N);
00041 sp_full(IA, JA, AN, N, N, A);
00042
00043 printf("\nПлотное представление:\n");
00044 nl_dmatrix_print(A, N, N, NULL);
00045
00046 printf("\nДиагональные элементы:\n");
00047 nl_dvector_print(AD, N, NULL);
00048
00049 sp_free_sym(IA, JA, AN, AD);
00050 nl_dmatrix_free(A, N);
00051
00052 return 0;
00053 }