歡迎關(guān)注天山智能微信微信官方賬號(hào)。我們是一個(gè)專注于商業(yè)智能、大數(shù)據(jù)和數(shù)據(jù)分析的垂直社區(qū)。對(duì)商業(yè)智能BI、大數(shù)據(jù)分析與挖掘、機(jī)器學(xué)習(xí)、python、R等數(shù)據(jù)領(lǐng)域感興趣的同學(xué)加微信:tstoutiao,邀請(qǐng)你進(jìn)入頭條數(shù)據(jù)愛好者交流群,數(shù)據(jù)愛好者都在這里。
前言
高等數(shù)學(xué)是每個(gè)大學(xué)生的基礎(chǔ)課,也可能是考試后最容易遺忘的知識(shí)。
我在研究高數(shù)的時(shí)候絞盡腦汁,卻一直不知道自己為什么在研究。生活工作中基本不用。即使在計(jì)算機(jī)行業(yè)和金融行業(yè),能直接使用高數(shù)的地方也是少之又少。學(xué)術(shù)和實(shí)際應(yīng)用真的相差很遠(yuǎn)。
但是,R語言為我應(yīng)用高數(shù)打開了一扇門。r語言不僅可以方便地實(shí)現(xiàn)高等數(shù)學(xué)的計(jì)算,而且可以很容易地將一篇論文中的高數(shù)公式應(yīng)用到產(chǎn)品的實(shí)踐中。
因?yàn)镽語言,我重新學(xué)習(xí)了高數(shù),讓我的生活充滿了數(shù)學(xué),讓我的生活更加有趣。
本節(jié)不是完整的高數(shù)計(jì)算手冊(cè),只介紹了導(dǎo)數(shù)計(jì)算和偏導(dǎo)數(shù)計(jì)算在R語言中的實(shí)現(xiàn)。
目錄
導(dǎo)數(shù)計(jì)算初等函數(shù)的導(dǎo)數(shù)公式二階導(dǎo)數(shù)計(jì)算偏導(dǎo)數(shù)計(jì)算 1. 導(dǎo)數(shù)計(jì)算導(dǎo)數(shù)是微分學(xué)的基本概念,用來計(jì)算一個(gè)函數(shù)的極值。導(dǎo)數(shù)定義為:當(dāng)函數(shù)y=f(x)在x0的某個(gè)域中定義時(shí),當(dāng)自變量x在x0處(點(diǎn)x0+δ x仍在鄰域中)獲得δ x時(shí),對(duì)應(yīng)的函數(shù)獲得δy = f(x0+δx)-f(x0);如果δ x趨于0時(shí)存在δ y與δ x比值的極限,則函數(shù)y=f(x)在點(diǎn)x0處可導(dǎo),這個(gè)極限稱為函數(shù)y=f(x)在點(diǎn)x0處的導(dǎo)數(shù),表示為f`(x0),即
也寫成y'|x=x0,dy/dx|x=x0或df(x)/dx|x=x0。
用r語言,可以直接用deriv()函數(shù)計(jì)算導(dǎo)數(shù)。例如,要計(jì)算y = x ^ 3的導(dǎo)數(shù),根據(jù)導(dǎo)數(shù)計(jì)算公式,手動(dòng)計(jì)算的變形結(jié)果為y' = 3x ^ 2,x=1,y ' = 3,x=2,y'=12。
本節(jié)中的系統(tǒng)環(huán)境
Win7 64bitR: 3.1.1 x86_64-w64-mingw32/x64 (64-bit)使用R語言編程,代碼如下。
>。dx <。-德里夫(y ~ x^ 3,“x”);Dx #生成導(dǎo)數(shù)公式
表達(dá)式({
。價(jià)值<。- x^ 3
。grad <。- array( 0,c(長(zhǎng)度(。值)、1L)、列表(空、c( "x "))
。grad[," x"] <。- 3* x^ 2
attr(。值,“梯度”)& lt- .畢業(yè)生
。價(jià)值
})
>。模式(dx) #查看dx變量類型
[ 1]“表達(dá)式”
>。x<。-1: 2#給自變量x賦值
>。Eval(dx) #運(yùn)行導(dǎo)數(shù)計(jì)算
[1]18 #原始函數(shù)的計(jì)算結(jié)果
Attr(,“梯度”)#采用梯度下降法推導(dǎo)函數(shù)的計(jì)算結(jié)果
x
[ 1,] 3# x=1,dx=3*1^2=3
[ 2,] 12# x=2,dx=3*2^2=12
R語言程序計(jì)算的結(jié)果和我們手算的結(jié)果是一致的。但是,計(jì)算過程卻大不相同。當(dāng)我們手工計(jì)算時(shí),通過給定的導(dǎo)數(shù)計(jì)算公式,就變成了一個(gè)完工后的計(jì)算。計(jì)算機(jī)程序計(jì)算時(shí),采用梯度下降法計(jì)算一階導(dǎo)數(shù),這是一種優(yōu)化的近似算法。手動(dòng)計(jì)算導(dǎo)數(shù)時(shí),如果函數(shù)比較復(fù)雜,難以應(yīng)用可變形公式,那么手動(dòng)計(jì)算會(huì)非常困難,而計(jì)算機(jī)程序的方法是一種通用的導(dǎo)數(shù)計(jì)算方法,不會(huì)受到公式變形難度的影響。
當(dāng)我們使用deriv(expr,name)函數(shù)時(shí),我們通常會(huì)傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)expr是原函數(shù)公式,公式兩邊用~隔開,第二個(gè)參數(shù)名用來指定函數(shù)的自變量。deriv()函數(shù)會(huì)返回一個(gè)表達(dá)式類型變量,然后用eval()函數(shù)運(yùn)行這個(gè)表達(dá)式得到計(jì)算結(jié)果,如上面的代碼所實(shí)現(xiàn)的。
如果要以函數(shù)的形式調(diào)用計(jì)算公式,那么需要傳遞第三個(gè)參數(shù)func,并且讓func參數(shù)為TRUE,參考下面的代碼實(shí)現(xiàn)。
計(jì)算正弦函數(shù)y=sin(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=cos(x)。當(dāng)x=pi,y ' =-1;當(dāng)x=4*pi,y'=1時(shí),其中pi=π表示pi。
>。dx <。- deriv(y ~ sin(x)," x ",func = TRUE);Dx #生成導(dǎo)數(shù)公式的調(diào)用函數(shù)
函數(shù)(x)
{
。價(jià)值<。- sin(x)
。grad <。- array( 0,c(長(zhǎng)度(。值)、1L)、列表(空、c( "x "))
。grad[," x"] <。- cos(x)
attr(。值,“梯度”)& lt- .畢業(yè)生
。價(jià)值
}
>。模式(dx) #檢查dx的類型
[ 1]“功能”
>。Dx(c(pi,4*pi)) #以參數(shù)為自變量,進(jìn)行函數(shù)調(diào)用
[ 1] 1.224606e-16- 4.898425e-16
attr(,“梯度”)
x #導(dǎo)數(shù)函數(shù)的計(jì)算結(jié)果
[ 1,] - 1# x=pi,dx=cos(pi)=-1
[2,] 1# x=4*pi,dx=cos(4*pi)=12。初等函數(shù)的導(dǎo)數(shù)公式
對(duì)于計(jì)算導(dǎo)數(shù)的基本初等函數(shù),可以通過導(dǎo)數(shù)計(jì)算公式直接手動(dòng)進(jìn)行計(jì)算。下面是一元初等函數(shù)的導(dǎo)數(shù)計(jì)算公式。
函數(shù)原函數(shù)的導(dǎo)函數(shù)
常數(shù)函數(shù)y=C y'= 0
冪函數(shù)y = x ny' = n * x (n-1)
指數(shù)函數(shù)y = a x y' = a x * ln (a)
y=exp(1)^x y'=exp(1)^x
對(duì)數(shù)函數(shù)y = log (x,base = a) y' = 1/(x * ln (a)) (a >: 0,a!=1,x>。0)
y=ln(x) y'=1/x
正弦函數(shù)y=sin(x) y'=cos(x)
余弦函數(shù)y=cos(x) y'=-sin(x)
正切函數(shù)y = tan(x)y’= sec(x)2 = 1/cos(x)2
共切線函數(shù)y = cot (x) y' =-CSC (x) 2 = 1/sin (x) 2
割線函數(shù)y=sec(x) y'=sec(x)*tan(x)
共割函數(shù)y=csc(x) y'=-csc(x)*cot(x)
反正弦函數(shù)y =反正弦(x)y’= 1/sqrt(1-x ^ 2)
反余弦函數(shù)y = arccos (x) y' =-1/sqrt (1-x 2)
反正切函數(shù)y =反正切(x)y’= 1/(1+x ^ 2)
反余切函數(shù)y = arccot(x)y ' =-1/(1+x ^ 2)
反正切函數(shù)y = arcsec(x)y ' = 1/ABS(x)*(x ^ 2-1)
函數(shù)y = arc CSC(x)y ' =-1/ABS(x)*(x ^ 2-1)
對(duì)公式的評(píng)論:
y是原函數(shù),x是y函數(shù)的自變量,y’是y函數(shù)的導(dǎo)函數(shù)。C,n,a為常數(shù)。ln表示以自然常數(shù)e為底的對(duì)數(shù)exp(1)表示自然常數(shù)elog(x,base=a)表示,以常數(shù)a為底的對(duì)數(shù)sqrt表示開平方abs表示絕對(duì)值正割函數(shù)sec,計(jì)算方法為 sec=1/cos(x)余割函數(shù)csc,計(jì)算方法為 csc=1/sin(x)余切函數(shù)cot,計(jì)算方法為 cot=1/tan(x)注意:以上公式與R語言函數(shù)不完全匹配
接下來,我們計(jì)算這些一元初等函數(shù)的一階導(dǎo)數(shù)。設(shè)y為原函數(shù),x為只有一個(gè)自變量的y函數(shù)的自變量。
常數(shù)函數(shù)
計(jì)算y=3+10*x函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=0+10*x,常數(shù)項(xiàng)3的導(dǎo)數(shù)為0,當(dāng)x=1時(shí),y'=10。
>。dx<。-deriv (y ~ 3+10 * x,“x”,func = true) #生成函數(shù)形式的導(dǎo)數(shù)公式
>。Dx( 1) #傳入自變量并計(jì)算
[1] 13#原始函數(shù)計(jì)算結(jié)果y=3+10*1=13
attr(,“梯度”)
x
[1,] 10#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y'=10*1=10
冪函數(shù)
計(jì)算函數(shù)y = x ^ 4的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y' = 4 * x 3。當(dāng)x=2時(shí),y'=32。
>。dx<。-deriv(y~x^ 4,“x”,func = TRUE)
>。dx( 2)
[ 1] 16
attr(,“梯度”)
x
[1,]導(dǎo)函數(shù)# 32 y '的計(jì)算結(jié)果= 4 * x 3 = 4 * 2 3 = 32
指數(shù)函數(shù)
計(jì)算y = 4 x函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y′= 4×ln(4)。當(dāng)x=2時(shí),y'=22.18071。
>。dx<。-德里夫(y~ 4^x,“x”,func = TRUE)
>。dx( 2)
[ 1] 16
attr(,“梯度”)
x
[1,] 22.18071#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' = 4 x * log(4)= 4 * 2 ^ 3 = 22.18071
計(jì)算y = exp (1) x函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y' = exp (1) x,當(dāng)x=2時(shí),y'=y=7.389056。
>。dx<。-deriv(y~exp( 1)^x,“x”,func = TRUE)
>。dx( 2)
[ 1] 7.389056
attr(,“梯度”)
x
[1,] 7.389056#導(dǎo)函數(shù)計(jì)算結(jié)果y' = exp (1) x = exp (1) 2 = 7.389056
對(duì)數(shù)函數(shù)
計(jì)算函數(shù)y=ln(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=1/x,當(dāng)x=2時(shí),y'=0.5。
>。dx<。-deriv(y~log(x)," x ",func = TRUE)
>。dx( 2)
[ 1] 0.6931472
attr(,“梯度”)
x
[1,] 0.5#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y'=1/x=1/2=0.5
計(jì)算函數(shù)y=log2(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=1/(x*log(2))。當(dāng)x=3時(shí),y'=0.4808983。
但是用R語言編程時(shí),只能根據(jù)自然常數(shù)計(jì)算對(duì)數(shù)的導(dǎo)數(shù)。如果原函數(shù)不是基于自然常數(shù)的對(duì)數(shù),那么首先要將其轉(zhuǎn)化為基于自然常數(shù)的對(duì)數(shù),然后再計(jì)算導(dǎo)數(shù)。根據(jù)對(duì)數(shù)代入公式,將基于2的對(duì)數(shù)轉(zhuǎn)化為基于自然常數(shù)y=log2(x)=log(x)/log(2)的對(duì)數(shù)。
>。dx<。-deriv(y~ log(x)/ log( 2)," x ",func = TRUE)
>。dx( 3)
[ 1] 1.584963
attr(,“梯度”)
x
[1,] 0.4808983#導(dǎo)函數(shù)計(jì)算結(jié)果y ' = 1/(x * log(2)= 1/(3 * log(2)= 0.4808983。
正弦函數(shù)
計(jì)算函數(shù)y=sin(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=cos(x)。當(dāng)x=pi,y'=-1,其中pi=π代表pi。
>。dx<。-deriv(y~sin(x)," x ",func = TRUE)
>。dx(pi)
[ 1] 1.224606e-16
attr(,“梯度”)
x
[1,]-1#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y'=cos(x)=cos(pi)=-1
余弦函數(shù)
計(jì)算函數(shù)y=cos(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y'=-sin(x),當(dāng)x=pi/2時(shí),y'=-1。
>。dx<。-deriv(y~cos(x)," x ",func = TRUE)
>。dx(pi/ 2)
[ 1] 6.123032e-17
attr(,“梯度”)
x
[1,]-1#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y'=-sin(x)=-sin(pi/2)=-1
正切函數(shù)
計(jì)算y=tan(x)函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y' = sec (x) 2 = 1/cos (x) 2,當(dāng)x=pi/6時(shí),y' = 1.33333。
>。dx<。-deriv(y~tan(x)," x ",func = TRUE)
>。dx(pi/ 6)
[ 1] 0.5773503
attr(,“梯度”)
x
[1,] 1.333333#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' = 1/cos(x)2 = 1/cos(pi/6)2 = 1.333333
余切函數(shù)
計(jì)算y=cot(x)函數(shù)的導(dǎo)數(shù)。由于R語言中沒有cot()函數(shù),我們根據(jù)三角公式手工將原函數(shù)變形為y=cot(x)=1/tan(x),然后計(jì)算導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為Y' =-CSC (x) 2 =-1/sin
>。dx<。-deriv(y~ 1/tan(x)," x ",func = TRUE)
>。dx(pi/ 6)
[ 1] 1.732051
attr(,“梯度”)
x
[1,]-4#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y' =-1/sin (x) 2 =-1/sin (pi/6) 2 =-4
反正弦
計(jì)算函數(shù)y=asin(x)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y' = 1/sqrt (1-x 2)。當(dāng)x=pi/6,y'=1.173757。
>。dx<。-deriv(y~asin(x)," x ",func = TRUE)
>。dx(pi/ 6)
[ 1] 0.5510696
attr(,“梯度”)
x
[1,] 1.173757#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' = 1/sqrt(1-x 2)= 1/sqrt(1-(pi/6)2)= 1.173757
反余弦函數(shù)
計(jì)算y=acos(x)函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y' =-1/sqrt (1-x 2),當(dāng)x=pi/8時(shí),y'=-1.08735。
>。dx<。-deriv(y~acos(x)," x ",func = TRUE)
>。dx(pi/ 8)
[ 1] 1.167232
attr(,“梯度”)
x
[1,]-1.08735#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' =-1/sqrt(1-x 2)=-1/sqrt(1-(pi/8)2)=-1.08735
反正切
計(jì)算y=atan(x)函數(shù)的導(dǎo)數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y ' = 1/(1+x ^ 2),當(dāng)x=pi/6時(shí),y'=0.7848335。
>。dx<。-deriv(y~atan(x)," x ",func = TRUE)
>。dx(pi/ 6)
[ 1] 0.4823479
attr(,“梯度”)
x
[1,] 0.7848335#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' = 1/(1+x ^ 2)= 1/(1+(pi/6)2)= 0.78483353。二階導(dǎo)數(shù)計(jì)算
當(dāng)我們連續(xù)幾次計(jì)算一個(gè)函數(shù)的導(dǎo)數(shù)時(shí),就會(huì)形成高階導(dǎo)數(shù)。
一般函數(shù)y=f(x)的導(dǎo)數(shù)y'=f'(x)仍然是x的函數(shù),所以我們稱導(dǎo)數(shù)y'=f'(x)為函數(shù)y=f(x)的二階導(dǎo)數(shù),記為y”,即。
一階導(dǎo)數(shù)的導(dǎo)數(shù)叫二階導(dǎo)數(shù),二階導(dǎo)數(shù)的導(dǎo)數(shù)叫三階導(dǎo)數(shù),N-1階導(dǎo)數(shù)的導(dǎo)數(shù)叫N階導(dǎo)數(shù),習(xí)慣上把二階以上的導(dǎo)數(shù)叫高階導(dǎo)數(shù)。
例如,計(jì)算函數(shù)y=sin(a*x)的二階導(dǎo)數(shù)y”,其中a為常數(shù)。根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果是一階導(dǎo)數(shù)為y'=a*cos(a*x),y '的導(dǎo)數(shù)公式變形為y " =-a ^ 2 * sin(a * x)
用R語言實(shí)現(xiàn)程序
>。a<。-2#設(shè)置a的值
>。dx<。-deriv (y ~ sin (a * x)," x ",func = true) #生成一階導(dǎo)數(shù)公式
>。Dx(pi/ 3) #計(jì)算一階導(dǎo)數(shù)
[ 1] 0.8660254
attr(,“梯度”)
x
[1,]-1#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y'= a*cos(a*x)=2*cos(2*pi/3)=-1
>。dx<。-deriv (y ~ a * cos (a * x)," x ",func = true) #導(dǎo)出一階導(dǎo)數(shù)函數(shù)
>。dx(pi/ 3)
[ 1] - 1
attr(,“梯度”)
x
[1,]-3.464102#導(dǎo)數(shù)函數(shù)計(jì)算結(jié)果y ' =-a 2 * sin(a * x)=-2 2 * sin(2 * pi/3)=-3.464102
上面二階導(dǎo)數(shù)的計(jì)算是手工分兩次求導(dǎo),實(shí)際上是利用deriv3()函數(shù)合并成一步計(jì)算。
>。dx<。-deriv3 (y ~ sin (a * x)," x ",func = true) #生成二階導(dǎo)數(shù)公式
>。Dx(pi/ 3) #計(jì)算導(dǎo)數(shù)
[ 1] 0.8660254
attr(,“梯度”)
x
[1,]-1#的一階導(dǎo)數(shù)結(jié)果
attr(," hessian ")
,,x
x
[1,]-3.464102#二階導(dǎo)數(shù)結(jié)果
我們計(jì)算另一個(gè)二階導(dǎo)數(shù),計(jì)算y = a * x 4+b * x 3+x 2+x+c,其中a、b和c是常數(shù)a = 2、b = 1和c = 3。
根據(jù)導(dǎo)數(shù)計(jì)算公式,人工計(jì)算的變形結(jié)果為y ' = 2 * x 4+x 3+x 2+x 3 = 4 * 2 * x 3+3 * x 2+2 * x+1,當(dāng)x=2時(shí),y'=81。
y '的導(dǎo)數(shù)公式變形為:y "= 3 * 4 * 2 * x 2+2 * 3 * x+2,當(dāng)x=2時(shí),y" = 110。
>。dx<。-deriv3 (y ~ a * x 4+b * x 3+x 2+x+c," x ",func = function (x,a = 2,b = 1,c = 3) {}) #通過func參數(shù)指定一個(gè)常數(shù)值
>。dx( 2)
[ 1] 49
attr(,“梯度”)
x
[1,]81的一階導(dǎo)數(shù)結(jié)果
attr(," hessian ")
,,x
x
[1,] 110#的二階導(dǎo)數(shù)結(jié)果
這樣可以直接計(jì)算二階導(dǎo)數(shù)。在R語言中,可以直接計(jì)算二階導(dǎo)數(shù)。如果要計(jì)算高階導(dǎo)數(shù),需要其他數(shù)學(xué)工具包。
4.偏導(dǎo)數(shù)計(jì)算
在一元函數(shù)中,我們已經(jīng)知道導(dǎo)數(shù)是函數(shù)的變化率。對(duì)于二元函數(shù),也要研究它的“變化率”。但是因?yàn)槎嗔艘粋€(gè)自變量,情況就復(fù)雜多了。在數(shù)學(xué)中,多元函數(shù)的偏導(dǎo)數(shù)是它相對(duì)于一個(gè)變量的導(dǎo)數(shù),同時(shí)保持其他變量不變(相對(duì)于全導(dǎo)數(shù),其中所有變量都允許變化)。
偏導(dǎo)數(shù)的運(yùn)算符符號(hào)是:。寫成f/x或f’x,偏導(dǎo)數(shù)反映了函數(shù)沿坐標(biāo)軸正方向的變化率,在向量分析和微分幾何中非常有用。
在xOy平面上,當(dāng)運(yùn)動(dòng)點(diǎn)從P(x0,y0)向不同方向變化時(shí),函數(shù)f(x,y)的變化速度一般是不一樣的,所以需要研究f(x,y)在(x0,y0)向不同方向的變化率。這里只學(xué)習(xí)函數(shù)f(x,y)在x0y平面內(nèi)沿平行于x0y軸和y軸的兩個(gè)特殊方向變化時(shí)f(x,y)的變化率。
x方向的偏導(dǎo)數(shù):
有一個(gè)二元函數(shù)z=f(x,y),點(diǎn)(x0,y0)是其定義域d中的一個(gè)點(diǎn),y固定在y0,x在x0有一個(gè)增量△ x,所以函數(shù)z=f(x,y)有一個(gè)增量(稱為對(duì)x的部分增量)△ z = f (x0+△ x,y0)如果△x→0時(shí)△ z與△x之比的極限存在,那么這個(gè)極限值稱為函數(shù)z =的偏導(dǎo)數(shù)寫成f'x(x0,y0)。
y方向的偏導(dǎo)數(shù):
函數(shù)z=f(x,y)到x at (x0,y0)的偏導(dǎo)數(shù),實(shí)際上是y作為常數(shù)固定在y0后,一元函數(shù)z=f(x,y0)在x0的導(dǎo)數(shù)。同理,x固定在x0,所以y有增量△ y,如果極限存在,這個(gè)極限叫做函數(shù)z=(x,y)到y(tǒng)在(x0,y0)的偏導(dǎo)數(shù)。寫成f'y(x0,y0)
同理,我們可以通過R語言中的deriv()函數(shù)來計(jì)算偏導(dǎo)數(shù)。接下來,我們計(jì)算二元函數(shù)f (x,y) = 2 * x 2+y+3 * x * y 2的偏導(dǎo)數(shù)。因?yàn)槎瘮?shù)曲面上的每一點(diǎn)都有無窮多條切線,所以很難描述這個(gè)函數(shù)的導(dǎo)數(shù)。如果其中一個(gè)變量y給定值,就可以得到另一個(gè)變量x的偏導(dǎo)數(shù),即f/x。
我們先求出兩個(gè)自變量X和Y的偏導(dǎo)數(shù),讓變量Y為常數(shù),計(jì)算偏導(dǎo)數(shù)f/X = 4 * X+3 * Y ^ 2。當(dāng)x = 1且y = 1時(shí),偏導(dǎo)數(shù)f/x = 4 * x+3 * y 2 = 7。以變量x為常數(shù),計(jì)算偏導(dǎo)數(shù)f/y = 1+6 * x * y,當(dāng)x = 1且y = 1時(shí),偏導(dǎo)數(shù)f/x = 1+6 * x * y = 7。
用r語言程序?qū)崿F(xiàn)。
>。Fxy =表達(dá)式(2 * x 2+y+3 * x * y 2) #二元函數(shù)公式
>。dxy = deriv(fxy,c( "x "," y "),func = TRUE)
>。丁香醫(yī)生
函數(shù)(x,y){
. expr4 & lt- 3* x
. expr5 & lt- y^ 2號(hào)
。價(jià)值<。- 2* x^ 2+ y + .expr4 * .expr5
。grad <。- array( 0,c(長(zhǎng)度(。值)、2L)、列表(NULL、c( "x "、" y "))
。grad[," x"] <。-2 *(2 * x)+3 * expr 5
。grad[," y"] <。- 1+ .expr4 * ( 2* y)
attr(。值,“梯度”)& lt- .畢業(yè)生
。價(jià)值
}
>。Dxy( 1,1) #設(shè)置自變量
[ 1] 6
attr(,“梯度”)
根據(jù)x y #的計(jì)算結(jié)果,X的偏導(dǎo)數(shù)為7,Y的偏導(dǎo)數(shù)為7
[ 1,] 77
偏導(dǎo)數(shù)的計(jì)算結(jié)果與人工計(jì)算結(jié)果一致。我們先求復(fù)變函數(shù)的偏導(dǎo)數(shù),計(jì)算二元函數(shù)f (x,y)= x y+exp(x * y)+x ^ 2–2 * x * y+y ^ 3+sin(x * y)在點(diǎn)(1,3)和(0,0)處的偏導(dǎo)數(shù)。
r語言程序的實(shí)現(xiàn)。
>。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) #設(shè)置自變量
[ 1] 43.22666
attr(,“梯度”)
x y
[1,] 56.2866344.09554#,x的偏導(dǎo)數(shù)是56.28663,y的偏導(dǎo)數(shù)是44.0956。
>。dxy( 0,0)
[ 1] 2
attr(,“梯度”)
x y
[1,] NaN -Inf #計(jì)算結(jié)果表明,x的偏導(dǎo)數(shù)無意義,y的偏導(dǎo)數(shù)為負(fù)無窮
對(duì)于計(jì)算結(jié)果,不同意的同學(xué)可以嘗試手工計(jì)算。
本文中我們掌握了高等數(shù)學(xué)R語言的導(dǎo)數(shù)計(jì)算方法,確實(shí)非常方便,學(xué)習(xí)高數(shù)更有動(dòng)力。
作者簡(jiǎn)介:
張丹,R語言中文社區(qū)專欄特約作者,“R的極客理想”系列叢書作者,民生銀行大數(shù)據(jù)中心數(shù)據(jù)分析師,前嘉賓創(chuàng)始人兼CTO。
10年IT編程背景,精通R、Java、Nodejs編程,獲得10項(xiàng)SUN和IBM技術(shù)認(rèn)證。豐富的互聯(lián)網(wǎng)應(yīng)用開發(fā)架構(gòu)經(jīng)驗(yàn),金融大數(shù)據(jù)專家。個(gè)人博客,Alexa世界排名70k。
《R的極客理想-工具》《R的極客理想-高級(jí)開發(fā)》的作者,《數(shù)據(jù)實(shí)踐之美》的合著者,新書《R的極客理想-量化投資》(即將出版)。
“極客的理想工具”JD.COM買快車道:
“極客的理想——高級(jí)開發(fā)”JD.COM買快車道:
數(shù)據(jù)實(shí)踐之美JD.COM買快車道;
轉(zhuǎn)載請(qǐng)保留以下內(nèi)容:
本文來源于天山社區(qū)張丹老師的博客(微信官方賬號(hào))。
原始鏈接:
1.《正切函數(shù)的導(dǎo)數(shù) R語言的導(dǎo)數(shù)計(jì)算》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《正切函數(shù)的導(dǎo)數(shù) R語言的導(dǎo)數(shù)計(jì)算》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/yule/789972.html