Я использую 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, чтобы сделать численное интегрирование?
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}')
Насколько я знаю, R не будет упрощать результат D()
. Звучит так, будто вам нужна подходящая система компьютерной алгебры, а R определенно не является полноценной CAS. Mathematica и Maple являются наиболее известными, но есть также ряд альтернатив с открытым исходным кодом (как обсуждалось в этом посте SO).
R может выполнять численное интегрирование - для такого рода вопросов стоит сначала поискать на страницах справки R (например, help.search('integrate')
). Вы можете использовать integrate()
в пакете stats
. Существует также area()
в пакете MASS
, но он намного проще (т.е. для демонстрационных целей).