gsl integral parameter

Tegger

Grünschnabel
Hallo,

ich hab ein Problem mit der Parameterweitergabe für gsl_integral.

Code:
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_integration.h>
     

double f(double x, void *params) 
{  
  return(sin(x) / x);
}
     
int main ()
{
double a=1;
  double result, error;
  size_t neval;
  gsl_function func;

  func.function = &f;
  func.params = 0;
     
  gsl_integration_qng (&func, 0.0, 1.0, 1e-9, 1e-9,
                       &result, &error, &neval); 
     
  printf ("Ergebnis = %f\n", result);
     
  return 0;


wie gebe ich hier weitere parameter mit dem params void weiter, die ich erst in main berechnet habe ?
 
kA, bin da noch C Leihe, das mit den Zeigern hat bei mir bisher nie gut funktioniert... der Zeiger könnte ja auch auf array zeigen, jedoch macht er das bei mir nicht....und weiteres void kann ich nicht einbauen, da dann der aufruf nicht stimmt....

wenn dir es nicht zuviel ausmacht, wäre ein kompletter Code superhilfreich :)
 
Ja, mit einem Array könntest du's auch machen:
C:
double f(double x, void *params) 
{  
  double *array = (double*)params;
  double alpha = array[0]
  double beta = array[1];

  return(alpha + sin(x) / x * beta);
}

int main() {
  double params[] = { 1.4, -3.5 };

   func.params = params;
   ...
}
Gruß
 
Zuletzt bearbeitet:
Zurück