簡體   English   中英

R 語言中 package 'Brobdingnag' 的用法

[英]Usage of package ‘Brobdingnag’ in R language

我遇到了有關使用 Brobdingnag package 的問題 - 設置后

a2 <- as.brob(0.1)^1000, 

a2 = exp(-2302.6)

a1 <- as.brob(0.1)^800, 

a1 = exp(-1842.1)

使用 sum(a1,a2) 和 sum(a2,a1) 得到不同的結果 - 每次結果等於給和 function 的第一個參數。 似乎總和沒有被 Brobdingang package 覆蓋,即使它應該是? 或者也許我做錯了什么?

我也問了這個問題作為對我寫的另一個問題的答復,請參見此處

[編輯:包作者的回答]

嗨丹

這絕對是 package 中的錯誤; 謝謝你的報告,不幸的是。 糾正它需要我相當長的時間。

同時,請在下面找到用於計算兩個 brobs 之和的常用 R 習語:

> a1 <- as.brob(0.1)^800
> a2 <- as.brob(0.1)^1000
> a1+a2


> a1 <- as.brob(0.1)^800
> a2 <- as.brob(0.1)^1000


> a1+a2
[1] +exp(-1842.1)
> a2+a1
[1] +exp(-1842.1)

> sum(cbrob(a1,a2))
[1] +exp(-1842.1)
> sum(cbrob(a2,a1))
[1] +exp(-1842.1)
> 

我可以使用以下代碼重現您的問題。 一個答案可能是+而不是sum 補充:另一個是在求和之前將您的數據放在一個向量中

> library(Brobdingnag)
> (a1 <- as.brob(0.1)^800) 
[1] +exp(-1842.1)
> (a2 <- as.brob(0.1)^1000)
[1] +exp(-2302.6)
>
> a1 + a2
[1] +exp(-1842.1)
> a2 + a1
[1] +exp(-1842.1)
>
> sum(a1, a2)
[1] +exp(-1842.1)
> sum(a2, a1)
[1] +exp(-2302.6)
> 
> sum(as.brob(0.1)^c(1000,800))
[1] +exp(-1842.1)
> sum(as.brob(0.1)^c(800,1000))
[1] +exp(-1842.1)

似乎您不能像這樣使用sum(,) 這里有一些類似的奇怪結果,有更實用的數字

> as.brob(0.1) + as.brob(1)           # OK, gives exp(ln(1.1))
[1] +exp(0.09531)     
> as.brob(1) + as.brob(0.1)           # OK, gives exp(ln(1.1))
[1] +exp(0.09531)
> sum(as.brob(c(0.1, 1)))             # OK, gives exp(ln(1.1))
[1] +exp(0.09531)
> sum(as.brob(c(1, 0.1)))             # OK, gives exp(ln(1.1))
[1] +exp(0.09531)
>
> sum(as.brob(0.1), as.brob(1))       # not OK, gives first term exp(ln(0.1))
[1] +exp(-2.3026)
> sum(as.brob(1), as.brob(0.1))       # not OK, gives first term exp(ln(1))
[1] +exp(0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM