三角函数导数,导数

& R语言的导数计算
R语言的导数计算
,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。
R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。
要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。
关于作者:
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
转载请注明出处:
高等数学是每个大学生都要学习的一门数学基础课,同时也可能是考完试后最容易忘记的一门知识。
我在学习高数的时候绞尽脑汁,但始终都不知道为何而学。生活和工作基本用不到,就算是在计算机行业和金融行业,能直接用到高数的地方也少之又少,学术和实际应用真是相差太远了。
不过,R语言为我打开了一道高数应用的大门,R语言不仅能方便地实现高等数学的计算,还可以很容易地把一篇论文中的高数公式应用于产品的实践中。
因为R语言我重新学习了高数,让生活中充满数学,生活会变得更有意思。
本节并不是完整的高数计算手册,仅介绍了导数计算和偏导数计算的R语言实现。
初等函数的导数公式
二阶导数计算
偏导数计算
1. 导数计算
导数(Derivative)是微分学的基本概念,用于计算函数的极值。导数的定义为,当函数y=f(x)在x0的某个领域内有定义,当自变量x在x0处取得增加Δx(点x0+Δx仍在该邻域内)时,相应的函数取得增量Δy=f(x0+Δx)-f(x0);如果Δy与Δx之比当Δx趋于0时的极限存在,则称函数y=f(x)在点x0处可导,并称这个极限为函数y=f(x)在点x0处的导数,记为f`(x0),即
也记作 y’|x=x0 ,dy/dx|x=x0
df(x)/dx|x=x0。
通过R语言可以使用deriv()函数直接进行导数的计算,比如要计算 y=x^3 的导数,根据导数计算公式,用于手动计算的变形结果为 y&#,当x=1时,y’=3,当x=2时,y’=12。
本节的系统环境
Win7 64bit
R: 3.1.1 x86_64-w64-mingw32/x64 (64-bit)
用R语言程序实现,代码如下。
> dx <- deriv(y ~ x^3, "x") ; dx
# 生成导数公式
expression({
.value <- x^3
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- 3 * x^2
attr(.value, "gradient")
# 查看dx变量类型
[1] "expression"
> x eval(dx)
# 运行求导计算
# 原函数的计算结果
attr(,"gradient")
# 使用梯度下降法,导函数的计算结果
# x=1,dx=3*1^2=3
# x=2,dx=3*2^2=12
用R语言程序计算的结果,与我们手动计算的结果是一致的。但计算过程其实是有很大区别的,我们手动计算时是通过给定的导数计算公式,变成后完成的计算。而用计算机程序计算时,是使用梯度下降法来计算一阶导数,是一种最优化的近似算法。对于手动计算导数时,如果函数比较复杂而且比较难应用可变形的公式,那么手动计算就会有非常大的困难,而计算机程序的方法是一般地导数计算方法,不会受到公式难于变形的影响。
我们使用deriv(expr, name)函数时通常要传2个参数,第一参数expr就是原函数公式,用~号来分隔公式的两边,第二参数name用于指定函数的自变量。deriv()函数会返回一个表达式expression类型变量,再用eval()函数运行这个表达式得到就可得到计算结果,如上面的代码实现。
如果希望以函数的形式调用计算公式,那么你还需要传第三个参数func,并让func参数为TRUE,参考下面的代码实现。
计算正弦函数y=sin(x)的导数,根据导数计算公式,用于手动计算的变形结果为 y&#8217;=cos(x),当x=pi时,y&#8217;=-1,当x=4*pi时,y&#8217;=1,其中pi=π表示圆周率。
> dx <- deriv(y ~ sin(x), "x", func= TRUE) ; dx
# 生成导数公式的调用函数
function (x)
.value <- sin(x)
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- cos(x)
attr(.value, "gradient")
# 检查dx的类型
[1] "function"
> dx(c(pi,4*pi))
# 以参数作为自变量,进行函数调用
attr(,"gradient")
# 导函数的计算结果
# x=pi,dx=cos(pi)=-1
# x=4*pi,dx=cos(4*pi)=1
2. 初等函数的导数公式
对于基本的初等函数求导数,通过导数计算公式是可以直接手动完成计算的,下面为一元初等函数的导数计算公式。
y'=n*x^(n-1)
y'=a^x*ln(a)
y=exp(1)^x
y'=exp(1)^x
y=log(x,base=a)
y'=1/(x*ln(a)) (a>0,且a!=1,x>0)
y'=-sin(x)
y'=sec(x)^2=1/cos(x)^2
y'=-csc(x)^2=1/sin(x)^2
y'=sec(x)*tan(x)
y'=-csc(x)*cot(x)
反正弦函数
y=arcsin(x)
y'=1/sqrt(1-x^2)
反余弦函数
y=arccos(x)
y'=-1/sqrt(1-x^2)
反正切函数
y=arctan(x)
y'=1/(1+x^2)
反余切函数
y=arccot(x)
y'=-1/(1+x^2)
反正割函数
y=arcsec(x)
y'=1/abs(x)*(x^2-1)
反余割函数
y=arccsc(x)
y'=-1/abs(x)*(x^2-1)
公式的注释:
y是原函数,x是y函数的自变量,y&#8217;是y函数的导函数。
C,n,a为常数。
ln表示以自然常数e为底的对数
exp(1)表示自然常数e
log(x,base=a)表示,以常数a为底的对数
sqrt表示开平方
abs表示绝对值
正割函数sec,计算方法为 sec=1/cos(x)
余割函数csc,计算方法为 csc=1/sin(x)
余切函数cot,计算方法为 cot=1/tan(x)
注: 以上公式不完全匹配于R语言函数
接下来,我们分别对这些一元初等函数进行一阶导数的计算。设y为原函数,x是y函数的自变量,且只有一个自变量。
计算 y=3+10*x 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#*x ,常数项3的导数为0,当x=1时,y&#8217;=10。
> dx dx(1)
# 传入自变量,并计算
# 原函数计算结果y=3+10*1=13
attr(,"gradient")
# 导函数计算结果y'=10*1=10
计算 y=x^4 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=4*x^3,当x=2时,y&#8217;=32。
> dx dx(2)
attr(,"gradient")
# 导函数计算结果y'=4*x^3=4*2^3=32
计算 y=4^x 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=4^x*ln(4),当x=2时,y&#71。
> dx dx(2)
attr(,"gradient")
[1,] 22.18071
# 导函数计算结果y'=4^x*log(4)=4*2^3=22.18071
计算 y=exp(1)^x 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=exp(1)^x,当x=2时,y&#8217;=y=7.389056。
> dx dx(2)
[1] 7.389056
attr(,"gradient")
[1,] 7.389056
# 导函数计算结果y'=exp(1)^x=exp(1)^2=7.389056
计算 y=ln(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=1/x,当x=2时,y&#。
> dx dx(2)
[1] 0.6931472
attr(,"gradient")
# 导函数计算结果y'=1/x=1/2=0.5
计算 y=log2(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=1/(x*log(2)),当x=3时,y&#8983。
但用R语言编程时,只能计算以自然常数为底的对数的导数,对于原函数不是以自然常数为底的对数,首先要变换成以自然常数为底的对数再进行导数计算,根据对数的换底公式,把以2为底的对数转换为以自然常数为底的对数 y=log2(x)=log(x)/log(2),
> dx dx(3)
[1] 1.584963
attr(,"gradient")
[1,] 0.4808983
# 导函数计算结果y'=1/(x*log(2)=1/(3*log(2)=0.4808983
计算 y=sin(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=cos(x),当x=pi时,y&#8217;=-1,其中pi=π表示圆周率。
> dx dx(pi)
attr(,"gradient")
# 导函数计算结果y'=cos(x)=cos(pi)=-1
计算 y=cos(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=-sin(x),当x=pi/2时,y&#8217;=-1。
> dx dx(pi/2)
attr(,"gradient")
# 导函数计算结果y'=-sin(x)=-sin(pi/2)=-1
计算 y=tan(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为 y&#8217;=sec(x)^2=1/cos(x)^2,当x=pi/6时,y&#333。
> dx dx(pi/6)
[1] 0.5773503
attr(,"gradient")
[1,] 1.333333
# 导函数计算结果y'=1/cos(x)^2=1/cos(pi/6)^2=1.333333
计算 y=cot(x) 函数的导数,由于R语言没有cot()函数,所以根据三角公式我们动手变形原函数为y=cot(x)=1/tan(x)后再进行导数计算,根据导数计算公式,用于手动计算的变形结果为y&#8217;=-csc(x)^2=-1/sin(x)^2,当x=pi/6时,y&#8217;=-4。
> dx dx(pi/6)
[1] 1.732051
attr(,"gradient")
# 导函数计算结果y'=-1/sin(x)^2=-1/sin(pi/6)^2=-4
反正弦函数
计算 y=asin(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=1/sqrt(1-x^2),当x=pi/6时,y&#757。
> dx dx(pi/6)
[1] 0.5510696
attr(,"gradient")
[1,] 1.173757
# 导函数计算结果y'=1/sqrt(1-x^2)=1/sqrt(1-(pi/6)^2)=1.173757
反余弦函数
计算 y=acos(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#8217;=-1/sqrt(1-x^2),当x=pi/8时,y&#8217;=-1.08735。
> dx dx(pi/8)
[1] 1.167232
attr(,"gradient")
[1,] -1.08735
# 导函数计算结果y'=-1/sqrt(1-x^2)=-1/sqrt(1-(pi/8)^2)=-1.08735
反正切函数
计算 y=atan(x) 函数的导数,根据导数计算公式,用于手动计算的变形结果为y&#+x^2),当x=pi/6时,y&#8335。
> dx dx(pi/6)
[1] 0.4823479
attr(,"gradient")
[1,] 0.7848335
# 导函数计算结果y'= 1/(1+x^2) = 1/(1+(pi/6)^2)=0.7848335
3. 二阶导数计算
当我们对一个函数进行多次接连的求导计算,会形成高阶导数。
一般的,函数y=f(x)的导数y&#8217;=f'(x)仍然是x的函数,我们就把y&#8217;=f'(x)的导数叫做函数y=f(x)的二阶导数,记作y&#8221;,即
一阶导数的导数叫做二阶导数,二阶导数的导数叫做三阶导数,N-1阶导数的导数叫做N阶导数,习惯上把二阶以上的导数称之为高阶导数,
比如,计算 y=sin(a*x) 函数的二阶导数导数y&#8221;,其中a为常数,根据导数计算公式,用于手动计算的变形结果为一阶导数为y&#8217;=a*cos(a*x),对y&#8217;再求导公式变形为,y&#8221;=-a^2*sin(a*x)
用R语言进行程序实现
> a dx dx(pi/3)
# 计算一阶导数
[1] 0.8660254
attr(,"gradient")
# 导函数计算结果y'= a*cos(a*x)=2*cos(2*pi/3)=-1
> dx dx(pi/3)
attr(,"gradient")
[1,] -3.464102
# 导函数计算结果y'= -a^2*sin(a*x)=-2^2*sin(2*pi/3)=-3.464102
上面二阶导数的计算,我们是动手划分为两次求导进行计算的,利用deriv3()函数其实合并成一步计算。
> dx dx(pi/3)
# 计算导数
[1] 0.8660254
attr(,"gradient")
# 一阶导数结果
attr(,"hessian")
[1,] -3.464102
# 二阶导数结果
我们再计算另外一个二阶导数,计算y=a*x^4+b*x^3+x^2+x+c,其中a,b,c为常数a=2,b=1,c=3,
根据导数计算公式,用于手动计算的变形结果为一阶导数为y&#8217;=2*x^4+x^3+x^2+x+3=4*2*x^3+3*x^2+2*x+1,当x=2时,y&#8217;=81,
对y&#8217;再求导公式变形为,y&#*2*x^2+2*3*x+2,当x=2时,y&#。
> dx dx(2)
attr(,"gradient")
# 一阶导数结果
attr(,"hessian")
# 二阶导数结果
这样就直接完成了二阶导数的计算,在R语言中二阶导数是可以直接求出的,想计算更高阶的导数就需要其他的数学工具包了。
4. 偏导数计算
在一元函数中,我们已经知道导数就是函数的变化率。对于二元函数我们同样要研究它的“变化率”。然而,由于自变量多了一个,情况就要复杂的多。在数学中,一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化)。
偏导数的算子符号为:?。记作?f/?x 或者 f&#8217;x。偏导数反映的是函数沿坐标轴正方向的变化率,在向量分析和微分几何中是很有用的。
在xOy平面内,当动点由P(x0,y0)沿不同方向变化时,函数f(x,y)的变化快慢一般说来是不同的,因此就需要研究f(x,y)在(x0,y0)点处沿不同方向的变化率。在这里我们只学习函数f(x,y)在x0y平面沿着平行于x0y轴和平行于y轴两个特殊方位变动时,f(x,y)的变化率。
x方向的偏导:
设有二元函数z=f(x,y),点(x0,y0)是其定义域D内一点.把y固定在y0而让x在x0有增量△x,相应地函数z=f(x,y)有增量(称为对x的偏增量)△z=f(x0+△x,y0)-f(x0,y0)。如果△z与△x之比当△x→0时的极限存在,那么此极限值称为函数z=f(x,y)在(x0,y0)处对x的偏导数(partial derivative)。记作f&#8217;x(x0,y0)。
y方向的偏导:
函数z=f(x,y)在(x0,y0)处对x的偏导数,实际上就是把y固定在y0看成常数后,一元函数z=f(x,y0)在x0处的导数。同样,把x固定在x0,让y有增量△y,如果极限存在那么此极限称为函数z=(x,y)在(x0,y0)处对y的偏导数。记作f&#8217;y(x0,y0)
同样地,我们可以通过R语言的 deriv()函数进行偏导数的计算。下面我们计算一个二元函数f(x,y)=2*x^2+y+3*x*y^2的偏导数,由于二元函数曲面上每一点都有无穷多条切线,描述这个函数的导数就会相当困难。如果让其中的一个变量y取值为常数,那么就可以求出关于另一个自变量x的偏导数了,即?f/?x。
下面我们分别对x,y两个自变量求偏导数,设变量y为常数,计算x的偏导数?f/?x=4*x+3*y^2,当x=1,y=1时,x的偏导数?f/?x=4*x+3*y^2=7。设变量x为常数,计算y的偏导数?f/?y=1+6*x*y,当x=1,y=1时,y的偏导数?f/?x=1+6*x*y=7。
用R语言程序实现。
> fxy = expression(2*x^2+y+3*x*y^2)
# 二元函数公式
> dxy = deriv(fxy, c("x", "y"), func = TRUE)
function (x, y)
.expr4 <- 3 * x
.expr5 <- y^2
.value <- 2 * x^2 + y + .expr4 * .expr5
.grad <- array(0, c(length(.value), 2L), list(NULL, c("x","y")))
.grad[, "x"] <- 2 * (2 * x) + 3 * .expr5
.grad[, "y"] <- 1 + .expr4 * (2 * y)
attr(.value, "gradient")
# 设置自变量
attr(,"gradient")
# 计算结果,x的偏导数为7,y的偏导数为7
偏导数的程序计算结果与手动计算结果是一致的。下面我们再求一个复杂函数偏导数,计算一个二元函数f(x,y)=x^y + exp(x * y) + x^2 &#8211; 2 * x * y + y^3 + sin(x*y)在点(1,3)和点(0,0)的偏导数。
R语言程序实现。
> fxy = expression(x^y + exp(x * y) + x^2 - 2 * x * y + y^3 + sin(x*y))
> dxy = deriv(fxy, c("x", "y"), func = TRUE)
> dxy(1,3)
# 设置自变量
[1] 43.22666
attr(,"gradient")
[1,] 56.54
# 计算结果,x的偏导数为56.28663,y的偏导数为 44.09554
> dxy(0,0)
attr(,"gradient")
[1,] NaN -Inf
# 计算结果,x的偏导数无意义,y的偏导数负无穷大
对于计算的结果,有异议的同学,可以尝试动手计算。
本文我们掌握了R语言对于高等数学的导数计算方法,真的是非常方便,这下更有动力学习高数了。
转载请注明出处:
This entry was posted in
Designed by灰导数的概念及简单灰函数的导数--《河北煤炭建筑工程学院学报》1992年03期
灰导数的概念及简单灰函数的导数
【摘要】:本文在灰函数和灰极限的基础上,给出了灰函数的导数(或灰导数)的定义,并研究了简单灰函数导数。
【作者单位】:
【关键词】:
【正文快照】:
1灰导数的概念 在《灰色数学引论》专著第三章第4节“灰函数”中已给出了实函数的灰延拓的法则: 设y~f(x)是一般实函数,x只取实数值,y也只取实数值,则灰延拓规定: f([a,“])一几瓢f(x),二忿跟〕f(x)〕,f(压:石〕)一〔二咨拱、〕f(x):二里既〕f(x)〕其中f(x)只有在以,司中至少
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【相似文献】
中国重要会议论文全文数据库
戴文战;李燕;杨爱萍;;[A];中国自动化学会控制理论专业委员会C卷[C];2011年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号求助数学达人:可导函数的导函数一定连续吗?谁能给我一个函数可导但导函数不连续的例子! | 数学午餐会小组 | 果壳网 科技有意思
36442人加入此小组
求助数学达人:可导函数的导函数一定连续吗?谁能给我一个函数可导但导函数不连续的例子!
+ 加入我的果篮
语言爱好者
你要的函数在这里:在x=0时补充定义f(x)=0。这个函数是处处可导的,但是导函数在趋近0时剧烈振荡,不连续。
引用 的话:?函数在处不可导吧
正玄函数,随便去掉一个点,这样的函数一样可导,但是导函数余玄函数,在去掉的那个点的地方不连续
语言爱好者
你要的函数在这里:在x=0时补充定义f(x)=0。这个函数是处处可导的,但是导函数在趋近0时剧烈振荡,不连续。
设F为具有正测度的有界闭疏集,a=inf F,b=sup F,f(x)定义在[a,b]上,它在F上等于0,在F关于[a,b]的余区间(a_n,b_n)上等于易证(...),在[a,b]上处处存在有限的f'(x),故f(x)在F上连续,但是导函数f'(x)在F的所有点上不连续例子来自柯尔莫哥洛夫
4楼,5楼是经典例子。3楼的例子不能成立,正弦函数去掉一点后定义域也发生变化,在去掉的点上不应该有导数定义。
3L的例子定义域有瑕疵
一个简单的例子:y=x^(1/2).
引用 的话:一个简单的例子:y=x^(1/2).0不可导
这类函数应该存在,但一时也找不出来了.一般常用的方法就是通过题意构造,在一元函数里找有但可能比较难构造,建议在多元函数里相对来说要容易构造一点.
当x&1时 y=x当x&-1时 y=-x当在区间 [-1,1] 时 y=x^2 这个分段函数可导但是二次导在-1和+1处不可导
对任意一个连续但是不可导的函数积分得到的函数就满足你说的函数
f(x)=x^2sin(1/x)whenx !=0 0 when x=0
但是导函数有介值性质,取便所有值,即便它可能不连续。所以导函数没有一类不连续点
引用 的话:当x&1时 y=x当x&-1时 y=-x当在区间 [-1,1] 时 y=x^2这个分段函数可导但是二次导在-1和+1处不可导我说的是可导函数哦
引用 的话:对任意一个连续但是不可导的函数积分得到的函数就满足你说的函数连续函数积分所得函数的导函数就是这个连续函数啊,怎么会不连续呢?
这是连续不可导!
引用 的话:正解,谢谢!
可导必定连续!
(C)2016果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号matlab函数求导_百度知道
matlab函数求导
已缉供光佳叱簧癸伪含镰知函数f(x)=e^(x&#47;2)sin2x,x∈[2,3π]。使用Matlab软件,完成下面的实验任务:(1)求出函数的一阶导数,二阶导数,并画出它们相应的曲线。 (2)观察函数的单调区间,凹凸区间,以及极值点和拐点。
提问者采纳
f=exp(缉供光佳叱簧癸伪含镰x./2)*sin(2*x);y1=diff(f,2,3*pi)y2=diff(y1,2,3*pi)
提问者评价
其他类似问题
23人觉得有用
为您推荐:
求导的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【图文】函数的最值与导数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
函数的最值与导数
上传于||暂无简介
大小:664.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 函数的导数 的文章

 

随机推荐