R语言求根

栏目 技术教程 · 发布时间 2020-10-18 · 人气 加载中

来源: http://www.mamicode.com/info-detail-2325478.html

内容摘要:标签:itsnewexp函数循环因此returndivcti求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法、牛顿-拉富生算法、割线法和二分法。不动点迭代法    所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化为x=f(x)形式之后,下一步所用的x值为这一步的f(x),这样的话就可以一直逼近我们需             要的x,即方程...

标签:its   new   exp   函数   循环   因此   return   div   cti   

求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法、牛顿-拉富生算法、割线法和二分法。

  • 不动点迭代法

    所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化为x=f(x)形式之后,下一步所用的x值为这一步的f(x),这样的话就可以一直逼近我们需                     要的x,即方程的根,但是这种方法可能不会收敛到方程的根,随着初始值选定的大小,可能会有发散的情况,因此需要谨慎使用。

  

###不动点迭代法
func1 <- function(x){return(exp(exp(-x)))}
fixpoint <- function(func, x0, tol=1e-8, max.iter=1e4){
  ###求根的函数func
  ###初始值x0
  ###允许误差范围tol
  ###最大循环次数max.iter
  x.old <- x0
  x.new <- x0
  for(i in 1:max.iter){
    x.new <- func1(x.old)
    if(abs(x.new - x.old) < tol && i<max.iter){
      cat(‘the iter time is‘,i,‘\n‘)
      return(format(x.new,digits = 9))
    }
    x.old <- x.new
  }
  cat(‘bad start num‘)
}
  • 牛顿-拉富生

    所谓的牛顿-拉富生算法其实就是课本里面说的牛顿迭代法,也不是一个难的程序,主要思想就是x(n+1)=x(n)-f(x(n))/f`(x(n)),这里导数可以用相两点的斜率表示//明天接着写

    

R语言求根

标签:its   new   exp   函数   循环   因此   return   div   cti   

原文地址:https://www.cnblogs.com/NEFPHYS/p/nef20180605.html


资源来源网络,若未解决请查看原文

本站资源全部都是收集于网络如有侵权请发邮件至:admin@heimacode.com 我们会尽快处理侵权内容 。