1

我正在尝试实现第一类 n 阶贝塞尔函数的这种积分表示。

在此处输入图像描述

这是我尝试过的:

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)

我想要得到的情节如维基百科页面所示。在此处输入图像描述

它说:

错误使用 * 内矩阵尺寸必须一致。

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)));

如何正确处理?我错过了什么?

4

1 回答 1

3

要在 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)。因此,您可以仅显示绘图t并且x具有相同的大小。可能您的意思是 plot(x,A(x))显示函数A(x)plot(A(x),x)显示 的反函数A(x)

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

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))
于 2016-09-09T20:37:08.557 回答