函数的导数

时间:2010-07-27 04:10:27

标签: r derivative

我正在使用D来获得函数的导数。但是,R在返回导数时不会简化表达式。我需要弄清楚函数是否具有可以一般表达的导数。 R中是否有某种方法可以简化表达式?

> D(expression(sqrt(1 - x^2)), 'x')
-(0.5 * (2 * x * (1 - x^2)^-0.5))
> D(D(expression(sqrt(1 - x^2)), 'x'), 'x')
-(0.5 * (2 * (1 - x^2)^-0.5 - 2 * x * (-0.5 * (2 * x * (1 - x^2)^-1.5))))

其次,R有没有办法进行数值积分?

2 个答案:

答案 0 :(得分:14)

library(Ryacas)
x <- Sym("x")
Simplify(deriv(sqrt(1 - x^2),x,2))  # return the result simplified

给出

expression((x^2 - 1 - x^2)/root(1 - x^2, 2)^3)

您也可以尝试

PrettyForm(Simplify(deriv(sqrt(1 - x^2),x,2)))

给出了

   2        2  
  x  - 1 - x   
---------------
              3
    /      2 \ 
Sqrt\ 1 - x  / 

至于数值积分,试着看看有什么可用

library(sos)
findFn('{numerical+integration}')

答案 1 :(得分:2)

据我所知,R不会简化D()的结果。听起来好像你想要一个合适的计算机代数系统,R绝对不是一个完整的CAS。 MathematicaMaple是最知名的,但也有一些开源替代品(as discussed on this SO post)。

R可以进行数值积分 - 对于这类问题,首先需要在R帮助页面中搜索(即help.search('integrate'))。您可以在integrate()包中使用statsarea()包中还有MASS,但这更简单(即出于演示目的)。