Infinite sum with Bessel's function

I have this sum with the Bessel function that I am trying to calculate and plot.
Any help would be greatly appreaciated.
Thank you

2 件のコメント

Torsten
Torsten 2022 年 8 月 10 日
編集済み: Torsten 2022 年 8 月 10 日
Where is the error and what is the error message ?
By the way: It's nonsense to determine the roots again and again with every call of "findLr".
Determine them only once at the beginning of your program.
mery
mery 2022 年 8 月 10 日
編集済み: mery 2022 年 8 月 10 日
the error is
Error using ==> findLr
Too many input arguments.
Error in ==> findLp at 5
Lp(i)= findLr(rr1,K,n,sstep);
Error in ==> tset at 4
findLp(K,n,sstep)

サインインしてコメントする。

 採用された回答

Torsten
Torsten 2022 年 8 月 11 日
編集済み: Torsten 2022 年 8 月 11 日

3 投票

n = 60;
sstep = 1;
a_k = J0ROOTS(n,sstep);
r = (0:0.01:1).';
t = 0:0.1:1;
S = zeros(numel(r),numel(t));
for i = 1:numel(t)
S(:,i) = sum(2*besselj(0,a_k.*r)./(a_k.^2.*besselj(1,a_k)).*exp(-a_k.*t(i)),2);
end
plot(r,S)
function x=J0ROOTS(n,sstep)
if nargin==0
n=20;
sstep=1;
elseif nargin==1
sstep=1;
end
J0=@(x) besselj(0,x);
k=0; i=0;
while k<n
i1=i+sstep;
if J0(i)*J0(i1)<0
k=k+1;
x(k)=fzero(J0,[i i1]);
end
i=i1;
end
end

6 件のコメント

mery
mery 2022 年 8 月 11 日
@Torsten, Thank you very much.
in my problem, I have 0<=t<inf how can I add this condition?
Torsten
Torsten 2022 年 8 月 11 日
in my problem, I have 0<=t<inf how can I add this condition?
Incorporated.
mery
mery 2022 年 8 月 11 日
@Torsten This community is great because there are people like you.
Thank you, sir.
Andrew Omame
Andrew Omame 2023 年 3 月 30 日
I am having issue running this code on my MATLAB R2014a version.
The error messgae I get is:
Error using .*
Matrix dimensions
must agree.
Please can anyone help on what to do to resolve this.
Torsten
Torsten 2023 年 3 月 30 日
n = 60;
sstep = 1;
a_k = J0ROOTS(n,sstep);
r = (0:0.01:1).';
t = 0:0.1:1;
S = zeros(numel(r),numel(t));
for i = 1:numel(t)
for k = 1:numel(r)
for l = 1:n
S(k,i) = S(k,i) + 2*besselj(0,a_k(l)*r(k))/(a_k(l)^2*besselj(1,a_k(l)))*exp(-a_k(l)*t(i));
end
end
end
plot(r,S)
function x=J0ROOTS(n,sstep)
if nargin==0
n=20;
sstep=1;
elseif nargin==1
sstep=1;
end
J0=@(x) besselj(0,x);
k=0; i=0;
while k<n
i1=i+sstep;
if J0(i)*J0(i1)<0
k=k+1;
x(k)=fzero(J0,[i i1]);
end
i=i1;
end
end
Andrew
Andrew 2023 年 4 月 20 日
This has now worked on my MATLAB R2014a version. Thank you very much

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeBessel functions についてさらに検索

質問済み:

2022 年 8 月 10 日

コメント済み:

2023 年 4 月 20 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by