|
书上给出的算法过程:
![]()
代码:
[Fortran] 纯文本查看 复制代码 13 | Subroutine solve ( A , L , N ) |
16 | Real ( 8 ) :: A ( N , N ) , L ( N , N ) |
20 | L ( 1 , 1 ) = dsqrt ( A ( 1 , 1 ) ) |
21 | L ( 2 : , 1 ) = A ( 2 : , 1 ) / L ( 1 , 1 ) |
27 | L ( j , j ) = dsqrt ( A ( j , j ) - s ) |
34 | L ( i , j ) = ( a ( i , j ) - s ) / L ( j , j ) |
47 | Integer , Parameter :: N = 4 |
49 | Real ( 8 ) :: A ( N , N ) , L ( N , N ) |
50 | Open ( unit = 11 , file = 'fin.txt' ) |
51 | Open ( unit = 12 , file = 'fout.txt' ) |
53 | Read ( 11 , * ) ( ( A ( i , j ) , j = 1 , N ) , i = 1 , N ) |
54 | Write ( * , * ) ( ( A ( i , j ) , j = 1 , N ) , i = 1 , N ) |
57 | 21 Format ( T 5 , 'Cholesky Decomposition' , / ) |
59 | Write ( 12 , '(4(F10.6))' ) L ( i , : ) |
测试数据:
Input datas of Cholesky Decomposition
233.4615 113.8423 256.0623 145.0697
113.8423 78.6033 127.4298 95.3089
256.0623 127.4298 281.4721 164.8676
145.0697 95.3089 164.8676 181.2339
问题在这里。结果与正确结果不同,但是我是在找不到错误了。。。。:
fout.txt 输出的计算结果在‘’的三个数上是错误的
计算结果(错误的)
15.279447 0.000000 0.000000 0.000000
7.450682 4.805272 0.000000 0.000000
16.758610 0.534147 ‘0.579450’ 0.000000
9.494434 5.112904 ’5.217081‘ ‘6.142468’
应为(正确的)
15.279447 0.000000 0.000000 0.000000
7.450682 4.805272 0.000000 0.000000
16.758610 0.534147 ‘0.579464’ 0.000000
9.494434 5.112904 ’5.216939‘ ‘6.142588’
——The program is from 'Fortran95/2003科学计算与工程-宋叶志,page 33-36'
|
|