6 ファイル処理

実験データを整理したり,計算結果を他のプログラムで処理したりする場合,ファイル入 出力の処理が必要不可欠である.ファイル処理の基本について学習する.

6.1 ファイルへデータ出力

先ほどの微分方程式(5.4.3)の数値計算の結果は,グラフに表示さ せた.ここでは,グラフに表示のみならず,解の値をファイルに出力する方法を示す.コ ンピュータープログラムでファイルを取り扱う場合,OpenとCloseの処理が必要である. FORTRANやC言語でその処理が必要なように,Mathematicaでも必要である.Mathematicaで は,次の手順でファイルへデータを書き出す.
  1. OpenWriteコマンドで,ファイルをオープンする.
  2. Writeコマンドで,データをファイルに書き込む.
  3. Closeコマンドで,ファイルをクローズする.

先ほどの常微分方程式の結果を,ファイルに書き出すことを練習する.プログ ラムの動作は次のようにする.

Mathematicaのプログラムは,次のようになる.このプログラムの大まかな動作を理解し て,実行させてみよう.そして,書き込まれたファイルの中身を調べてみよう.このプロ グラムの各行の動作をプログラムの後に,説明している.

   tmin=0.0;
   tmax=10.0;
   num=1000;

   result=NDSolve[
      {x''[t]+ x'[t]+x[t]==0,x[0]==0,x'[0]==1},
      x,{t,tmin,tmax}
   ];

   f[t_]:=x[t]/.result[[1]];

   Plot[f[t],{t,tmin,tmax}];

   wfile=OpenWrite[
      "u:/temp/numerical_result.txt",
      FormatType->OutputForm
   ];

   For[i=0,i<=num, i=i+1,
      t=(tmax-tmin) i/num+tmin;
      Print[t,"\t",f[t]];
      Write[wfile,t,"\t",CForm[f[t]]];
   ];

   Close[wfile];

   Clear[tmin,tmax,num,t,i,f,x,result,wfile];

このプログラムの動作について,細かく説明しておく.

6.2 ファイルからデータ入力

次に,ファイルからのデータの入力方法について,説明する.これは,実験データなどを Mathematicaで処理する場合,必要不可欠なテクニックなので,覚えておくと良い.

先ほど作成したデータをMathematicaで読み込み,処理をすることを考える.処理は,フー リエ変換を行うことにする.ここで,作成するプログラムの流れは,

である.実際の,プログラムは次のようになる.このプログラムの流れを理解して,実際 に打ち込んで実行させよう.各行の説明は,プログラムリストの後に記述している.
   data=ReadList[
      "u:/temp/numerical_result.txt",
      {Number,Number}
   ];

   ListPlot[data];

   trdata=Transpose[data];
   xlist=trdata[[2]];

   ft=Fourier[xlist];

   ListPlot[
      Abs[ft],
      PlotRange->{{0,100},{0,5}},
      PlotJoined->True
   ];

このプログラムの動作について,細かく説明しておく.




ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年9月4日


no counter