2
假设我有一个函数定义了一组N个方程,并且我想获得将这些方程设置为零的N个未知数。我通常这样做的方式是使用GSL multiroot函数,返回值由整数GLS_SUCCESS定义,该函数描述函数是否可以计算。这将是GSL指南中这样一个功能的例子。从GSL多功能函数返回一个变量
#include <stdlib.h>
#include <stdio.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_multiroots.h>
struct rparams
{
double a;
double b;
};
int
rosenbrock_f (const gsl_vector * x, void *params,
gsl_vector * f)
{
double a = ((struct rparams *) params)->a;
double b = ((struct rparams *) params)->b;
const double x0 = gsl_vector_get (x, 0);
const double x1 = gsl_vector_get (x, 1);
const double y0 = a * (1 - x0);
const double y1 = b * (x1 - x0 * x0);
gsl_vector_set (f, 0, y0);
gsl_vector_set (f, 1, y1);
return GSL_SUCCESS;
}
假设,而我感兴趣的是设置的值为零的N个变量,我也有兴趣在获取函数内计算的变量。例如,让double c = a + b,并假定该操作在rosenbrock_f函数内执行。我如何从main访问c?一种明显的方法是将其声明为全局变量。有其他选择吗?