【发布时间】:2014-12-03 08:17:35
【问题描述】:
方程为 I0(a*x)=b,其中 a,b 是常数,I0(y) 是零阶贝塞尔函数。
I0(x)=1/(2*pi)*integral(x*cos(t)) dt [从 0 ->2*pi]
我想在给定 a 和 b 时得到 x 的值。我只想要结果,所以不需要全部用matlab来实现求解过程,一个大概的答案也可以。
【问题讨论】:
标签: matlab equation-solving bessel-functions
方程为 I0(a*x)=b,其中 a,b 是常数,I0(y) 是零阶贝塞尔函数。
I0(x)=1/(2*pi)*integral(x*cos(t)) dt [从 0 ->2*pi]
我想在给定 a 和 b 时得到 x 的值。我只想要结果,所以不需要全部用matlab来实现求解过程,一个大概的答案也可以。
【问题讨论】:
标签: matlab equation-solving bessel-functions
你可以使用(http://nl.mathworks.com/help/matlab/ref/besselj.html,http://nl.mathworks.com/help/optim/ug/fsolve.html)
x = fsolve(@(x)(besselj(0,a*x)-b),x0);
或使用下面评论中指出的更简单的求解器 (http://nl.mathworks.com/help/optim/ug/fzero.html)
x = fzero(@(x)(besselj(0,a*x)-b),x0);
【讨论】:
fsolve 来查找看起来是单变量的根? fzero 就足够了,效率更高,在某些情况下更健壮。此外,就解释和格式而言,这是一个质量相当差的答案。