Error encountered for numerical integration inside for loop.
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jay
le 12 Sep 2017
Réponse apportée : Walter Roberson
le 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 commentaires
Réponse acceptée
Walter Roberson
le 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!