Часть моего кода выглядит следующим образом
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) могут быть распечатаны, но не лемда (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)
, все три значения могут быть распечатаны. Я не мог понять, почему моя программа перестала работать. Опасно ли увеличивать размерность при умножении?