- UID
- 1364
- 性别
- 男

精神病
- 积分
- 21
F 币- 13 元
- 最后登录
- 2015-9-30
贡献- 6 点
- 注册时间
- 2015-9-30
权杖- 0 枚
惯用编译器:Intel Visual Fortran for Windows

新人
精神病
F 币- 13 元
贡献- 6 点
|
不说多的 直接上源代码
[Fortran] 纯文本查看 复制代码 03 | DIMENSION U ( 2 ) , UI 1 ( 3 ) , UI 2 ( 6 ) , UI 3 ( 6 ) |
04 | REAL ( 8 ) Nv , chi , lambda 0 , detF 0 , vcho , vcmo , vcpo , fa , fb , Ka , Kb , vNa |
05 | REAL ( 8 ) U , UI 1 , UI 2 , UI 3 , aa , bb , cc , dd , ee , deltaa , deltab , deltac |
07 | REAL ( 8 ) delta , vch , GAJ , DGAJDAJ , DDGAJDDAJ , DDDGAJDDDAJ |
08 | REAL ( 8 ) DGAJDvch , DDGAJDDvch , DDDGAJDDDvch |
09 | REAL ( 8 ) DDGAJDAJDvch , DDDGAJDAJDDvch , DDDGAJDDAJDvch |
10 | REAL ( 8 ) DvchDAJ , DDvchDDAJ , DDDvchDDDAJ |
11 | REAL ( 8 ) D 1 GAJDAJ , D 2 GAJDAJ , D 3 GAJDAJ , TEMP |
20 | vcpo = vNa * ( 10.0 * * ( -3.0 ) ) |
21 | vcho = vNa * ( 10.0 * * ( - TEMP ) ) |
30 | aa = AJ * detF 0 * ( vcho + vcpo ) |
32 | bb = fb * vcho + AJ * detF 0 * Ka * ( vcho + vcpo ) * vNa + AJ * detF 0 * Kb * ( vcho + |
35 | cc = - ( AJ * detF 0 * vcho * * 2 * vcmo ) - fa * Ka * vcho * vNa + fb * Ka * vcho * vNa + |
36 | & AJ * detF 0 * Ka * Kb * ( vcho + vcpo ) * vNa * * 2 |
37 | dd = - ( AJ * detF 0 * Ka * vcho * * 2 * vcmo * vNa ) - AJ * detF 0 * Kb * vcho * * 2 * vcmo * v |
38 | & Na - fa * Ka * Kb * vcho * vNa * * 2 |
40 | ee = AJ * detF 0 * Ka * Kb * vcho * * 2 * vcmo * vNa * * 2 |
42 | deltaa = cc * * 2 -3 * bb * dd +12 * aa * ee |
44 | deltab = 2 * cc * * 3 -9 * bb * cc * dd +27 * aa * dd * * 2 -72 * aa * cc * ee |
45 | deltac = ( deltab + Sqrt ( abs ( -4.0 * deltaa * * 3.0 + deltab * * 2.0 ) ) ) |
48 | delta = ( 2 * * ( 1 / 3 ) * deltaa ) / ( 3 * aa * deltac ) + deltac / ( 3 * 2 * * ( 1 / 3 ) * aa ) |
现在我的问题是,deltac=(deltab+Sqrt(abs(-4.0*deltaa**3.0+deltab**2.0)))
&**(1.0/3.0)这一句中,如果只有(deltab+Sqrt(abs(-4.0*deltaa**3.0+deltab**2.0)))的话能运行出结果来
但是如果我想将这个deltac开立方根,变成deltac=(deltab+Sqrt(abs(-4.0*deltaa**3.0+deltab**2.0)))**(1.0/3.0)之后
运行结果死活就是NaN,实在不知道是为什么 求大神指点 多谢~
PS:打印出来的deltac就是此图中第七行第二个数据,如果没有开立方根的话能运行出结果,开了立方根之后死活是NaN。。。。。T_T
|
|