【问题标题】:R - creating a function f(x) as a sum indexed by nR - 创建一个函数 f(x) 作为由 n 索引的和
【发布时间】:2021-09-27 14:13:02
【问题描述】:

是否可以在 R 中编写类似 f(x) 的函数

f(x) = a_0 + a_1*sin(x) + ... + a_n*sin(n*x)

对于某些 n,或任何其他 f_i(x) 代替 sin(i*x) 只是在 i 上变化?我尝试了类似的递归

f <- function(x) a_0
for(n in 1:N)
f <- function(x) f(x) + a_n*x^n

它似乎有效,但是当我使用 f(x) 进行一些计算时,R 说嵌套过多。我最终手写了 a_0 + a_1*x + ... 等等。 有没有一种不使用递归的紧凑方式的正确方法?

【问题讨论】:

  • 抱歉,图片加载不出来,能不能用一些文字表达一下?
  • 您似乎在循环中重新定义函数f,我不确定这是否是您想要的。该函数的一些样本输入是什么,您希望为该样本输入返回什么值。 f 是 a 和 x 的函数吗?
  • 这个f &lt;- function(x) a_0 没有意义,它是必要的,因为它只是一个常数。你的目的是计算f(x) = a_0 + a_1 * x + ... + a_n * x^n 吗?
  • @PeaceWang 我需要定义一个函数,例如 f(x) = a_0 + a_1*sin(x)+ ... + a_nsin(nx)对于一些 n,然后我可以将它与其他功能组合或集成等。
  • @MrFlick 我想我的最后一条评论更好地解释了我的要求。

标签: r function recursion


【解决方案1】:

如果你有以下a和x的值

a <- 1:5
x <- 3
a[1] + a[2]*sin(x*1) + a[3]*sin(x*2) + a[4]*sin(x*3) + a[5]*sin(x*4)
# [1] -0.5903971

然后你可以使用相同的值

f <- function(x) {
  a[1] + sum( a[-1] * sin((x * seq.int(length(a)-1) )))
}
f(x) 
#[1] -0.5903971

请注意,R 中的数组使用从 1 开始的索引

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多