前两天对学习了R里面计算的基本范围,以及一些求解方程的方法,今天来看看积分,其实上个学期学了数值分析,对这部分的算法是有所了解的,当时是用matlab写了一遍,已经忘了怎么实现的了,现在用R重新写一遍吧,算法有梯形积分法,辛普森积分法,自适应积分法。

  • 梯形积分法

    梯形积分法可以用下图很好的解释

    就是将微积分的时候用的方法,取Δx,则一小块面积就约等于f(x)*Δx,连续函数在Δx趋于0的时候,该公式会越来越精确。

###设置小数位数
options(digits = 8)
func1 <- function(x) return(4*x^3)
###梯形积分法
tixing <- function(func, a, b, n=100){
x <- 0
h <- (b-a)/n
for(i in 1:n){
x <- h*func(a+i*h) + x
}
return(x)
}
tixing(func1,0,1,n=10000) ###可以看到这种近似较为粗糙,可以稍微改进一些
tixing2 <- function(func, a, b, n=100){
h <- (b-a)/n
add_by <- seq(a,b,by=h)
f_x <- sapply(add_by,func)
x <- h*sum(f_x[1]/2,f_x[2:n],f_x[n+1]/2)
return(x)
}
tixing2(func1,0,1,n=100)
  • 辛普森方法

    辛普森方法和梯形方法类似,但是做了改进,前面我们改进的方法用的是梯形逼近,这样子f(x)其实是表示成了一段直线,辛普森方法使用抛物线来拟合,可              以降低误差。

    这里直接给出辛普森的计算公式

    S=h/3(f(x0)+4f(x1)+2f(x2)+4f(x3)+```+4f(xn-1)+f(xn))

    

###辛普森方法
simpson <- function(func, a, b, n=100){
h <- (b-a)/n ###奇数项
add_by_1 <- seq(a+h,b-h,by=2*h)
###偶数项
add_by_2 <- add_by_1+h
add_by_2 <- add_by_2[-length(add_by_2)]
x <- h/3*sum(func(a),4*sapply(add_by_1,func),2*sapply(add_by_2,func),func(b))
return(x)
}

    目前为止我们指定了运算次数n,而不是指定误差来计算,当然指定误差也是可以的,考虑一种循环,每次n都增加1,就可以完成这个目标了,但是这样运算            量会越来越大,所以推荐使用另一种方法,即公式本身具有的误差,可以又其本身和其n阶导数一起表示出来,具体的见数值分析相关书籍。

  • 自适应积分法

    这种方法我以前也没有过接触,书上讲它的基本思想是越是陡峭(导数大)的函数,需要的分割越细,越是平坦(导数小)的函数,需要的分割越少。详细            的,在进行运算的时候,先限定一个误差,然后将函数分割为两半,每边的误差均是误差的一半。这种方法的程序我再思考一下,还没想到怎么实现较好。

    

R语言数值积分的更多相关文章

  1. R语言手册

    在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data analysis and visualization which is built bas ...

  2. R语言(资源)

    #学习 R 的方法 知识和耐心,是成为强者的唯一方法. - 通过阅读来学习.包括了阅读经典的教材.代码.论文.学习公开课.- 通过牛人来学习.包括同行的聚会.讨论.大牛的博客.微博.twitter.R ...

  3. R语言编程艺术(4)R对数据、文件、字符串以及图形的处理

    本文对应<R语言编程艺术> 第8章:数学运算与模拟: 第10章:输入与输出: 第11章:字符串操作: 第12章:绘图 =================================== ...

  4. R语言作为BI中ETL的工具

    R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...

  5. R语言环境安装与基本使用

    R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...

  6. R语言绘制空间热力图

    先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...

  7. [R]R语言中的%>%和%.%

    最近在网上看R的代码,常常看到 x %>% y 的写法. 样子看着像是pipe的用法,搜了一下, 没找到语法的相关说明. 今天突然开窍,想着 %>% 可能不是语言本身支持的语法,可能是某个 ...

  8. .Net调用R语言

    ///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...

  9. 用R语言的quantreg包进行分位数回归

    什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...

随机推荐

  1. logstash filter geoip 转换IP为详细地址等内容。

    使用logstash geoip筛选器可以将ip地址解析为更丰富的内容. 结果类似于这样: "geoip": { "city_name": "Ürüm ...

  2. 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义

    20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...

  3. 【Python】函数总结

    以下为自学笔记内容,仅供参考. 转发请保留原文链接https://www.cnblogs.com/it-dennis/p/10516688.html python中的函数 最近看了python中关于函 ...

  4. Apache和Nginx的区别

    Nginx 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源 抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apa ...

  5. SPI通信的基础知识

    1 SPI物理层 SPI通信设备之间常用物理连接方式如下图  SPI通讯使用3条总线及片选线,3条总线分别为SCK.MOSI.MISO,片选线为CS.  CS:从设备选择信号线,常称为片选信号线,也称 ...

  6. MySQL 存储过程错误处理

    MySQL  存储过程错误处理 如何使用MySQL处理程序来处理在存储过程中遇到的异常或错误. 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息. ...

  7. Hadoop分布式文件系统HDFS的工作原理

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  8. diango admin 添加成员报错

    [报错内容]: IntegrityError at /admin/users/userprofile/add/ (1452, 'Cannot add or update a child row: a ...

  9. UML图概述

    UML图概述 UML是一种分析设计语言,即一种建模语言.UML是由图形符号表达的建模语言,其结构主要包括视图.图.模型元素和通用机制四部分. UML包括5种视图,分别是用户视图.结构视图.行为视图.实 ...

  10. Javascript回调函数中的this指向问题

    使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: 1 var name = 'my name is window'; 2 var ob ...