Java의 BigDecimal 클래스 (및 결과를 분석)를 사용하여 PI (3.1415926 ...) 및 PHI (1.6180339 ...)와 같은 대략적인 숫자 상수.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다.
참고 :이 프로젝트는 최소 Java 14를 실행해야합니다. Java 15는이 문서를 작성할 때 가장 최근 버전이므로 권장됩니다.
javac ComputePhi.java ComputePi.java PiAlgorithmExaminer.java
Computephi는 두 가지 용어를 시작하더라도 두 가지 이전 용어를 추가하여 일련의 숫자를 생성하면 연속 용어 사이의 비율이 PHI (황금 비율)로 수렴한다는 알고리즘을 보여줍니다.
java ComputePhi <first-term> <second-term> <iterations> <precision> [options]
--print_steps (-p) # Print approximation for each iteration of algorithm.
--compare_values (-c) # Compare sequential iterations' results, and stop iterating early if they are equal. # The Fibonacci sequence
java ComputePhi 1 1 10 10
# The Lucas numbers (printing each step)
java ComputePhi 2 1 10 10 -p
# Go wild if you want to!
java ComputePhi 23 9001 200 1000 --print_steps
java ComputePhi 314 159 200 20000 --compare_valuesComputePi는 PI를 근사화하기위한 7 가지 알고리즘을 보여줍니다. 결과는 정확도를 결정하기 위해 백만 자리의 PI (여기에서 공급)의 미리 계산 된 파일과 비교됩니다.
java ComputePi <algorithm> <iterations> <precision> [options]
<algorithm> 숫자 또는 알고리즘 이름 (Case-Insensentitive) 일 수 있습니다.| 숫자 | 알고리즘 이름 | 참조 |
|---|---|---|
| 1 | 그레고리-레ibniz | [1] |
| 2 | Nilakantha | [2] |
| 3 | 뉴턴 | [3] |
| 4 | 베트타 | [4] |
| 5 | 월리스 | [5] |
| 6 | Chudnovsky | [6] |
| 7 | 브렌트 살라민 (또는 가우스 레지 젠드) | [7] |
--all_digits (-a) # Print all digits (default only prints accurate digits).
--print_steps (-p) # Print approximation for each iteration of algorithm.
--compare_values (-c) # Compare sequential iterations' results, and stop iterating early if they are equal.
--estimate_memory_usage (-e) # Print an estimate of memory usage.
java ComputePi 1 1000 10
java ComputePi 2 1000 10 --print_steps
java ComputePi CHUDNOVSKY 10 100 --compare_values --estimate_memory_usage Pialgorithmexaminer는 ComputePi 반복에서 구현 된 알고리즘의 근사, 런타임 및 메모리 사용을 비교하고 결과를 파일 output.txt 에 인쇄 한 다음 표준 출력의 표에 데이터 분석을 인쇄합니다.
java PiAlgorithmExaminer <algorithms> <iterations> <precision> [options]
<algorithms> 는 쉼표로 분리 된 알고리즘 이름 및 숫자 목록입니다 (위의 값 참조). --skip_tests (-s) # Skip running the tests (only use to re-analyze already generated output data).
--print_table (-p) # Print the analysis as a table (defaults to printing results in a "key:value" format, which is more useful for large datasets). java PiAlgorithmExaminer CHUDNOVSKY,BRENT_SALAMIN 1000 2000
java PiAlgorithmExaminer 1,2,3,4,5,6,7 10 2000 --print_table # <----- outputs results shown below일부 알고리즘은 다른 알고리즘보다 계산하기가 훨씬 느립니다. 예를 들어, Viete의 공식은 모든 반복에 대해 제곱근을 계산하므로 다른 알고리즘보다 비교적 느립니다.
다음은 7 개의 구현 된 알고리즘의 첫 10 회 반복을 비교하는 프로그램의 예제 출력입니다. 첫 번째 섹션은 ComputePi (런타임 및 메모리 사용 정보 포함)에 전달 된 인수를 보여 주며, 두 번째 섹션은 반복 당 PI의 정확한 선행 숫자의 수를 가진 테이블을 보여줍니다.
GREGORY_LEIBNIZ 10 2000 --print_steps --compare_values --estimate_memory_usage 0.103 seconds 1.640 KB
NILAKANTHA 10 2000 --print_steps --compare_values --estimate_memory_usage 0.027 seconds 1.652 KB
NEWTON 10 2000 --print_steps --compare_values --estimate_memory_usage 0.096 seconds 3.263 KB
VIETE 10 2000 --print_steps --compare_values --estimate_memory_usage 0.395 seconds 10.548 KB
WALLIS 10 2000 --print_steps --compare_values --estimate_memory_usage 0.017 seconds 1.647 KB
CHUDNOVSKY 10 2000 --print_steps --compare_values --estimate_memory_usage 0.133 seconds 13.305 KB
BRENT_SALAMIN 10 2000 --print_steps --compare_values --estimate_memory_usage 0.331 seconds 11.368 KB
| 반복 | 그레고리 _leibniz | Nilakantha | 뉴턴 | 베트타 | 월리스 | Chudnovsky | Brent_salamin |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 2 | 1 | 0 | 0 | 14 | 0 |
| 2 | 1 | 2 | 3 | 1 | 0 | 28 | 3 |
| 3 | 0 | 3 | 3 | 2 | 0 | 42 | 8 |
| 4 | 1 | 2 | 4 | 2 | 0 | 56 | 19 |
| 5 | 0 | 3 | 4 | 3 | 1 | 70 | 41 |
| 6 | 1 | 3 | 6 | 4 | 1 | 85 | 84 |
| 7 | 1 | 3 | 6 | 5 | 1 | 99 | 171 |
| 8 | 1 | 4 | 7 | 5 | 1 | 113 | 345 |
| 9 | 1 | 4 | 8 | 5 | 1 | 127 | 694 |
| 10 | 1 | 4 | 9 | 6 | 1 | 142 | 1392 |