2010-07-27 11 views
15

Sto usando D per ottenere le derivate di una funzione. Tuttavia, R non semplifica l'espressione quando si restituisce la derivata. Devo capire se una funzione ha un derivato che può essere espresso in modo generico. C'è un modo in R per semplificare l'espressione?derivata di una funzione

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

In secondo luogo, c'è un modo in R per fare integrazione numerica?

risposta

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) 

Si può anche provare

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

che dà

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

Come per l'integrazione numerica prova a givi questo per vedere cosa è disponibile

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

questo è veramente utile. rende le funzioni di ricerca molto più semplici !! – user236215

2

Per quanto ne so, R non semplificherà il risultato di D(). Sembra che tu voglia un sistema algebra al computer adeguato, e R non è assolutamente un CAS completo. Mathematica e Maple sono i più noti, ma esistono anche numerose alternative open source (as discussed on this SO post).

R può fare l'integrazione numerica - per questo tipo di domanda vale la pena cercare prima nelle pagine della guida R (ad es. help.search('integrate')). È possibile utilizzare integrate() nel pacchetto stats. C'è anche area() nel pacchetto MASS, ma questo è molto più semplice (ad esempio per scopi dimostrativi).

+1

Le funzionalità simboliche R possono essere estese con Ryacas o rSymPy. – mbq

0

Si potrebbe voler controllare Octave ... È gratuito e afaik la gente di matematica piace.

MODIFICA: @mbq, non ne sono così sicuro ... è quello che ho pensato anch'io. Fondamentalmente è gratis, potrebbe essere in grado di fare ciò che vuole - perché non provarlo. C'è un po 'di evidence che la mia ipotesi non era poi così male. Naturalmente è anche possibile che non ho capito una cosa :)

+1

L'ottava ha simbolismi? Anche se è solo un "GNU MATLAB". – mbq

+0

pensato anche che fosse GNU MATLAB, volevo solo dire che è probabilmente più facile da gestire in un software matematico, anche se ha bisogno di alcune estensioni. –

+0

Puoi anche guardare Maxima. http://maxima.sourceforge.net/ –

Problemi correlati