贝塞尔的整体实施

时间:2016-09-09 11:00:53

标签: matlab bessel-functions

我试图实现第一种秩序n的贝塞尔函数integral representation

enter image description here

这是我试过的:

t = -pi:0.1:pi;
n = 1;
x = 0:5:20;
A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));
B(t) = integral(A(t),-pi,pi);
plot(A(t),x)

我试图获取的情节如维基百科页面所示。​​enter image description here

它说:

  

使用*内部矩阵尺寸时出错必须同意。

     

besselfn(第8行)A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));

出错

所以我试着把x-5;

,输出结果为:

  

下标索引必须是实数正整数或逻辑。

     

besselfn(第8行)A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));

出错

如何正确使用?我错过了什么?

1 个答案:

答案 0 :(得分:2)

要在MATLAB中呈现匿名函数,您可以使用(NOT A(t)=...

A = @(t) exp(sqrt(-1)*(n*t-x.*sin(t)));

使用逐个元素的操作(这里我使用.*)。

补充意见:

  1. 您可以使用1i代替sqrt(-1)

  2. B(t)不能是t参数的函数,因为t是集成的内部变量。

  3. plot(A(t),x)中有两个独立变量。因此,只要tx具有相同的大小,您就可以显示情节。可能意味着像plot(x,A(x))那样显示函数A(x)plot(A(x),x)以显示A(x)的反函数。

  4. 最后你的代码可以是这样的:

    n = 1;
    x = 0:.1:20;
    A = @(x,t) exp(sqrt(-1)*(n*t-x.*sin(t)));
    B = @(x) integral(@(t) A(x,t),-pi,pi);
    for n_x=1:length(x)
        B_x(n_x) = B(x(n_x)); 
    end
    plot(x,real(B_x))