我使用 matlab 进行符号计算。经过长时间的计算,我得到了 x 的函数,它是贝塞尔函数的组合,我想找到它的零点。
为此,我fzero
在 Matlab 中使用函数。但是,虽然它非常适用于单贝塞尔函数,但它不适用于地雷函数。
>> fzero(@(x)besselj(0,x), 3.5)
ans =
2.4048
>> fzero(@(x)DELTA_xi, 3.5)
??? Undefined function or method 'isfinite' for input arguments of type 'sym'.
Error in ==> fzero at 333
elseif ~isfinite(fx) || ~isreal(fx)
>> DELTA_xi
besseli(1, (3*x)/10)*besselj(1, (3*x)/10)*besselk(1, x)*bessely(0, x) - besseli(1, (3*x)/10)*besselj(1, (3*x)/10)*besselk(0, x)*bessely(1, x) - besseli(1, (3*x)/10)*bessely(1, (3*x)/10)*besselj(0, x)*besselk(1, x) + besseli(1, (3*x)/10)*bessely(1, (3*x)/10)*besselj(1, x)*besselk(0, x) - besselj(1, (3*x)/10)*besselk(1, (3*x)/10)*besseli(0, x)*bessely(1, x) - besselj(1, (3*x)/10)*besselk(1, (3*x)/10)*besseli(1, x)*bessely(0, x) + besselk(1, (3*x)/10)*bessely(1, (3*x)/10)*besseli(0, x)*besselj(1, x) + besselk(1, (3*x)/10)*bessely(1, (3*x)/10)*besseli(1, x)*besselj(0, x)
为什么会发生这种情况?如何解决问题?
提前致谢