производная функции - PullRequest
16 голосов
/ 27 июля 2010

Я использую 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 голосов
/ 28 июля 2010
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}')
2 голосов
/ 27 июля 2010

Насколько я знаю, R не упростит результат D().Звучит так, как будто вам нужна правильная система компьютерной алгебры, и R определенно не является полным CAS. Mathematica и Maple являются наиболее известными, но существует также ряд альтернатив с открытым исходным кодом (, как обсуждалось в этом сообщении SO ).

R может выполнять числовое интегрирование - для такого рода вопросов сначала стоит поискать на страницах справки R (т. Е. help.search('integrate')).Вы можете использовать integrate() в пакете stats.В пакете MASS также есть area(), но это намного проще (например, для демонстрации).

...