Newton Raphson没有收敛某些初步猜测

时间:2016-05-30 16:19:33

标签: fortran

 program newton_raphson
    implicit none
    real,parameter::error=1e-4
    integer::i
    real::xo,x1,f,fd
    print*,"Please enter the initial guess !!!"
    read*,xo
    i=1
    10 x1=xo-(f(xo)/fd(xo))
    if(abs((x1-xo)/x1)<error) then
    print*,"root is", x1,"no. of iteration=",i
    else
    xo=x1
    i=i+1
    goto 10
    endif
    end

    real function f(x)
    real::x
    f=cos(x)
    end

    real function fd(x)
    real::x
    fd=-sin(x)

    end

当我将1作为初始猜测时,此程序正常工作,但当我将0作为初始猜测时失败或不显示任何内容。我的代码是否有任何错误。

1 个答案:

答案 0 :(得分:2)

尽管Newton-Raphson方法在根部附近快速收敛,但它的全局性 收敛特性差。原因是切线并不总是函数的可接受近似值,因此可以尝试将代码与二分法合并,这样就可以改善结果。