2010-11-25 5 views
0

J'utilise C++ pour résoudre par la méthode des éléments de frontière, le j'ai un problème avec mon code:GSL C++ dans le problème de Cygwin

#include <stdio.h> 
#include <math.h> 
#include <gsl/gsl_linalg.h> 
using namespace std; 
string STRING; 
int i,q,s; 
int const nodes = 16; 
double A[nodes][nodes]; 
double b[nodes]; 
int main(){ 
    for (i=0;i<nodes;i++) 
     { 


      { 
      A[q][i] = 1.;  
      b[q] = 1.; 
      }   
     } 

Une fois que A et B sont construits, nous devons résoudre le système Ax = b par le calcul
de l'inverse de x = A^(- 1) * b

gsl_matrix_view m = gsl_matrix_view_array (*A, nodes, nodes); for(q=0;q<nodes;q++) 
gsl_matrix_view b = gsl_matrix_view_array (b, nodes, nodes); 
gsl_vector *x = gsl_vector_alloc (nodes); 
gsl_permutation * p = gsl_permutation_alloc (nodes); 
gsl_linalg_LU_decomp (&m.matrix, p, &s); 
gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); 

     return 0;  
    } 

Quand je compile en utilisant cygwin

g++ test.cpp -lm -lgsl -o bem.out -L/usr/bin 

je reçois l'erreur suivante:

test.cpp: In function 'int main()': 
test.cpp:39:59: error: cannot convert 'gsl_matrix_view' to 'double*' for argument '1' to '_gsl_matrix_view gsl_matrix_view_array(double*, size_t, size_t)' 
test.cpp:43:39: error: 'struct gsl_matrix_view' has no member named 'vector' 

J'ai suivi le même exemple que le tutoriel GSL exposé, mais je reçois ces erreurs. Quelqu'un pourrait-il aider? J'apprécierais vraiment.

Merci!

Répondre

0

Vous avez déclaré à nouveau b en tant que gsl_matrix_view dans la ligne même dont se plaint la compilation. Vous l'avez déclaré comme un tableau double plus tôt.

Questions connexes