贝塞尔积分实现
Bessel's integral implementation
我正在尝试实现第一种 n 阶贝塞尔函数的 integral representation。
这是我尝试过的:
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)
我想得到的情节如维基百科页面所示。
它说:
Error using * Inner matrix dimensions must agree.
Error in besselfn (line 8) A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));
所以我试着把 x-5;
输出为:
Subscript indices must either be real positive integers or logicals.
Error in besselfn (line 8) A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));
如何让这个正确?我错过了什么?
要在 MATLAB 中显示匿名函数,您可以使用 (NOT A(t)=...
)
A = @(t) exp(sqrt(-1)*(n*t-x.*sin(t)));
逐个元素操作(这里我使用了.*
)。
附加评论:
您可以使用 1i
而不是 sqrt(-1)
。
B(t)
不能作为t
参数的函数,因为t
是积分的内部变量。
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))
我正在尝试实现第一种 n 阶贝塞尔函数的 integral representation。
这是我尝试过的:
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)
我想得到的情节如维基百科页面所示。
它说:
Error using * Inner matrix dimensions must agree.
Error in besselfn (line 8)
A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));
所以我试着把 x-5;
输出为:
Subscript indices must either be real positive integers or logicals.
Error in besselfn (line 8)
A(t) = exp(sqrt(-1)*(n*t-x*sin(t)));
如何让这个正确?我错过了什么?
要在 MATLAB 中显示匿名函数,您可以使用 (NOT A(t)=...
)
A = @(t) exp(sqrt(-1)*(n*t-x.*sin(t)));
逐个元素操作(这里我使用了.*
)。
附加评论:
您可以使用
1i
而不是sqrt(-1)
。B(t)
不能作为t
参数的函数,因为t
是积分的内部变量。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))