隐式函数的根,包括修正贝塞尔函数的积分 - 与 fzero 不兼容的符号变量

Roots of implicit function including integral of modified Bessel function - symbolic variables not compatible with fzero

我正在尝试求解 r 的方程 f,如下所示:

syms rho
C0 = 0.5;
a_bar = sqrt(-log((1-C0)/(1+C0)));
l = 0.77;
f = @(r) exp(-r^2)*int(rho*exp(-rho^2)*besseli(0,2*r*rho),rho,0,a_bar)-(l-1)*int(rho*exp(-rho^2),rho,0,a_bar);
r1 = fzero(f,1);

然而,第一个积分(包含 besseli)的符号输出在 fzero 中给出了错误。问题似乎是 besseli 包含 rho(当我删除这个 rho 实例时,我没有收到任何错误)。

我尝试过使用 subs 和 eval,并将整个问题作为符号来解决,但老实说,这确实是反复试验。我确定我缺少一些简单的东西 - 任何帮助都会很棒!

干杯,

艾伦

正如 David 在对我的问题的评论中所建议的那样,在函数中包含 double 可以解决这个问题;即:

f = @(r) double(exp(-r^2)*int(rho*exp(-rho^2)*besseli(0,2*r*rho),rho,0,a_bar)-(l-1)*int(rho*exp(-rho^2),rho,0,a_bar));
r1 = fzero(f,1);

这是因为它将符号表达式(涉及 rho 和 r)转换为数值对象。我的方程式没有任何根,但这是我事先工作的问题。

再次感谢 David 和 Mad Physicist 在这方面的帮助。