|
- K5 k5 N9 I) N, N& I
其實是原作者一時手快, 原文應該寫成下面這樣比較好懂...; k2 ~' S. k( z# u
0 J8 n* O! b4 ^$ M' Z0 qX 先寫成 X = a * 2^n, (a = 0.5~1) 的form(形式) , 將乘數 a 給normalized to 0.5~1的範圍.
0 C% K, r1 w# u, W7 Q% z4 |
5 V; [' Q8 v. c S# e/ A$ {這樣子 X = 2時, a = 1, n = 1* I+ N: i- E% e" t7 l" S2 X- j
X = 6 時, x= 0.75, n = 3) Q+ O% _8 G* |, f
$ f: m$ S$ [8 Q% `' i- \7 @5 t0 Y( d
原因是 a 介於 0.5~1時, 它的小數表示法會是 0.1xxx (2進位) 對整個表達空間的使用會比較好 (不會浪費太多bit).1 u$ ~$ O- ]" b, U8 Y, o7 Q. _5 N" Z
$ c; v l4 t, J
至於用泰勒展開式, 是工程計算常用的方法, 因為.... 它能有效的控制到精度誤差 (就是收斂, 到第幾項能收斂到多少, 是可以確定的), 又很萬用
6 N0 h# b" H% v所以在數值計算上, 泰勒展開式很常見到. 但不見得是最好的解, 有時候看場合會改用查表法, cordic...
8 |8 {# B: V9 m7 s: E4 Y* D" a1 m$ U1 {) f: Z/ W/ T) A+ S9 ?
數學真的很重要! (雖然我都忘光了 haha)
, B5 [6 [4 k. w" U, K2 l
' I% U4 h3 G3 p' } d; O |
|