使用 Streams 實現數學函式
Stream
s,尤其是 IntStream
s,是實現求和項(Σ)的一種優雅方式。Stream
的範圍可以用作求和的邊界。
例如,Madhava 對 Pi 的近似由公式給出(來源: 維基百科 ):
這可以用任意精度計算。例如,101 個術語:
double pi = Math.sqrt(12) *
IntStream.rangeClosed(0, 100)
.mapToDouble(k -> Math.pow(-3, -1 * k) / (2 * k + 1))
.sum();
注意: 使用 double
的精度,選擇 29 的上限足以得到與 Math.Pi
無法區分的結果。