首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中完成这个函数?

如何在R中完成这个函数?
EN

Stack Overflow用户
提问于 2019-12-01 05:26:09
回答 2查看 81关注 0票数 0

我目前正在尝试编写一个函数,通过E= e21.44 * (e(8.74901^10−20 / (1.3806488*10−23 *T) )估计某些蜥蜴的能量消耗。方程中的T等于开尔文的温度。我知道,如果我插上20摄氏度的温度,这个函数应该给我大约0.829的输出。然而,当我运行这个函数(见下面)时,我得到了2.628622e-121。我相信这就是我所说的温度是如何从摄氏转变为开尔文的方式是不正确的,而且我目前被困在它上。

代码语言:javascript
运行
复制
TempKelvin <- 273.15
Energy = function(TempKelvin = 273.15 {
exp(24.11) * exp(-8.74901*10^20 / (1.3806488*10^-23 * (T + TempKelvin)))
}
Energy(T = 28)
EN

Stack Overflow用户

回答已采纳

发布于 2019-12-01 13:24:37

有几个问题:

  • Energy函数的调用使用T参数,但问题中定义的该函数没有T参数。
  • T在R中的意思也是TRUE,使用不同的名称。除非被覆盖,否则在数值上下文中使用时,T将被解释为1。在R中,默认情况下,T+8等于9
  • 问题中的公式使用8.74901,但代码使用该值的负数。哪个是对的?
  • 对R常数使用适当的指数表示法,例如1.38064852e−23
  • Boltzmann常数的一些数字(乘以温度的数字)是不正确的。
  • 虽然加273.15是正确的开尔文转换公式,我注意到,如果我们使用273而不是更准确的273.15,那么我们确实得到了假设的答案。

请注意,由于答案取决于celsius和273.15,只有通过它们的和,我们才能得到使用273而不是像下面这样的273.15的效果:

代码语言:javascript
运行
复制
celsius + 273 
= (celsius - 0.15) + 273.15

这就是传递函数20-0.15,而不是20,有效地使用20和273,而不是使用20和273.15。

代码语言:javascript
运行
复制
Energy <- function(celsius) {
  exp(21.44) * exp(-8.74901e−20 / (1.38064852e−23 * (celsius + 273.15)))
}

# match assumed answer (despite assumed answer being slightly wrong)
Energy(20 - 0.15)  
## [1] 0.8289531

# correct answer
Energy(20)
## [1] 0.8381777
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59122768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档