브렌트 근점 찾기 알고리즘의 표준 (수치 조리법 및 GSL C 버전이 동일 함) implementation을 읽고 변수 "e"의 의미를 이해할 수 없습니다. 사용법은 "e"가 대괄호 사이의 이전 거리라고 가정합니다. 그런데 왜 우리가 이분법을 사용할 때 "xm"(거리의 절반)으로 설정되어 있습니까?브렌트 루트 찾기 알고리즘의 일반적인 구현에서 "e"변수는 무엇입니까?
답변
저는 알고리즘에 익숙하지 않습니다. 그러나 C 소스와 알고리즘의 Wikipedia description을 비교할 수 있습니다. 알고리즘은 직설적 인 것처럼 보입니다 (루트를 찾는 메소드에 익숙한 경우). 그러나 C 구현은 포트란의 직접 포트처럼 보이므로 읽기가 어렵습니다.
가장 좋은 추측은 e
이 루프 조건과 관련이 있다는 것입니다. 다음, e = b - a
나중에 if (fabs(e) <= tol ...
: 이 repeat until f(b or s) = 0 or |b − a| is small enough (convergence)
C 소스는 말한다 :
은 위키 백과 (알고리즘의 라인 8) 말한다.
내가 변수의 목적이 책에서 명확하게 설명 될 수 있기를 바랍니다,하지만 분명히
이 좋아 :)없는 것, 여기 당신은 간다. 원래 구현 (algol 60)을 찾았습니다 here. 알고리즘의 좋은 설명 이외에, 그것은 (50 페이지에서 시작) 말한다 :
가그래서e
가 마지막 전 단계에서p/q
의 값이 될 수 있습니다.|e|
< δ 또는|p/q|
≥1/2|e|
인 경우 이등분을 수행하십시오. 그렇지 않으면 우리는 Dekker의 알고리즘처럼 이분법 또는 보간을 수행합니다. 따라서,|e|
은 모든 두 번째 단계에서 최소한 2의 계수만큼 감소하고,|e|
< δ 이분법이 수행되어야 할 때. (A 양분 후 우리는 다음 단계e = m
걸릴.)
e
의 추가 데커의 알고리즘의 브렌트의 "기본 수정"입니다.
E는 "엡실론 (epsilon)"변수이며 근본적으로 얼마나 가깝게 가까워 졌는지 측정합니다. 특정 애플리케이션에 20 자리의 정밀도가 필요하지 않을 수 있으므로 엡실론을 사용하면 필요한 반복 횟수 (즉, 실행 시간)와 필요한 정확성 간의 균형을 맞출 수 있습니다.
부동 소수점 숫자로는 정확하지 않을 수 있으므로 엡실론은 약간 작은 0이 아닌 숫자 여야합니다. 실제 값은 응용 프로그램에 따라 다릅니다 ... 기본적으로 가장 큰 오류입니다.
"e"는 a) 반복 사이에서 변화하는 변수이고, b) 역 2 차 보간을 할 것인지 아니면 2 등분으로 돌아갈 것인지를 결정할 때만 검사되고, c) 이미 존재하는 것이기 때문에 나는 그렇게 생각하지 않는다. "탄성"공차 변수 "tol"은 "e"가 주장하는 것을 담당합니다. 쿠키가 없습니다. –
저는 그가 기본적으로 옳다고 생각합니다, 그는 원하는 정밀도를 지정하는 상수라고 말하는 것이 아니라 원하는 정밀도를 지정하는 상수와 비교하는 값이라고 말하는 것입니다. 다른 대답과 잘 어울립니다. 수렴 특성을 기반으로 사용할 알고리즘 (역 이차원 대 이분법)을 결정하는 데 사용할 수도 있습니다. –
e는 엡실론 변수가 아니며 그 변수는 tol1입니다. – Robotbugs
양분 단계에서 간격은 정확히 반으로 나뉩니다. 따라서 간격의 현재 너비를 유지하는 e도 절반으로 줄어 듭니다.
- 1. 연결된리스트 그래프 구현에서 Dijkstra 알고리즘의 큰 문제점
- 2. DataGridColumn의 루트 요소 찾기
- 3. 자바에서 동의어와 루트 찾기
- 4. 트리 루트 찾기
- 5. 시작점이없는 루트 찾기
- 6. 문자열 구현에서 가장 큰 palindrome 찾기
- 7. 시컨트 루트 찾기 문제 C++
- 8. 루트 디렉토리의 모든 폴더 찾기
- 9. 부스의 알고리즘의 핵심은 무엇입니까?
- 10. 주어진 데이터에서 가장 일반적인 값을 찾기
- 11. ARIES 또는 다른 ACID 보장 알고리즘의 일반적인 구현이 있습니까?
- 12. jquery selector - 루트 노드의 자식 찾기
- 13. 푸리에 분할 알고리즘의 논리는 무엇입니까?
- 14. 이미지 패닝 알고리즘의 문제점은 무엇입니까?
- 15. 이 체크섬 알고리즘의 이름은 무엇입니까?
- 16. Shunting Yard 알고리즘의 반전은 무엇입니까?
- 17. AO * 알고리즘의 실제 적용은 무엇입니까?
- 18. 메모리 누수 찾기 도움 (일반적인 팁)
- 19. 기본 클래스에서 함수를 구현하는 일반적인 방법 찾기
- 20. 일반적인 오버로드 된 메서드 찾기 및 호출
- 21. 알고리즘의 퍼지/근사 검사
- 22. 유전자 알고리즘의 핵심 알고리즘
- 23. 알고리즘의 복잡성
- 24. 다음의 C++ 코드는 무엇입니까? (스마트 포인터 구현에서)
- 25. 이 프랙탈 구현에서 잘못된 점은 무엇입니까?
- 26. Hibernate : 루트 객체를 가진 루트 콜렉션
- 27. Erlang :이 trie 구현에서 가장 잘못된 점은 무엇입니까?
- 28. HMAC 알고리즘의 키
- 29. 알고리즘의 약식 이름
- 30. Java는 "equals"구현에서 무엇을합니까?
예, "if"문에서 읽히기 때문에 "e"가 루프 조건과 관련되어 있음을 알 수 있습니다 ... 요점은 위키 백과 조건문에서 "b"와 "a"는 (GSL과 Netlib 코드에서 "b"는 가장 좋은 추측이며 "a"는 이전의 최상의 추측이며, "c"는 반대 지점 임). –
위 업데이트를 참조하십시오. – Seth
감사합니다.Google 도서를 통해 원본 종이를 검색하는 방법에 대해 생각해 볼 수있었습니다 ... –