Error using quad "Error using quad (line 75) The integrand function must return an output vector of the same length as the input vector."
Afficher commentaires plus anciens
I have edited the code according to answers.
Can anyone explain the reason behind the errors and help me correcting the following code:
U = 1;
e = @(q) 2*(1-cos(2*pi*q));
hq = @(q,n0) ((e(q)).^2+2*U*n0*(e(q))).^0.5;
y = @(q,n0) (((e(q))+(U*n0))/hq(q,n0))-1;
a = -0.5;
b = 0.5;
v = @(n0) quad(@(q) y(q,n0),a,b);
cv =@(n0) n0+(0.5*v(n0))-1;
while U < 20
n0 = 0.1;
options = optimset('Display', 'iter');
n = fsolve(cv(n0),n0,0.1,options);
plot(U,n)
hold on
U = U + 1;
end
Errors:
Error using quad (line 75)
The integrand function must return an output vector of the same length as the input vector.
Error in @(n0)quad(@(q)y(q,n0),a,b)
Error in @(n0)n0+(0.5*v(n0))-1
Error in simulv1 (line 12)
n = fsolve(cv(n0),n0,0.1,options);
Réponse acceptée
Plus de réponses (2)
dpb
le 25 Fév 2015
_"I am using .^ but..."
But you aren't, everywhere. The line given by the error message is--
hq = @(q,n0) ((eq(q))^2+2*U*n0*(eq(q))).^0.5;
The term (eq(q))^2 doesn't have a 'dot' operator just as the error says.
BTW, do NOT use eq as a variable or function name; that aliases the builtin logical "equal" function == or eq()
>> which eq
built-in (C:\ML_R2012b\toolbox\matlab\ops\@double\eq) % double method
>>
1 commentaire
jayash
le 25 Fév 2015
A Jenkins
le 25 Fév 2015
0 votes
There are two powers in that line and you have only replaced one.
@(q,n0)((eq(q)) ^ 2+2*U*n0*(eq(q))) .^ 0.5
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!