Fortran输出是0怎么解决?

PROGRAMgongshiusemsimslreal*8x,ydoubleprecisionw0x,woy,fei,z,kreal*8x0,x1,x2,x3,x4,x5... PROGRAM gongshi
use msimsl
real*8 x,y
double precision w0x,woy,fei,z,k
real*8 x0,x1,x2,x3,x4,x5,x6,x7
complex c,x8
parameter (c=(0.,1.))
k=0.1
z=0.1
w0x=0.5
w0y=0.5
open(10,file="A.txt")
write(10,*)" x"," y"," A"
do x=-100,100

do y=-100,100

x0=2*z
x1=(k*w0x*w0x)-c
x2=x1/x0
x3=(k*w0y*w0y)-c
x4=x3/x0
x5=x2*x4
x5=SQRT(x5)
x6=(c*x2*x*x)/(w0x*w0x)
x7=(c*x3*y*y)/(w0y*w0y)
x8=cmplx(0,sin(x6+x7))
fei=c*x5*x8
fei=-fei
write(10,200)x,y,fei
end do
end do
200 format(1x,f13.5,5x,f13.5,5x,e13.6)
close (10)
end
展开
 我来答
帐号已注销
2022-05-10 · TA获得超过3116个赞
知道大有可为答主
回答量:4114
采纳率:0%
帮助的人:270万
展开全部

因为,变量 fei是双精度实数,而c是复数,且c的实部为0,虚部为i。

所以:

fei=c*x5*x8的结果总是等于c的实部,也就是等于0;

fei=-fei 的结果仍然是0。

因此,最终输出 fei 的数值一定为 0。

如果要求结果为复数,则 fei 必须定义为复数。

如果结果可以是实数,则要看程序代码的计算目的,在考虑如何修改。建议重新审核一下计算公式,对计算步骤进行检查,并代入特征数值进行试算。

~~

再从复数的乘法规则分析一下,为什么输出都是0。

设z1=a+bi,z2=e+fi ,a、b、e、f 为任意实数。z1和z2 为任意两个复数,那么它们的积为:(a+bi)(e+fi)=(ae-bf)+(be+af)i。

本题程序中的 c=z1=0+i,而 fei=c*x5*x8 中,x5和x8均为实数,它们的虚部都是0,即z2=e+0i,则:z1*z2 = (0+i)(e+0i) = 0+0i。

因此,fei 复数的结果也是 0+0i,也就是输出 (0,0)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式