使用切线法求解方程零点

Program SecantMethod
  Implicit none 
  Real(kind=8) :: x0 = 0.d0, x1 = 1.d0
  Real(kind=8) :: xtmp
  Real(kind=8), parameter :: eps = 1.d-8
  Real(kind=8), external :: func
  Integer, parameter :: nloop = 1000 !// 设置最大循环次数
  Integer :: i

  i = 0
  Do
    If ( i > nloop ) exit
    xtmp = x1 - func(x1) * ( x1 - x0 ) / ( func(x1) - func(x0) ) !// Xi+1 = Xi - f(Xi) * ( Xi - Xi-1 ) / ( f(Xi) - f(Xi-1) ), i = 1, 2, 3, 4......
    If ( abs(xtmp - x1) <= eps ) exit 
    x0 = x1
    x1 = xtmp
    i = i + 1
  End do 
  Write ( *,'(a,g0)' ) ' The root of x^3 + x - 1 is ', xtmp

End Program SecantMethod

Real(kind=8) function func (x) !// 求方程 x^3 + x - 1 = 0 的零点
  Implicit none 
  Real(kind=8), intent(in) :: x 
  func = x**3 + x - 1.d0 
End function

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值