R语言数值积分
前两天对学习了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语言数值积分的更多相关文章
- R语言手册
在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data analysis and visualization which is built bas ...
- R语言(资源)
#学习 R 的方法 知识和耐心,是成为强者的唯一方法. - 通过阅读来学习.包括了阅读经典的教材.代码.论文.学习公开课.- 通过牛人来学习.包括同行的聚会.讨论.大牛的博客.微博.twitter.R ...
- R语言编程艺术(4)R对数据、文件、字符串以及图形的处理
本文对应<R语言编程艺术> 第8章:数学运算与模拟: 第10章:输入与输出: 第11章:字符串操作: 第12章:绘图 =================================== ...
- R语言作为BI中ETL的工具
R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...
- R语言环境安装与基本使用
R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...
- R语言绘制空间热力图
先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...
- [R]R语言中的%>%和%.%
最近在网上看R的代码,常常看到 x %>% y 的写法. 样子看着像是pipe的用法,搜了一下, 没找到语法的相关说明. 今天突然开窍,想着 %>% 可能不是语言本身支持的语法,可能是某个 ...
- .Net调用R语言
///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...
- 用R语言的quantreg包进行分位数回归
什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...
随机推荐
- HBase Filter及对应Shell
比较运算符 CompareFilter.CompareOp比较运算符用于定义比较关系,可以有以下几类值供选择: EQUAL 相等 GREATER 大于 GREATER_OR_EQUAL 大于等于 LE ...
- win10 WSL kali 下载源 --另外 恭喜马哥喜提博客
第一篇也不知道写什么,就把昨晚安装kali时遇见的事写一下吧! 因为win10应用商店已经加入了kali,也省的我再去网上下载镜像,可下载后 wsl 未能设置为开发人员模式, 这算是失误吧!步骤如 ...
- dao层、service和action的运用和区别
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,对于数据库的操作,具体到对于某个表的增删改查, 也就是说某个DAO一定是和数据库的某一张表一一对应的 ...
- 一键快速部署CodeBlocks的EGE图形库工具
大一下学期,学完了c语言的基本内容, 也就开始开发项目了,此时一个图形界面就比较重要了,c语言中不提供图形界面,一般这些是用的其它开发的图形库,如 Easyx .ege等. 本文就提供 Codeblo ...
- Docker构建一个node镜像
0. 设置国内docker镜像源 进入Settings->Daemon->Advanced,添加如下配置. { "registry-mirrors": [ " ...
- acure使用
打开,选择用IE浏览器,如果选择Chrome浏览器会提示让安装插件
- scrapy框架使用笔记
目前网上有很多关于scrapy的文章,这里我主要介绍一下我在开发中遇到问题及一些技巧: 1,以登录状态去爬取(带cookie) -安装内容: brew install phantomjs (MAC上) ...
- 1GB pages can only be allocated at boot time using hugepages= and not freed afterwards
2018-6-27 9:12:38 https://stackoverflow.com/questions/26385554/error-setting-nr-hugepages-via-sysfs ...
- flutter -------- GridView的使用
使用GridView将widget放置为二维列表. GridView提供了两个预制list,或者您可以构建自定义网格.当GridView检测到其内容太长而不适合渲染框时,它会自动滚动. GridVie ...
- MATLAB常用函数(不定时更新)
1.pause 一般情况下pause(a)表示程序暂停a秒后继续执行,但有时候也存在这种情况,程序中只有pause:并没有参数a,这样的意思是程序暂停,按任意键程序继续执行.2.uiwait(h,ti ...