Blame doc/examples/linalglu.c
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_linalg.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
main (void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double a_data[] = { 0.18, 0.60, 0.57, 0.96,
|
|
Packit |
67cb25 |
0.41, 0.24, 0.99, 0.58,
|
|
Packit |
67cb25 |
0.14, 0.30, 0.97, 0.66,
|
|
Packit |
67cb25 |
0.51, 0.13, 0.19, 0.85 };
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double b_data[] = { 1.0, 2.0, 3.0, 4.0 };
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_matrix_view m
|
|
Packit |
67cb25 |
= gsl_matrix_view_array (a_data, 4, 4);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_vector_view b
|
|
Packit |
67cb25 |
= gsl_vector_view_array (b_data, 4);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_vector *x = gsl_vector_alloc (4);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int s;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_permutation * p = gsl_permutation_alloc (4);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_linalg_LU_decomp (&m.matrix, p, &s);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
printf ("x = \n");
|
|
Packit |
67cb25 |
gsl_vector_fprintf (stdout, x, "%g");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_permutation_free (p);
|
|
Packit |
67cb25 |
gsl_vector_free (x);
|
|
Packit |
67cb25 |
return 0;
|
|
Packit |
67cb25 |
}
|