質問<3588>2007/8/16 from=小豆 「積分」
いつもお世話になっています。
以下の問題を教えて下さい。
Maximaで解こうとしましたが、エラーが出てうまくいきません。
宜しくお願いします。
はいはい。
Maxima活用してますね(笑)。便利でしょ(笑)?
ところで、Maximaもたまにバカな挙動します(笑)。
正確に言うと、Maximaは「計算」してるんじゃなくって、実は一種の「記号処理」をしてるんです。つまり、字面から判断して別の字面に変換してるんですね。
これがLispと言う記号処理言語で書かれたMaximaの偉いトコなんですが、それでもたまにおかしな変換をしたり、人間よろしく「諦めたり」する(爆)。こういう辺りで、「コンピュータの限界」を見ることが出来るのです。パソコンも結構バカなんですよ(笑)。
こういう場合、人間がそれなりに補助してやんなきゃならないケースが出てきたりします。
ちょっとやっていってみましょう。
こういう状態でしょ?
つまり、
(%i1) integrate(sqrt(1-x/(x+2)), x);
(%o1)
と出てきやがる(笑)。何にも計算してくれていない。
平たく言うと、積分対象のと言う関数の記号処理が上手くいってないんですね。
こういう場合どうするか?人間だったら、計算しやすくなるように式の整理を施すトコ、ですね。例えば項をまとめてみたり(factoring)、ないしは展開してみたりする(expanding)。コンピュータも同じですね。
Maximaの下を見てみれば分かりますが、このテのコマンドもキチンと存在します。
ここではFactorと言うコマンドを利用してみましょう。
Maxima下段のINPUT:欄に次のように入力してみます。
註:factorは日本語では因数分解、と訳される場合が多いが、元々の意味から言うと、単に項をまとめる、と言うような至極単純な意味。因数分解も実際、単純に項をまとめる作業だ。
factor(sqrt(1-x/(x+2)))
そうすると、次のような出力が得られます。
はい。その通りですね。確かにです。
(%i2) factor(sqrt(1-x/(x+2)));
(%o2)
これをこのまま積分します。出力番号(%o2)を利用して、また、INPUT:欄に次のように入力して下さい。
これは出力番号%o2をxに付いて積分せよ、と言うような命令です。またいちいち式を入力せんでもエエのです。このように、一端計算させた数式は、また入力するのは(さすがにGUIでも)メンド臭いので、出力番号(%o××)を上手く使って上手に処理しましょう。
integrate(%02,x)
[Enter]キーを押せば、計算結果を返してくれます。
はい。今度は上手く計算されましたね。
答えは
(は積分定数)となるようです。
微分して、検算してみてください。
以上です。
Maxima Manual: 多項式
0 コメント:
コメントを投稿