Ejemplo n.º 1
0
void UpdateWeinerProcess(parameterStruct *param, double beadDW[][DIM]){

	int i=0;
	double b[3];
	int N = param->N;
	var = sqrt(param->dt);

	if (N%2 != 0){
		GaussianRandom(&beadDW[0][0],&b[0]);
		GaussianRandom(&beadDW[0][1],&b[1]);
		GaussianRandom(&beadDW[0][2],&b[2]);

		for(i=1;i<N;i+=2){
			GaussianRandom(&beadDW[i][0],&beadDW[i+1][0]);
			GaussianRandom(&beadDW[i][1],&beadDW[i+1][1]);
			GaussianRandom(&beadDW[i][2],&beadDW[i+1][2]);
		}
	}
	else{
		for(i=0;i<N;i+=2){
			GaussianRandom(&beadDW[i][0],&beadDW[i+1][0]);
			GaussianRandom(&beadDW[i][1],&beadDW[i+1][1]);
			GaussianRandom(&beadDW[i][2],&beadDW[i+1][2]);
		}
	}

	beadDW[0][0] = 0.; 
	beadDW[0][1] = 0.;
	beadDW[0][2] = 0.;
	for(i=1;i<N;i++){
		beadDW[i][0] *= var; 
		beadDW[i][1] *= var;
		beadDW[i][2] *= var;
	}
}
Ejemplo n.º 2
0
int CUKF::AddControlNoise()
{
  	Vn= D_V + GaussianRandom()*sqrt(Q->data.db[0]);
  	Gn= G + GaussianRandom()*sqrt(Q->data.db[3]);
// 	Vn = D_V + 0.0001;
// 	Gn = G + 0.0001;
#ifdef NOISEFREE
 	Vn= D_V;
 	Gn= G;
#endif //NOISEFREE

	return 0;
}