プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

lnA も同じようにテーラー展開してやります。



ln(1+x) = x - 1/2 x^2 + 1/3 x^3 ......

この回答への補足

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

補足日時:2002/01/28 13:10
    • good
    • 1
この回答へのお礼

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

お礼日時:2001/10/12 20:58

今時のもの凄い性能の関数電卓がどうなのかは知りませんが、昔々、メモリもプロセッサも高かった時代には、たしかRobinson algorithmと言ったと思うけど、一つの級数で色んな関数(三角関数、指数関数、対数、双曲線関数etc)が計算できちゃう方法を使っていた。


級数の項をどんどん生成しながら、それを足すのか、引くのか、無視するのか、この3通りは関数ごとにtable lookupして判断するというやり方です。
細かいこと忘れちゃいまして、再構築してみようと試みているんですが…

この回答への補足

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

補足日時:2001/10/05 13:08
    • good
    • 0

問題は 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はどうやって計算するのですか?

補足日時:2001/10/05 13:02
    • good
    • 0

30桁以上も表示できる関数電卓をお持ちですか、すごいですね。


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

この回答への補足

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

補足日時:2001/10/05 13:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!