【问题标题】:integrate from 0 to a variable in r从 0 积分到 r 中的变量
【发布时间】:2015-10-27 16:24:29
【问题描述】:

我想将 y 与 z 作图,其中 y=(1+z)int_0^z((0.3(1+z')^3+0.7)^-1/2) dz',

其中 int_0^z 仅表示从 0 到 z 的积分。 我想我应该先从 0 积分到 z,然后用积分结果代入方程。这是我的代码:

integrand <- function(z1) {(0.3*(1+z1)^3+0.7)^-1/2}
integral<-integrate(integrand, lower = 0, upper = z)

但是出现了这个错误:

错误:找不到对象“any_number”

积分错误(积分,下 = 0,上 = z): 找不到对象“z””

这里如何定义z

谢谢,

翡翠

【问题讨论】:

  • z &lt;- any_number 之前的integrate
  • 请在您定义z后编辑您的帖子以显示相同的错误。
  • 好吧,如果你真的给了'z'一个值,那么你可能已经取得了一些成就。
  • OP shld prbly [re]read stat.ethz.ch/R-manual/R-devel/library/base/html/Syntax.html too(我担心结果不会是当前父母安置的预期结果。
  • 好的,我明白了。我放弃了。

标签: r variables integral


【解决方案1】:

我会试一试的。

integrand <- function(z1) {(0.3*(1+z1)^3+0.7)^-1/2}

我们需要让integral成为z的函数,确保它只返回积分的值,并且在z中被向量化:

integral <- Vectorize(function(z) integrate(integrand, lower = 0, upper = z)$value)

现在我们可以测试它了:

integral(1:2)
#[1] 0.3056435 0.4037815

还有情节:

curve(integral, 0, 10, xname = "z")

【讨论】:

  • 所以如果我想绘制 y=integral*(1+z),我只需使用积分
  • @Jade 这不是一条直线。更改轴限制,例如,curve(integral, 0, 1e10, xname = "z")。 (当然,你总是可以通过解积分来检查。)
猜你喜欢
  • 2016-05-09
  • 2023-01-02
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 2020-07-30
  • 2013-11-12
  • 2016-12-16
  • 2013-03-22
相关资源
最近更新 更多