필터 지우기
필터 지우기

Unable to plot after using fsolve

조회 수: 1 (최근 30일)
jayash
jayash 2015년 5월 7일
답변: lei kai 2015년 5월 8일
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.

답변 (2개)

Walter Roberson
Walter Roberson 2015년 5월 8일
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?

lei kai
lei kai 2015년 5월 8일
there is something wrong with your function cv,when Ut=1,n = fzero(cv,x0);will error

카테고리

Help CenterFile Exchange에서 Optimization에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by