1

次数 n の第 1 種のベッセル関数のこの積分表現を実装しようとしています。

ここに画像の説明を入力

ここに私が試したものがあります:

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. には 2 つの独立変数がありますplot(A(t),x)。したがって、プロットを同じサイズで表示できtますxplot(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 に答える