You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Taylor法测试异常:打印x(1)输出3.30448736E+17的排查求助

泰勒法Fortran程序异常输出问题排查

嘿,我懂你看到那个离谱的超大数值时的困惑——咱们来快速揪出问题所在!

首先看你代码里的最后一行:print*,x(1)的内容,这是非法的Fortran语法!Fortran的print语句里,如果要加说明文本,必须把文本放在引号里,不然编译器会把“的内容”当成未定义的变量或者乱码解析,直接去访问错误的内存地址,输出的自然是内存里的随机垃圾值(也就是你看到的3.30448736E+17)。

而你的x(1)其实从一开始就被正确赋值为1.0,而且整个循环里根本没修改过x(1),正常情况下它的值应该是1.0才对。

给你修正后的代码片段,重点看最后一行的print语句:

implicit none 
real,parameter :: x1=1,y1=2,h=0.5 
real,dimension(1:20) :: x,y 
integer :: n 
n=1 
x(1)= x1 
y(1)= y1 
do while(n<21) 
    y(n+1)= y(n)+h*x(n)*y(n)+0.5*y(n)*(1+x(n)**2)*h**2 
    x(n+1)=x(n)+h 
    n=n+1 
end do 
print *, "x(1)的值为:", x(1)  ! 这里把说明文本放进引号,语法就合法了

你编译运行修正后的代码,x(1)就会输出正确的1.0啦。另外也可以直接写print *, x(1),只打印变量值,这样更简单。

内容的提问来源于stack exchange,提问作者Samael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:43:41