R绘图积分
R plotting integral
我在使用 R 中的积分函数时遇到了一些问题。我正在尝试绘制积分 vo,但似乎我做的不正确。
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
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)
那我们来比较一下:
sum(abs(v(t) - test_vect(t)))
# [1] 2.136499e-15
他们是一样的!
我在使用 R 中的积分函数时遇到了一些问题。我正在尝试绘制积分 vo,但似乎我做的不正确。
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
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)
那我们来比较一下:
sum(abs(v(t) - test_vect(t)))
# [1] 2.136499e-15
他们是一样的!