コード例 #1
0
CVector SVD(const CMatrix& A)
{
	CMatrix a;
	A.Transposed(a);
	
	int nRows=A.Rows();
	int nCols=A.Cols();
	int info;
	int lda = MAX(nRows,1);
	int lwork= 6*MIN(nRows,nCols) + nRows + nCols;
	
	CVector s(MIN(nRows,nCols));
	double *work = new double[lwork];
	
//	char jobu='N';
//	int ldu=1;
	
//	char jobvt='N';
//	int ldvt=1;
	
//	dgesvd_ (&jobu, &jobvt, &nRows, &nCols, a[0], &lda, &(s[0]), NULL, &ldu, NULL, &ldvt,work, &lwork, &info);
	
//	assert(info>=0);
	
//	delete [] work;
	
	return s;
}
コード例 #2
0
int EigenSolutionsSym(CMatrix& Q, CVector& b)
{
	assert(Q.Rows() == Q.Cols());
	int n = Q.Rows();
	char jobz='V', uplo='U';
	int info, lwork=6*n;
//	b.Resize(n);
//	double* work = new double[lwork];
	
//	dsyev_(&jobz, &uplo, &n, Q[0], &n, &b[0], work, &lwork, &info);
    
//    delete [] work;
    
	return info;
}