[爆卦]分貝計算機是什麼?優點缺點精華區懶人包

為什麼這篇分貝計算機鄉民發文收入到精華區:因為在分貝計算機這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者LPH66 (杇瑣)看板Math標題Re: [其他] 關於分貝的計算時間Wed Jul 11 0...



其實普通計算機是可以直接算常用對數的

只不過稍微費工了些 除了要另外紀錄額外的東西之外

算一個對數即使按熟一點也大概要花去五到十分鐘

不過倒是不需要用到泰勒展開式就是了 而且紀錄的空間也不需要很多

步驟如下:

先把真數的小數點調整使其在 1~10 之間

(也就是我們用計算機求尾數 首數的話數一下位數就行了)

輸入進計算機之後 重覆以下動作:

將畫面上的數字平方 若它大於 10 則記錄 1 然後除以 10 否則記錄 0 然後保持原樣

重覆次數看你要小數幾位 乘以 10/3 之後再加個一兩次

平方這個動作有的機型按乘後直接按等於就可以做

如果這樣不行的就按乘之後把剛剛畫面上的數字重 key 一次也行

然後計算機清空 從最後紀錄的數開始

重覆「加上它再除以 2」的動作 倒回做到第一個記錄的數後就是所求尾數了

來個範例:

要求 log 6.162 到小數三位 3 * (10/3) = 10 所以以下重覆 11 次

依照需求取三位
原數 平方 記錄 ↓
6.162 37.970244 1 ↑0.7895507812 ≒ 0.790
3.7970244 14.417394294 1 │0.5791015625 這就是
1.4417394294 2.0786125823 0 │0.158203125 log 6.162
2.0786125823 4.3206302673 0 │0.31640625 的近似值
4.3206302673 18.667845907 1 │0.6328125
1.8667845907 3.4848847081 0 │0.265625
3.4848847081 12.144421429 1 │0.53125
1.2144421429 1.4748697185 0 │0.0625
1.4748697185 2.1752406865 0 │0.125
2.1752406865 4.7316720442 0 │0.25
4.7316720442 22.388720334 1 │0.5
│0
然後清空倒回去,加上記錄數字再除以 2 ─┘

(這些數字是從我這支古早(?)的手機裡附的計算機按出來的

它只有一個特別的功能是當輸入運算的第二個數時

第一個數會依舊顯示在畫面上 這樣我算平方只要照著重 key 一次就好

不然它只是個連根號都不會開的小計算機)

原理是這樣的 前半段的過程其實是在求對數值的二進位小數部份展開

將十進位小數轉換成二進位小數的方法我們知道可以把小數部份連乘 2

乘出來的整數部份按照順序整理起來就是結果

像是 0.8125 → 1.625(0.625) → 1.25(0.25) → 0.5 → 1
1 1 0 1 → 0.1101(二進位) 這樣子

這裡只不過是做相同的事而已:

對數值乘以 2 相當於真數平方 對數值減 1 則相當於真數除以 10

因此我們記下來的這些 0 1 就是對數值的二進位小數展開

以此例來說就是 log 6.162 其二進位小數展開前 11 位是 0.11001010001

所以後半段只是把這個二進位小數轉換回十進位而已

之所以要乘以 3.33 的原因就是計算二進位要多少位才有十進位這麼多位精準

所以如果有心的話其實是可以直接求十進位展開的

不過這就要將畫面上的數字取十次方

這對一台只有根號的計算機來說還滿累的...

回到原 PO 的題目

這題其實數字有稍微設計過

10^7.2 + 10^6.9 + 10^7.4

= 10^6.9 * (10^0.3 + 10^0 + 10^0.5)

≒ 10^6.9 * (2 + 1 + √10) ←這一步正是這題有設計的地方

你應該不會不知道兩個相同大小的訊號加起來會增加 3dB

這是因為 log 2 ≒ 0.301 的關係 也就是說 10^0.3 ≒ 2

(剛剛的 10/3 也是從這裡來的: log 10 = 1/log 2 ≒ 3.322
2
也就是十進位一位相當於二進位約 3.322 位 取 10/3 ≒ 3.33 高估一些些比較安全)

而 10^0.5 就只是 10 開根號

括號裡的數字計算機按一下就可以得到約為 6.162 (上面範例的數字就是從這裡來的)

所以

原式 ≒ 10^6.9 * 6.162

≒ 10^6.9 * 10^0.790

= 10^7.690

於是答案即為 76.9 dB

---
這個算對數的方法是我前一陣子在把玩我這支手機上的計算機時想到的

我是還沒有看過哪裡有記載過類似的方法就是了...

說起來有根號功能的話其實還可以做二分逼近法

從 log 1 = 0 和 log 10 = 1 開始

把兩個端點的真數乘起來開根號 對數值則是相加除以 2

看你的真數在哪邊就取那一半重覆

同樣以 log 6.162 為例就是這樣:

log 1 = 0 log 10 = 1
log 3.16227766 = 0.5

log 3.16227766 = 0.5 log 10 = 1
log 5.623413252 = 0.75

log 5.623413252 = 0.75 log 10 = 1
log 7.498942093 = 0.875

log 5.623413252 = 0.75 log 7.498942093 = 0.875
log 6.493816316 = 0.8125

log 5.623413252 = 0.75 log 6.493816316 = 0.8125
log 6.042963902 = 0.78125

......
這樣下去

可以想見這個方法要暫記的數字實在是很多 (兩端點的真數和對數值)

而且本質上二分逼近法依然是在求我們要求的值的二進位展開

(上面的箭頭是 ↙↙↘↘↙ 正對應我們剛剛求得的二進位展開的前五位 0.11001

這個二進位小數轉回十進位正是中間的 0.78125)

相對的我的方法除了 0 1 之外頂多只要為了平方記下當時畫面上的一個數字就好

記錄空間比起來二分逼近法來得少 個人覺得是個還不錯的方法就是了

--
LPH [acronym]
= Let Program Heal us
-- New Uncyclopedian Dictionary, Minmei Publishing Co.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.28.91
※ 編輯: LPH66 來自: 140.112.28.91 (07/11 03:57)
TassTW :不推對不起良心 07/11 05:03
cacud :淚推 07/11 07:50
jetzake :這要推... 話說這其實就是計算機計算log的方式吧?? 07/11 07:59
jetzake :如果試著寫寫看機械語言 其實可以弄得很漂亮 = =+ 07/11 08:00
LPH66 :計算機算 log 用泰勒展開式可能比較方便 07/11 08:09
LPH66 :當然用這兩個方法之一也是有可能的就是了... 07/11 08:10
LSC112233 :這個只能推了! 07/11 08:33
GARRET :謝謝你 07/11 08:34
suhorng :推 07/11 09:06
jacky7987 :推 07/11 09:45
RC :推!y 07/11 09:59
a016258 :推! 07/11 10:00
ntust661 :推... 07/11 11:04
LostRanger :這個真的要推! 07/11 13:35
lordtsao :太厲害,把玩計算機都可以想到這個 07/11 18:51
bohsing :厲害!! 07/11 19:10
Brusher :帥欸 07/11 20:15
EdisonX :我真沒 lph66 解得好, 看完一遍都讚賞一遍。 07/11 20:43
andygenisu :推! 07/11 20:46
Ohwil :數值分析有講到你這個方法@@ 07/11 23:43
ariainaqua :推! 07/12 00:04
dbtuh611 :推! 07/12 00:28
goshfju :專業!!!! 07/12 02:48
ddwu :推 07/12 16:26
ZanFu5566 :好神 07/16 03:21
sneak : 計算機算 log 用泰 https://muxiv.com 08/13 16:58
sneak : 數值分析有講到你這個方 https://daxiv.com 09/17 14:54

你可能也想看看

搜尋相關網站