如何将多个嵌套括号与指数一起使用?
Posted
技术标签:
【中文标题】如何将多个嵌套括号与指数一起使用?【英文标题】:How to use multiple nested parentheses with exponents? 【发布时间】:2018-07-16 01:31:06 【问题描述】:我需要在我的数据框中创建一个新变量,它是具有许多嵌套括号的方程的输出。这个等式的一部分是下面最后一行的形式
temp=36
Tc = 647.097
( ( 1-273.15+temp )/Tc )^1.5
其中temp
将是一个变量,Tc
将是一个常量。但是,当我运行代码时,结果总是NA
。
但是,如果我将代码分解为我知道的数字,则结果来自
( 1-273.15+temp )/Tc
然后像这样添加指数
-0.3649376^1.5
那么代码就可以正常工作了。
为什么R不能正确输出计算( ( 1-273.15+temp )/Tc )^1.5
?
更重要的是,如何让 R 给我( ( 1-273.15+temp )/Tc )^1.5
的结果,同时保留我对常量和变量对象的使用?
我需要解决这个问题,因为完整的方程式更糟糕,我上面描述的问题嵌套在其自身中:
e_sat_test <- Pc^( ( Tc/(273.15+temp ) ) *
( a1*( (1-273.15+temp)/Tc ) + a2*( (1-273.15+temp)/Tc )^1.5 +
a3*( (1-273.15+temp)/Tc )^3 + a4* ( (1-273.15+temp)/Tc )^3.5 +
a5*( (1-273.15+temp)/Tc)^4 + a6*( (1-273.15+temp)/Tc )^7.5 ) )
【问题讨论】:
【参考方案1】:问题是
-0.3649376^1.5
被解释为
-(0.3649376^1.5)
不是
(-0.3649376)^1.5
因为指数运算符具有更高的优先级。当您将某些东西取为 0.5 指数时,这就像取平方根一样,而那些不是为 R 中的简单数字向量定义的(除非您想使用虚数)。您的计算只是数据值的 NaN,因为您的结果不是真实的。您可能想再次检查您的公式,
【讨论】:
those aren't defined for negative numbers
... 实际上,至少在基本数学理论方面,它们被定义为虚数。但是,我似乎也无法使用基本 R 来让它工作。
@TimBiegeleisen 对不起。我应该更精确。是的,负数的根是虚构的。如果你做了as.complex(-0.3649376)^1.5
,它会起作用。但是 R 不会在没有显式转换的情况下自动跳转到复数。
是的,这就是问题所在。我回到原来的公式(它是用于计算蒸汽压赤字)我应该有以下形式:((1 - (273.15+temp)/Tc))^1.5【参考方案2】:
来自documentation:
用户有时会对返回的值感到惊讶,例如为什么 (-8)^(1/3) 是 NaN。对于双输入,R 在所有平台上使用 IEC 60559 算法,以及用于 ^ 运算符的 C 系统函数 pow。相关标准定义了许多极端情况下的结果。特别是,上面示例中的结果是 C99 标准规定的。在许多类似 Unix 的系统上,命令 man pow 提供了大量极端情况下的值的详细信息。
【讨论】:
以上是关于如何将多个嵌套括号与指数一起使用?的主要内容,如果未能解决你的问题,请参考以下文章