此程序返回"floating point error: overflow"
,其温度值如下:
170 225 275 330 390 445 500 555 610 670 725 775 830 1100 1390 1670
这是非常明显的,因为需要提升到功率16然后添加的巨大值。
该矩阵表示需要使用高斯消元解决的4个方程的系统,其中剩余的代码就绪。
Real Mat(4,4),Temp(10), Temp2(10),Sum
Do i=1,16
Write(*,*)"enter Temperature value T",i
Read (*,*) Temp(i)
End do
Do i=1,16
Do j=1,16
sum=0
Do k=1,16
if(i.GT.1)then
l=(4*(i-1))+j
elseif(i.eq.1)then
l=i+j-1
endif
Temp2(k)=Temp(k)**l
sum=sum+Temp2(k)
End do
Mat(i,j)=Sum
End do
End Do
Do I=1,4
Write(*,*) (mat(I,J), j=1,4)
End do
!this just forces the program to stay in the exe wind
Read(*,*) sum
End
答案 0 :(得分:5)
您的数组Temp
只有10个元素。你不能读16个数字。 Mat
仅为(4,4)
,但您在循环(i,j)
和1..16
中将其称为1..16
。
另外,添加implicit none
,我不会考虑没有这个程序给我的学生做标记。
我建议您使用具有良好调试功能的编译器并设置正确的标志。我使用gfortran -g -fbacktrace -fcheck=all -Wall
。 g95
也很好。也是商业NAG
,甚至在运行时检查未定义的值..