1

我正在尝试为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);

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

我尝试过使用 subs 和 eval,并将整个事情解决为象征性的,但老实说,这确实是反复试验。我敢肯定,我缺少一些简单的东西-任何帮助都会很棒!

干杯,

艾伦

4

1 回答 1

0

正如大卫在对我的问题的评论中所建议的那样,包括double在函数中解决了这个问题;IE:

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 提供的帮助。

于 2015-11-25T00:36:36.327 回答