|
本人最近新学Fortran语言,用龙库塔迭代法求解水面线,程序已编完但无法运行,提示我微分方程设置的语法有问题代码如下:
[Fortran] 纯文本查看 复制代码 02 | dimension x ( 0 : 20 ) , y ( 0 : 20 ) , z ( 0 : 20 ) , p ( 0 : 21 ) , r ( 0 : 20 ) , c ( 0 : 20 ) |
03 | double precision x , y , z , p , h , x 0 , y 0 , z 0 , p 0 , n , k 1 , k 2 , k 3 , k 4 , k , q , g , a , b , m , s , r , c |
11 | r = ( ( b + m * y ) * y ) / ( b +2 * sqrt ( 1 + m * * 2 ) * y ) |
13 | f ( x , y ) = ( k - q * * 2 / ( a * c * sqrt ( r ) ) * * 2 ) / ( 1 - q * * 2 * b / ( g * a * * 3 ) |
21 | r ( i +1 ) = ( ( b + m * y ( i +1 ) ) * y ( i +1 ) ) / ( b +2 * sqrt ( 1 + m * * 2 ) * y ( i +1 ) ) |
22 | c ( i +1 ) = ( 1 / s ) * r ( i +1 ) * * ( 1 / 6 ) |
25 | k 2 = f ( x ( i ) +0.5 * h , y ( i ) +0.5 * h * k 1 ) |
26 | k 3 = f ( x ( i ) +0.5 * h , y ( i ) +0.5 * h * k 2 ) |
28 | y ( i +1 ) = y ( i ) + h * ( k 1 +2 * k 2 +2 * k 3 + k 4 ) / 6 |
32 | z ( i ) = p ( i ) + exp ( - p ( i ) ) -1 |
35 | open ( 10 , file = "1,txt" ) |
36 | write ( 10 , * ) ( x ( i ) , y ( i ) , z ( i ) , i = 0 , 20 ) |
|
|