固然R语言的主要成果是统计计较,但它也包括了根基的数值计较函数,可用来举办数值积分与微分。本例中计较工具的函数形式为f(x, y) = sin(x^2/2 − y^2/4) cos(2x − exp(y))
先在R中举办画图,使我们相识此二元函数的三维图形
x = seq(-1,3, length.out=100)
y = seq(0,1, length.out=30)
g = expand.grid(x = x, y =y)
g$z = sin(g$x^2/2 – g$y^2/4)*cos(2*g$x – exp(g$y))
wireframe(z ~ x * y, data = g, scales = list(arrows = FALSE),drape = TRUE, colorkey = TRUE, screen = list(z = 30, x = -60))
然后用deriv呼吁举办求导运算,括号内的参数别离是求导函数、自变量和两个逻辑参数。其功效存为Df,它的范例为一个函数。
Df <- deriv(z ~ sin(x^2/2 – y^2/4)*cos(2*x – exp(y)),c(‘x’, ‘y’), func=T, hessian=F)
求下列五个点处的函数值和对应的梯度向量。这五个点别离为(-1,1),(0,1),(1,1),(2,1),(3,1)
Df(c(-1:3),1)运算功效如下,第一行为函数值,之后的为梯度向量
[1] 0.001457906 0.225566580 0.186279732 0.280503646 0.886217096数值积分的呼吁是integrate,但只能对一元函数举办运算。
attr(,”gradient”)
x y
[1,] -0.5005089 0.6696472
[2,] -0.2032578 0.7179512
[3,] 1.0551597 -0.8073411
[4,] -1.9879397 2.5891741
[5,] 1.0751438 0.1189299
integrand <- function(x) {1/((x+1)*sqrt(x))}
integrate(integrand, lower = 0, upper = Inf)