看完不会?让 AI 一步步解给你看
Algebra · real student question

求解三次方程 1.5708x³ − 0.01446x² + 1.35803e−5 x + 1.0159097e−12 = 0。

Question

解方程,求 xx:

1.5708x3−0.01446x2+1.35803×10−5x+1.0159097×10−12=01.5708x^3-0.01446x^2+1.35803\times10^{-5}x+1.0159097\times10^{-12}=0

Step-by-step solution

  1. 动用求根工具之前,先从系数里读出量级。 系数每升一次幂大约就小两个数量级(1.571.57、1.4×10−21.4\times10^{-2}、1.4×10−51.4\times10^{-5}),这是根落在 10−210^{-2} 到 10−310^{-3} 附近的典型特征。而常数项又比它们小了七个数量级,所以必然有一个根远比另外两个小得多。

  2. 先做尺度变换,换成条件良好的三次方程。 代入 x=t/1000x=t/1000,相当于把 tkt^k 的系数乘上 10003−k1000^{3-k}:

    1.5708t3−14.46t2+13.5803t+1.0159097×10−3=01.5708t^3-14.46t^2+13.5803t+1.0159097\times10^{-3}=0

    现在所有系数都落在相差不过几个数量级的范围内,求根时因相减抵消而损失的精度就少得多。

  3. 靠符号变化定位两个较大的根。 取 g(t)=1.5708t3−14.46t2+13.5803t+0.0010159097g(t)=1.5708t^3-14.46t^2+13.5803t+0.0010159097:g(1)=0.6921>0g(1)=0.6921>0,g(1.5)=−6.8621<0g(1.5)=-6.8621<0,g(8)=−12.5470<0g(8)=-12.5470<0,g(9)=96.0769>0g(9)=96.0769>0。所以两个根分别落在 (1,1.5)(1,1.5) 和 (8,9)(8,9) 内;二分到机器精度得到 t=1.06167t=1.06167 与 t=8.14390t=8.14390。

  4. 那个极小的根由常数项给出。 在 t=0t=0 附近三次项和二次项都可以忽略,于是 13.5803t+0.0010159097≈013.5803t+0.0010159097\approx0 给出 t≈−7.4808×10−5t\approx-7.4808\times10^{-5},再用牛顿迭代精化到 t=−7.480165×10−5t=-7.480165\times10^{-5}。把三个根都除以 10001000 还原:

    x=−7.480165×10−8,0.00106167,0.00814390x=-7.480165\times10^{-8},\quad 0.00106167,\quad 0.00814390

  5. 用韦达定理检验,而且要真算一遍而不是想当然。 根之和应当是 0.01446/1.5708=0.00920550040.01446/1.5708=0.0092055004,三个根相加正好是 0.00920550040.0092055004 ✓。根之积应当是 −1.0159097×10−12/1.5708=−6.467467×10−13-1.0159097\times10^{-12}/1.5708=-6.467467\times10^{-13},三根相乘正好是 −6.467467×10−13-6.467467\times10^{-13} ✓。网上流传很广的那组答案 0.001004550.00100455 和 0.008201340.00820134 通不过这个检验 —— 代回去残差在 10−810^{-8} 量级,而不是 10−1310^{-13}。

Answer

x≈−7.480165×10−8,x≈0.00106167,x≈0.00814390x\approx-7.480165\times10^{-8},\qquad x\approx0.00106167,\qquad x\approx0.00814390

Need to solve a different problem like this? Open the solver →