我正在使用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有没有办法进行数值积分?
答案 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。 Mathematica和Maple是最知名的,但也有一些开源替代品(as discussed on this SO post)。
R可以进行数值积分 - 对于这类问题,首先需要在R帮助页面中搜索(即help.search('integrate')
)。您可以在integrate()
包中使用stats
。 area()
包中还有MASS
,但这更简单(即出于演示目的)。