00001
00002
00003
00004
00005
00006 #include "nl.h"
00007
00008 int main()
00009 {
00010 size_t n = 5;
00011 size_t rc;
00012 double **A, *d, *e;
00013
00014 A = nl_dmatrix_create(n, n);
00015 d = nl_dvector_create(n);
00016 e = nl_dvector_create(n);
00017
00018 A[0][0] = 11;
00019 A[1][0] = 10; A[1][1] = 14;
00020 A[2][0] = 18; A[2][1] = 41; A[2][2] = 17;
00021 A[3][0] = 11; A[3][1] = 12; A[3][2] = 23; A[3][3] = 11;
00022 A[4][0] = 21; A[4][1] = 13; A[4][2] = 23; A[4][3] = 17; A[4][4] = 17;
00023
00024 printf("\nМатрица A (нижняя треугольная часть):\n");
00025 nl_dmatrix_print(A, n, n, NULL);
00026
00027 eig_tridiag_reduction(A, n, 1, d, e);
00028
00029 printf("\nТрехдиагональный вид\n");
00030 printf("Диагональ:\n");
00031 nl_dvector_print(d, n, NULL);
00032
00033 printf("\nПоддиагональ = наддиагональ:\n");
00034 nl_dvector_print(e, n, NULL);
00035
00036 printf("\nМатрица перехода Q:\n");
00037 nl_dmatrix_print(A, n, n, NULL);
00038
00039 eig_tridiag(d, e, n, 1, A, &rc);
00040
00041 printf("\nСобственные числа:\n");
00042 nl_dvector_print(d, n, NULL);
00043
00044 printf("\nСобственные векторы:\n");
00045 nl_dmatrix_print(A, n, n, NULL);
00046
00047 nl_dmatrix_free(A, n);
00048 nl_dvector_free(d);
00049 nl_dvector_free(e);
00050
00051 return 0;
00052 }