我一直在使用FORTRAN计划。我注意到我正在使用的一维矩阵中看似随机的变化。它是4000个整数的矩阵。将值逐个添加到矩阵中,从索引1开始,并为每个添加值迭代1。矩阵没有完全“填充”,目前只有100个值被放入矩阵中。因此可以预期矩阵的前100个条目将为非零(所有相加值都为非零),其余3900个条目将为0.但是,矩阵的几个条目最终为大负数,但我确定我的代码的任何部分都不会触及这些条目。
可能导致此问题的原因是什么?对不起,我无法发布代码供大家使用。
代码有几个其他大型矩阵,占用总空间约100 MB。这可能是一个内存问题吗?
谢谢!
答案 0 :(得分:0)
你必须初始化你的数组,否则它几乎总是包含垃圾。这样就可以了:
array = 0.0e0 ! real array
或
array = 0.0e0 ! double precision
或
array = 0 ! integer
答案 1 :(得分:-2)
“矩阵”是二维的;你的数组是一维的。
除非你要求他们改变,否则事情不会改变。
FORTRAN不会在标记的COMMON中初始化除(我记得)之外的变量。因此,他们保证从垃圾值开始。尝试使用DATA语句初始化数据。如果必须初始化标记的COMMON,则必须提供BLOCK DATA子程序。