Я написал чрезвычайно простую функцию в Eigen, которая должна создавать линейно независимые векторы. Вместо этого он последовательно создает нулевые векторы. Я ожидаю, что решение будет смутно простым, но я просто этого не вижу.Неправильная установка вектора в EIGEN
Почему на самом деле компоненты моего вектора mpbv не все равны cos (0) = 1,00 (с точностью до моего значения pi)?
Вместо этого я получаю:
[email protected]:~/Desktop/tests$ g++ -O3 -w -o medrealbv.x medrealbv.cc -L/usr/local/lib -lgsl -lgslcblas && ./medrealbv.x
basisvector =
3.11621e-317
2.0776e-317
6.95251e-310
[email protected]:~/Desktop/tests$
Таким образом, значения очень близки к нулю для каждого компонента! Моя программа идет ниже.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <Eigen/Dense>
#define helix 3
#define pi 3.14159
using namespace Eigen;
typedef Matrix<double, helix, 1> VectorXh;
/*-- DECLARATIONS --*/
int basisvector(int m, VectorXh result);
/*--- MAIN ---*/
int main()
{
VectorXh mpbv;
basisvector(0, mpbv);
std::cout << "basisvector =\n" << mpbv << std::endl;
return(0);
}
/* --- --- */
int basisvector(int m, VectorXh result)
{
int k;
double component;
for(k=0;k<helix;k++)
{
component =cos(m*k*2.0*pi/helix);
result(k) = component;
}
return(0);
}
/* --- --- */
спасибо. Не могу поверить, что я снова это сделал :( – Ludi