该程序返回a "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
Run Code Online (Sandbox Code Playgroud)
你的数组Temp只有10个元素.你不能读16个数字.Mat只是(4,4)你把它称为(i,j)循环1..16和1..16.
另外,implicit none我不会考虑一个没有这个的程序来标记我的学生.
我建议您使用具有良好调试功能的编译器并设置正确的标志.我用gfortran -g -fbacktrace -fcheck=all -Wall.g95也不错.也是商业的NAG,甚至在运行时检查未定义的值.