2012-06-08 3 views
2

, 나는 sqrt(pi)의 진수 상응하는Sin, cos 등의 Python 2 10 진수? 파이썬 2.6에서

Decimal(pi).sqrt() 

죄, COS 또는 기타 (역) 삼각 함수에 대한 그런 있나요 것으로 나타났습니다?

sin을 계산하는 방법 만 언급합니다. Decimal(pi).cos() 존재도 from decimal import cos

업데이트을 수행하지 않습니다 문제를 기본 삼각 함수를 사용하여 내가 다시 플로트로부터 뭔가를 계산 할 때마다 변환하는 경우가 Decimal을 사용하는 점을 격파한다는 것입니다. (또한 모든 계산 주위 Decimal를 입력하는 것은 성가신,하지만 난 래퍼 함수를 ​​만들 수 추측)

+2

왜 십진수 모듈이 삼각 함수를 사용해야합니까? 그리고 Decimal (math.cos (val))과 같은 문제는 무엇입니까? – SuperSaiyan

+0

질문에 감사 드리며, 나는 이제 내 질문에 그것을 분명히했다. – Mark

답변

4

값 (A)만을 특정 각도에 대한 유리수 (http://planetmath.org/encyclopedia/RationalSineAndCosine.html 참조)가있다 그래서 당신 수없는 죄 (a) 또는 COS (A)로서 소수의 값을 저장 정밀도를 잃지 않고. 이것은 sin 및 cos 값을 Decimal로 변환하고 sin 및 cos 값을 Decimal로 반환하는 내장 함수가있는 목적을 무효화합니다.

또한 파이썬의 소수점이 (-1)**_sign * _int * 10**_exp이기 때문에 소수점 이하 자릿수를 모두 Decimal로 저장할 수 없으므로 유리수의 제수는 10 진수로 10이되어야 완전 정밀도로 저장할 수 있습니다.

@ 당근 - 상단의 mpmath 조언이나 일부 수치 알고리즘 (Taylor 시리즈 근사치와 같음)이 당신이 얻을 수있는 최선이라고 생각합니다.

+1

숫자의 제곱근은 항상 합리적인 것은 아닙니다. 요점은 무한 정밀도가 아니라 임의의 정밀도입니다. 기본 기능은 당신에게 그것을 제공하지 않습니다. – nog642

4

를 삼각 함수 그래서 math module

에 : 당신이 멀티를 찾고 있다면

>>> decimal.Decimal(math.cos(0.1)) 
Decimal('0.99500416527802570954008842818439006805419921875') 

trig 함수를 지원하는 파이썬의 정밀 수학 라이브러리, 십진수가 아닙니다. mpmath을보십시오. Mpmath는 임의의 정밀도로 trig function을 지원합니다. 십진수는 그렇지 않습니다.

+0

추가 정밀도를 위해 Decimal을 사용하는 것이 무의미한 것 같습니다. 그리고 나서 모든 계산에 대해 float로 변환하십시오 ... – Mark

+1

@Mark : 십진수는 trig 함수를 가지고 있지 않습니다. 모두를 파이썬에서 Decimal 클래스로 작성하거나 파이썬 수학 모듈이 있습니다. 또는 정밀도와 같은 10 진수를 지원하고 trig 함수가있는 mpmath와 같은 라이브러리를 사용하십시오. –

+0

0.1은 먼저 float로 변환되기 때문에 53 비트의 정밀도 만 갖습니다. 결과가 53 비트 (약 17 자리)를 초과하여 정확하지 않습니다. '>>> gmpy2.cos (gmpy2.mpfr ("0.1")) mpfr ('0.9950041652780257660955619878038702948385762254150840359593528', 200)' – casevh

4

이 부분을 참조하십시오. 죄의 (a) 및 CoS의

http://docs.python.org/library/decimal.html#decimal-recipes

+0

내장 된 것이 없습니까? 또한 다른 (역) 삼각 함수를 원한다면'acos'라고할까요? – Mark

+1

귀하의 요구 사항에서 판단 할 수있는 한, 그들은 아무도 내장되어 있지 않습니다. –

4

Decimal 라이브러리는 주로 반올림의 정밀 제어가 필요한 재무 계산을 위해 반올림 된 기본 -10 산술을 지원하기위한 것입니다. 범용의 임의 정밀 라이브러리가 의도 된 것은 아닙니다.

일반적인 임의 정밀도 라이브러리가 필요한 경우 mpmath 또는 gmpy2을 확인하십시오.

+1

+1 : 예, 바로 갈 길이 멀었습니다. – dawg