Производная функции

Я использую 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 для численного интегрирования?

Ответ 1

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

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

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

Ответ 3

Возможно, вы захотите проверить Octave... Это бесплатно и afaik Math людям нравится.

EDIT: @mbq, я не настолько уверен... это то, что я тоже думал. В принципе, это бесплатно, возможно, сможет делать то, что он хочет - почему бы не попробовать. Существует несколько доказательств, которые, по моему мнению, были не такими уж плохими. Конечно, также возможно, что я ничего не понял:)