東京工業大学大学院理工学研究科基礎物理学専攻中村研究室メンバーTakayuki Sako

Maximaのメモ


動作環境 Maxima 5.17.1 @ Ubuntu9.10

プログラム作成(関数定義),ファイル出力

「Maxima ファイル出力」とかで検索するとsaveとか出てくる。でも使いにくい。 gnuplotなどで読み込むための計算結果のみの出力(csvのような感じ。以下の例だとssvか)ならprintfの方が使い易い。

test.mac
testfunc(a):=
   block(
      local(x,y,z),
      filename:openw("result.dat"),
      x:a+1,
      y:a+2,
      z:a+3,
      for m: 1 thru 10
      do(
         printf(filename, "~f ~f ~f ~%", x,y,z),
         x:x+m,
         y:y+m,
         z:z+m
      ),
      close(filename)
   );


実行結果
user@host :~$ maxima

Maxima 5.17.1 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.
The function bug_report() provides bug reporting information.
(%i1) load("test.mac");
(%o1) test.mac
(%i2) testfunc(10);
(%o2) true
(%i3) system("less result.dat")$

11.0 12.0 13.0
12.0 13.0 14.0
14.0 15.0 16.0
17.0 18.0 19.0
21.0 22.0 23.0
26.0 27.0 28.0
32.0 33.0 34.0
39.0 40.0 41.0
47.0 48.0 49.0
56.0 57.0 58.0
result.dat (END)