2009年2月9日月曜日

二次方程式の虚数解を見る―メモ

Octave C++について
今回使ったのは複素数のみ。
定義:Complex x = Complex  (double xr,double xi);
y=x^2+1:Complex y = x + Complex(1,0);
yの実部:yr = real(y);
yの虚部:yi = imag(y);

C++について
・deta_0.dat,deta_1.dat,deta_2.dat,...のように通し番号付きファイルをたくさん作る
(今回は一つのdeta.datにどんどん上書きした)
===========================
 //include...string,sstream,fstream,等
 //繰り返しiを増やしてく

  stringstream filename;

  filename.str(""); 
  filename << "deta_" << i << ".dat";
  string filena = filename.str();
  const char* file = filena.c_str();

  ofstream deta;
  deta.open(file);

   deta << ***** ;

  deta.close();
===========================

・gnuplotでdeta_*.datからgraph_*.gifをたくさん作る(gifアニメ用)
===========================
 //繰り返しiを増やしてく

//とりあえずすることをtmp.pltに書き出す
  ofstream gp;
  gp.open("tmp.plt");

  gp  << "set parametric \n" //グラフを媒介変数で設定
      << "set view 80,285 \n" //見る角度(事前にgnuplotでぐりぐり)
      << "set hidden3d \n"  //透けない
      << "set xrange[-8:8] \n"//x,y,zの描画域
      << "set yrange[-8:8] \n"
      << "set zrange[-8:8] \n"
      << "set output 'graph_" << i << ".gif' \n"
      << "set terminal gif \n"  //gifでよろしく
      << "splot 'deta_" << i << ".dat' \n"
      << "set terminal x11 \n" << endl;
  gp.close();

//tmp.pltを実行
  FILE* plot;
  plot = popen("gnuplot tmp.plt","w");
  pclose(plot);
===========================

にとても助けられました。
===========================

実際に作った時は、初めから自動でできるだろうとは思いながら手作業でgif出力&renameしてました・・・(100近く!)
40ほどのファイルが一度に出力されたときには鼻血が出るかと思うほど嬉しかった。

0 件のコメント:

コメントを投稿