Error encountered for numerical integration inside for loop.
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jay
am 12 Sep. 2017
Beantwortet: Walter Roberson
am 12 Sep. 2017
So this is the code I'm trying to run -
q=10e8:10000:20e9;
s=length(q);
epso = 8.8 *10.^-12;
epsr=5.7;
ro=3.63*(10.^-3);
epsl = 2.5;
ri=1.13*(10.^-3);
copen = (epso/sqrt(epsr)*log(ro/ri));
cload= (epsl/sqrt(epsr)*log(ro/ri));
t = zeros(1,s);
for f = 1:length(q)
fun = @(x)(((((besselj(0,(2*pi*q(f))/(3e8))*x*ro)-besselj(0,(2*pi*q(f))/(3e8))*x*ri)).^2)./x).*freload(x,q)));
y(f) = copen*abs(integral(fun,0,Inf));
t(f)=(1-y(f))/(1+y(f));
end
plot (q,t);
where the function freload is
function f = freload(x,q)
epsl=3.4;
f=(1./sqrt(epsl-(x.^2))).*(1+exp(-2*1i*2*pi*q./(3e8).*sqrt(epsl-(x.^2))))./((1-exp(-2*1i*2*pi*q/(3e8).*sqrt(epsl-(x.^2)))));
end
The errors I get are as follows -
Error using integralCalc/finalInputChecks (line 515)
Output of the function must be the same size as the input. If FUN is an array-valued integrand, set the
'ArrayValued' option to true.
Error in integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 83)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Error in numint (line 14)
y(f) = copen*abs(integral(fun,0,Inf));
The program seems to be giving an output for other functions. Any help would be appreciated greatly.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 12 Sep. 2017
Your line
fun = @(x)(((((besselj(0,(2*pi*q(f))/(3e8))*x*ro)-besselj(0,(2*pi*q(f))/(3e8))*x*ri)).^2)./x).*freload(x,q)));
calls freload() passing in all of q, instead of q(f)
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numerical Integration and Differentiation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!