내 프로젝트는 C++에서 매우 큰 행렬 (예 : 500 * 500)에 대한 QR 분해에서 Q를 찾는 것에 관한 것입니다. 나는 Lapack 패키지를 최근에 사용하기 시작했으며 특별한 함수 "dgeqrf"를 사용하기 시작했다. 나는 코드에 다음과 같이 단순 매트릭스에 의해 시작 : 블록 :Lapack의 dgeqrf in C++
error: cannot convert 'double (*)[2]' to 'double*' for argument '3' to 'void dgeqrf_(int*, int*, double*, int*, double*, double*, int*, int*)'
날이 오류에 대한 도움이 될 수 있습니다
#include <iostream>
#include <lapacke.h>
using namespace std;
int main()
{
double a[6][2] = {{0,2},{2,-1},{2,-1},{0,1.5},{2,-1},{2,-1}};
int m=6;
int n=2;
int info = 0;
int lda = m;
int lwork = n;
double *work;
double *tau;
dgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);
}
코드를 실행 한 후, 나는 "dgeqrf"라인이 오류보고를? 매개 변수 정의에 실수가 있습니까? 또한 실행 후 어떻게 Q 매트릭스로 작업 할 수 있습니까? 새로운 matix double q[][]=dgeqrf(....)
을 정의하고 그것을 내 프로젝트에서 사용할 수 있습니까? 내 질문이 매우 기본적인 것이지만 솔루션을 찾지 못해서 미안합니다.
dgeqrf_는 'a'가 평평한 배열이 될 것으로 예상하고 있습니다. – tinkertime
Welcome to Stackoverflow. @ yankee2905 님의 답변으로 신고 한 오류가 해결되었습니다. 당신은 그의 * next * 문제를 밝혀 내기 때문에 그의 대답을 받아들이지 않기를 원합니다. 한 번에 한 가지 질문. 프로젝트가 완료 될 때까지 문제를 해결하기 만하면이 프로젝트가 잘못된 곳으로 생각됩니다. 다음 문제는'dgeqrf_'가 정의 된 라이브러리를 링크하지 않는다는 것입니다. 다음 질문 * [코드 :: 블록이있는 라이브러리에 연결하려면 어떻게합니까?] (http://stackoverflow.com/q/5862757/1362568) –
@MikeKinghan 응답 해 주셔서 감사합니다. 전에 권장 링크에서 절차를 완료했습니다. 또한 "Armadillo"라이브러리를 사용해 보았으나 거기에서 간단한 계산을 할 수는 있지만이 오류로 인해 QR 분해를 수행 할 수 없었습니다 : "_ffortran_compare_string에 대한 정의되지 않은 참조". 또한 DEV C++에서이 문제가 있습니다. 설치 단계에서 문제가있는 것 같습니다. – Ham82