我正在尝试使用 Matlab 中的二分法来查找方程的根,该方程的根在q
2000-3000 之间以 10 步间隔变化。但是,即使我有一个plot
语句,我的代码也不会打印出图表,并且我认为它会创建一个无限循环,因为当我运行它时,matlab 说忙,除非我强制关闭,否则我无法关闭程序。我在我的代码中看不到任何会导致这种情况的东西,有人可以帮助我吗?
function myFunction
a = 20;
b = 40;
tol = 1e-4;
q = 2000:10:3000;
t = zeros(101,1);
for i=(1:length(q))
f = @(x) (((1800).*log((160000)./(160000 - (x.*q(i)))) - (9.812).*x)./750) - 1;
t(i) = bisect(f,a,b,tol);
end
figure(1)
plot(q,t)
function c=bisect(f,a,b,tol)
k=0;
while b-a > tol
c = (a-b)/2;
if sign(f(c)) == sign(f(b))
b=c;
else
a=c;
end
k=k+1;
end
end
end
还应该注意的是,我以前使用过这种bisect
方法并且它确实有效,所以我认为问题不在于该功能。