我试图实现第一种秩序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)
它说:
使用*内部矩阵尺寸时出错必须同意。
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)));
如何正确使用?我错过了什么?
答案 0 :(得分:2)
要在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))