help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gsl] Error of gsl execution


From: Juan Pablo Amorocho
Subject: Re: [Help-gsl] Error of gsl execution
Date: Mon, 3 Nov 2014 14:55:36 +0100

Hi,

it looks like you  still need to point to the location of gsl.

I think this might help you:

http://www.gnu.org/software/gsl/manual/html_node/Compiling-and-Linking.html#Compiling-and-Linking

— Juan Pablo

On 03 Nov 2014, at 14:07, melossm1 <address@hidden> wrote:

> Hi,
> Thank you for your reply,
> 
> For the compilation I made : gcc test1.c -lgsl -lgslcblas -lm
> I used the Linux scientific
> I did not run even tests that are in the directory gsl
> 
> 
> The file test1.c is the following :
> 
> //u''(t) + \mu u'(t) (u(t)^2 - 1) + u(t) = 0
> 
> //This can be converted into a first order system suitable for use with the 
> routines described in this chapter by introducing a separate variable for the 
> velocity, v = u'(t),
> 
> //u' = v
> //v' = -u + \mu v (1-u^2)
> 
> //The program begins by defining functions for these derivatives and their 
> Jacobian. The main function uses driver level functions to solve the problem. 
> The program evolves the solution from (u, v) = (1, 0) at t=0 to t=100. The 
> step-size h is automatically adjusted by the controller to maintain an 
> absolute accuracy of 10^{-6} in the function values (u, v). The loop in the 
> example prints the solution at the points t_i = 1, 2, \dots, 100.
> 
> #include <stdio.h>
> #include <gsl/gsl_errno.h>
> #include <gsl/gsl_matrix.h>
> #include <gsl/gsl_odeiv2.h>
> 
> int
> func (double t, const double y[], double f[],
>       void *params)
> {
>   double mu = *(double *)params;
>   f[0] = y[1];
>   f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1);
>   return GSL_SUCCESS;
> }
> 
> int
> jac (double t, const double y[], double *dfdy,
>      double dfdt[], void *params)
> {
>   double mu = *(double *)params;
>   gsl_matrix_view dfdy_mat
>     = gsl_matrix_view_array (dfdy, 2, 2);
>   gsl_matrix * m = &dfdy_mat.matrix;
>   gsl_matrix_set (m, 0, 0, 0.0);
>   gsl_matrix_set (m, 0, 1, 1.0);
>   gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0);
>   gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0));
>   dfdt[0] = 0.0;
>   dfdt[1] = 0.0;
>   return GSL_SUCCESS;
> }
> //
> // int
> // main (void)
> // {
> //   double mu = 10;
> //   gsl_odeiv2_system sys = {func, jac, 2, &mu};
> //
> //   gsl_odeiv2_driver * d =
> //     gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk8pd,
> //                   1e-6, 1e-6, 0.0);
> //   int i;
> //   double t = 0.0, t1 = 100.0;
> //   double y[2] = { 1.0, 0.0 };
> //
> //   for (i = 1; i <= 100; i++)
> //     {
> //       double ti = i * t1 / 100.0;
> //       int status = gsl_odeiv2_driver_apply (d, &t, ti, y);
> //
> //       if (status != GSL_SUCCESS)
> //     {
> //       printf ("error, return value=%d\n", status);
> //       break;
> //     }
> //
> //       printf ("%.5e %.5e %.5e\n", t, y[0], y[1]);
> //     }
> //
> //   gsl_odeiv2_driver_free (d);
> //   return 0;
> // }
> int
> main (void)
> {
> const gsl_odeiv2_step_type * T = gsl_odeiv2_step_rk8pd;
> 
>   gsl_odeiv2_step * s
>     = gsl_odeiv2_step_alloc(T, 2);
>   gsl_odeiv2_control * c
>     = gsl_odeiv2_control_y_new (1e-6, 0.0);
>   gsl_odeiv2_evolve * e
>     = gsl_odeiv2_evolve_alloc (2);
> 
>   double mu = 10;
>   gsl_odeiv2_system sys = {func, jac, 2, &mu};
> 
> 
>   double t = 0.0, t1 = 100.0;
>   double h = 1e-6;
>   double y[2] = { 1.0, 0.0 };
> 
>   while (t < t1)
>     {
>       int status = gsl_odeiv2_evolve_apply (e, c, s,
>                                            &sys,
>                                            &t, t1,
>                                            &h, y);
> 
>       if (status != GSL_SUCCESS)
>           break;
>       printf ("%.5e %.5e %.5e\n", t, y[0], y[1]);
>     }
> 
>   gsl_odeiv2_evolve_free (e);
>   gsl_odeiv2_control_free (c);
>   gsl_odeiv2_step_free (s);
>   return 0;
> }
> 
> 
> 
> Juan Pablo Amorocho <address@hidden> a écrit :
> 
> > Hi,
> >
> >
> > how are you compiling?  Which HW and OS are you using? Did you run
> > the tests after the installation?
> >
> >
> > — Juan Pablo
> > On 03 Nov 2014, at 11:30, melossm1 <address@hidden> wrote:
> >
> >> hello
> >>
> >> During the execution of an example of solving a ode equation, i got
> >> this error:
> >>
> >> ./a.out: symbol lookup error: ./a.out: undefined symbol:
> >> gsl_odeiv2_step_rk8pd
> >>
> >> Thank you for helping me knowing that I have installed the latest
> >> version of gsl.
> >>
> >> kind regards
> >>
> >> M. El Ossmani
> >> University of Pau (France)
> >
> >



reply via email to

[Prev in Thread] Current Thread [Next in Thread]