- 세상의 모든 계산기 자유(질문) 게시판 질문 ()
Casio fx-570EX / 991EX, 복소수 모드에서 Stack ERROR 발생하는 원인? (버그 추정)
1. 수식은 0.05+0.4605*log((2)/(0.6*10^(-2))) 입니다.
https://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1118&docId=395215225&qb=6rOE7IKw6riw&enc=utf8§ion=kin.qna.all&rank=1&search_sort=3&spq=0#
일반 Calculate 모드에서는 이상없이 계산이 잘 됩니다.
2. 그런데 복소수 모드 Complex 에서는 동일하게 입력했을 때
Stack Error 가 나옵니다.
3. Goto 하면 log() 안에 있는 분모의 10^(-2) 로 이동합니다.
분모의 10^-2 를 분자로 보내 10^2 으로 입력하면 에러가 없습니다.
분모의 10^-2 를 【×10x】 버튼을 이용해 분모에 입력하면 에러가 없습니다.
왜 이러는 걸까요? (fx-570ES 에서는 문제 없는 것 같은데 말이죠)
fx-570ES Plus 도 동일한 에러가 발생합니다.
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=395293601&qb=6rOE7IKw6riw&enc=utf8§ion=kin.qna.all&rank=3&search_sort=3&spq=0
댓글4
-
세상의모든계산기
https://gigglehd.com/gg/bbs/902112
링크의 예제Complex Mode 계산시
fx-570ES PLUS, fx-991EX 모두 Stack ERROR 발생합니다. -
세상의모든계산기
1+(2+(3+(4+(5+(6+6)))))
fx-570ES PLUS, fx-991EX 모두 Stack ERROR 발생합니다.https://www.reddit.com/r/calculators/comments/czohyx/apparent_bug_in_casio_fx991ex_gives_syntax_error/
이상을 종합해 보면...
버그는 아니고, fx-570 급의 Complex 모드의 계산 능력(Stack 공간)이 매우 부실하다는 결론 -
세상의모든계산기
https://kin.naver.com/qna/detail.naver?d1id=11&dirId=1118&docId=436668037&qb=6rOE7IKw6riw&enc=utf8
세상의모든계산기 님의 최근 댓글
참고 x=guess 는 iterative 방식을 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 원래 삼각함수같은 주기함수가 공학용 계산기 solve 와 친하지 않은 것은 널리 알려져 있습니다만... 해에서 접선의 기울기가 0이 되어 나타난 버그에 가까운 것 현상 같습니다. 2025 10.17 순수질문 글은 HP 포럼 대신 자유게시판에 작성하여 주세요. 이 질문글은 추후 자유게시판으로 이동하도록 하겠습니다. 2025 10.16