2010-07-27 18 views
15

Estoy usando D para obtener derivados de una función. Sin embargo, R no simplifica la expresión al devolver la derivada. Necesito averiguar si una función tiene una derivada que se puede expresar genéricamente. ¿Hay alguna forma en R para simplificar la expresión?derivado de una función

> 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)))) 

En segundo lugar, ¿hay alguna manera de hacer la integración numérica en R?

Respuesta

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

da

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

También puede intentar

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

que da

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

Como para la integración numérica intente givi ng esto para ver lo que está disponible

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

esto es realmente útil. ¡hace que las funciones de búsqueda sean mucho más fáciles! – user236215

2

Por lo que sé, R no simplificará el resultado de D(). Parece que quieres un sistema de álgebra informática adecuado, y R definitivamente no es un CAS completo. Mathematica y Maple son los más conocidos, pero también hay una serie de alternativas de código abierto (as discussed on this SO post).

R puede hacer la integración numérica: para este tipo de pregunta, vale la pena buscar primero en las páginas de ayuda R (es decir, help.search('integrate')). Puede usar integrate() en el paquete stats. También hay area() en el paquete MASS, pero eso es mucho más simple (es decir, para fines de demostración).

+1

Las capacidades simbólicas de R se pueden ampliar con Ryacas o rSymPy. – mbq

0

Es posible que desee comprobar Octave ... Es gratis y afaik Matemáticas personas les gusta.

EDITAR: @mbq, no estoy tan seguro ... eso es lo que pensé también. Básicamente es gratis, podría hacer lo que quiera, por qué no intentarlo. Hay algunos evidence que mi conjetura no era tan malo. Por supuesto, también es posible que yo no entiendo una cosa :)

+1

¿Octave tiene símbolos? Pensé que es solo un "GNU MATLAB". – mbq

+0

pensó también que era un matlab de GNU, solo quería decir que probablemente sea más fácil de manejar en un software matemático, incluso si necesita algunas extensiones. –

+0

También puedes mirar a Maxima. http://maxima.sourceforge.net/ –

Cuestiones relacionadas