gpt4 book ai didi

r - 对于符号替换,R 与 Matlab 的 subs(f, x, value) 等价的是什么?

转载 作者:行者123 更新时间:2023-12-02 16:36:04 30 4
gpt4 key购买 nike

在 Octave 中,我使用以下代码对 2 变量函数进行微分,然后使用 subs() 将 x 替换为 0。基本上在做力矩生成函数、泰勒级数展开等时,我们区分然后用一些 a 代替 x。我无法在 R 中找到等效的替换函数。你能告诉我该怎么做吗?谢谢

pkg load symbolic; #octave symbolic package
syms lamb, x; #declare lamb, x symbols
mgf = lamb / (lamb - x); #moment generating function of exponential
mgf1 = diff(mgf, x, 1); #1st differivative
mgf1_0 = subs(mgf1, x, 0); #substitute 0 for E(X)

最佳答案

使用基础 R:

f <- quote( lambda / (lambda - x) )
Df <- D(f, "x")

do.call("substitute", list(Df, list(x = 0)))
## lambda/(lambda - 0)^2

或者我们可以在特定的 x 和 lambda 值下评估 Df:

eval(Df, list(x = 0, lambda = 3))
## [1] 0.3333333

创建函数来表示结果

我们可以使用 Df 定义一个 R 函数 der,它计算特定 x 和 lambda 值的导数。

der <- function(x, lambda) {}
body(der) <- Df
der(0, 3)
## [1] 0.3333333

柯里化(Currying)

如果我们想将 x 设置为 0 并创建 lambda 的结果函数

make_der0 <- function(x = 0) function(lambda) der(x, lambda)
der0 <- make_der0()
der0(3)
## [1] 0.3333333

这被称为柯里化(Currying)或局部化,各种包也有:

library(functional)
der0a <- Curry(der, x = 0)
der0a(3)
## [1] 0.3333333

library(purrr)
der0b <- partial(der, x = 0)
der0b(3)
## [1] 0.3333333

关于r - 对于符号替换,R 与 Matlab 的 subs(f, x, value) 等价的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720216/

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