数値計算の授業を受けてて。

OCamlのコードとか考えてた。書けた。

# let newtonMethod f fa cond x0 =                                       
    let rec iter xn = if (cond f fa xn) then xn else (iter (xn -. (f xn) /. (fa xn))) in
  iter x0;;                                                             
val newtonMethod :
  (float -> float) ->
  (float -> float) ->
  ((float -> float) -> (float -> float) -> float -> bool) -> float -> float =
  <fun>
# (newtonMethod (fun x -> x*.x+.2.0*.x+.1.0) (fun x -> 2.0*.x+.2.0) (fun f fa xn -> xn-.(f xn)/.(fa xn) < 0.00001) 3.0);
- : float = 1.

test