• ベストアンサー

実数の実数乗

関数電卓で実数の実数乗を計算すると瞬時に答えを出してくるじゃないですか。 たとえば     3.14159 ^ 3.14159 = 36.4619520931810818920796827215543 とか。 あれってどうやって計算してるんですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

lnA も同じようにテーラー展開してやります。 ln(1+x) = x - 1/2 x^2 + 1/3 x^3 ......

taropoo
質問者

お礼

なるほど、これで四則演算に帰着出来るわけですね。 ありがとうございました。

taropoo
質問者

補足

長らく締めきらないまま放置して申し訳ありませんでした。 お答え下さった方々、どうもありがとうございました。

その他の回答 (3)

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

今時のもの凄い性能の関数電卓がどうなのかは知りませんが、昔々、メモリもプロセッサも高かった時代には、たしかRobinson algorithmと言ったと思うけど、一つの級数で色んな関数(三角関数、指数関数、対数、双曲線関数etc)が計算できちゃう方法を使っていた。 級数の項をどんどん生成しながら、それを足すのか、引くのか、無視するのか、この3通りは関数ごとにtable lookupして判断するというやり方です。 細かいこと忘れちゃいまして、再構築してみようと試みているんですが…

taropoo
質問者

補足

Robinson algorithmですか。 分かったとしてもちょっとこのスペースでは書ききれない感じですかね? もし出来たらお願いします。

回答No.2

問題は 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!))...)))) というやりかたがオーソドックスそうです。

taropoo
質問者

補足

lnAはどうやって計算するのですか?

回答No.1

30桁以上も表示できる関数電卓をお持ちですか、すごいですね。 ということはさておいて、計算機は2進数が得意ですからたぶん、 A^Bを求めるには、 (1)底を2とするAの対数をとる。 (2)それをB倍する。 (3)それを2のべき乗する。 という手順かと思います。 (1)と(3)はアルゴリズムの参考書に載っていたような…。

taropoo
質問者

補足

そのアルゴリズムが知りたかったんですが…。