[공학용 계산기] 계산기의 가장 큰 수는? 자릿수 한계 (feat. 팩토리알)
1. 계산기별 factorial 계산시 결과
Factorial | ~69! | 70!~449! | 500!~1006! | 1007!~3248! | 3249!~ |
---|---|---|---|---|---|
EL-509W | O | X(Error 2) | X | X | X |
fx-570ES, EX | O | X(Math Error) | X | X | X |
fx-9860G | O | X(Ma Error) | X | X | X |
TI-nspire, 89T | O | O | X(500!) | X | X |
HP Prime | O | O | O | X(∞) | |
윈도우10 내장 | O | O | O | O | X(Overflow) |
* CAS 계산기인 HP Prime 이나 TI-nspire 는
내부 유효 자릿수(14 digits)와 관계없이 가능한 한도 내에서는 자연수 결과(참값)를 유지하지만,
기타 공학용 계산기는 내부 유효 자릿수(보통 14자리) 이상이 되면 자연수를 버리고
부동소숫점 형식으로 단순화해서 근사값으로 계산합니다.
* 참고
69! = 1.71122e+98
70! = 1.19786e+100
449! = 3.85193e+997
500! = 1.22014e+1134
1006! = 4.10908e+2585
1007! = 4.13784e+2588
2000! = 3.316275e+5735
3000! = 4.14936e+9130
3248! = 1.97363e+9997
50000! = 3.34732... × 10^213236
1. nspire에서 500! 이상을 이용한 계산은 표기만 될 뿐, 실제로 이루어지지 않음
2. 기존 윈도우 계산기는 그만둘지 물어보는 창이 나와도 백그라운드로 계속 계산하여 결국에는 계산이 되었지만, 지금(윈도우10)은 그냥 오버플로우 메시지만 띄움
2. 검증 (500! 계산시)
1) Wolfram Alpha
2) TI-nspire
ㄴ 500! 이 결과식에 포함되어 표시되지만, 실제 계산이 불가능하며 오류가 유발됨.
3) HP Prime
계산도 되고, 저장도 되고, 연산도 잘 되는데...
지수형식으로 저장하면, 그보다 작은 수에서도 Inf (CAS 의 경우) 가 나옴.
-> 정수 저장공간이 따로 설정되는 듯 하고,
지수 형식의 경우 Double Precision 제한 받는 듯 함.
-> Home 에서는 9.99999999999*E499 이상의 숫자 입력시 9.99999999999*E499 로 강제로 바뀜
댓글8
-
세상의모든계산기
울프람 신께서는 한계도 없는지 계속 결과를 뽑아내 주시는데... 맞는지 틀리는지 검증할 방법이 없어서 그만 뒀습니다.
의심은 불경한 짓인가?
-
세상의모든계산기
중간값 오류 가능성
http://kin.naver.com/qna/detail.nhn?d1id=5&dirId=50105&docId=236207580&ref=me2lnk
(최종결과값은 계산기 한계 이내일지라도)
계산식 중간에 계산기 한계를 넘는 중간결과가 발생하면
최종 결과의 오류로 이어질 수 있습니다.
이런 경우에는 계산 순서를 적절히 조절하여 한계를 벗어나지 않게 하거나,
단위를 줄여서(?) 계산하는 등의 편법이 필요합니다.
ㄴ A=9.11*10^(-31), B=(1.6*10^(-19))^4, C=(4π*(8.85*10^(-12)))^2, D=(1.054*10^(-34))^2 -
세상의모든계산기
fx-9860GII 에서도 똑같은 증상
http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=113111&docId=286373393 -
-
세상의모든계산기
계산기 설명서에는 계산기에서 사용 가능한 숫자의 범위가 나옵니다. 이를 통해 몇 펙토리알까지 계산이 가능할지도 추정해 볼 수 있겠지요.
└ fx-5800p 설명서 중 발췌 ┘ -
세상의모든계산기
'왜 1.79769313E+308 일까?'
싶어서 검색을 해 보니
https://stackoverflow.com/questions/22402885/why-is-number-max-value-1-7976931348623157e308-instead-of-9007199254740992e102
바드 AI 에 물어보니
삼성 갤럭시 계산기 최대값이 1.79769313E+308 이던데 그 이유가 뭐야?
삼성 갤럭시 계산기의 최대값이 1.79769313E+308인 이유는 IEEE 754라는 부동소수점 표준을 따르기 때문입니다. IEEE 754는 컴퓨터에서 실수를 표현하는 방식을 정의하는 표준이며, 이 표준에 따르면 **'double precision'**이라는 형식으로 표현되는 실수의 최대값은 1.7976931348623157E+308입니다.
이유:
2진수 표현: 컴퓨터는 모든 정보를 2진수로 표현합니다. 실수를 표현하기 위해서는 가수와 지수라는 두 가지 정보가 필요합니다. 가수는 실수의 값을, 지수는 실수의 크기를 나타냅니다.
정밀도: IEEE 754 표준은 'double precision' 형식에서 가수를 53비트, 지수를 11비트를 사용하여 표현합니다. 53비트는 약 16자리의 10진수 숫자를 표현할 수 있으며, 11비트는 -308부터 308까지의 지수를 표현할 수 있습니다.
최대값 계산: 'double precision' 형식에서 표현할 수 있는 최대값은 2^53 - 1 (가수의 최대값) * 2^308 (지수의 최대값)입니다. 이 값을 계산하면 1.7976931348623157E+308입니다.
참고:
'double precision' 형식보다 더 큰 값을 표현할 수 있는 'quad precision' 형식도 존재하지만, 이 형식은 모든 컴퓨터에서 지원되는 것은 아닙니다.
IEEE 754 표준은 실수를 표현하는 가장 일반적인 표준이지만, 다른 표준도 존재합니다.
결론:
삼성 갤럭시 계산기의 최대값이 1.79769313E+308인 이유는 IEEE 754 표준을 따르기 때문입니다. 이 표준은 컴퓨터에서 실수를 표현하는 방식을 정의하며, 'double precision' 형식으로 표현할 수 있는 최대값은 1.7976931348623157E+308입니다.
세상의모든계산기 님의 최근 댓글
Gemini-2.5-pro 답변 ✦ 현대 컴퓨터 대수 시스템(CAS) 계산기에 탑재된 solve 기능의 일반적인 내부 동작 원리에 대해 설명해 드리겠습니다. 현대 CAS의 solve 기능은 단순히 하나의 알고리즘으로 작동하는 것이 아니라, 마치 '순수 수학자'와 '문제 해결 공학자'가 협력하는 것처럼, 여러 단계에 걸친 정교한 '하이브리드(Hybrid)' 방식으로 동작합니다. solve 함수의 작동 과정 1단계: 기호적 해법 (Symbolic Solver) - '순수 수학자'의 접근 계산기는 가장 먼저 방정식을 대수적으로, 즉 정확한 수학적 해를 찾으려고 시도합니다. 이 단계는 마치 사람이 공식을 이용해 문제를 푸는 과정과 같습니다. 1. 방정식 분석: solve 명령을 받으면, 시스템은 먼저 입력된 방정식의 구조를 분석합니다. (예: 이것이 다항식인가? 삼각방정식인가? 로그방정식인가?) 2. 규칙 기반 풀이: 분석된 구조에 따라, 시스템은 내장된 방대한 수학 규칙 라이브러리를 적용합니다. * 선형/이차 방정식: ax+b=c 나 ax²+bx+c=0 같은 형태는 이항, 인수분해, 근의 공식 등을 이용해 즉시 풉니다. * 고차 다항식: 인수분해, 조립제법 등의 규칙을 적용하여 유리수 해를 찾습니다. * 삼각방정식: sin(x) = 0.5 와 같은 경우, x = nπ + (-1)ⁿ * (π/6) 와 같이 주기성을 고려한 일반해 공식을 적용합니다. * 기타: 로그, 지수 법칙 등 해당 방정식에 맞는 대수적 풀이법을 총동원합니다. 3. 결과: 이 단계에서 해를 찾으면, 1.414... 와 같은 근사값이 아닌 √2 나 π/3 와 같은 정확한 기호 형태의 해를 반환합니다. > 강점: 수학적으로 완벽하고 정확한 해를 제공합니다. > 한계: 대수적인 풀이법이 알려져 있지 않은 방정식(예: cos(x) = x 또는 eˣ = x+2)은 풀 수 없습니다. --- 2단계: 수치적 해법 (Numerical Solver) - '문제 해결 공학자'의 접근 만약 1단계의 '순수 수학자'가 "이건 공식으로 풀 수 없어"라고 결론 내리면, solve 기능은 포기하지 않고 2단계인 '문제 해결 공학자'에게 문제를 넘깁니다. 이 단계의 목표는 정확한 해는 아니더라도, 매우 정밀한 근사해를 찾는 것입니다. 1. 반복적 탐색: 수치적 해법은 방정식을 직접 푸는 것이 아니라, 해가 있을 만한 지점에서부터 시작하여 반복적인 계산을 통해 해에 점점 더 가까워지는 방식을 사용합니다. * 적당한 값을 추측해서 대입해 봅니다. * 결과가 0보다 큰지 작은지에 따라, 다음 추측값을 어느 방향으로 수정할지 결정합니다. * 이 과정을 수없이 반복하여 오차가 거의 0에 가까워질 때까지 해를 좁혀나갑니다. 2. 핵심 알고리즘: 이때 사용되는 대표적인 알고리즘은 다음과 같습니다. * 뉴턴-랩슨법 (Newton-Raphson Method): 미분(접선)을 이용하여 매우 빠른 속도로 해에 수렴하는 강력한 방법입니다. * 이분법 (Bisection Method): 해가 존재하는 특정 구간을 계속 절반으로 나누어 범위를 좁혀나가는 방식으로, 속도는 느리지만 안정적으로 해를 찾을 수 있습니다. 3. 결과: 이 단계가 성공하면, 시스템은 0.739085133215 와 같이 소수점 아래 여러 자리까지 표현되는 매우 정밀한 부동소수점 형태의 근사해를 반환합니다. > 강점: 대수적으로 풀 수 없는 복잡한 방정식의 해도 근사적으로 찾아낼 수 있습니다. > 한계: 근사해이며, 알고리즘의 특성상 특정 조건(예: 해가 중근을 갖는 경우)에서는 해를 찾지 못하고 실패할 수도 있습니다. 결론: 왜 하이브리드 방식인가? 분석 → 기호적 풀이 시도 → (실패 또는 불가능 시) → 수치적 풀이로 전환 이처럼 현대 CAS의 solve 기능은 정확성(기호적 해법)과 범용성(수치적 해법)이라는 두 마리 토끼를 모두 잡기 위해 설계된 정교한 협력 시스템입니다. 먼저 가장 이상적인 '정확한 해'를 추구하되, 그것이 불가능할 경우 차선책으로 '정밀한 근사해'라도 찾아내어 사용자에게 최대한의 결과를 제공하는 것입니다. 2025 10.17 hp prime 이 solve 함수에서 해를 찾는데 어떤 방법(method)을 사용하는지 공식적인 무서로 정확하게 파악되진 않습니다. 2025 10.17 참고 x=guess 는 iterative 방식(일반적으로는 newton's method를 의미함)을 x=xmin .. xmax 는 bisection 방식을 사용하는 듯 합니다. // 구간지정 개념과는 차이가 있는 듯? 2025 10.17 HP Prime 에 적용 방법1) ㄴ 검증 필요해서 번거로움 방법2) ㄴ 1에 너무 가까우면 안나오고 적당히 떨어져 있어야 하는 듯 함. ㄴ 오차가 약간 발생함. 방법3) ㄴ TRACE : 정밀하지 않음 ㄴ Intersection : 약간 시간 걸림 & 오차 발생할 수 있음. 2025 10.17 Gemini-2.5-pro 답변 ✦ HP Prime 계산기의 solve 함수가 sin(x) = 1과 같은 특정 값의 해를 찾지 못하는 문제에 대해 문의하셨군요. sin(x)=1/2에서는 정상적으로 동작하는데 sin(x)=1에서는 빈 결과([])가 나오는 현상은 해당 계산기 또는 유사한 CAS(Computer Algebra System)에서 나타날 수 있는 동작입니다. 이 문제의 원인과 해결 방법을 자세히 설명해 드리겠습니다. 문제의 원인: 수치 해석 알고리즘의 한계 HP Prime의 solve 기능은 내부적으로 수치 해석 알고리즘을 사용하여 해를 찾습니다. 많은 경우, 이 알고리즘은 방정식의 해를 찾기 위해 함수 값의 부호가 바뀌는 지점(sign change)을 탐색합니다. 1. `sin(x) = 1/2`의 경우 (정상 작동): * 이 방정식은 f(x) = sin(x) - 1/2가 0이 되는 x를 찾는 것과 같습니다. * f(x) 함수의 그래프는 해가 되는 지점에서 x축을 가로지릅니다. 즉, 함수 값이 음수(-)에서 양수(+)로, 또는 양수(+)에서 음수(-)로 부호가 명확하게 바뀝니다. * solve 알고리즘은 이 부호 변화를 감지하여 해를 성공적으로 찾아냅니다. 2. `sin(x) = 1`의 경우 (문제가 발생하는 경우): * 이 방정식은 f(x) = sin(x) - 1이 0이 되는 x를 찾는 것과 같습니다. * sin(x)의 최댓값은 1이므로, f(x) 함수는 항상 0보다 작거나 같습니다 (f(x) ≤ 0). * 따라서 f(x) 그래프는 해가 되는 지점(x = π/2, -3π/2 등)에서 x축에 접할 뿐, 가로지르지 않습니다. * 결과적으로 함수 값의 부호 변화가 발생하지 않으므로, 부호 변화를 기반으로 해를 찾는 알고리즘은 해가 존재함에도 불구하고 이를 감지하지 못하고 빈 결과를 반환할 수 있습니다. 이는 solve 함수의 버그라기보다는, 특정 유형의 문제(함수가 x축에 접하는 경우)에 대한 수치 해석 알고리즘의 본질적인 한계에 가깝습니다. 해결 방법 이러한 문제를 우회하여 정확한 해를 찾는 몇 가지 방법이 있습니다. 방법 1: 미분을 이용해 극점 찾기 (가장 안정적인 방법) sin(x) = 1이 되는 지점은 sin(x) 함수의 극대점(local maximum)입니다. 함수의 극점은 도함수(derivative)가 0이 되는 지점에 존재하므로, 다음 단계를 따를 수 있습니다. 1. 도함수가 0이 되는 지점 찾기: sin(x)의 도함수는 cos(x)입니다. 따라서 먼저 cos(x) = 0의 해를 구합니다. 1 solve(cos(x) = 0, x = ((-2*π) .. (2*π))) 이 명령은 결과로 -3π/2, -π/2, π/2, 3π/2에 해당하는 숫자 값들을 반환할 것입니다. (예: [-4.712..., -1.570..., 1.570..., 4.712...]) 2. 후보 값들을 원래 함수에서 확인하기: 위에서 찾은 x 값들을 원래 함수 sin(x)에 대입하여 값이 1이 되는지 확인합니다. * sin(-3π/2) → 1 (정답) * sin(-π/2) → -1 * sin(π/2) → 1 (정답) * sin(3π/2) → -1 이 방법을 통해 원하는 구간 내의 모든 정확한 해(-3π/2와 π/2)를 찾을 수 있습니다. 방법 2: 근사값 이용하기 1 대신 1에 아주 약간 작은 값(예: 0.999999999)을 사용하여 방정식을 풀면, 함수가 x축을 미세하게 가로지르게 되어 solve 알고리즘이 해를 찾을 수 있습니다. 1 solve(sin(x) = 0.999999999, x = ((-2*π) .. (2*π))) 이 방법은 π/2와 -3π/2에 매우 가까운 근사해를 제공합니다. 방법 3: 그래프 기능 활용 1. 함수 플로터(Function plotter)에서 Y1 = sin(X)와 Y2 = 1을 입력하여 두 함수의 그래프를 그립니다. 2. 그래프 상에서 두 함수가 만나는 점(교점)을 시각적으로 확인하거나, 계산기의 교점 찾기(Intersection) 기능을 사용하여 정확한 x 좌표를 찾습니다. 이러한 방법들을 활용하시면 HP Prime 계산기에서 sin(x)=1과 같은 방정식의 해도 성공적으로 구하실 수 있습니다. 2025 10.17