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 Kommentare

Torsten
Torsten am 10 Aug. 2022
Bearbeitet: Torsten am 10 Aug. 2022
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 am 10 Aug. 2022
Bearbeitet: mery am 10 Aug. 2022
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)

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Torsten
Torsten am 11 Aug. 2022
Bearbeitet: Torsten am 11 Aug. 2022

3 Stimmen

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 Kommentare

mery
mery am 11 Aug. 2022
@Torsten, Thank you very much.
in my problem, I have 0<=t<inf how can I add this condition?
Torsten
Torsten am 11 Aug. 2022
in my problem, I have 0<=t<inf how can I add this condition?
Incorporated.
mery
mery am 11 Aug. 2022
@Torsten This community is great because there are people like you.
Thank you, sir.
Andrew Omame
Andrew Omame am 30 Mär. 2023
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.
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 am 20 Apr. 2023
This has now worked on my MATLAB R2014a version. Thank you very much

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Gefragt:

am 10 Aug. 2022

Kommentiert:

am 20 Apr. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by