求助大神!!!fortran 牛顿迭代法亦可用于求方程的复根,试用复数算法编程计算实根和复根

programNewton_iterationIMPLICITCOMPLEX(C,Z)DIMENSIONZO(50),LG(50)WRITE(*,*)'A,B,H,EPS... program Newton_iteration
IMPLICIT COMPLEX (C,Z)

DIMENSION ZO(50),LG(50)
WRITE(*,*)'A,B,H,EPS'
READ(*,*) A,B,H,EPS
CALL NEWTON(A,B,H,EPS,FX,FD,NR,ZO,LG)
DO 20 I=I,NR
20 WRITE(*,30)I,ZO(I),LG(I)
30 FORMAT(1X,I3,2F15.7,8X,I3)
END

SUBROUTINE CFUN(Z,FX,FD)
IMPLICIT COMPLEX (C,Z)
FX=Z*Z*Z-Z-1
FD=3*Z*Z-1
RETURN
END

SUBROUTINE NEWTON(A,B,H,EPS,FX,FD,NR,ZO,LG)
IMPLICIT COMPLEX (A-H,O-Z)
DIMENSION ZO(50),LG(50)
NR=0
Z=A-H
CALL CFUN(Z,YB,FD)
IF (CABS(YB).LE.1.0D-14) GO TO 20
10 Z=Z+H
IF (CABS(Z).GT.CABS(B+H)) RETURN
YA=YB
CALL CFUN(Z,YB,FD)
IF (CABS(YB).LE.1.0D-14) GO TO 20
IF(CABS(YB*YA).GT.0.0) GO TO 10
ZA=Z-H
ZB=Z
IT=0
Z=0.5*(ZA+ZB)
15 Z0=Z
CALL CFUN(Z,FX,FD)
Z=Z-FZ/FD
IT=IT+1
IF(IT.LE.30.AND.CABS(Z-ZO).GT.CABS(Z)*EPS) GO TO 15
20 NR=NR+1

ZO(NR)=Z
IF(ZO(NR).EQ.ZO(NR-1).AND.NR.NE.1) NR=NR-1
GO TO 10

END

Compiling Fortran...
E:\aa\aa\aa.f90
E:\aa\aa\aa.f90(46) : Error: This binary operation is invalid for this data type.
IF(IT.LE.30.AND.CABS(Z-ZO).GT.CABS(Z)*EPS) GO TO 15
---------------------------------------------^
E:\aa\aa\aa.f90(46) : Error: A scalar-valued expression is required in this context.
IF(IT.LE.30.AND.CABS(Z-ZO).GT.CABS(Z)*EPS) GO TO 15
-------------------^
Error executing df.exe.

aa.exe - 2 error(s), 0 warning(s)

应该怎么改,如果看不下去,发份子程序也行
展开
 我来答
jxvictorr
推荐于2016-03-09 · TA获得超过155个赞
知道小有建树答主
回答量:94
采纳率:100%
帮助的人:50.4万
展开全部
错误提示是CABS( ),可能是数组也可能是函数。
如果是数组需要先定义,需要赋值。
如果是函数,也需要用external声明。

如果这是改动后的程序,建议去改动前的源程序搜一下CABS。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式