00001
00002
00003
00004
00005
00006 #include "nl.h"
00007
00008 int main()
00009 {
00010 size_t n = 5;
00011 double **A, **V, *d;
00012 int nrot, rc;
00013
00014 A = nl_dmatrix_create(n, n);
00015 V = nl_dmatrix_create(n, n);
00016 d = nl_dvector_create(n);
00017
00018 A[0][0] = 11; A[0][1] = 10; A[0][2] = 18; A[0][3] = 11; A[0][4] = 21;
00019 A[1][0] = 10; A[1][1] = 14; A[1][2] = 41; A[1][3] = 12; A[1][4] = 13;
00020 A[2][0] = 18; A[2][1] = 41; A[2][2] = 17; A[2][3] = 23; A[2][4] = 23;
00021 A[3][0] = 11; A[3][1] = 12; A[3][2] = 23; A[3][3] = 11; A[3][4] = 17;
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_jacobi(A, n, d, 1, V, &nrot, &rc);
00028
00029 if (rc)
00030 {
00031 printf("\nЧисло итераций превысило 50\n");
00032 }
00033 else
00034 {
00035 printf("\nСобственные числа:\n");
00036 nl_dvector_print(d, n, NULL);
00037
00038 printf("\nСобственные векторы:\n");
00039 nl_dmatrix_print(V, n, n, NULL);
00040
00041 printf("\nКоличество выполненных вращений = %d\n", nrot);
00042 }
00043
00044 nl_dmatrix_free(A, n);
00045 nl_dmatrix_free(V, n);
00046 nl_dvector_free(d);
00047
00048 return 0;
00049 }