[일반 계산기] 소수점 지수계산하기 (계산식 = 1.1^1.7 ?)
곱하기 반복 상수계산기능 으로 어렵지 않게 구해볼 수 있습니다.
[일반 계산기] 상수계산 - Non-K Type (Non-K 타입) https://allcalc.org/2352
[일반 계산기] 상수계산 - 카시오 K-Type (K-타입) https://allcalc.org/2335
내가 계산해야 하는 상황이라면 어떻게든 구해 보겠지만, 남이 물어보는 거라면 "일반 계산기라서 못한다"고 답하는게 맞습니다.
음수인 정수라면 [일반 계산기] 세제곱근 구하기. 방법 #2, 로그 성질(근사)의 활용 https://allcalc.org/49753 이 가장 간단하구요.
소숫점 형태라면 아래의 복잡한 과정을 거쳐야만 합니다.
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 |
7회 8회 계속되면 오차율이 더 줄어들게 됩니다.
4. 정확한 값이 필요없는 경우라면? (추천!)
1.1^1.7 = 1.1 ^ (17/10) 이므로,
⇒ 계산A) 1.1^17 을 구한 값(A) 의 10 제곱근과 같습니다.
⇒ 계산B) 반대로, 1.1의 10제곱근을 17승 한 것과도 같습니다.
오차를 허용하는 경우[일반 계산기] 세제곱근 구하기. 방법 #2, 로그 성질(근사)의 활용 https://allcalc.org/49753 을 이용하는 것이 합리적입니다.
계산B)처럼 오차를 만들고 17승하면 오차가 증폭되기 때문에,
계산A)처럼 큰 값이 되더라도 정확한 값을 찾고, 오차는 한번만 허용하는 것이 좋겠습니다.
과정1) 상수계산으로 1.1의 17승 계산
1.1 × = 1.21
× 1.1 = 1.331
× 1.1 = 1.4641
× 1.1 = 1.61051
× 1.1 = 1.771561
× 1.1 = 1.9487171
× 1.1 = 2.14358881
× 1.1 = 2.357947691
× 1.1 = 2.5937424601
× 1.1 = 2.85311670611
× 1.1 = 3.138428376721
× 1.1 = 3.4522712143931
× 1.1 = 3.7974983358324
× 1.1 = 4.1772481694156
× 1.1 = 4.5949729863572
× 1.1 = 5.0544702849929 // 이 값은 1.1^17 의 계산값입니다.
과정2) 루트 버튼 14번 연속 사용
(√5.0544702849929 = 2.2482149107665)
(√2.2482149107665 = 1.4994048521885)
(√1.4994048521885 = 1.2245018792099)
(√1.2245018792099 = 1.1065721301433)
(√1.1065721301433 = 1.0519373223454)
(√1.0519373223454 = 1.0256399574633)
(√1.0256399574633 = 1.0127388397130)
(√1.0127388397130 = 1.0063492632844)
(√1.0063492632844 = 1.0031696084334)
(√1.0031696084334 = 1.0015835504008)
(√1.0015835504008 = 1.0007914619944)
(√1.0007914619944 = 1.0003956527267)
(√1.0003956527267 = 1.0001978067996)
(√1.0001978067996 = 1.0000988985093) // 이 값은 (1.1^17)^(-2^14) 와 같습니다.
c) 빼기1 나누기10 더하기1
1.0000988985093 - 1 → 0.0000988985093 ÷ 10 → 0.00000988985093 + 1 = 1.0000098898509
d) 곱하기= 을 14번 반복
1.0000098898509 × = 1.0000197797996
1.0000197797996 × = 1.0000395599904
1.0000395599904 × = 1.0000791215458
1.0000791215458 × = 1.0001582493518
1.0001582493518 × = 1.0003165237465
1.0003165237465 × = 1.0006331476803
1.0006331476803 × = 1.0012666962366
1.0012666962366 × = 1.0025349969926
1.0025349969926 × = 1.0050764201950
1.0050764201950 × = 1.0101786104320
1.0101786104320 × = 1.0204608249743
1.0204608249743 × = 1.0413402953072
1.0413402953072 × = 1.0843896106305
1.0843896106305 × = 1.1759008276434
일반 계산기 이용한 값 = |
1.1759008276364 |
실제 값 = |
1.17589234940796629191082142466659996882658807208250452... |
오차 = |
8.47824 E−6 |
오차율(%) = |
7.2100438482046E−6 |
댓글15
-
세상의모든계산기
※ 다른 방법을 시도해 봄 (정수지수와 루트 버튼을 이용)
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 %)이고 이정도 오차면 나쁘지 않다고 보여집니다.
-
1
세상의모든계산기
위 과정의 지수부분을 수식화하고 그래프를 그려 비교해보면 아래와 같습니다.
그래프 범주 : x축=지수(0~1 사이), y축=지수의 오차(0~0.5 사이)
해석 : 소수부가 어떤 값이냐에 관계없이 반복횟수가 많아질수록 삼각형이 작아지면서 오차범위(위아래 간격)가 줄어드는 것을 알 수가 있습니다. 그것은 step 2 과정이 필요 없다는 것을 의미합니다.
(n)회 반복시 오차 ≥ (n+1)회 반복시 오차
-
2
세상의모든계산기
정수부분까지 한꺼번에 반복하려고 하면 (일반적으로) 입력횟수가 많아지기 때문에 지수가 1 이상인 경우에는 정수부는 나중에 계산하고, 우선은 소수부분만 보시면 됩니다.
반복횟수가 많아지면 다음의 문제가 나타날 수 있습니다.
- 시간이 오래걸림
- 【=】 를 많이 누르다보면 몇번 눌렀는지 헷갈릴 수 있음.
지수가 너무 크면 계산기 한계에 걸릴 위험이 있음.루트를 먼저 누르면 됨.
1.1^1.7 = (1.1^1) × (1.1^0.7) 에서는, 1.1^0.7을 정확하게 구하는 문제로 단순화시킬 수 있습니다.
2^4 을 곱했을 때 정수에 더 가까운 값이나오지만,
정수에 가깝지 않더라도,
그냥 반복횟수가 더 많은 쪽의 오차가 적다는 것을 확인할 수가 있습니다. -
3
세상의모든계산기
의 반복횟수(n)에 따른 오차율(%)을 살펴보겠습니다.
계산기 입력횟수를 최소화하기 위해서는 지수부분을 0~1로 간소화할 필요가 있겠구요.
반복횟수는 5회 안밖이 가장 적당해 보입니다. -
1
세상의모든계산기
이 방법의 또 다른 문제점이 있습니다.
지수와 관계없이? 밑(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회) -
2
세상의모든계산기
56^0.3 = ?
ㄴ (56^3)^(1/10) 으로 계산하면 되니 로그 성질(근사)의 활용이 더 쉽겠습니다.
https://allcalc.org/49753
-
세상의모든계산기
댓글에 올려놓았던
※ 다른 방법을 시도해 봄 (정수지수와 루트 버튼을 이용)
을 지금 다시 보니내용이 많고 뭔가 복잡해 보여서, 글을 쓴 제가 읽어봐도 먼소린지 한번에 알아보기가 어렵네요.
간단하게 다시 설명드립니다.
- 방법만 알고 싶으시면 이 댓글만 읽어 보시면 됩니다.
- 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
세상의모든계산기
e^0.045 = ?
위와 같은 원리로 계산합니다.
a) 반복횟수 결정
2 × 0.045 ========= 이렇게 9번 누르다 보면 23.04 가 나옵니다. 0.045*2^(9)
반복 횟수는 많으면 많을수록 좋지만...
이렇게 정수에 가까운(소숫점 아래가 +0.04 처럼 정수와 오차가 작은) 경우 거기서 멈춰도 괜찮습니다.b) 루트 9회 반복해 계산
(√2.7183 = 1.6487267814893)
(√1.6487267814893 = 1.2840275625894)
(√1.2840275625894 = 1.1331493999422)
(√1.1331493999422 = 1.0644949036713)
(√1.0644949036713 = 1.0317436230340)
(√1.0317436230340 = 1.0157478146833)
(√1.0157478146833 = 1.0078431498419)
(√1.0078431498419 = 1.0039139155535)
(√1.0039139155535 = 1.0019550466730) = b = 2.7183^(1/2^9)c) (곱하기 반복) 상수계산 이용
1.0019550466730 × = 1.0039139155535 = b^2
× 1.0019550466730 = 1.0058766141141 = b^3
× 1.0019550466730 = 1.0078431498420
× 1.0019550466730 = 1.0098135302390
× 1.0019550466730 = 1.0117877628216
× 1.0019550466730 = 1.0137658551211
× 1.0019550466730 = 1.0157478146834
× 1.0019550466730 = 1.0177336490691
× 1.0019550466730 = 1.0197233658537
× 1.0019550466730 = 1.0217169726275
× 1.0019550466730 = 1.0237144769956
× 1.0019550466730 = 1.0257158865780
× 1.0019550466730 = 1.0277212090095
× 1.0019550466730 = 1.0297304519399
× 1.0019550466730 = 1.0317436230341
× 1.0019550466730 = 1.0337607299717
× 1.0019550466730 = 1.0357817804475
× 1.0019550466730 = 1.0378067821713
× 1.0019550466730 = 1.0398357428680
× 1.0019550466730 = 1.0418686702776
× 1.0019550466730 = 1.0439055721551
× 1.0019550466730 = 1.0459464562709 = b^23 = 2.7183^(23/512) = 2.7183^0.044921875
참값 ≒ 1.0460278599087
오차 = −8.14036378E−5
오차율 = −7.7821672748855E−5
-
2
세상의모든계산기
여기서 무리수 e의 값을 선택 과정에서 2중 오차가 발생
- e값을 정밀하게 입력하면 하나의 오차만 생각하면 됨.
- e값에 의한 2중 오차는 처음의 오차와 중첩되어 최종 오차를 더욱 크게 만들 수도 있고,
반대로 처음의 오차를 상쇄시켜 최종 오차를 작게 만들 수도 있음.
ㄴ e와의 오차가 더 큰 2.7183 이 오차가 더 작은 2.71828 보다
최종 결과는 더 작게 나옴. (오차 상쇄)
-
세상의모든계산기
3^0.2857 계산기로 어케 사용해야 답이 나오져?
https://kin.naver.com/qna/detail.naver?d1id=2&dirId=20115&docId=472350503
-
세상의모든계산기
추가 팁
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 제곱하는 꼴이므로,
서로 상쇄되는(=반대인) 계산 관계라고 볼 수 있습니다.
처음부터 이렇게 많이 계산할 할 필요가 없었던 거죠.
-
1
세상의모든계산기
위의 원리를 적용하여 계산을 간단하게 하자면,
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】【√】【√】【√】【√】【√】【=】
-
2
세상의모든계산기
다음 단계로 적당한 값을 찾아보면 14승일 때
= (√√√√√√√√√√√√√√(3))^73 * (√√(3)) * (√√√√√(3))
【3】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【√】【×】【=】【=】...중간생략,총72번...【=】【=】 // 1.0049069397994
【×】【3】【√】【√】【×】【3】【√】【√】【√】【√】【√】【=】 // 이 부분은 동일
계산 결과 1.3687249953756
오차 : −0.000008370172
오차율(%) : −0.0006115343268191 %
세상의모든계산기 님의 최근 댓글
예시11) 선형 연립방정식에서 답이 false 로 나올 때 https://allcalc.org/55823 2025 10.22 approx(참 해) 값이 이상하게 튀는 것 같아서 AI를 이용해 (python 으로) 구해보았습니다. * python 의 유효자릿수가 nspire 의 유효자릿수(14자리~15자리)보다 더 길기 때문에 시도하였습니다. ** 원래는 wolfram alpha 로 구해보려고 했는데, 울프람에서는 수식 길이가 너무 길다고 거부하는 바람에 포기하였습니다. 그 결과, AI approx(참 해) 값은 정상 범주에 포함되었고, 이는 solve()로 구한 대부분의 결과값과 유사하였습니다. 그럼 nspire 의 approx(참 해)는 왜 튀었나? 참 해에 더하기,빼기,곱하기,나누기 가 너무 많이 포함되어 있다보니, 모두 계산하고 나면 오차가 누적&증폭되어 버리는 것 같습니다. 그래서 오히려 solve의 numeric 한 접근보다도 더 큰 오차가 발생한 듯 하고, 그래서 적절한 해의 x 구간을 벗어나버린 듯 합니다. 그것이 처음의 solve 에서 false 를 이끌어낸 주 원인이 아니었을까요? (추정) 2025 10.21 그래프로 확인 그래프 함수로 지정하고, 매우 좁은 구간으로 그래프를 확대해 보면 불연속적인 그래프 모습이 확인됩니다. 이것은 한계 digits(15자리) 이상을 처리하지 못하기 때문일 것이구요. 다만 특이한 점은, 그래프상으로 교점에 해당하는 구간이 73.049507058477≤x≤73.049507058484 사이로 나오는데 -> 이 구간은 'solve에서 여러 방법으로 직접 구해진 해들'은 포함되는 구간입니다. -> 하지만, '참값인 해를 계산기로 구한 appprox 값 x=73.049507058547'은 포함되지 않는 구간입니다. 2025 10.21 tns 파일 첨부 sol_num_vs_exact.tns 2025 10.21 검증하면 1번 식을 x에 대해 정리하고, → 그 x 값을 2번 식에 대입해 넣으면 → 그 결과로 x는 사라지고 y에 대한 식이 되니, y에 대해 정리하면 참값 y를 얻음. 얻은 y의 참값을 처음 x에 대해 정리한 1번식에 대입하면 참 값 x를 얻음. 구해진 참값의 근사값을 구하면 x=73.049507058547 and y=23.747548955927 참 값을 approx() 로 변환한 근사값은 원래 방정식 모두를 만족할 수 없지만, linsolve() 로 찾은 근사값과, AI로 참 값을 근사변환한 값은 원래 방정식 모두를 만족할 수 있습니다. 2025 10.21