我试图解决 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,并将整个事物解决为象征性的,但说实话,它确实是试验和错误。我确信那里有一些我想念的简单的东西 - 任何帮助都会很棒!
干杯,
艾伦
答案 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对此的帮助。