Unable to plot after using fsolve
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ut=0;
while Ut<20
cn = @(q1,q2,n0)((Ut.*n0)./(1-cos(2.*pi.*q1)-cos(2.*pi.*q2)));
y = @(q1,q2,n0)0.25.*((1+cn(q1,q2,n0)).^(-1/2)+(1+cn(q1,q2,n0)).^(1/2)-2);
a = -0.5;
b = 0.5;
v = @(n0) (quad2d(@(q1,q2) y(q1,q2,n0),a,b,a,b));
cv =@(n0) n0+(0.5*v(n0))-1;
x0 = 0.1;
n = fzero(cv,x0);
plot(Ut,n,'*')
xlabel('U/t')
ylabel('n0/n')
hold on
Ut = Ut + 1;
end
The plot should be similar looking like y=1/x but I am only getting a point. Anybody please help me out.
0 commentaires
Réponses (2)
Walter Roberson
le 8 Mai 2015
You forgot to tell us that you also get some output, namely
Warning: Reached the maximum number of function evaluations (2000). The result fails the global error test.
> In quad2d at 244
In @(n0)(quad2d(@(q1,q2)y(q1,q2,n0),a,b,a,b))
In @(n0)n0+(0.5*v(n0))-1
In fzero at 286
Error using fzero (line 309)
Function value at starting guess must be finite and real.
That happens when Ut = 1 (the second iteration). The integration is failing. Are you sure the integral converges?
0 commentaires
lei kai
le 8 Mai 2015
there is something wrong with your function cv,when Ut=1,n = fzero(cv,x0);will error
0 commentaires
Voir également
Catégories
En savoir plus sur Optimization dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!