수치 프로세스는 개선되는 관찰의 스트림이 될 수 있다.
정확한 부분합과 제곱근 추측값을 지연된 수열로 만들고 한 비교에 필요한 유한한 앞부분만 요구합니다.
수치 반복이 마지막 답만 숨겨 돌려주는 대신 모든 중간 근삿값을 설명하면 무엇이 달라질까요?
- 연속적인 수치 상태를 스트림 원소로 표현하기
- 무한 항 스트림을 정확한 부분합으로 누적하기
- 고정된 반복 루프 없이 Newton 제곱근 추측값 만들기
- 나머지 프로세스는 지연한 채 유한한 앞부분 요구하기
- 유한한 Newton 개선 수열 관찰하기
alternating-terms는 1, −1/2, 1/3, −1/4 같은 항을 설명합니다. partial-sums는 완성된 합을 지연된 꼬리에 넘기므로 각 스트림 원소는 무한 교대 조화급수의 재사용 가능한 근삿값입니다. stream-take는 결과에 보이는 pair 다섯 개만 강제합니다.
sqrt-stream은 √2를 향한 모든 Newton 개선을 드러냅니다. 정확한 유리수 수열은 1, 3/2, 17/12, 577/408, 665857/470832로 시작합니다. 생산자를 바꾸지 않고 더 많은 추측값을 살펴볼 수 있습니다. 표시한 앞부분은 선택한 시작값의 개선 수열을 정확히 기록합니다.
- 출력
- —
- 값
- —
- 진단
- —
부분합은 (1 1/2 5/6 7/12 47/60)입니다. 제곱근 추측값은 (1 3/2 17/12 577/408 665857/470832)입니다.
이미 만들어진 무한 리스트를 상상하지 말고 force 연산을 세세요. partial-sums에서는 이전 합이 다음 지연 단계로 넘어가는 과정을 따라가세요. sqrt-stream에서는 현재 추측값과 다음 추측값 공식을 담은 promise를 구분하세요.
프로그램을 수정하고 결과를 비교해 보세요.
역제곱 부분합 스트림을 만들고 값 여섯 개를 요구하세요. 그 다음 연속한 두 inexact 추측값의 차이가 보이는 허용 오차보다 작을 때 멈추는 stream-limit 소비자를 만드세요.
힌트 보기
생산자와 종료 정책을 분리하세요. 소비자는 이웃한 원소를 비교하되 스트림은 모든 중간 상태를 유지할 수 있습니다.