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

时间:2015-11-23 04:53:06

标签: matlab symbolic-math integral bessel-functions

我试图解决 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的例子时,我没有得到任何错误)。

我尝试过使用sub和eval,并将整个事物解决为象征性的,但说实话,它确实是试验和错误。我确信那里有一些我想念的简单的东西 - 任何帮助都会很棒!

干杯,

艾伦

1 个答案:

答案 0 :(得分:0)

正如大卫在我的问题评论中所建议的那样,在函数中包括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对此的帮助。