- ベストアンサー
Maximaの順次出力
Basic言語などで、例えば10までの整数の和を求めるとき、 for i=1 to 10 a=a+i print i next i とでもすれば、iが1まで、2まで、3まで…10までの計算結果が得られますよね。ところが、Maximaの場合は、for函数の中に出力命令は入れられないようなんですが?これは、仕方のないことなのでしょうか? それぞれの計算結果は、配列に覚えこませてやるよりないのでしょうか。やろうとしていることは、複雑な式の展開なので、できるだけこの方法は避けたいのですが。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
本当は、 print a ってやりたいのかな?ちょっと良く分かりませんが。 Maxima自体は本体はCommon Lispと言う「超」高級言語で、「やりたいこと」はほぼ可能だと思います。to_lisp();と言うコマンドでMaximaはCommon Lispモードへと変化します。 (%i1) to_lisp(); Type (to-maxima) to restart, ($quit) to quit Maxima. MAXIMA> (do ((i 1 (1+ i)) (a 0 (+ a i))) ((> i 10)) (format t "~d~%" a)) 0 1 3 6 10 15 21 28 36 45 NIL MAXIMA> 多分こう言う事やりたいんじゃないですかね?
その他の回答 (2)
- cametan_42
- ベストアンサー率62% (162/261)
>print a でしたね。 うん、まあ、そうだろな、とは思いましたが(笑)。 提示プログラムだとaの初期値が無いですし、また、iをprintしても1~10(あるいは言語によっては9)まで出力されるだけですしね。まあ、予測としてはそんな感じだろう、とは思いました。 >「はじめてのMaxima」により勉強中 ああ、工学社かな?から出てる本ですよね。 僕は持ってないですが、ちょっと見た感じでは「はじめての数式処理ソフト」よりははるかに良い、と思います。「はじめての数式処理~」のはMaximaの使い方、と言うより、Mathematicaで書いたコードを「他人に翻訳してもらった」だけの本ですしね。かなり浮ついてる、と言うか。 (値段の安さは取り柄、ですが) 「はじめてのMaxima」はMaximaそのもの、と言うよりKnoppix/Math駆使してる、って感じなんでLinuxをアプリケーションを通して学ぶ、と言う観点でも優れてるんじゃないか、とか思いました。Octaveの使い方なんかにもページを割いてますしね。 >括弧だらけでめんどくさい (笑)。 まあ、一般観点じゃそうでしょうねえ。あと、wxMaximaの付属エディタが使いづらい(苦笑)。僕もアレじゃ嫌だな、とか思います。オートインデントも効かないし(苦笑)。 Lisp系は、まあ、馴れれば逆に「括弧が無いと不安に」なりますよ(笑)。ただし、マトモなエディタじゃないと書きづらいし読みづらいししゃーないんです。従って、別のエディタ、例えばEmacsとかでスクリプトを作ってMaximaに読み込んだ方が実際的、でしょう。じゃないとやってらんない、と(笑)。WindowsでしたらxyzzyかMeadow辺りを用意しておいた方が良いでしょう。 xyzzy: http://www.jsdlab.co.jp/~kamei/ 特徴:Common Lispのサブセットを実装している比較的軽いEmacsっぽいエディタ。 Meadow: http://www.meadowy.org/meadow/ 特徴:GNU Emacs 21ベースのエディタ。Windowsではこれがメジャー。 NTEmacs: http://ntemacsjp.sourceforge.jp/matsuan/IndexJp.html 特徴:GNU Emacs 22ベースのエディタ。 これらを使えばLispを書くのはかなりラク、になります。 全てフリーなんで、実際ダウンロードして使い勝手を調べてみてください。 >それから自分の作りたいプログラムに挑んでいこう まあ、Lispの基本的な部分だけ、でも分かれば結構ラクにスクリプトを組み立てられる、と思いますよ。自由度は結構高いんで。 頑張って勉強してください。
- cametan_42
- ベストアンサー率62% (162/261)
ああそうだ。 参考ページ紹介しておきます。
お礼
ありがとうございます。print a でしたね。すみません。 今、「はじめてのMaxima」により勉強中で、ちょうどLispのところを勉強しているところです。括弧だらけでめんどくさいから、一応一通り、読み流そうか…と思っていたところですが、MaximaはLispで記述されているのでしたね。しっかり勉強して、それから自分の作りたいプログラムに挑んでいこうと思います。