문제

가지다 임의 정밀도 산술 체하는 수치해석 소프트웨어?

나는 대부분의 수치 분석 소프트웨어가 계속해서 동일한 부동 소수점과 복식을 사용하고 있다고 생각합니다.

내가 옳다면 그 이유를 알고 싶습니다. 제 생각에는 임의 정밀도 산술을 사용하면 이점을 얻을 수 있는 계산이 몇 가지 있기 때문입니다. 특히 유리수 표현을 사용하는 것과 결합할 때 더욱 그렇습니다. 에 완료 GNU 다중 정밀도 라이브러리.

내가 틀렸다면 예가 좋을 것입니다.

도움이 되었습니까?

해결책

임의의 정밀도는 느립니다. 아주 느린. 그리고 비이성적 가치 (예 : 대부분의 트리그 함수)를 생성하는 함수를 사용하는 순간, 임의의 정밀 이점을 잃게됩니다.

따라서 필요하지 않거나 정밀도를 사용할 수 없다면 왜 모든 CPU 시간을 소비합니까?

다른 팁

임의의 예비 산술이 수치 분석 소프트웨어에 영향을 미쳤습니까? 대부분의 수치 분석 소프트웨어는 동일한 부유물과 복식을 계속 사용한다고 생각합니다.

AP (Arbitrary-Precision)가 더 광범위하게 사용되지 않는 몇 가지 불행한 이유가 있습니다.

  • 중요한 기능에 대한 지원 부족 : NAN/무한대의 결 측값, 복소수 또는 특수 함수 없음, 반올림 모드의 부족 또는 버그 구현 (GMP에서 구현되지 않음), 중요한 이벤트에 대한 핸들러 부족 (중요한 숫자 손실 , 오버 플로우, 언더 플로우 ... 좋아, 이것은 대부분의 표준 라이브러리에서도 구현되지 않았다). 이것이 중요한 이유는 무엇입니까? 그 없이는 임의의 정밀도 (AP에 복소수 라이브러리 또는 특수 함수를 작성한 적이 있습니까?)로 문제를 공식화하기 위해 많은 에너지를 투자해야하기 때문에 AP에 변경 사항을 추적하는 데 필요한 기능이 부족하기 때문에 이중 결과를 재현 할 수 없습니다.

  • 모든 프로그래머의 99,9%는 숫자에 전혀 관심이 없습니다. 여기서 가장 많이 묻는 질문 중 하나는 "0.1+0.1이 0.2가 아닌 이유는 무엇입니까 ???? 도움말 !!!" 그렇다면 프로그래머가 특정 AP 구현을 배우고 문제를 공식화하기 위해 시간을 투자 해야하는 이유는 무엇입니까? AP 결과가 이중 결과에서 분기되고 숫자에 대한 지식이 없다면 버그를 어떻게 찾습니까? 이중 정밀도가 너무 부적절합니까? AP 라이브러리에 버그가 있습니까? 무슨 일이야?! 누가 알아....

  • 많은 숫자 전문가 하다 AP 사용을 규정하는 방법을 알고 있습니다. FP의 하드웨어 구현으로 인해 재생성이 어쨌든 "불가능"하고 입력 데이터는 거의 항상 중요한 숫자가 거의 없다고 주장합니다. 따라서 그들은 주로 정밀 손실을 분석하고 중요한 루틴을 다시 작성하여 최소화합니다.

  • 벤치 마크 중독. 와우, 내 컴퓨터는 다른 컴퓨터보다 빠릅니다. 다른 주석가들이 올바르게 언급 한 바와 같이, AP는 하드웨어 지원 부동산 데이터 유형보다 훨씬 느리게 느리고 손당 정수 데이터 유형을 프로그램해야하기 때문입니다. 이러한 태도의 임박한 위험 중 하나는 문제를 완전히 알지 못하는 프로그래머가 완전히 인상적인 말도 안되는 숫자를 뱉어내는 솔루션을 선택한다는 것입니다. 나는 GPGPU에 대해 매우 신중합니다. 물론 그래픽 카드는 프로세서보다 훨씬 빠르지 만 그 이유는 더 적은 정밀도와 정확성. 복식 (64 비트) 대신 플로트 (32 비트)를 사용하는 경우 계산하고 전송할 비트가 훨씬 적습니다. 인간의 눈은 매우 결함이 없으므로 한두 가지 결과가 제한이 아닌 경우에는 중요하지 않습니다. 하드웨어 생성자로서, 당신은 당신이 부정확하고 잘못된 둥근 계산을 사용하여 계산 속도를 높일 수 있습니다 (그래픽에 실제로는 괜찮습니다). 성가신 아프월 구현 또는 반올림 모드를 버리십시오. 프로세서가 GPU만큼 빠르지 않은 이유가 있습니다.

William Kahans 페이지를 추천 할 수 있습니다 링크 텍스트 숫자의 문제에 대한 정보.

Wolfram Research Institute는 실용적인 방식으로 Mathematica의 핵심에 임의의 차가 간격 산술을 얻는 데 큰 노력을 기울였으며 훌륭한 일을했습니다. Mathematica는 거의 모든 계산을 임의의 정밀도로 투명하게 수행합니다.

Mathematica와 같은 프로그램을 보면 플로트와 복식을 사용하지 않는다고 생각합니다. 암호화를 보면 플로트와 복식을 사용하지 않는다는 것을 알게 될 것입니다 (그러나 그들은 주로 정수와 함께 일하고 있습니다).

기본적으로 판단 요청입니다. 자신의 제품이 정확도와 정밀 사용 확장 프레임 또는 임의의 예비 산술 소프트웨어의 증가로 인한 혜택을받을 것이라고 생각하는 사람들. 정밀도가 필요하다고 생각하지 않는 사람들은 그것을 사용하지 않습니다.

임의의 정밀도는 비이성적 인 가치와 잘 어울리지 않습니다. 나는 모든 것을 거꾸로 뒤집는 것이 수치 분석 소프트웨어에 도움이 될 것이라고 생각합니다. 계산에 어떤 정밀도가 필요한지 알아내는 대신 소프트웨어에 최종 정밀도가 원하는 것을 알려 주면 모든 것을 알아낼 수 있습니다.

이렇게하면 계산을 위해 충분히 큰 유한 정밀 유형을 사용할 수 있습니다.

수치 문제에 대한 정확한 답변이 필요한 것은 매우 드 rare니다. 거의 항상 특정 정확도에 결과가 필요한 경우입니다. 또한 전용 하드웨어에서 수행하는 경우 작업이 가장 효율적이기도합니다. 이는 하드웨어에 가장 일반적인 문제에 대해 충분한 정확도를 가진 구현을 제공하라는 압력이 있음을 의미합니다.

따라서 경제적 압력은 일반적인 경우에 대한 효율적인 (하드웨어 기반) 솔루션을 만들었습니다.

이것 종이 Dirk Laurie는 가변적 정밀도 사용에 대한주의 이야기를 제시합니다.

귀하의 질문과 직접적인 관련은 없지만 이것을 살펴보고 싶을 수도 있습니다. 종이 작성자: l Trefethen

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top