gpt4 book ai didi

c - 从 GSL 多根函数返回一个变量

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:55 25 4
gpt4 key购买 nike

假设我有一个定义一组 N 个方程的函数,并且我想获得 N 个未知数,将这些方程设置为零。我通常这样做的方法是使用 GSL 多根函数,其返回由一个整数 GLS_SUCCESS 定义,该整数描述函数是否可以计算。这将是此类函数的示例,摘自 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?一种明显的方法是将其声明为全局变量。有替代方案吗?

最佳答案

另一种方法是让 rparams 结构的附加成员包含您要存储的值。

然后您可以在每次调用 rosenbrock_f 时修改它的值,并且您可以在 main 函数中访问它。

关于c - 从 GSL 多根函数返回一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com