42 template <
typename ordinal_type,
typename value_type>
53 leftEndPt_(leftEndPt),
54 rightEndPt_(rightEndPt),
58 Teuchos::RCP<const Stokhos::LegendreBasis<ordinal_type,value_type> > quadBasis =
66 template <
typename ordinal_type,
typename value_type>
71 scaleFactor(basis.scaleFactor),
72 leftEndPt_(basis.leftEndPt_),
73 rightEndPt_(basis.rightEndPt_),
74 weightFn_(basis.weightFn_)
77 Teuchos::RCP<const Stokhos::LegendreBasis<ordinal_type,value_type> > quadBasis =
89 template <
typename ordinal_type,
typename value_type>
95 template <
typename ordinal_type,
typename value_type>
99 Teuchos::Array<value_type>& alpha,
100 Teuchos::Array<value_type>& beta,
101 Teuchos::Array<value_type>& delta,
102 Teuchos::Array<value_type>& gamma)
const
114 value_type oneNorm = expectedValue_J_nsquared(0, alpha, beta);
116 scaleFactor = 1/oneNorm;
124 value_type past_integral = expectedValue_J_nsquared(0, alpha, beta);
125 alpha[0] = expectedValue_tJ_nsquared(0, alpha, beta)/past_integral;
132 integral2 = expectedValue_J_nsquared(n, alpha, beta);
133 alpha[n] = expectedValue_tJ_nsquared(n, alpha, beta)/integral2;
134 beta[n] = integral2/past_integral;
135 past_integral = integral2;
143 template <
typename ordinal_type,
typename value_type>
148 return (x < leftEndPt_ || x > rightEndPt_) ? 0: scaleFactor*weightFn_(
x);
151 template <
typename ordinal_type,
typename value_type>
155 const Teuchos::Array<value_type>& alpha,
156 const Teuchos::Array<value_type>& beta)
const
162 quadIdx < static_cast<ordinal_type>(quad_points.size()); quadIdx++) {
163 value_type x = (rightEndPt_ - leftEndPt_)*.5*quad_points[quadIdx] +
164 (rightEndPt_ + leftEndPt_)*.5;
166 integral +=
x*
val*
val*evaluateWeight(
x)*quad_weights[quadIdx];
169 return integral*(rightEndPt_ - leftEndPt_);
172 template <
typename ordinal_type,
typename value_type>
176 const Teuchos::Array<value_type>& alpha,
177 const Teuchos::Array<value_type>& beta)
const
183 quadIdx < static_cast<ordinal_type>(quad_points.size()); quadIdx++){
184 value_type x = (rightEndPt_ - leftEndPt_)*.5*quad_points[quadIdx] +
185 (rightEndPt_ + leftEndPt_)*.5;
187 integral +=
val*
val*evaluateWeight(
x)*quad_weights[quadIdx];
190 return integral*(rightEndPt_ - leftEndPt_);
193 template <
typename ordinal_type,
typename value_type>
203 quadIdx < static_cast<ordinal_type>(quad_points.size()); quadIdx++){
204 value_type x = (rightEndPt_ - leftEndPt_)*.5*quad_points[quadIdx] +
205 (rightEndPt_ + leftEndPt_)*.5;
206 integral += this->evaluate(
x,order1)*this->evaluate(
x,order2)*evaluateWeight(
x)*quad_weights[quadIdx];
209 return integral*(rightEndPt_ - leftEndPt_);
212 template <
typename ordinal_type,
typename value_type>
217 const Teuchos::Array<value_type>& alpha,
218 const Teuchos::Array<value_type>& beta)
const
229 v2 = (
x-alpha[i-1])*v1 - beta[i-1]*v0;
237 template <
typename ordinal_type,
typename value_type>
238 Teuchos::RCP<Stokhos::OneDOrthogPolyBasis<ordinal_type,value_type> >