24小时热门版块排行榜    

查看: 366  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

bakyym

木虫 (小有名气)

[求助] 关于牛顿法的问题。急急急已有1人参与

利用Newton-Raphson求解方程式时,得到的解跳出了定义的解的范围该怎么办。怎样获得一种安全性比较高的求根方法?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bakyym

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-06-25 18:07:32
不知道你的具体程序是什么。
求解方程可以转换成最优问题,给根加上取值范围,等于是求解有约束的最优化问题。

SUBROUTINE NEWTON_RAPHSON(I,J,LAMBDA,F)

IMPLICIT NONE
COMMON/CONF1/RX,RY
COMMON/CONF3/SEMIA,SEMIB
COMMON/CONF4/THETA
COMMON/RAD/NBLA,NBLB

INTEGER,PARAMETER:: MAX=20,N=200
INTEGER I,J,M
DOUBLE PRECISION,PARAMETER::TOL=1.0D-6
DOUBLE PRECISION RX(N),RY(N)
DOUBLE PRECISION NBLA(N),NBLB(N)
DOUBLE PRECISION THETA(N)
DOUBLE PRECISION SEMIA(N),SEMIB(N)
DOUBLE PRECISION LAMBDA,RXIJ,RYIJ
DOUBLE PRECISION DX,F,DF2,DF

LAMBDA=SEMIA(I)/(SEMIA(I)+SEMIA(J))


DO M=1,100
   
   CALL FUNCD(I,J,LAMBDA,1,F,DF,DF2)
   
   DX=DF/DF2

   LAMBDA=LAMBDA-DX

   IF(ABS(DX)<TOL)THEN
     IF((0.0-LAMBDA)*(LAMBDA-1.0)<0)THEN
     
       PAUSE 'LAMBDA JUMP OUT THE BRACKETS '

     END IF
     GOTO 800
    END IF
END DO
具体的程序是这样的,函数是已知的,具体就是求df=0在λ{0,1}范围内的解。有时求出的λ值大于1或者小于0.所以不知道该怎么办
3楼2014-06-25 18:18:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
不知道你的具体程序是什么。
求解方程可以转换成最优问题,给根加上取值范围,等于是求解有约束的最优化问题。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-06-25 18:07:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见