1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_linalg.h>
#include "gsl_functions_pinv.h"
int
main (void)
{
/*int gsl_linalg_complex_QR_decomp (gsl_matrix_complex * A, gsl_vector_complex * tau);
int gsl_linalg_complex_QR_lssolve (const gsl_matrix_complex * QR, const gsl_vector_complex *
tau, const gsl_vector_complex * b, gsl_vector_complex * x, gsl_vector_complex * residual);*/
int k;
gsl_matrix_complex * m = gsl_matrix_complex_alloc (1024, 2);
gsl_vector_complex * x = gsl_vector_complex_alloc (2);
gsl_vector_complex * b = gsl_vector_complex_alloc (1024);
gsl_vector_complex * residual = gsl_vector_complex_alloc (1024);
gsl_vector_complex * tau = gsl_vector_complex_alloc (2);
gsl_complex z1 ;
gsl_complex z2 ;
gsl_complex z3 ;
gsl_complex z4 ;
gsl_complex z5 ;
gsl_complex z6 ;
gsl_complex b1 ;
gsl_complex b2 ;
gsl_complex b3 ;
gsl_complex t1 ;
gsl_complex t2 ;
GSL_SET_COMPLEX (&z1, 1.0, 0.0);
GSL_SET_COMPLEX (&z2, 2.0, 0.0);
GSL_SET_COMPLEX (&z3, 3.0, 0.0);
GSL_SET_COMPLEX (&z4, 4.0, 0.0);
GSL_SET_COMPLEX (&z5, 5.0, 0.0);
GSL_SET_COMPLEX (&z6, 6.0, 0.0);
GSL_SET_COMPLEX (&b1, 2.0, 0.0);
GSL_SET_COMPLEX (&b2, 3.0, 0.0);
GSL_SET_COMPLEX (&b3, 2.0, 0.0);
GSL_SET_COMPLEX (&t1, 1.169031, 0.0);
GSL_SET_COMPLEX (&t2, 1.113104, 0.0);
for (k = 0; k < 1024; k++) {
gsl_vector_complex_set (tau, 0, t1);
gsl_vector_complex_set (tau, 1, t2);
GSL_SET_COMPLEX (&z1, 0.0, 1.0);
GSL_SET_COMPLEX (&z2, 3.2, 3.3);
GSL_SET_COMPLEX (&b1, 1.2, 0.0);
gsl_matrix_complex_set (m, k, 0, z1);
gsl_matrix_complex_set (m, k, 1, z2);
gsl_vector_complex_set (b, k, b1);
}
gsl_linalg_complex_QR_decomp (m, tau); fonction qui posera pb
gsl_linalg_complex_QR_lssolve (m, tau,
b, x, residual);
printf ("m(%d,%d) = %f + i %f\n", 0, 0,
gsl_vector_complex_get (x, 1));
} |
Partager