函数的导数

16

我正在使用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个回答

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
这真的很有帮助。它使搜索函数变得更加容易!! - user236215

2
据我所知,R不会简化D()的结果。听起来你想要一个真正的计算机代数系统,而R绝对不是一个完整的CAS。MathematicaMaple是最著名的,但也有许多开源替代品(如在这个SO帖子上讨论的那样)。
R可以进行数值积分-对于这种问题,首先应该在R帮助页面中搜索(即help.search('integrate'))。您可以在stats包中使用integrate()。还有MASS包中的area(),但那更简单(即用于演示目的)。

1
R的符号能力可以通过Ryacas或rSymPy进行扩展。 - mbq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接