【问题标题】:How to solve a zero order Bessel function equation in Matlab?如何在Matlab中求解零阶贝塞尔函数方程?
【发布时间】: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


    【解决方案1】:

    你可以使用(http://nl.mathworks.com/help/matlab/ref/besselj.htmlhttp://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 就足够了,效率更高,在某些情况下更健壮。此外,就解释和格式而言,这是一个质量相当差的答案。
    • 刚刚在我脑海中输入了一些东西 :)。 Tnx,答案已更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多