GWH_777 2023-03-03 15:03 采纳率: 50%
浏览 24
已结题

fortran编译问题

我的数组文件(d_R)中有两列数值,分别为横纵坐标,现在我想将数组文件中的每个纵坐标数值除以其中的最大值(R_max),最大值我已经在程序之外求出具体数值,并且在程序中进行了赋值,但是将数组(mx)/最大值的结果乘以原来公式时,算出的计算结果为NaN。
目的:我想知道问题出在哪里?又该如何解决(猜想一:是不是因为我的数组中有两列数值,但是我却直接除以最大值,导致了NaN的出现;猜想二:跟循环有关,需要数组中每个数值循环除以最大值)
黑体部分为我重新添加的部分,这方面我第一次尝试,请各位指导,如果能附上正确代码,感激不尽。

COMPLEX , DIMENSION(N_x) :: Psi_xz_R
INTEGER , PARAMETER :: N_R=8192
REAL(8) , DIMENSION(N_R) :: d_R
**INTEGER , PARAMETER :: R_max=0.246882**

Open(unit=17, file='d_R.dat', status='old')
Do R=1,N_R
    read(17,*) d_R(R)
End do
CLOSE(17) 
 
Open(unit=3, file='Eigen_wave0.dat', status='old')
x=x_min+INT(abs(-1.0-x_min_0)/d_x_0)*d_x_0
Do mx=INT(abs(-1.0-x_min_0)/d_x_0)+1, INT(abs(-1.0-x_min_0)/d_x_0)+N_x_0
    Read(3,*) x, RPsi6    !, IPsi6
    IPsi6=0.0D0
    Psi_xz_0(mx)=CMPLX(RPsi6,IPsi6)
    Psi_xz_R(mx)=**(d_R(mx)/R_max)***Psi_xz_0(mx)
    Psi_xz(mx)=Psi_xz_R(mx)
    norm_t=norm_t+d_x*ABS(Psi_xz_R(mx))**2
Enddo
CLOSE(17)
CLOSE(3)

  • 写回答

2条回答 默认 最新

  • 地球屋里老师 2023-03-04 11:43
    关注

    maxval函数可以求数组最大值。
    出现nan,你可以修改设置,使之报错,这样就能找到是哪里出问题了。项目属性-fortran-floating point,第一个选项改为
    Underflow gives 0.0; Abort on other IEEE exceptions (/fpe:0)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月3日

悬赏问题

  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"