Мой проект посвящен поиску Q в QR-разложении для очень больших матриц (например, 500*500) в C++. Недавно я начал использовать пакет Lapack и его особую функцию "dgeqrf". Я начал с простой матрицы, как показано ниже в Code:blocks:
#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»:
error: cannot convert 'double (*)[2]' to 'double*' for argument '3' to 'void dgeqrf_(int*, int*, double*, int*, double*, double*, int*, int*)'
Кто может помочь мне с этой ошибкой? У меня ошибка в определении параметра? Кроме того, после запуска, как я могу работать с матрицей Q? Могу ли я определить новую матрицу double q[][]=dgeqrf(....)
и использовать ее в своем проекте? Извините, если мой вопрос был очень простым, но я не смог найти решение.
a
будет сглаженным массивом - person tinkertime   schedule 03.12.2016dgeqrf_
. Ваш следующий вопрос: Как связать библиотеку с Code::Blocks? - person Mike Kinghan   schedule 03.12.2016