- ベストアンサー
実数の実数乗
関数電卓で実数の実数乗を計算すると瞬時に答えを出してくるじゃないですか。 たとえば 3.14159 ^ 3.14159 = 36.4619520931810818920796827215543 とか。 あれってどうやって計算してるんですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
lnA も同じようにテーラー展開してやります。 ln(1+x) = x - 1/2 x^2 + 1/3 x^3 ......
その他の回答 (3)
- stomachman
- ベストアンサー率57% (1014/1775)
今時のもの凄い性能の関数電卓がどうなのかは知りませんが、昔々、メモリもプロセッサも高かった時代には、たしかRobinson algorithmと言ったと思うけど、一つの級数で色んな関数(三角関数、指数関数、対数、双曲線関数etc)が計算できちゃう方法を使っていた。 級数の項をどんどん生成しながら、それを足すのか、引くのか、無視するのか、この3通りは関数ごとにtable lookupして判断するというやり方です。 細かいこと忘れちゃいまして、再構築してみようと試みているんですが…
補足
Robinson algorithmですか。 分かったとしてもちょっとこのスペースでは書ききれない感じですかね? もし出来たらお願いします。
- hogehogeninja
- ベストアンサー率35% (18/51)
問題は 2^0.12 というような肩が実数の時ですよね。(指数の整数部はいいとして) テイラー展開をして 0 < B < 1 のとき A^B = 1 + 1/1! * (lnA * B) + 1/2! * (lnA * B)^2 + ... ≒ 1 + (lnA * B)(1/1! + (lnA * B)(1/2! + (lnA * B)(1/3! + (lnA * B)(...(1/(n-1!) + (lnA * B)(1/n!))...)))) というやりかたがオーソドックスそうです。
補足
lnAはどうやって計算するのですか?
- nanashisan
- ベストアンサー率9% (16/172)
30桁以上も表示できる関数電卓をお持ちですか、すごいですね。 ということはさておいて、計算機は2進数が得意ですからたぶん、 A^Bを求めるには、 (1)底を2とするAの対数をとる。 (2)それをB倍する。 (3)それを2のべき乗する。 という手順かと思います。 (1)と(3)はアルゴリズムの参考書に載っていたような…。
補足
そのアルゴリズムが知りたかったんですが…。
お礼
なるほど、これで四則演算に帰着出来るわけですね。 ありがとうございました。
補足
長らく締めきらないまま放置して申し訳ありませんでした。 お答え下さった方々、どうもありがとうございました。