ニュートン法とその改良版

wikipedia:ニュートン法のところに改良版が載ってるのでやってみた。

   newton =: 1 : '- (u % u d. 1)'  NB. そのまま
   newton2=: 1 : '- (*:@u % (u d. 1 * (u - u@(-(u % u d. 1)))))'   NB. 改良版
   f =: _2+*:   NB. f(x) = x^2 - 2
   
   NB. 2の平方根が求まる
   f newton^:_ ] 2
1.41421
   f newton2^:_ ] 2
1.41421
   
   NB. 収束の早さを確認
   f newton^:(i.10) 2000
2000 1000 500.001 250.003 125.005 62.5107 31.2713 15.6676 7.89765 4.07544
   f newton2^:(i.10) 2000
2000 666.668 222.225 74.0831 24.7183 8.31129 2.98229 1.54864 1.41448 1.41421

収束のようすをグラフで確認する。