Tag: wolfram mathematica

使用gsl编写Runge-Kutta ODE求解器

自从我做了任何C / c ++以来已经有一段时间了,但我想用gsl库编写一个ODE求解器来解决下面的ODE集 $$ u'(r)=up(r)$$ $$ up'(r)=-(2*(r-1)/(r*(r-2)))*up(r)-((r*r/((r-2)*(r-2)))-(2/r*(r-2)))*u(r) $$ 所以在gsl表示法中我的y [0] = u,y [1] == up,并且上面的RHS定义了f [0]和f [1]。 然后可以从这些定义中计算雅可比行列式和dfdr(通常它们的“时间”变量称为“t”而不是“r”)。 这样做的原因是因为我对Mathematica有速度问题。 我在ODE解算器的文档末尾使用了gsl示例代码,并尝试将其调整到我的问题,如下所示: #include #include #include #include #include int func (double r, const double y[], double f[], void *params) { double mu = *(double *)params; f[0] = y[1]; f[1] = -(2*(r-1)/(r*(r-2)))*y[1]-((r*r/((r-2)*(r-2)))-(2/r*(r-2)))*y[0]; return GSL_SUCCESS; } /* void tester […]