【发布时间】:2017-06-09 18:31:29
【问题描述】:
我是 R 环境的新手,希望了解发布在另一个线程中的代码。
Integrating over a PCHIP Function
1 > library(pracma)
2 > xs <- linspace(0, pi, 10)
3 > ys <- sin(xs)
4 > pchipfun <- function(xi, yi) function(x) pchip(xi, yi, x)
5 > f <- pchipfun(xs, ys)
6 > integrate(f, 0, pi)
我的问题如下:
第 5 行正在调用第 4 行中的函数,但这并没有传递 x 值。那么第4行怎么取x值呢?
在上面的设置中,我想修改一下,如果 x 在 pi/6 和 pi/4 之间,函数应该返回 0,否则返回计算值。
提前致谢。
【问题讨论】:
-
函数
pchipfun()返回一个函数(定义)。调用构造函数f时需要x值。函数integrate在里面调用f(x)。 -
(1) 我明白了,集成函数在调用f(x),但是第5行没有x。
-
(2)如何修改代码?
-
pchipfun <- function(xi, yi) function(x) { if (x<pi/6) return(0); if (x>pi/4) return(0); pchip(xi, yi, x) }但是为什么不简单地限制集成:integrate(f, pi/6, pi/4)与原始函数定义? -
其实我用它作为参考代码,但我对集成不感兴趣。我想绘制曲线,但它仍然给我错误:在 if (x 1,并且只会使用第一个元素
标签: r