我的部分代码如下
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)
,则可以打印出所有三个值。我不知道为什么我的程序停止工作。在乘法中增加维数是否有危险?