本文整理汇总了C++中SquareMatrix::GetMatrixAsRawPointer方法的典型用法代码示例。如果您正苦于以下问题:C++ SquareMatrix::GetMatrixAsRawPointer方法的具体用法?C++ SquareMatrix::GetMatrixAsRawPointer怎么用?C++ SquareMatrix::GetMatrixAsRawPointer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SquareMatrix
的用法示例。
在下文中一共展示了SquareMatrix::GetMatrixAsRawPointer方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SquareMatrix
/*----------------------------------------------------------------------------------------------------------------------
| Creates and returns a matrix that represents the inverse of this SquareMatrix.
*/
SquareMatrix * SquareMatrix::Inverse() const
{
double * col = new double[dim];
int * permutation = new int[dim];
SquareMatrix * tmp = new SquareMatrix(*this);
double ** a = tmp->GetMatrixAsRawPointer();
SquareMatrix * inv = new SquareMatrix(*this);
double ** a_inv = inv->GetMatrixAsRawPointer();
// double ** a matrix represented as vector of row pointers
// int n order of matrix
// double * col work vector of size n
// int * permutation work vector of size n
// double ** a_inv inverse of input matrix a (matrix a is destroyed)
int result = InvertMatrix(a, dim, col, permutation, a_inv);
delete tmp;
delete [] col;
delete [] permutation;
if (result != 0)
{
delete inv;
return 0;
}
return inv;
}
示例2: GetMatrixAsRawPointer
/*----------------------------------------------------------------------------------------------------------------------
| Creates and returns a matrix that represents the product of this matrix with `matrixOnRight'.
*/
SquareMatrix * SquareMatrix::RightMultiplyMatrix(SquareMatrix & matrixOnRight) const
{
double ** l = GetMatrixAsRawPointer();
double ** r = matrixOnRight.GetMatrixAsRawPointer();
SquareMatrix * tmp = new SquareMatrix(*this);
double ** t = tmp->GetMatrixAsRawPointer();
for (unsigned i = 0; i < dim; ++i)
{
for (unsigned j = 0; j < dim; ++j)
{
double vsum = 0.0;
for (unsigned k = 0; k < dim; ++k)
{
vsum += l[i][k]*r[k][j];
}
t[i][j] = vsum;
}
}
return tmp;
}
示例3: LogDeterminant
/*----------------------------------------------------------------------------------------------------------------------
| Returns the natural logarithm of the product of the eigenvalues of this SquareMatrix.
*/
double SquareMatrix::LogDeterminant() const
{
PHYCAS_ASSERT(dim > 0);
double * fv = new double[dim];
double * w = new double[dim];
double ** a = this->GetMatrixAsRawPointer();
SquareMatrix * Z = new SquareMatrix(dim, 0.0);
double ** z = Z->GetMatrixAsRawPointer();
// Calculate eigenvalues (w) and eigenvectors (z)
// int n input: the order of the matrix a
// double **a input: the real symmetric matrix
// double *fv input: temporary storage array of at least n elements
// double **z output: the eigenvectors
// double *w output: the eigenvalues in ascending order
int err_code = EigenRealSymmetric(dim, a, w, z, fv);
if (err_code != 0)
{
delete Z;
delete [] fv;
delete [] w;
return 0;
}
double log_det = 0.0;
for (unsigned i = 0; i < dim; ++i)
{
double v = w[i];
log_det += log(v);
}
delete Z;
delete [] fv;
delete [] w;
return log_det;
}