2010-07-27 27 views
15

Używam D, aby uzyskać pochodne funkcji. Jednakże R nie upraszcza wyrażenia podczas zwracania pochodnej. Muszę dowiedzieć się, czy funkcja ma pochodną, ​​którą można wyrazić w sposób ogólny. Czy jest jakiś sposób w R, aby uprościć wyrażenie?pochodna funkcji

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

Po drugie, czy istnieje sposób w R do przeprowadzenia integracji numerycznej?

Odpowiedz

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

daje

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

można także spróbować

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

co daje

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

jako do numerycznej integracji spróbuj givi Aby zobaczyć, co jest dostępne, można uzyskać dostęp do następujących funkcji:

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

to jest naprawdę pomocne. sprawia, że ​​wyszukiwanie jest o wiele łatwiejsze !! – user236215

2

O ile mi wiadomo, R nie uprości wyniku D(). Wygląda na to, że potrzebujesz odpowiedniego systemu algebry komputerowej, a R zdecydowanie nie jest pełnym CAS. Mathematica i Maple są najbardziej znane, ale istnieje również wiele alternatywnych rozwiązań open source (as discussed on this SO post).

R może wykonywać integrację numeryczną - w przypadku tego rodzaju pytań warto najpierw wyszukać na stronach pomocy R (tj. help.search('integrate')). Możesz użyć integrate() w pakiecie stats. Istnieje również area() w pakiecie MASS, ale jest to znacznie prostsze (to jest w celach demonstracyjnych).

+1

Symboliczne możliwości R można rozszerzyć za pomocą Ryacas lub rSymPy. – mbq

0

Możesz chcieć sprawdzić Octave ... To nic nie kosztuje, a ludzie z matematyki afaik to lubią.

EDYCJA: @mbq, nie jestem taki pewien ... to też myślałem. Zasadniczo to nic nie kosztuje, może być w stanie zrobić to, czego chce - czemu nie spróbować. Jest trochę evidence, że moje przypuszczenie nie było takie złe. Oczywiście możliwe jest również, że nie rozumieją niczego :)

+1

Octave ma symbolikę? Chociaż to tylko "GNU MATLAB". – mbq

+0

pomyślał również, że to był GNU matlab, chciałem tylko powiedzieć, że prawdopodobnie jest łatwiejszy w obsłudze w oprogramowaniu matematycznym, nawet jeśli potrzebuje pewnych rozszerzeń. –

+0

Możesz także spojrzeć na Maxima. http://maxima.sourceforge.net/ –