R语言编程数学分析重读微积分理解极限算法

目录
  • 1 状态变化
  • 2 极限语言
  • 3 序列与函数
  • 4 极限常数
    • 圆周率 π
  • 自然对数e
  • 5 洛必达法则

1 状态变化

若将数学整体划分为三类,则可概括为代数、几何与分析。对于前两者,我们很早就建立了直观的概念,对于空间结构及其性质的研究,即为几何;以数为核心的研究领域,即为代数。

而分析则具备更多的非数学的内涵,所以初学者往往难以看透数学分析所指向的数学本质,如果望文生义,会更倾向于将“分析”理解为一门数学技巧,而非数学领域。

我们最先接触数学分析时,是将其等同为微积分的。可以认为微积分是数学分析最基本的知识对象,而微积分的理论基础建立在极限之上。所以,我们可以将极限作为分析学的根基,为此,需要去理解极限的本质,而极限本身则是一个动态的过程,例如下面这个重要极限

画图方法有很多,在此使用R语言,在RStudio中画出,之所以用RStudio,是因为其界面对初学者来说更友好。输入

> x = c(1:100)				#定义x为1到100的数组
> y = x*sin(1/x)
> plot(x,y,type='l',xlab='x',ylab='y=x·sin(1/x)')	#画图

得到

可以非常清晰地看到,当x逐渐变大的时候,y是趋于1的。这个趋势可以让我们更加容易理解:极限是一种动态过程;同时有助于形成对分析学的更加直观的印象——分析是建立在状态变化上的一种动态的数学。

一旦建立了这种动态的思维,就会发现原本安定本分的数学世界也发生了微妙的变化,例如,我们又将如何理解1这个整数。

例如无限循环小数0.999...=1这个反直觉的等式是否严格。在初等的观点看来,可以很容易得到 10 × 0.999... = 9.999... → ( 10 − 1 ) ∗ 0.999... = 9 → 0.999... = 1 。

进而敏锐地发现,若用一种不厌其烦的方式去求解分式1 \1,会更加自然地得到0.999...

但无论如何,0.999...=1是反直觉的,反来自于初等数学的直觉。换句话说,初等数学的直觉存在矛盾,我们需要一个更加严格的有关极限的定义和表示,尤其需要建立一种可以称之为相等的映射关系。

2 极限语言

初学数学分析的时候,很多人包括我在内,都对 ε − N深恶痛绝,更妙的是,不理解这种表达方式,对做题似乎影响不大。大部分人通过加深对上面的那三个约定(以及更多约定)的记忆来完成解题,从而避免了加深对数学对象的理解。

其实这个语句并不难理解,当我们最开始接触无穷大这个概念的时候,是在描述自然数的个数。那时我们常说的可能是,无论你举出一个多么大的自然数,我都能举出一个更大的数,所以自然数是无穷的。

> x = c(10:100)
> y = 1-x*sin(1/x)
> > plot(x,y,type='l',xlab='x',ylab='y=1-x·sin(1/x)')

其图像为

3 序列与函数

若从映射的角度去考察序列与函数,则二者最大的区别是定义域。序列是定义域为正整数的特殊函数。相比之下,微积分中大多名之为函数的映射,都定义在实数域上。从而在函数的定义域中,随便抽选出一个区间,其元素个数都是无穷多的。即对于区间 [ a , b ]而言,只要 a ≠ b ,则区间中的元素个数就是无穷多个。

好在我们有了极限的概念,极限在 ε − N意义上重新定义了相等,从而意味着每一个实数都包含了无穷多种初等的表示,即 1 = 0.999...0 = 0.999...1 = 0.999... n , n 1=0.999...0=0.999...1=0.999...n,n为任意长度的数串,中间的无穷多位,导致末位信息在变得毫无意义,乃至于根本不存在最后一位。

这时我们会异想天开地希望建立整数与实数的对应关系,例如将整数环映射到区间 [ − 1 , 1 ] 内,这个区间也会出现实数区间的性质,即任意一个长度大于一的子区间,存在无穷多个元素。但众所周知,实数的个数是比整数更高的无穷,也就是说实数区间 [ − 1 , 1 ] 的元素个数是远多于整数的。

当然,我们此后会接触更多的让人摸不着头脑的函数,这些函数过于奇葩,以至于上面的这些似乎完全不适用呢。。。

4 极限常数

圆周率 π

历史上很早就产生了极限思想,而割圆术就是这种思想的绝佳体现。

N = c(3:100)
Pi = N*sin(pi/N)
plot(N,Pi,type='l',xlab='N',ylab='Pi')

由于到了后面,误差变得越来越小,所以用对数来看一下误差的变化

N = c(3:10000)
err =log(pi-N*sin(pi/N),10)
plot(N,err,type='l',xlab='N',ylab='err')

可见割到了正10000边形,也只能得到 1 0 − 7 10^{-7} 10−7的精度,通过计算可以得到正10000边形算出的圆周率约为3.14159260,所以我们至今也无法知道祖冲之他老人家到底是怎么得到的。

options(digits=15)
10000*sin(pi/10000)
[1] 3.14159260191267

圆周率的这种定义其实也提供了一个重要极限,即

自然对数e

很多人喜欢把自然对数和复利计算联系在一起。

问题来了,是不是随着 n n n逐渐增大,一年的收获会越来越多呢?

为了计算方便,假设 x = 1 ,即正常 W 存一年,一年之后本息翻倍为2W。

结果发现

最终这个值趋近于一个常数,这个常数就定义为 e,看来一年最多翻e倍,这个方法没办法发财了。但至少明白了一个著名的极限

很合理。

欧拉常数 γ

对 e两侧以 e为底取对数,可得

是一个常数:

N = c(1:10000)
for(i in c(1:0000)){
    H[i]=sum(1/N[0:i])
}
plot(N,gamma,type='l',xlab='N',ylab='gamma')
gamma[10000]
[1] 0.577265664068198

我们猜对了,这个常数即欧拉常数。

其证明过程也不复杂

5 洛必达法则

令 N 为常数,则常规的极限运算大致有以下几种

所以,尽管二者都为0,但0和0也有不同。问题是这种不同是否明显?如果定义域在 [ − 1 , 1 ] 这个区间,的确看不出太多的区别

x = seq(-1,1,0.01)  #生成等差数列
plot(x,x^2,type='l')
lines(x,x^3)
lines(x,x^4)
lines(x,x^5)
lines(x,x^6)

然而随着坐标尺度的缩小,区别变得明显起来

> x = seq(-0.1,0.1,0.001)
> plot(x,x^2,type='l')
> lines(x,x^3)

这意味着越是逼近0,不同阶数的幂函数将渐行渐远,回顾极限的定义,对于

受到这种运算形式的启发,对于一个相对复杂的表达式,或许可以对上式进行一点更改

可以画图验证一下二者在趋近于0时的特性

x = seq(-0.01,0.01,0.001)
plot(x,x,ylab="x/sin(x)")
lines(x,sin(x),col='red')

由于实在靠的太近,所以用差的对数来表示一下

x = seq(-0.1,0.1,0.001)
err = log(abs(x-sin(x)),10)
plot(x,err,type='l')

可见这个收敛速度是很快的,当 x = 0.001时,二者之间的差就已经达到了 10^ -9

以上就是R语言编程重读微积分数学分析理解极限算法 的详细内容,更多关于R语言编微积分数学分析极限算法 的资料请关注我们其它相关文章!

(0)

相关推荐

  • R语言是什么 R语言简介

    R是由Ross Ihaka和Robert Gentleman在1993年开发的一种编程语言,R拥有广泛的统计和图形方法目录.它包括机器学习算法.线性回归.时间序列.统计推理等.大多数R库都是用R编写的,但是对于繁重的计算任务,最好使用C.c++和Fortran代码. R不仅在学术界很受欢迎,很多大公司也使用R编程语言,包括Uber.谷歌.Airbnb.Facebook等.用R进行数据分析需要一系列步骤:编程.转换.发现.建模和交流结果 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统

  • R语言编程重读微积分泰勒级数示例详解

    一 理解极限 二 微分学 泰勒级数 如果我是泰勒,我会把思考的起点建立在这样的一个等式上 那么接下来我们直观地感受一下Taylor级数时如何逐渐逼近某个函数的.简单起见,在此选择  sinx作为被拟合的函数. library(ggplot2) library(gganimate) library(av) library(tibble) x = seq(-pi,pi,0.1) n = length(x) xs = rep(x,11) ys = rep(sin(0),n) ts = rep(0,n)

  • R语言基本运算的示例代码

    1.基本运算 1.1 加.减.乘.除 + - * / 在赋值中可以使用=,也可以使用<-. 1.2余数.整除 %% %/% 1.3 取绝对值 abs() 判断正负号sign() 1.4幂指数 ^ 平方根sqart () 1.5 以二为底的对数:log2() 以十为底的对数:log10() 自定义底的对数:log(c,base=) 自然常数e的对数:log(a,base=exp(1)) 2.向量运算 向量是有相同基本类型的元素序列,一维数组,定义向量的最常用办法是使用函数c(),它把若干个数值或字

  • R语言编程数学分析重读微积分理解极限算法

    目录 1 状态变化 2 极限语言 3 序列与函数 4 极限常数 圆周率 π 自然对数e 5 洛必达法则 1 状态变化 若将数学整体划分为三类,则可概括为代数.几何与分析.对于前两者,我们很早就建立了直观的概念,对于空间结构及其性质的研究,即为几何:以数为核心的研究领域,即为代数. 而分析则具备更多的非数学的内涵,所以初学者往往难以看透数学分析所指向的数学本质,如果望文生义,会更倾向于将"分析"理解为一门数学技巧,而非数学领域. 我们最先接触数学分析时,是将其等同为微积分的.可以认为微积

  • R语言编程数学分析重读微积分微分学原理运用

    目录 1 连续性 2 求导 3 数值导数 4 差商与牛顿插值 5 方向导数 6 全微分 7 法线 8 偏导数和边缘检测 基于偏导数的边缘检测 Roberts算子 其他算子 1 连续性 比如下面这个随机函数 x = seq(0,0.1,0.01) y = runif(11,0,1) plot(x,y) lines(x,y) x = seq(0,0.01,0.00001) y = runif(1001,0,1) plot(x,y) 无论我们把区间缩小到什么程度,这种乱糟糟的仿佛要铺满整个坐标图的点的

  • R语言编程学习绘制动态图实现示例

    在讨论级数时,可能需要比对前 n n n项和的变化情况,而随着 n n n的递增,通过动态图来反映这种变化会更加直观,而通过R语言绘制动态图也算是一门不那么初级的技术,所以在此添加一节,补充一下R语言的绘图知识. 绘图需要用到ggplot2,为多张图加上时间轴则需要用到gganimate,为了让这些动态图片被渲染,需要用到av.此外,ggplot2绘图需要输入的数据格式为tibble. install.packages("ggplot2") install.packages("

  • C语言编程计算信噪比SNR理解学习

    目录 概念 计算方法 相关认知 Taprint中的信噪比 实例 概念 这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化. 计算方法 信噪比的计量单位是dB,其计算方法是10lg(Ps/Pn),其中Ps和Pn分别代表信号与噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(Vs/Vn),Vs和Vn分别代表信号和噪声电压的"有效值". 在音频放大器中,我们希望

  • R语言编程学习从Github上安装包解决网络问题

    目录 1. remotes 包安装 2. devtools 包安装 3. 从 gitee.com 上安装 4. 离线安装 1)先从 GitHub 上 下载 zip 压缩文件: 2)在本地 R Studio 上进行安装: 当我们想使用 R 安装一些 Github 相关的软件包,经常会遇到或者或那的网络问题,此时我们需要怎么做呢? 以最近大家分析疫情数据经常用的 Y叔的 nCov2019 包为例,通常我们可以使用如下的尝试顺序: 1. remotes 包安装 install.packages("re

  • R语言基本语法知识点

    我们将开始学习R语言编程,首先编写一个"你好,世界! 的程序. 根据需要,您可以在R语言命令提示符处编程,也可以使用R语言脚本文件编写程序.让我们逐个体验不同之处. 命令提示符 如果你已经配置好R语言环境,那么你只需要按一下的命令便可轻易开启命令提示符 $ R 这将启动R语言解释器,你会得到一个提示 > 在那里你可以开始输入你的程序,具体如下. > myString <- "Hello, World!" > print ( myString) [1]

  • R语言常见面试题整理

    尊敬的读者,这些R语言面试题是专门设计的,以便您应对在R语言相关面试中可能会被问到的问题. 根据我的经验,良好的面试官几乎不打算在你的面试中问任何特定的问题,通常都是以如下的问题为开端进一步展开后继的问题. 什么是R语言编程? R语言是一种用于统计分析和为此目的创建图形的编程语言.不是数据类型,它具有用于计算的数据对象.它用于数据挖掘,回归分析,概率估计等领域,使用其中可用的许多软件包. R语言中的不同数据对象是什么? 它们是R语言中的6个数据对象.它们是向量,列表,数组,矩阵,数据框和表. 什

  • C语言编程深入理解取整取余取模问题示例分析

    目录 1. 取整问题 1.0向取整(C语言默认的取整方案) 2.地板取整(向负无穷的方向取整) 3.天花板取整(向+无穷的方向取整) 4.四舍五入取整 汇总例子 2.取模问题  1.余数的定义 2.两种余数 3.为什么会有这种现象? 3.区分取余与取模 1.取余与与取模的本质区别 2.理解链 3.同符号与不同符号 1.同符号: 2.不同符号 1. 取整问题 1.0向取整(C语言默认的取整方案) #include<stdio.h> #include<windows.h> int ma

随机推荐