fortran 77嵌套do循环(乘法)
我的部分代码如下fortran 77嵌套do循环(乘法),fortran,fortran77,Fortran,Fortran77,我的部分代码如下 else if (n .le.6) then call DRNUN(6, XX) trun(j,1,n)=g1(j,1,n)/(cho(1,1)*1.0d0) do 7 l=2,n u(j,l-1,n)=DNORIN(XX(l-1)*(1.0d0-DNORDF(trun(j,l-1,n))) & +DNORDF(trun(j,l-1,n)))
else if (n .le.6) then
call DRNUN(6, XX)
trun(j,1,n)=g1(j,1,n)/(cho(1,1)*1.0d0)
do 7 l=2,n
u(j,l-1,n)=DNORIN(XX(l-1)*(1.0d0-DNORDF(trun(j,l-1,n)))
& +DNORDF(trun(j,l-1,n)))
do 17 m=1,l-1
lemda(m,j,l,n)=cho(l,m)*u(j,m,n)
print*, u(j,m,n),cho(l,m)!,lemda(m,j,l,n)
17 continue
totol(l,n)=sum(test(l,n,1:l-1))
trun(j,l,n)=(g1(j,l,n)-tot(j,l,n))/cho(l,l)
7 continue
当我运行整个程序时,它不起作用
我发现关键问题是关于lemda(m,j,l,n)=cho(l,m)*u(j,m,n)
。可以打印出u(j,m,n)和cho(l,m)的值,但不能打印出lemda(m,j,l,n)
如果我把
lemda(m,l,n)=cho(l,m)*u(j,m,n)
,代码就起作用了。但是,如果我不运行我的整个程序,而只运行这段代码,其中的一些赋值包含lemda(m,j,l,n)=cho(l,m)*u(j,m,n)
,那么这三个值都可以打印出来。我不明白为什么我的程序停止工作了。在乘法中增加维数危险吗?欢迎。欢迎您了解如何使用本网站。这是必要的格式化您的文章,使他们可读。对于Fortran问题,请始终添加[Fortran]标记。请不要说“它不工作”。告诉我们发生了什么。它会崩溃吗?是否有任何错误消息?它们看起来怎么样?还是结果错了?错在哪里?请显示一段较大的代码。请参阅和。嗨,Stacy,欢迎来到Stack Overflow。我们很乐意帮助您解决这个难题,但我们很难评估这部分代码。我们缺少各种信息,例如各种变量的声明。我们不需要完整的代码,只需要一个复制问题的最小化版本。您可以通过基本上开始注释掉/删除许多不需要的行并简化许多行来创建它,例如u(j,l-1,n)=DNORIN(XX(l-1)*(1.0d0-…
=>u(j,l-1,n)=0.0d0
。继续:如果突然间事情开始如您所料,您实际上自己找到了罪犯。如果没有,请在此处发布最小化的工作版本。该版本由@VladimirF建议调用。非常感谢并期待帮助您。若要编辑您的问题,请单击问题左下角的单词。