本文整理汇总了C++中Polynomial::reshape方法的典型用法代码示例。如果您正苦于以下问题:C++ Polynomial::reshape方法的具体用法?C++ Polynomial::reshape怎么用?C++ Polynomial::reshape使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Polynomial
的用法示例。
在下文中一共展示了Polynomial::reshape方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: evalTest
void evalTest(const std::size_t p_size, const std::size_t p_samples) {
Polynomial<T,Dim> P;
Index<Dim> polyIdx;
{
typename Shape<Dim>::type polyShape;
polyShape.fill(p_size);
P.reshape(polyShape).applyToCoefficients([](T& ak, const Index<Dim>& idx){
ak = T(idx())/T(idx.maxId());
});
}
std::array<T,Dim> X;
T dX;
{
const T a = T(0);
const T b = T(1);
dX = (b-a)/(p_samples-1);
}
typename Shape<Dim>::type sampleShape;
sampleShape.fill(p_samples);
Index<Dim> sampleIdx(sampleShape);
while(!sampleIdx.atMaxId()) {
for (std::size_t d=0; d < Dim; d++)
X[d] = sampleIdx[d]*dX;
T lhs, rhs;
lhs = P(X);
rhs = T(0);
polyIdx.reset(P.shape());
while(!polyIdx.atMaxId()) {
T val = T(1);
for (std::size_t d=0; d<Dim; d++)
val *= std::pow(X[d],polyIdx[d]);
rhs += T(polyIdx())/T(polyIdx.maxId())*val;
++polyIdx;
}
ASSERT_LE(std::abs(rhs-lhs),std::pow(10,Dim)*std::numeric_limits<T>::epsilon());
++sampleIdx;
}
}