示例#1
0
rowvec dF2du(unsigned row, irowvec causes, const DataPairs &data, const gmat &sigma, vec u){

  // Attaining variance covariance matrix etc. (conditional on u)
  vmat cond_sig = sigma(causes);
  vec cond_mean = cond_sig.proj*u;

  rowvec alp = data.alpha_get(row, causes);
  rowvec gam = data.gamma_get(row, causes);
  colvec alpgam = alp.t() - gam.t();

  double cdf = pn(alpgam, cond_mean, cond_sig.vcov);

  vec ll = sqrt(diagvec(cond_sig.vcov));
  mat Lambda = diagmat(ll);
  mat iLambda = diagmat(1/ll);
  mat R = iLambda*cond_sig.vcov*iLambda;
  mat LR = Lambda*R;
  double r = R(0,1);

  vec ytilde = iLambda*(alpgam - cond_mean);
  vecmat D = Dbvn(ytilde(0),ytilde(1),r);
  mat M = -LR*D.V;

  vec dcdfdu = trans(cond_sig.proj)*cond_sig.inv*M;

  rowvec dF2du_1 = data.dpiduMarg_get(row, causes(0), 0)*data.piMarg_get(row, causes(1), 1)*cdf ;
  rowvec dF2du_2 = data.dpiduMarg_get(row, causes(1), 1)*data.piMarg_get(row, causes(0), 0)*cdf;
  vec dF2du_3 = data.piMarg_get(row, causes(0), 0)*data.piMarg_get(row, causes(1), 1)*dcdfdu;

  rowvec dF2du = dF2du_1 + dF2du_2 + dF2du_3.t();
  return(dF2du);
};
示例#2
0
void SetImage::pave(const IntervalVector& x, double epsilon) {

	Linside.clear();
	Lboundary.clear();

	PdcImageSubset p_fin(f,x,p_in);

	assert(x.size()==n);

	stack<IntervalVector> Ldomain;
	IntervalVector xtilde(n);
	IntervalVector ytilde(n);
	LargestFirst lf(epsilon);

	Ldomain.push(x);
	while (! Ldomain.empty()) {
		xtilde = Ldomain.top();
		Ldomain.pop();

		c_out.contract(xtilde);

		if (xtilde.is_empty()) {
			continue;
		}

		// use natural extension
		ytilde=f.eval_vector(xtilde);
		// improve with centered form
		ytilde&=f.eval_vector(xtilde.mid())+f.jacobian(xtilde)*(xtilde-xtilde.mid());
		if (p_in.test(xtilde)==YES && p_fin.test(cart_prod(xtilde,ytilde))==YES)
			Linside.push_back(ytilde);
		else if (xtilde.max_diam()<=epsilon)
			Lboundary.push_back(ytilde);
		else  {
			pair<IntervalVector,IntervalVector> boxes=lf.bisect(xtilde);
			Ldomain.push(boxes.first);
			Ldomain.push(boxes.second);
		}
	}
}