#########################常用算法——导数与微分的近似计算#######################

###例题:用导数的近似计算求函数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语言编程——常用算法——导数与微积分的近似计算相关推荐

  1. 学习R语言编程——计算回归直线

    #计算回归曲线,并预测x = 1300时的值 A = matrix(nrow = 10,ncol = 2) A[,1] = c(5800,4980,6200,6800,7100,8900,9000,8 ...

  2. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  3. r语言编程基础_这项免费的统计编程课程仅需2个小时即可学习R编程语言基础知识

    r语言编程基础 Learn the R programming language in this course from Barton Poulson of datalab.cc. This is a ...

  4. R语言编程学习之函数与模型:VAR与SVAR和爬虫(图)

    R语言编程学习之函数与模型:VAR与SVAR和爬虫(图) SVAR模型与VAR模型在模型设定形式上的区别是,VAR模型只包含变量的滞后项,而SVAR模型还包含了变量的当期项.SVAR模型还可以避免联立 ...

  5. 独家 | 手把手教你学习R语言(附资源链接)

    作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者 ...

  6. 超级干货 :手把手教你学习R语言(附资源链接)

    作者:NSS:翻译:杨金鸿:校对:韩海畴,林亦霖: 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开 ...

  7. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  8. 用最酷的方法学习R语言

    1. 看大神怎么说 前几天去新疆培训,制作了R语言的基础教程,在翻阅资料时,看到了知乎张敬信关于R学习的观点,很是赞同. 张敬信老师写了一本书<R语言编程–基于tidyverse>,网址: ...

  9. r语言 悲观剪枝_《R语言编程—基于tidyverse》新书信息汇总

    我之前预告过的 R 语言新书,起名为<R语言编程-基于tidyverse>,本书的目的是为了在国内推广 R 语言和 R 语言最新技术,电子版将始终跟踪最新并免费分享.本书非常适合新手 R ...

最新文章

  1. python列表按照指定顺序排序-Python3实现对列表按元组指定列进行排序的方法分析...
  2. python数字转换_Python实现中文数字转换为阿拉伯数字的方法示例
  3. linux df命令无反馈,Linux-df命令
  4. spark-submit的使用
  5. 综合实例_为啥要做“三维管线综合”?看个实例就明白
  6. Visual Stdio下安装WTL的向导Widzard
  7. 伺服扭矩模式怎么控制_气液增压缸是怎么增压的?气液增压缸好用吗?气液增压缸的原理及其伺服控制...
  8. 【windows核心编程】IO完成端口(IOCP)复制文件小例
  9. Media Queries语法总结
  10. 使用 IntraWeb (14) - 基本控件之 TIWHRule、TIWRectangle
  11. vscode统计代码行数
  12. 苹果iPhone一键解锁破解流程(新机篇)
  13. c语言编写个人收支管理系统,个人收支管理系统
  14. linux安装protoc
  15. mac通过u盘启动linux系统,在mac下制作linux启动U盘
  16. c51单片机超声测距hcsr04在 rtos运行的 实验 基于陈明计先生的smallrtos
  17. Excel多个工作簿合成为一个工作表
  18. 第八章:加载Maya2011模型
  19. 电商api、地图api、视频api、音乐api等各类接口合集,或许对你有用
  20. [原创]获取还原某音弹幕(web版)

热门文章

  1. 牛客-郊区春游(状态压缩dp)(java)(c++)
  2. 李宏毅2020机器学习深度学习 笔记1(理论上持续更新中)
  3. 简单算法 - 链表逆序思路详解
  4. 迟来的年度总结 —— 我与 csdn 的故事
  5. C++优化三板斧:Three Optimization Tips for C++
  6. 使用wvdial启动ppp协议拨号上网
  7. error: expected ‘=‘, ‘,‘, ‘;‘, ‘asm‘ or ‘__attribute__‘ before ‘{‘ token
  8. 【pytorch】yolov4 实现对蛾子数据集的识别 以及 对蛾子图片二值化处理 实现 自动打标签标注。(本文重点在自动实现将图片转化为voc数据集)
  9. 【一】1D测量 Measuring——translate_measure()算子
  10. Hive面试题精选-2021