所以我遇到了一个问题,我需要使用 bisect 方法找到根:
功能:
function [ c,k ] = 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
脚本:
f = @(x) (((1800).*log((160000)./(160000 - (x.*2600))) - (9.812).*x)./750) - 1;
a = 10;
b = 50;
tol = 1e-4;
[root, iter] = bisect(f,a,b,tol);
fprintf(' iterations = %i root = %15.10e ' ,iter, root);
这非常有效,现在我需要使用embedded function
inMatlab
来查找从 2000 到 3000 以 10 为增量的不同 q 值(在上面的示例中,q 是固定数字 2600)的 c 值,并绘制 x vs q。为了做到这一点,我有以下脚本:
function myFunction
h = 10;
a = 10;
b = 50;
tol = 1e-4;
function y = f(x)
y = (((1800).*log((160000)./(160000 - (x.*q))) - (9.812).*x)./750) - 1;
end
for q = (2000:h:3000)
k=0;
while b-a > tol
c=(a+b)/2;
if sign(f(c)) == sign(f(b))
b=c;
cArray(q) = c;
else
a=c;
cArray(q) = c;
end
k=k+1;
end
end
plot(q,cArray)
end
这段代码没有错误,但是当我运行它时没有图表。有人可以帮我解决这个问题吗?我什至不知道我找到 c vs q 的代码是否正确。