作者suhorng ( )
看板trans_math
標題Re: [微分] 求426^1/4近似值
時間Fri Jan 25 18:12:07 2013
你求得是近似值 你得到的這個當然只是個近似值
偏大是正常的 因為你只取第一項 第二項是負的 會再修正一些回來
※ 引述《Trewf (Trewf)》之銘言:
: 這是我的算法,但是答案與計算機算出的值有落差...
: 426^(1/4)=(4^4 + 170)^(1/4)=4 * (1 + 170/256)^(1/4) -------A
: f(x+h)=(x + h)^(1/4) -------B
: f(x)=x^(1/4) -------C //四次根號內的x=1, h=170/256 ------E
^^^^^^^^^這邊滿大的 誤差大也很合理
: f'(x)=1/4 * x^(-3/4) -------D //f(x)的微分
: f(x+h) = f'(x) * h + f(x) //由f(x)微分的定義推導而來
f(x+h) = f(x) + f'(x)h + f''(c)h^2/2!, c 是某個在 (x,x+h) 之間的數字 (h > 0)
若你要更接近,展開到更高階項的話,
f(x+h) = f(x) + f'(x)h + f''(x)h^2/(2!) + f'''(c')h^3/(3!)
同樣, c' 是某個在 (x,x+h) 中未知的數字 (h > 0)
算出來是
f(x+h) ~ x^(1/4) + 1/4 x^(-3/4)*h - 3/16 x^(-7/4)*h^2/2
一樣代 x = 1, h = 170/256 得
4f(1+h) ~ 4 + h - 3/4 h^2/2
= 4 + 170/256 - 86700/524288
~ 4.49869537
當然 這又偏小了 再繼續展開, 第三項是正的, 會補回來.
這裡重要的一點就是誤差估計, 誤差就是 f^(n+1)(c)*h^(n+1)/(n+1)!.
由於 h > 0, c 在 (x,x+h) 之間. 估計上面這項的最大值就是了.
例如這題展開一項是 4*(-h^2/2! 3/16 c^(-7/4)) (因為最後還 *4 )
由於 h = 170/256, 這項(絕對值)最大可以接近 (170/256)^2/2 * 3/4, 看得出滿大的.
(其中, c 在 (1, 1+170/256) 之間)
或是, 另一種比較簡單的估計方法是, 因為這題用的這個展開是交錯級數,
誤差最大就是被丟掉的第一項.
這裡的理由是因為 x^(1/4) (1 + h/x)^(1/4) 的泰勒展開式在 |h/x|<1 時收斂
到原函數, 所以可以用該級數的誤差估計法.
: B, C ,D 式代入f(x+h):
: f(x+h) = 1/4 * x^(-3/4) * h + x^(1/4)
: = 1/4 * 1 * 170/256 + 1 //E式代入
: = 170/1024 + 1 = 597/512
: = 1.166015625
: 將1.166015625代回A式:
: 426^(1/4) = 4 * 1.166015625 = 4.6640625 #
: 本算式的答案為4.6640625,但是計算機按出來的卻是4.543101082...
: 接著驗算,我的答案(4.6640625)^4並非426,而是473...
: 結論是我的算式有問題,但是我找不到Orz
: 有請解惑。
如果說不使用 4^4 + 170, 用 5^4 - 199, 直觀上 170/256 > 199/625, 說不定比較好
(不過最後因為是 *5, 效果會打折XD 哪樣比較划算, 我也不知道)
5*(1/4 * 1 * (-199/625) + 1) = 199/500 + 5 = 4.602, ^4~448, 稍微接近一點XD"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.51.224
※ 編輯: suhorng 來自: 118.166.51.224 (01/25 18:12)
1F:推 Trewf:謝謝大大的詳解XD 1.163.20.141 01/26 11:23