- 일반(쌀집) 계산기
[일반 계산기] 소수점 지수계산하기 (계산식 = 1.1^1.7 ?)
1. 일반 계산기로 1.11.7 을 계산하려면?
- 1.1^1.7 = 1.1^(1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1)
- 1.식을 다시 쓰면 1.1 * (1.1^0.1) * (1.1^0.1) * (1.1^0.1) * (1.1^0.1) * (1.1^0.1) * (1.1^0.1) * (1.1^0.1)
- 결국은 1.1^0.1 값을 알아내면 계산이 가능하다는 결론
2. 일반 계산기로 1.10.1 을 계산하려면?
"일반계산기로 n제곱근을 구하는 것은 뉴튼-랩슨법으로 가능하다"고 예전에 살펴보았습니다.
http://www.allcalc.org/2629
1.1^0.1 값을 뉴튼-랩슨법으로 반복계산해 보겠습니다.
(초기값은 쉽게 추정하기 어려우니, 그냥 1.1 로 하겠습니다)
1회차 결과 1.036650738 (오차율 2.68 %)
2회차 결과 1.01254671931 (오차율 0.29 %)
3회차 결과 1.00961548338 (오차율 3.85E-3 %)
4회차 결과 1.00957658945 (오차율 6.61E−7 %)
5회차 결과 1.0095765827 (오차율 7.62E−9 %)
6회차 결과 1.00957658269 = 7회차 결과 (오차율 8.68E−9)
3. 최종 계산 (1.11.7 = ?)
2.의 6회차 결과값을 이용해 1.1^1.7 을 계산해 보니 소숫점 8째자리까지만 맞는 결과를 얻게 되었습니다.
일반 계산기 이용한 값 = |
1.17589234866 |
실제 값 = |
1.17589234940796629191082142466659996882658807208250452... |
오차 = |
7.48E−10 |
오차율(%) = |
6.36113E-8 |
4. 다른 방법
1.1^1.7 = 1.1 ^ (17/10) 이므로, 1.1^17 을 구한 값(A) 의 10제곱근과 같습니다. 따라서 "n 제곱근법(링크)"을 쓸 수도 있습니다.
하지만 10 제곱근은 "n제곱근법"으로 구하기 복잡하므로, 그냥 뉴튼-랩슨법을 쓰시는 게 더 바람직합니다. (그것도 복잡하지만요 -_-)
댓글 13
-
-
-
와 같이 특수한 경우(=분모가 2의 n제곱수)는 일반 계산기로도 답을 쉽게 구할 수가 있습니다.
곱하기 상수(반복)계산과 루트버튼만으로 을 쉽게 구할 수 있기 때문이죠.
계산기 입력 :
【3】【×】【3】【×】【3】
【√】【√】
-
-
-
※ 다른 방법을 시도해 봄 (정수지수와 루트 버튼을 이용)
Step 1. 지수 1.7 대신 사용할 적당한 유리수를 찾습니다.
※ 적당한 유리수의 조건
ⓐ 분모가 2ⁿ 일 것 (단, n은 5 이하)
ⓑ 분자가 정수에 최대한 가까울 것Step 2. 적당한 유리수를 찾기 위해 1.7에 2를 반복해서 곱해봅니다. (Non-K Type 상수계산)
ㄴ 2를 몇 번 곱했는지 횟수를 세어야 합니다.【2】【×】【1.7】【=】 (3.4) = 1.7×2
【=】 (6.8) = 1.7×2^2
【=】 (13.6) = 1.7×2^3
【=】 (27.2) = 1.7×2^4
【=】 (54.4) = 1.7×2^5
이 중에서 정수에 가까운 수는 6.8과 27.2 입니다.Step 3. 6.8에 가까운 정수인 7과 27.2에 가까운 27 중에 어떤 값을 사용할지를 결정합니다.
7/2^2=1.75 이고 27/2^4=1.6875 이므로 1.7에 더 가까운 값인 1.6875를 사용하겠습니다.
Step 4. 1.1^(27/16) 을 계산기로 계산합니다.
【1.1】【×】【=(26회 반복)】 으로 1.1^27을 계산하고 (실제 쌀집계산기 계산 결과 13.1099941912)
【√】【√】【√】【√】 으로 16제곱근을 구합니다. (실제 쌀집계산기 계산 결과 1.1744922522)Step 5. 결과값의 비교
구한 값과 1.1^1.7과의 오차는 -0.001400097208 (오차율 0.119 %)이고 이정도 오차면 나쁘지 않다고 보여집니다.
-
-
-
위 과정의 지수부분을 수식화하고 그래프를 그려 비교해보면 아래와 같습니다.
그래프 범주 : x축=지수(0~1 사이), y축=지수의 오차(0~0.5 사이)
해석 : 소수부가 어떤 값이냐에 관계없이 반복횟수가 많아질수록 삼각형이 작아지면서 오차범위(위아래 간격)가 줄어드는 것을 알 수가 있습니다. 그것은 step 2 과정이 필요 없다는 것을 의미합니다.
(n)회 반복시 오차 ≥ (n+1)회 반복시 오차
-
-
-
정수부분까지 한꺼번에 반복하려고 하면 (일반적으로) 입력횟수가 많아지기 때문에 지수가 1 이상인 경우에는 정수부는 나중에 계산하고, 우선은 소수부분만 보시면 됩니다.
반복횟수가 많아지면 다음의 문제가 나타날 수 있습니다.
- 시간이 오래걸림
- 【=】 를 많이 누르다보면 몇번 눌렀는지 헷갈릴 수 있음.
지수가 너무 크면 계산기 한계에 걸릴 위험이 있음.루트를 먼저 누르면 됨.
1.1^1.7 = (1.1^1) × (1.1^0.7) 에서는, 1.1^0.7을 정확하게 구하는 문제로 단순화시킬 수 있습니다.
2^4 을 곱했을 때 정수에 더 가까운 값이나오지만,
정수에 가깝지 않더라도,
그냥 반복횟수가 더 많은 쪽의 오차가 적다는 것을 확인할 수가 있습니다.
-
-
-
의 반복횟수(n)에 따른 오차율(%)을 살펴보겠습니다.
계산기 입력횟수를 최소화하기 위해서는 지수부분을 0~1로 간소화할 필요가 있겠구요.
반복횟수는 5회 안밖이 가장 적당해 보입니다.
-
-
-
이 방법의 또 다른 문제점이 있습니다.
지수와 관계없이? 밑(base)이 큰 경우에도 적용하기 어렵습니다.[내용 수정] 밑이 큰 경우에는 지수승을 먼저 하지 말고, 루트를 먼저 씌우면 문제가 해결됩니다.
예시) 6866^2.3 ≒ 667450000.784 를 구하는 경우
"6866^0.3="의 값을 구해야 하는데, 4회 반복만 하려고 해도 6866^5 값을 알아야 하지만, 6866^4 에서 벌써 2.22236401550 × 10^15 이 되어 12-Digits 일반계산기의 한계에 이르게 됩니다.6866^0.3=(6866^(1/2))^0.3 × (6866^(1/2))^0.3 으로 나눠서 계산하면? (n=4)【6866】【√】 82.8613299434 ≒ 6866^(1/2)【×】【=】【=】【=】【=】 3906245170.26 ≒ ("위의")^5【√】【√】【√】【√】 3.97635333655 ≒ ("위의")^(1/16)【×】【=】 15.811385857 ≒ "위의"^2【×】【6866】【×】【6866】【=】 745379656.368 최종값
오차율 11.68% (버튼 입력 횟수 15+12=27회)6866^0.3=((6866^(1/4))^0.3)^4 으로 나눠서 계산하면? (n=5)【6866】【√】【√】 9.10281988964 ≒ 6866^(1/4)【×】【= 9회】 3906245170.21 ≒ "위의"^10【√ 5회】 1.99407957126 ≒ "위의"^(1/32)【×】【=】【=】【=】 15.8113858567 ≒ "위의"^4【×】【6866】【×】【6866】【=】 745379656.354 최종값
오차율 11.68% (버튼 입력 횟수 24+12=36회)6866^0.3=((6866^(1/8))^0.3)^8 으로 나눠서 계산하면? (n=6)【6866】【√】【√】【√】 3.01708798175 ≒ 6866^(1/8)【×】【= 18회】 1294707079.69 ≒ "위의"^19【√ 6회】 1.38796233235 ≒ "위의"^(1/64)【×】【= 7회】 13.7727746091 ≒ "위의"^8【×】【6866】【×】【6866】【=】 649275534.619 최종값
오차율 2.72% (버튼 입력 횟수 39+12=41회) (오차율은 n=7회와 동일)6866^0.3=((6866^(1/32))^0.3)^8 으로 나눠서 계산하면? (n=8)【6866】【√】【√】【√】【√】【√】 ≒ 6866^(1/32)【×】【= 76회】 1706351569.57 ≒ "위의^77【√ 8회】 1.0865826537 ≒ "위의"^(1/256)【×】【= 31회】 14.256357072 ≒ "위의"^32【×】【6866】【×】【6866】【=】 672072557.808 최종값
오차율 0.693% (버튼 입력 횟수 125+12=137회)
-
-
-
56^0.3 계산
https://kin.naver.com/qna/detail.naver?d1id=11&dirId=1113&docId=430524099&qb=6rOE7IKw6riw&enc=utf8§ion=kin.qna.all&rank=9&search_sort=3&spq=0
-
-
-
지금 다시 보니
내용이 많고 뭔가 복잡해 보여서, 글을 쓴 제가 읽어봐도 먼소린지 한번에 알아보기가 어렵네요.간단하게 다시 설명드립니다.
- 방법만 알고 싶으시면 이 댓글만 읽어 보시면 됩니다.
- non-K 방식 계산기 기준으로 설명 드립니다.1. 예시 e^(1/80) 을 계산하려고 합니다.
: 정확한 결과값은 1.0125784515406... 입니다. (이건 참고용)
2. 80이 64와 128 사이에 어정쩡하게 있으니, 딱 봐도 한번에 계산이 안될 것 같죠? 이럴 때 이 방법을 쓰시는 겁니다.
: 1/80 = 0.0125 를 얻습니다.3. 2 × 0.0125 = = = = = = = = = =
: 이렇게 하면 *2가 반복 계산됩니다. 10번 반복했죠?
4. 위(3.)에서 나온 결과값을 확인하고 가까운 정수를 결정합니다.
: 12.8이니 가까운 정수 13으로 결정하시면 됩니다.
5. 사전 작업은 다 끝났고 이제 최종 결과값을 확인하시면 됩니다.
5-1. e값을 2.7183 으로 놓고
5-2. 위(5-1)값에 루트(√)를 10번 씌웁니다. 그냥 루트 버튼 【√】 10번 연달아 누르시면 됩니다. 결과 : 1.00097704602
5-3. 위(5-2)값의 13승(=^13) 을 계산합니다. 1.00097704602 × ============ (13번 아니고 12번 눌러야 13승)
5-4. 최종 결과 확인 : 1.01277632589
2.7128(1/80)의 실제 값(=1.0125785361531)과 계산기 최종 결과를 비교해 보면
오차율 0.0195332737 % 밖에 나지 않습니다.
이 정도면 일반계산기에서는 쓸만한 방법입니다.
5-2 와 5-3 의 순서는 서로 바뀌어도 상관이 없지만,
밑이 큰 경우 지수승 과정에서 계산기 한계값 이상이(overflow) 될 수 있어서
루트를 먼저 취하는 것이 순서상 맞는 듯 합니다.
-
-
-
추가 팁
1. 반복 횟수는 많아질수록 정확하다!
2. 하지만 반복이 많아질수록 키입력이 늘어나므로 tradeoff 관계에 있다.
3. 그런데 입력 방식을 조금 바꾸면 키입력 횟수를 조금 줄일 수도 있다.
예를 들어
"3^(1/2048) = 1.0005365756868" 의 520승을 계산하려면
×====...(중략)...========== 으로 519번을 눌러야되는데
그 대신에
×=×=×=×=×=×=×=×=×= 으로 누르면
((((((((1.0005365756868^2)^2)^2)^2)^2)^2)^2)^2) = 1.0005365756868^512 까지는 금방 계산이 됩니다.
메모리 기능과 결합해 사용하면 520승을 상대적으로 쉽게 계산할 수 있겠죠.
그런데...
다시 잘 생각해 보면...
이것은 루트를 여러번 누른 값을 다시 ^2 제곱하는 꼴이므로,
서로 상쇄되는(=반대인) 계산 관계라고 볼 수 있습니다.
처음부터 이렇게 많이 계산할 할 필요가 없었던 거죠.
-
-
-
위의 원리를 적용하여 계산을 간단하게 하자면,
3^0.2857 을 정밀하게 계산하면???
은 아래의 계산과정을 통해 일반 계산기로 계산할 수 있다.
1. 【2】 【×】 【0.2857】 【=】【=】【=】【=】【=】【=】【=】【=】【=】【=】【=】 (11번) 585.1136: 식으로 보면 (2^11)*0.2857 = 585.1136
2. 3^(585/2^11)≒ 3^(585.1136/(2^11)) = 3^0.2857
이므로 계산기로 계산할 수 있는 값인 3^(585/2^11) 를 구한다.
3. 3^(585/2048)
= 3^(512/2048) * 3^(73/2048)
= 3^(512/2048) * 3^(64/2048) * 3^(9/2048)
= 3^(1/4) * 3^(1/32) * 3^(9/2048)
= (√√(3)) * (√√√√√(3)) * (√√√√√√√√√√√(3))^9이것을 쌀집계산기로 계산하는 것은 어렵지 않죠.
【3】【√】【√】【×】【3】【√】【√】【√】【√】【√】【=】【M+】 // M값 = 1.3620415395368
【3】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【×】【=】【=】【=】【=】【=】【=】【=】【=】 // 1.0048395590533
【×】【MR】【=】
최종 결과 : 1.3686332200004
오차 : -0.0000834052032
M 기능을 빼고 계산하려면 순서를 바꿔주면 되구요.
= (√√√√√√√√√√√(3))^9 * (√√(3)) * (√√√√√(3))
【3】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【×】【=】【=】【=】【=】【=】【=】【=】【=】 // 1.0048395590533
【×】【3】【√】【√】【×】【3】【√】【√】【√】【√】【√】【=】
-
-
-
다음 단계로 적당한 값을 찾아보면 14승일 때
= (√√√√√√√√√√√√√√(3))^73 * (√√(3)) * (√√√√√(3))
【3】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【×】【=】【=】...중간생략,총72번...【=】【=】 // 1.0049069397994
【×】【3】【√】【√】【×】【3】【√】【√】【√】【√】【√】【=】 // 이 부분은 동일
계산 결과 1.3687249953756
오차 : −0.000008370172
오차율(%) : −0.0006115343268191 %
-
오차가 약간 줄어드는군요.