ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ

逆数法

ニュートン法逆数の確認

最終更新日:2006/04/18

●概要

 FFT乗算ができたとしても、除算を逆数法で本当に実現できるかを実際に確認しておく。

●確認方法

 UltraMath のレガシ乗算を使用して、ニュートン法による逆数演算プログラムを組み、指定した精度と収束回数を実測する。逆数である確認は、元の数と乗算して、1か1に限りなく近いことを確認する。この場合、時間はどうでも良い。

●結果

9.87654321987654321987654321987654321987654321987654321

の逆数を精度5,000桁で求めて見た。

12回で収束し、5,000桁が以下のように求まった。元の数と乗算して1*になっている。
→ * 1になるのはおかしい(四捨五入していないので)が・・・・・

12
0.1012499998974843750012814453124839819335939502258300757234271239522071609
50597410488117532368898530845388768465682640292928966996338387912545770151
09317787311133537783610820652704864741841189190726985135115912685811061216
42735160979465810487756677368903041532888711980839903600238488704997018891
18753726386015578420174805269849064934025636688324679541395941505732550731
17834311596152071094923099111313461261108581734236142728322048226020974387
04973782016187827724797652153440029348082000645648973979429387825257132652
18428584184769642697690480716278767741046515403236918557459538518031755768
52470430289333994621383325067232708436659591144541755110703353061106083086
73617396141579782548230252718147121842035660975962054237800474322027494070
97465632411281679696108978902548637763718142027953523224650580959691867839
25385155075932685561550841430480614482118992318973522721012820840987339739
48765825325640427183429494660208143816746385702290670178721366622765982917
21542521353581968482978975393962762807575465464905306681688683666580141454
06649823182416877210219789034872252637064096852161698779222978765259712765
43425359043207183011959911224850500097189368748785132890640185838866997677
01416354153732194323078347570961520655362980991807962737602501715779867478
55275165651809060429352386744633095165702211310418597358619767533017252905
83728433867703394577666207566766672405415416594932307292563346158842958174
02696302181216296222734796297215815046284802311921440072350981897845612726
27692984092153837698848077028764409162140434760473244565494084442931323944
46335845069421814436631214819542109814755723627315553454658555581817780555
22626524305967168446175410394422807370069714907975378563549057767955636777
90055454027624306824654696174816816287689789796403877627544951529655688105
87930390880150869101498114136231273573297109080333786136495828685793801128
92757748588840528142639493398217006332522388670843368891614457888854819276
38931475904513356551203708043099828649461252141881734348226478320647169021
00203538722734955765965813052925427336838432158289519599033881003999576487
45000529390687493382616406332717295022091033710973862078612826724017339665
94978325417562781057280455111783994311102700071111216249111109796886121252
53891335934326358300820920521239738493484503268832456209138581797385767727
53267790340584152620742698092341966273744475421578194057230272574284621592
82144223019098197202136272534973296593312833792583589577592705140405091175
61993636030475079549619061505629761731179628990860253625114246829686071914
62892410106713844873666178189079071522636511605967043604925411954938432350
56337084561785661442977679231962779009600465262379994184230375072686995311
59141255860510734301743615821228204803247147438946910657013163616787335454
79015830681512302217731096121028361298487145483768910681452888616481838993
43976911330700288608366246392395421920095057225998913034674912337066563595
78666795505266665056184166686807822916404777213544940284830688246439616396
91950479504863119005176711012435291112344558861095693014236303838334546201
00831817248739602284390754971445115562856936156714288196791071397540111607
53074860490586564243867678071951643899100604451261242444359234469445509569
13194125538584060930767699238365403759520432453005994594338437567569757030
40537803711993277453600084031829998949703375013027457812337156777345785540
28317768074646027909191924641010100941987373738225157828272185527146597691
03566751873705415601578682304980266471187746669110154179136122060260798474
24674001907191574976160105312798099933589922500830125968739623425390754707
18261556616031855542289476805721381539928482730750893965865613825436804827
17191493966035106325424561170932192985363347588695458154128806773073389915
33658262605829271717427134204782160721190222990985122212612685972342341425
34572083343317838833208527014584893412317688832346028889595684763880043815
45149945230685625684616429678942294629014233817136309577285796130283927548
37145090564535686368044553920298193075996272586550046592668124417591648444
88135439433773307007077833662411527079219855911509751811231128092234610898
84706736376441165795294485427558819944655513738191806078272602424021592469
69973009412875438632338955767095763052911302961838608712977017391087888532
61130014334235874820822051564739724355440753445567115581920286055225996424
30967504469612906194129838673585877015567676537305404043283682449458953969
38176307639522796053255965049334300436883321244538958484443263120194459109
74756926112815538423589805769705127427878696032151506174598106172817523672
83978095408950273807389134077406623324032417208449594784894380065188820249
18615224688416059691394799253857565009326780437383415244633957309340825533
63323968082958450398963019370012962267999837961525002025480937474681488281
56648139648041899266899475246663756559416703043007291211962408859850470901
75186810122810164873464872939081689088261478886396832763919938340451000770
74436249036569546887042880663922088991690848887603864388904951695138688103
81076639871249042000596886974992538912812・・
1

●結論

 ニュートン法逆数は実用できる。

●確認プログラム

確認だけなので、数値は、1 以上、10未満に限定。txtBに入力されている。
Precision は、指定した精度(有効桁数)

Dim i As Integer
Dim X As New UltraLong(txtB.Text)
Dim Xn As New UltraLong("0.09999")    '初期値
Dim Xnn As New UltraLong(0)
Dim d As New UltraLong(0)
For i = 0 To 500
   Xnn = Subt(Mul(Xn, 2), Mul(X, Mul(Xn, Xn)))
   d = Subt(Xn, Xnn)
   If d.IsZero OrElse d.Exponent < -Precision Then Exit For   '完全収束か目標の精度が出たら終了
   Xn = Xnn
Next
txtCC.Text = i.ToString + vbCrLf + Xnn.ToNumString(Precision) + vbCrLf + Mul(Xnn, X).ToNumString(NumFormat.FixedPoint)