gpt4 book ai didi

r - R中的符号导数和简化

转载 作者:行者123 更新时间:2023-12-04 03:30:23 28 4
gpt4 key购买 nike

在 R 中,我有以下表达式,我想对 s 取逐次导数( thetanu 只是未指定的参数):

expr <- expression(exp((nu / (theta * (1 - nu))) *
(1 - (1 + theta * s / nu)^(1 - nu))))

为此,我递归地使用 D()象征性地计算简单表达式的导数的函数。

但是该函数没有执行任何简化,即它没有将结果简化为更简单的形式。

例如,如果您尝试取 10 次导数,您会发现结果非常棒,并且需要大量计算时间。在极限情况下,至少在我的计算机上几乎不可能计算 15 次导数。

因此,我认为值得尝试简化 n-1计算 n 之前的 th 导数导数。

我认为可以简化 R 中的表达式,这要归功于 Ryacas包裹。

但是,我的测试还没有定论...

有没有人有过这样的问题的经验?
有人可以给我一些建议吗?

先感谢您!

最佳答案

这里有一个例子:

> library(Ryacas)
> s <- Sym("s")
> nu <- Sym("nu")
> theta <- Sym("theta")
> e <- exp((nu / (theta * (1 - nu))) * (1 - (1 + theta * s / nu)^(1 - nu)))
> de <- deriv(e, s)
> de
expression(-(exp((1 - (theta * s/nu + 1)^(1 - nu)) * nu/(theta *
(1 - nu))) * (theta * (1 - nu) * (nu * ((theta * s/nu + 1)^(1 -
nu - 1) * ((1 - nu) * (nu * theta)))))/nu^2)/(theta * (1 -
nu))^2)
> Simplify(de)
expression(-(exp((1 - (theta * s/nu + 1)^(1 - nu)) * nu/(theta *
(1 - nu))) * (theta * s/nu + 1)^(1 - nu - 1)))

请注意,我们确实得到了一些简化,但简化并不完美,因为 1 - nu - 1最后可以进一步简化,但没有。

这是一个重复导数的示例(但是,如果您确实需要将其取至 10,则可能会遇到麻烦):
> de <- e
> for(i in 1:3) print(de <- Simplify(deriv(de, s)))
expression(-(exp((1 - (theta * s/nu + 1)^(1 - nu)) * nu/(theta *
(1 - nu))) * (theta * s/nu + 1)^(1 - nu - 1)))
expression((((theta * s/nu + 1)^(1 - nu - 1))^2 * exp((1 - (theta *
s/nu + 1)^(1 - nu)) * nu/(theta * (1 - nu))) * nu^2 + exp((1 -
(theta * s/nu + 1)^(1 - nu)) * nu/(theta * (1 - nu))) * theta *
nu^2 * (theta * s/nu + 1)^(1 - nu - 1 - 1))/nu^2)
expression((-3 * (nu * (theta * s/nu + 1)^(1 - nu - 1) * (theta *
s/nu + 1)^(1 - nu - 1 - 1) * theta) - nu * ((theta * s/nu +
1)^(1 - nu - 1))^3 - nu * theta^2 * (theta * s/nu + 1)^(1 -
nu - 1 - 1 - 1) - theta^2 * (theta * s/nu + 1)^(1 - nu -
1 - 1 - 1)) * exp((1 - (theta * s/nu + 1)^(1 - nu)) * nu/(theta *
(1 - nu)))/nu)

添加:

如果不需要中间结果,可以这样做以获得二阶导数,但它不太可能处理 10 阶导数:
> Simplify(deriv(e, s, 2))
expression(exp((1 - (theta * s/nu + 1)^(1 - nu)) * nu/(theta *
(1 - nu))) * (theta * (theta * s/nu + 1)^(1 - nu - 1 - 1) +
((theta * s/nu + 1)^(1 - nu - 1))^2))

关于r - R中的符号导数和简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com