学习R语言编程——常用算法——导数与微积分的近似计算
#########################常用算法——导数与微分的近似计算#######################
###例题:用导数的近似计算求函数f(x) = -4*x^2+3*x+2在[0,1]的极值
f = function(x) -4*x^2+3*x+2
ub = 1
lb = 0
m = 1000000
step = (ub-lb)/m
x = 0
for(i in 1:1000000){
df = (f(x+step)-f(x))/step
if(abs(df)<1e-5){cat("x is ",x,"extreme value is ",f(x))}
x = x+step
}
#矩阵方法
f = function(x) -4*x^2+3*x+2
x = seq(0,1,by = .00001)
x0 = x[which.max(f(x))]
x0;f(x0)
###用导数的近似计算求出函数f(x) = (1/3)*x^3-(1/2)*x^2-2*x在[-2,3]的所有极值点。
#判定方法1
f = function(x) (1/3)*x^3-(1/2)*x^2-2*x
x = -2
step = 1/10000
for(i in 1:50000){
fd = (f(x-step)-f(x))*(f(x+step)-f(x)) #判断是否是极值点
if(fd>0)print(x)
x = x+step
}
#判定方法2——定义判定
f = function(x) (1/3)*x^3-(1/2)*x^2-2*x
ub = 3
lb = -2
m = 5000000
step = (ub-lb)/m
x = -2
for(i in 1:m){
df = (f(x+step)-f(x))/step
if(abs(df)<1e-5)cat("extreme value point is ",x,'\n')
x = x+step
}
########################常用算法——定积分的近似计算###########################
###利用矩形法近似计算积分shit(0,3)x^2dx
#利用循环结构
f = function(x) x^2
x = 0
lb = 0
ub = 3
m = 30000
step = (ub-lb)/m
s = 0
for(i in 1:30000){
s = s + step*f(x)
x = x + step
}
cat(s)
#矩阵方法
f = function(x) x^2
x = seq(0,3,length = 30001)
a = x[2:length(x)]
sum(f(a)*(3/length(a))) #矩形法
###求积分shit(0,4)(x+2)/sqrt(2*x+1)dx
#矩阵方法
f = function(x) (x+2)/sqrt(2*x+1)
x = seq(0,4,by = .001)
a = x[2:(length(x)-1)]
sum(f(a)*.001) #矩形法
#方法2
a=seq(0,4,by=1e-3)
tail(a)
length(a)
f=function(x) (x+2)/sqrt(2*x+1)
sum(f(a[-length(a)])*1e-3) #矩形法
###利用梯形法近似计算积分shit(0,1)exp(-1*x^2)dx
#利用循环结构求解
f = function(x) exp(-1*x^2)
lb = 0
ub = 1
m = 1000
step = (ub - lb)/m
x = 0
s = 0
for(i in 1:m){
long = (f(x)+f(x+step))/2
s = s + step*long
x = x+step###注意这里x也要更新,一步一步递增前进
}
cat(s)
#矩阵方法
f = function(x) exp(-1*x^2)
x = seq(0,1, by = .001)
a = x[1:(length(x)-1)]
b = x[2:length(x)]
c = (a+b)/2
s = sum(f(c)*.001)###注意这里是f(c)即函数值与步长相乘
s
###用矩形法和梯形法近似计算积分shit(0,1)1/(1+x^2)dx,
###并由此计算pi的近似值,n = 6被积函数值取5为小数
#矩形法——循环结构求解
f = function(x) 1/(1+x^2)
lb = 0
ub = 1
m = 1000
step = (ub - lb)/m
x = 0
s = 0
for(i in 1:m){
s = s+f(x)*step
x = x+step
}
p = 4*s;p
round(p,digits = 5)
#矩形法——矩阵方法求解
f = function(x) 1/(1+x^2)
x = seq(0,1,by = .001)
a = x[1:(length(x)-1)]
s = sum(f(a)*step);s
p = 4*s;p
round(p,digits = 5)
#梯形法——循环结构求解
f = function(x) 1/(1+x^2)
lb = 0
ub = 1
m = 1000
step = (ub - lb)/m
x = 0
s = 0
for(i in 1:m){
s = s + ((f(x)+f(x+step))/2)*step
x = x+step
}
p = 4*s;p
round(p,digits = 5)
#梯形法——矩阵方法
f = function(x) 1/(1+x^2)
x = seq(0,1,by = .001)
a = x[1:(length(x)-1)]
b = x[2:length(x)]
c = (a+b)/2
s = sum(f(c)*step)
p = 4*s
round(p,digits = 5)
###定积分在几何上的应用——求弧长
#使用循环结构求解
f = function(x) log((1+sqrt(1-x^2))/x)-sqrt(1-x^2)
lb = 1/2
ub = 1
m = 10000
arc = 0
step = (ub-lb)/m
x = 1/2
for(i in 1:m){
arc = arc + sqrt(step^2 + (f(x+step)-f(x))^2)
x = x + step
}
cat(arc)
#使用矩阵方法求解
f = function(x) log((1+sqrt(1-x^2))/x)-sqrt(1-x^2)
x0 = seq(1/2,1,by = .0001)
x1 = f(x0[1:(length(x0)-1)])
x2 = f(x0[2:(length(x0))])
x = x2 - x1
arc = sum(sqrt(.0001^2+x^2))
arc
###练习题2,求弧长。x = 1/4*y^2-1/2*log(y) 1<=y<=exp(1)
#使用循环结构求解
f = function(y) 1/4*y^2-1/2*log(y)
plot(f,xlim = c(1,exp(1)))
ub = exp(1)
lb = 1
m = 10000
step = (ub-lb)/m
y = 1
s = 0
for(i in 1:m){
s = s + sqrt(step^2 + (f(y+step)-f(y))^2)
y = y+step
}
cat(s)
#使用矩阵方法求解
f = function(y) 1/4*y^2-1/2*log(y)
y0 = seq(1,exp(1),by = .0001)
y1 = f(y0[1:(length(y0)-1)])
y2 = f(y0[2:(length(y0))])
y = y2 - y1
arc = sum(sqrt(.0001^2+y^2))
arc
###定积分在几何上的应用——求面积
f1 = function(x) sqrt(8-x^2)
f2 = function(x) .5*x^2
lb = 0
ub = 2
m = 10000
s = 0
step = (ub-lb)/m
x = 0
for(i in 1:m){
s = s + (f1(x)-f2(x))*step
x = x+step
}
s = 2*s
s
s0 = 8*pi-s
s0
###定积分在几何上的应用——求体积
f1 = function(x) x^2
f2 = function(x) sqrt(x)
lb = 0
ub = 1
m = 10000
v = 0
step = (ub-lb)/m
x = 0
for(i in 1:m){
sd = pi*(f2(x))^2-pi*(f1(x))^2
v = v+ sd*step
x = x+step
}
v
学习R语言编程——常用算法——导数与微积分的近似计算相关推荐
- 学习R语言编程——计算回归直线
#计算回归曲线,并预测x = 1300时的值 A = matrix(nrow = 10,ncol = 2) A[,1] = c(5800,4980,6200,6800,7100,8900,9000,8 ...
- R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比
R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...
- r语言编程基础_这项免费的统计编程课程仅需2个小时即可学习R编程语言基础知识
r语言编程基础 Learn the R programming language in this course from Barton Poulson of datalab.cc. This is a ...
- R语言编程学习之函数与模型:VAR与SVAR和爬虫(图)
R语言编程学习之函数与模型:VAR与SVAR和爬虫(图) SVAR模型与VAR模型在模型设定形式上的区别是,VAR模型只包含变量的滞后项,而SVAR模型还包含了变量的当期项.SVAR模型还可以避免联立 ...
- 独家 | 手把手教你学习R语言(附资源链接)
作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者 ...
- 超级干货 :手把手教你学习R语言(附资源链接)
作者:NSS:翻译:杨金鸿:校对:韩海畴,林亦霖: 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开 ...
- 手把手教你学习R语言
本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...
- 用最酷的方法学习R语言
1. 看大神怎么说 前几天去新疆培训,制作了R语言的基础教程,在翻阅资料时,看到了知乎张敬信关于R学习的观点,很是赞同. 张敬信老师写了一本书<R语言编程–基于tidyverse>,网址: ...
- r语言 悲观剪枝_《R语言编程—基于tidyverse》新书信息汇总
我之前预告过的 R 语言新书,起名为<R语言编程-基于tidyverse>,本书的目的是为了在国内推广 R 语言和 R 语言最新技术,电子版将始终跟踪最新并免费分享.本书非常适合新手 R ...
最新文章
- python列表按照指定顺序排序-Python3实现对列表按元组指定列进行排序的方法分析...
- python数字转换_Python实现中文数字转换为阿拉伯数字的方法示例
- linux df命令无反馈,Linux-df命令
- spark-submit的使用
- 综合实例_为啥要做“三维管线综合”?看个实例就明白
- Visual Stdio下安装WTL的向导Widzard
- 伺服扭矩模式怎么控制_气液增压缸是怎么增压的?气液增压缸好用吗?气液增压缸的原理及其伺服控制...
- 【windows核心编程】IO完成端口(IOCP)复制文件小例
- Media Queries语法总结
- 使用 IntraWeb (14) - 基本控件之 TIWHRule、TIWRectangle
- vscode统计代码行数
- 苹果iPhone一键解锁破解流程(新机篇)
- c语言编写个人收支管理系统,个人收支管理系统
- linux安装protoc
- mac通过u盘启动linux系统,在mac下制作linux启动U盘
- c51单片机超声测距hcsr04在 rtos运行的 实验 基于陈明计先生的smallrtos
- Excel多个工作簿合成为一个工作表
- 第八章:加载Maya2011模型
- 电商api、地图api、视频api、音乐api等各类接口合集,或许对你有用
- [原创]获取还原某音弹幕(web版)
热门文章
- 牛客-郊区春游(状态压缩dp)(java)(c++)
- 李宏毅2020机器学习深度学习 笔记1(理论上持续更新中)
- 简单算法 - 链表逆序思路详解
- 迟来的年度总结 —— 我与 csdn 的故事
- C++优化三板斧:Three Optimization Tips for C++
- 使用wvdial启动ppp协议拨号上网
- error: expected ‘=‘, ‘,‘, ‘;‘, ‘asm‘ or ‘__attribute__‘ before ‘{‘ token
- 【pytorch】yolov4 实现对蛾子数据集的识别 以及 对蛾子图片二值化处理 实现 自动打标签标注。(本文重点在自动实现将图片转化为voc数据集)
- 【一】1D测量 Measuring——translate_measure()算子
- Hive面试题精选-2021