本文整理汇总了C++中MatrixT::isSquare方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixT::isSquare方法的具体用法?C++ MatrixT::isSquare怎么用?C++ MatrixT::isSquare使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MatrixT
的用法示例。
在下文中一共展示了MatrixT::isSquare方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void DiagonalMatrixTemplate<T>::copyDiagonal(const MatrixT& m)
{
if(!m.isSquare())
{
FatalError(MatrixError_ArgIncompatibleDimensions);
}
if(BaseT::n == 0)
{
resize(m.m);
}
else if(BaseT::n != m.m)
{
FatalError(MatrixError_DestIncompatibleDimensions);
}
m.getDiagCopy(0,*this);
}
示例2: d
bool NRQRDecomposition<T>::set(const MatrixT& A)
{
Assert(A.isSquare());
int n=A.n;
VectorT d(n);
c.resize(n);
QR.copy(A);
int i,j,k;
T scale,sigma,sum,tau;
singular=false;
for (k=0;k<n-1;k++) {
scale=0;
for (i=k;i<n;i++)
scale=Max(scale,Abs(this->R(i,k)));
if (scale == 0) { //Singular case.
singular=true;
c(k)=d(k)=0.0;
}
else { //Form Qk and Qk*A.
for (i=k;i<n;i++)
QR(i,k) /= scale;
for (sum=0,i=k;i<n;i++)
sum += Sqr(QR(i,k));
sigma=SIGN(sqrt(sum),QR(k,k));
QR(k,k) += sigma;
c(k)=sigma*QR(k,k);
d(k) = -scale*sigma;
for (j=k+1;j<n;j++) {
for (sum=0,i=k;i<n;i++)
sum += QR(i,k)*QR(i,j);
tau=sum/c(k);
for (i=k;i<n;i++)
QR(i,j) -= tau*QR(i,k);
}
}
}
d(n-1)=QR(n-1,n-1);
if (d(n-1) == 0) singular=true;
return true;
}