Pau*_*.P. 2 plot r integral numerical-integration
我在R中的集成功能遇到了一些问题.我试图绘制积分的声音,但似乎我做得不好.
t <- seq(0, 0.04, 0.0001)
vi <- function(x) {5 * sin(2 * pi * 50 * x)}
vo <- function(x) {integrate(vi, lower=0, upper=x)$value}
test_vect = Vectorize(vo, vectorize.args='x')
plot(t, vo(t)) # should be a cosine wave
plot(t, vi(t)) # sine wave
Run Code Online (Sandbox Code Playgroud)
vo应该是一个正弦波,但使用test_vect给我错误的情节和vo直接使用给出错误'x'和'y'长度不同.请问有人可以帮我解决这个问题吗?
你已经在那里了.只是用plot(t, test_vect(t)).您不能使用vo,因为integrate它不是矢量化函数.评估单个点是没有问题的vo(0.002),但你不能用它来提供矢量vo(t).这就是我们想要的原因Vectorize(vo)(t).
你说这test_vect不是正确的情节.当然?我们可以分析地计算积分:
v <- function (x) (1-cos(100*pi*x)) / (20*pi)
Run Code Online (Sandbox Code Playgroud)
然后让我们比较一下:
sum(abs(v(t) - test_vect(t)))
# [1] 2.136499e-15
Run Code Online (Sandbox Code Playgroud)
他们是一样的!
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |