|
目的是想建立一个通用的牛顿求解算法的框架,就是说,对于不同的问题,只需要将初值A0,以及问题FX,导数DFX输入,调用牛顿算法,就可以求出结果。
我写的程序如下:有错误,请高手指点一下应该在怎样写?多谢多谢!!
[Fortran] 纯文本查看 复制代码 01 | subroutine module_and_algorithm |
03 | double precision , external :: cubic_roots , der_cubic_roots |
04 | integer , parameter :: length = 4 |
05 | double precision Co ( length ) |
06 | double precision :: x 0 = 1 d 0 |
08 | co = ( / 3 d 0 , 12 d 0 , 0 d 0 , 1 d 0 / ) |
09 | call newton ( x 0 , cubic_roots , der_cubic_roots , y ) |
10 | print * , "this is the roots near X0" , y |
13 | subroutine cubic_roots ( Co , length , y ) |
18 | double precision temp ( length ) |
25 | subroutine der_cubic_roots ( Co , length , y ) |
30 | double precision temp ( length -1 ) |
32 | temp ( i ) = dble ( i -1 ) * co ( i ) * x * * ( length -2 ) |
37 | subroutine newton ( a , f , df , b ) |
39 | double precision :: epsilon = 1 d -6 |
40 | double precision a , b , fb |
41 | double precision , external :: f , df |
46 | print * , "i am here (1)" , fb |
47 | do while ( abs ( fb ) > epsilon ) |
51 | print * , "i am here (2)" , fb |
56 | call module_and_algorithm |
|
|