質問<3240>2006/6/10
from=tanaka
「指数方程式」


2^-x=xの解き方を教えてください。

★完全解答希望★

お便り2006/6/14
from=亀田馬志


ではフリー数式処理ソフトMAXIMA(ウィンドウズ版)で見てみましょうか。
まずはMAXIMAをダウンロードしてみて下さい。

英語の誘導に従ってMAXIMAをダウンロードしたらデスクトップに
MAXIMAのアイコンが出来てる筈です。それをダブルクリックして
MAXIMAを立ち上げてください。そうすると、

Maxima 5.9.3 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) 

と言った画面が現れる筈です。これで起動成功です。
(%i1)と言うのは入力(inputその1)待ち、と言う意味で、この後にコマンドを入力して
MAXIMAに数式を解かせるワケです。
さて、方程式を解かせるコマンドは、

solve(方程式,変数);

です。これを題意に従って、MAXIMAに入力してみましょう。
次のようにセミコロン(;)まで入力します。

(%i1) solve(2^(-x)=x,x);

そしてリターンキーを押すと解が示される筈です。

				 1
(%o1) 			    [x = --]
				  x
				 2

となっていますね。
MAXIMAによると、

x=1/(2^x)

なそうなんですが、そんなの初めっから分かってた事です。
一体どうしちゃったんでしょう?

つまりですね、この意味は「解析的にこの方程式の解を求めるのは不可能」って意味なんです。
ガッカリですね。残念です。
でもちょっと悔しいので、地団駄踏んでみましょう。問題の題意は、

y=2^(-x)
y=x

と言った二つの関数に「交点が存在するのか否か?」と聞いているワケです。
つまり幾何学の問題に置き換える事が出来るんですね。

そこで「解析的に解が求まらない≠解が存在しない」ので、取りあえずMAXIMAに
二つの関数を描画させて、解が存在するかどうか見てみましょう。
MAXIMAに2つのグラフを描画させるコマンドは、

plot2d([f(x),g(x)],[x,xの最小値,xの最大値],[y.yの最小値,yの最大値]);

です。そこで取りあえず-4≦x≦4、-4≦y≦4の範囲でMAXIMAに2つの関数が
交点を持つのかどうか描画させてみましょう。
新しい入力待ち(%i2)が出ている筈なので、以降次のようにセミコロン(;)まで入力します。

(%i2) plot2d([2^(-x),x],[x,-4,4],[y,-4,4]);

リターンキーを押すとグラフが出てくる筈です(グラフは別掲しておきます)。交点が存在し
ますね。って事は一応解が存在するようです。恐らく0.5~1.0の範囲で交点が存在するので
はないか、と。
そこで力技を試してみましょう。ニュートン法と言った手法を用います(詳細は端折ります)。

まずはMAXIMAにニュートン法用のアドオンパッケージを次のようにコマンドを
セミコロン(;)まで入力してインストールします。

(%i3) load(newton);

リターンキーを押せば、次のような表示が出てくる筈です。

(%o3) C:/PROGRA~1/MAXIMA~1.3/share/maxima/5.9.3/share/numeric/newton.mac

これでアドインパッケージ“newton"のインストールは完了致しました。
ところで、ニュートン法ってのは次の形の方程式

f(x)=0

を数値計算で解く方法です。つまり、与題は

2^(-x)-x=0

であると解釈します。
そこで、MAXIMAでニュートン法を行うコマンドは

newton(方程式,初期値);

となっています。「初期値」と言うのは適当な解に近そうな値を与えて、その数値から微分
を使って強制的に解を探し出していくのです。
ところで、「解を知らないのに適当な初期値とはコレ如何に?」と思うかもしれません。が、
だからこそ先に描画しておいて「アタリ」をつけていたんですね。ここでは初期値を1として
みます。
以上で、MAXIMAに次のように入力します。

(%i4) newton(2^(-x)-x,1);

リターンキーを押せばxの近似解が得られます。その解は実に驚くべき解なんですが、
この余白は狭すぎてそれを記す事が出来ません(笑)。
アトはご自分でMAXIMAと格闘なさってみて下さい。

参考文献:
MAXIMA日本語マニュアル

MAXIMAの手引き

Maxima入門ノート