gpt4 book ai didi

c++ - GSL ODE解决方案中的指针类型编译时错误

转载 作者:行者123 更新时间:2023-11-28 07:42:16 25 4
gpt4 key购买 nike

我正在使用 GSL 示例页面上的代码来尝试求解一个包含四个微分方程的系统。我一直在努力将五个参数传递给 ODE 系统,并且遇到了一个最终的(我希望!)编译时错误。下面是一个片段,给我错误

114:57: error: invalid conversion from ‘int (*)(double, const double*, 
double*, double**, void*)’ to ‘int (*)(double, const double*, double*,
double*, void*)’ [-fpermissive]

对应于以 gsl_odeiv2_system 开头的行:

int main()
{
double t = 0.0;
double y[4] = { 0.0, 0.0, 1.0, 1.0 };
int i, s;

struct pendula_params * info;
info->m2 = 1.0;
info->m1 = 1.0;
info->l1 = 1.0;
info->l2 = 1.0;
info->g = 1.0;

gsl_odeiv2_system sys = { pendula, jacobian, 4, &info };

gsl_odeiv2_driver *d =
gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_msadams,
1e-3, 1e-8, 1e-8);

对可能发生的事情有什么想法吗?

非常感谢,

马克·C。

最佳答案

您可以通过比较错误消息中出现的两种函数类型来了解错误是什么。

gsl_odeiv2_system structure 期望 jacobian 成员是指向函数的指针,该函数将 double* 作为第四个参数。但是您的 jacobian 函数将 double** 作为第四个参数,这使得它不兼容。

关于c++ - GSL ODE解决方案中的指针类型编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552977/

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