近接根の識別

さて,r, R を先の条件を満たすようにとるとして,そも,R をどのように定めるのか?という問題があります.

確かに,数値解の誤差 R の系において,互いの距離が 2*R 以下である数値解を全て集めれば,重根に対する数値解は必ずそれに属します.しかし,互いの距離が 4*R 以下である厳密相異根(近接根)が存在すると,それらに対する数値解もメンバーになるかも知れません.

ここでもし,系における厳密相異根間の距離の最小値(根差)sep の値が判るならば,sep > 4*R を満たすように R をとっておけば,相異根 r1, r2 に対する数値解 s1, s2 間の距離は

 | s2 - s1 | = | (r2 - r1) - (s1 - r1) + (s2 - r2) | >= sep - R - R > 2*R 

のように 2*R より大きくなるので,上記のように集めた数値解全体が,重根に対する数値解全体になります.

では如何にして sep の値を得るかですが,それには resultant を繰り返し用いて1変数化する方法があります.maxima では

(%i7) factor(eliminate([2*c+1,4096*c^3+27*b^4,8*a*c-9*b^2-2*a^3,x^4+a*x^2+b*x+c],[c,b,a]));
Evaluation took 0.0300 seconds (0.0400 elapsed) using 2.309 MB.
(%o7) [33554432*x^8*(2*x^4-27)*(6*x^4-1)^3
               *(186624*x^32+2985984*x^28+40621824*x^24+12082176*x^20
                            +41597280*x^16+64694016*x^12+262151536*x^8
                            -644544*x^4+729)]

のように必要条件を定める多項式が得られ,この実根

 -1.91683..., -0.63894..., 0, 0.63894..., 1.91683...

から,sep >= 0.63894...(実際には c は 0 でないので,1.91683...-0.63894...)と判るので,

 R < 0.63894.../4 = 0.15973...

のようにとっておけば,上記の系の近接根に対する数値解間の距離はカウントされず,原理的には,これをすべての多項式の組合せに対して実行し,最小の sep に対して, R を定めればよいことになります.

...が,一般に,resultant の係数は爆発し,モニター画面が埋まります.