r - R - 创建一个函数 f(x) 作为由 n 索引的和
问题描述
是否可以在 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 + ... 等等。有没有一种适当的方法可以在不使用递归的情况下以紧凑的方式完成它?
解决方案
如果您具有以下值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 开始的索引
推荐阅读
- javascript - 运行 Sencha 应用程序出现错误 Sencha Cmd v6.2.2.36 & Ext v6.5.0
- css - ngx-summernote 改变整个页面的样式
- android - 本机文件传输插件不会使用带电容器的 Ionic 在 android 10 和 android 11 中创建目录
- android - Android - TextView textStyle 没有改变
- sql - postgresql 拆分选择 12 小时
- javascript - 如何仅索引 mongoDB 中的已验证值
- split - 需要帮助将 fasta 序列拆分为一个包含多个较小序列的文件
- aws-lambda - 代理 lambda 的 API 网关 websocket 集成响应
- javascript - Java 将 excel-base64 字符串转换为 pdf-base64 字符串
- python - 在不使用“for”的情况下将 2×2 矩阵放入 ndarray