作者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