Difference between revisions of "Tutorials:AleaHOWTO/ja"

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|Tutorials:AleaHOWTO}} === ALEAライブラリ === <!--The Alea library allows to * do Monte Carlo measurements * calculate errors and autocorrelation times wi…")
 
Line 2: Line 2:
  
 
===  ALEAライブラリ  ===
 
===  ALEAライブラリ  ===
 
<!--The Alea library allows to
 
 
*  do Monte Carlo measurements
 
*  calculate errors and autocorrelation times with binning analysis (Jackknife analysis)
 
*  calculate mean values and errors of functions of measurements-->
 
  
 
Alea ライブラリは次の機能をもちます。
 
Alea ライブラリは次の機能をもちます。
Line 17: Line 11:
 
==  モンテカルロ計算の測定  ==
 
==  モンテカルロ計算の測定  ==
  
<!--We include the ALEA library in a C++ code with-->
 
 
C++で、ALEAライブラリをインクルードします。
 
C++で、ALEAライブラリをインクルードします。
  
 
  #include <alps/alea.h>
 
  #include <alps/alea.h>
  
<!--First we have to create an observable-->
 
 
まず、observableを生成する必要があります。
 
まず、observableを生成する必要があります。
  
 
  alps::RealObservable obs_a("observable a");
 
  alps::RealObservable obs_a("observable a");
  
<!--where the argument in the constructor stands for the name of the observable.
 
Measurements can easily added to the observable by using the "<<" operator. For example-->
 
 
ここで、コンストラクタの引数にobservableの名前を与えます。値は簡単に "<<"演算子を使用して、observableに追加できます。例えば
 
ここで、コンストラクタの引数にobservableの名前を与えます。値は簡単に "<<"演算子を使用して、observableに追加できます。例えば
  
Line 34: Line 24:
  
 
<!--adds the number 1.2 to the observable obs_a.-->
 
<!--adds the number 1.2 to the observable obs_a.-->
observable "obs_a"に1.2を与えました。
+
観測値"obs_a"に1.2を与えました。
  
<!--Every Monte Carlo simulation needs thermalization. After a certain number of thermalization steps the observable has to be reset by-->
+
すべてのモンテカルロシミュレーションは熱化を必要とします。 熱化ステップのある回数をおこなった後、観測値を次のようにリセットしなければなりません。
すべてのモンテカルロシミュレーションは熱化を必要とします。 熱化ステップのある回数をおこなったあと、observableは次のようにリセットしなければなりません。
 
  
 
  obs_a.reset(true);
 
  obs_a.reset(true);
  
<!--Printing an observable is simply done by-->
+
観測値の出力は次のように記述してください。
observableの出力は次のように記述してください。
 
  
 
  std::cout << obs_a;
 
  std::cout << obs_a;
  
<!--Here is a complete example program:-->
 
 
全コードです。
 
全コードです。
  
Line 83: Line 70:
 
==  Functions of Obervables  ==
 
==  Functions of Obervables  ==
  
<!--It is possible to evaluate functions of observables. We first have to create observable evaluators from the observables containing the measurements.
+
観測値の関数を作成することができます。例えば、obs_a,obs_bの値から、obs_c=obs_a/obs_bを計算したい場合、次のように記述します。
For example, assume we have added measurements to obs_a and obs_b and we want to calculate obs_c = obs_a/obs_b. This can be done by-->
 
obserbablesの関数を作成することができます。例えば、obs_a,obs_bの値から、obs_c=obs_a/obs_bを計算したい場合、次のように記述します。
 
  
 
  alps::RealObsevaluator obseval_a(obs_a);
 
  alps::RealObsevaluator obseval_a(obs_a);
Line 93: Line 78:
 
  std::cout << obseval_c;
 
  std::cout << obseval_c;
  
<!--Simple example programs can also be found in the ALPS source directory in "test/alea".-->
 
 
シンプルなサンプルプログラムはALPSソースディレクトリ"test/alea"にあります。参照してください。
 
シンプルなサンプルプログラムはALPSソースディレクトリ"test/alea"にあります。参照してください。

Revision as of 08:02, 16 March 2012

ALEAライブラリ

Alea ライブラリは次の機能をもちます。

  • モンテカルロ計算の測定
  • ビンニング解析(ジャックナイフ法)を用いた誤差と自己相関時間の計算
  • 計測した関数の平均値と誤差の計算

モンテカルロ計算の測定

C++で、ALEAライブラリをインクルードします。

#include <alps/alea.h>

まず、observableを生成する必要があります。

alps::RealObservable obs_a("observable a");

ここで、コンストラクタの引数にobservableの名前を与えます。値は簡単に "<<"演算子を使用して、observableに追加できます。例えば

obs_a << 1.2;

観測値"obs_a"に1.2を与えました。

すべてのモンテカルロシミュレーションは熱化を必要とします。 熱化ステップのある回数をおこなった後、観測値を次のようにリセットしなければなりません。

obs_a.reset(true);

観測値の出力は次のように記述してください。

std::cout << obs_a;

全コードです。

#include <iostream>
#include <alps/alea.h>
#include <boost/random.hpp> 

int main()
{
 //DEFINE RANDOM NUMBER GENERATOR
 typedef boost::minstd_rand0 random_base_type;
 typedef boost::uniform_01<random_base_type> random_type;
 random_base_type random_int;
 random_type random(random_int);

 //DEFINE OBSERVABLE
 alps::RealObservable obs_a("observable a");

 //ADD 1000 MEASUREMENTS TO THE OBSERVABLE
 for(int i = 0; i < 1000; ++i){ 
   obs_a << random();
 }

 //RESET OBSERVABLES (THERMALIZATION FINISHED)
 obs_a.reset(true);

 //ADD 10000 MEASUREMENTS TO THE OBSERVABLE
 for(int i = 0; i < 10000; ++i){
   obs_a << random();
 }

 //OUTPUT OBSERVABLE
 std::cout << obs_a;       
}

Functions of Obervables

観測値の関数を作成することができます。例えば、obs_a,obs_bの値から、obs_c=obs_a/obs_bを計算したい場合、次のように記述します。

alps::RealObsevaluator obseval_a(obs_a);
alps::RealObsevaluator obseval_b(obs_b);
alps::RealObsevaluator obseval_c;
obseval_c = obseval_b / obseval_a;
std::cout << obseval_c;

シンプルなサンプルプログラムはALPSソースディレクトリ"test/alea"にあります。参照してください。