I`ve a problem. I need to code Cholesky-Crout and I don`t know, why it
doesn`t work. Please help
Source :
// tab and cholesky are global
11 void CholeskyCrout()
12 {
13 cholesky[0][0] = sqrt(tab[0][0]);
14 for (int i = 1; i < N; i++)
15 cholesky[i][0] = tab[i][0]/cholesky[0][0];
16
17 for (int j = 1; j < N; j++)
18 {
19 for (int i = j; i < N; i++)
20 {
21 if (i == j)
22 {
23 double sum;
24 for (int k = 0; k < i; k++)
25 sum += cholesky[i]
[k]*cholesky[i][k];
26 cholesky[i][i] = sqrt(tab[i][i] -
sum);
27 }
28 else
29 {
30 double sum;
31 for (int k = 0; k < i; k++)
32 sum += cholesky[i]
[k]*cholesky[j][k];
33
34 cholesky[i][j] = (tab[j][i] - sum)/
tab[j][j];
35 }
36 }
37 }
38 }
doesn`t work. Please help
Source :
// tab and cholesky are global
11 void CholeskyCrout()
12 {
13 cholesky[0][0] = sqrt(tab[0][0]);
14 for (int i = 1; i < N; i++)
15 cholesky[i][0] = tab[i][0]/cholesky[0][0];
16
17 for (int j = 1; j < N; j++)
18 {
19 for (int i = j; i < N; i++)
20 {
21 if (i == j)
22 {
23 double sum;
24 for (int k = 0; k < i; k++)
25 sum += cholesky[i]
[k]*cholesky[i][k];
26 cholesky[i][i] = sqrt(tab[i][i] -
sum);
27 }
28 else
29 {
30 double sum;
31 for (int k = 0; k < i; k++)
32 sum += cholesky[i]
[k]*cholesky[j][k];
33
34 cholesky[i][j] = (tab[j][i] - sum)/
tab[j][j];
35 }
36 }
37 }
38 }
Comment