Java练习:牛顿迭代法 Vs. 不动点 中,介绍了Java中求平方根、求方程的解的不动点解法 getFixedPoint(DoubleUnaryOperator duo)
在Java 8中,我们可以将不动点的逼近数字序列,非常简单地打印出来。
下面的代码打印sqrt(2.0)的不动点的逼近数字序列
public static void iterate(){
UnaryOperator<Double> f = x ->(x + 2.0/x)/2.0;
Stream<Double> infinite =Stream.iterate(1.0,f);
infinite.limit(20).forEach(System.out::println);
}
输出:
1.0
1.5
1.4166666666666665
1.4142156862745097
1.4142135623746899
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
1.414213562373095
f = x ->(2*x + n/(x*x))/3.0;
则求立方根。