Using the bisection method, why is f(a) not a real integer or logical?
Ältere Kommentare anzeigen
I am trying to use the bisection method to optimize the cost of the pipeline, but I can't get a value for f(a)? What am I doing wrong with my while loop or if statement?
function [x] = myPipeBuilder(C_ocean, C_land, L, H)
%L=length of x, C_ocean=cost of pipeline in ocean, C_land=cost of pipeline on land, H=some distance in water
a=0;
b=L;
xM = (a + b)/2;
f(xM)= (C_ocean/sqrt(H^2+xM^2))-C_land;
% derivative of function
while abs(f(xM))>1*10^(-6)
% tolerance
if sign(f(a))==sign(f(xM))
a=xM;
elseif sign(f(b))==sign(f(xM))
b=xM;
end
xM = (a + b)/2;
end
x=xM;
end
Akzeptierte Antwort
Weitere Antworten (1)
Andrei Bobrov
am 20 Mär. 2014
x = sqrt((C_ocean/C_land).^2-H^2);
1 Kommentar
Christopher
am 20 Mär. 2014
Kategorien
Mehr zu Oceanography and Hydrology finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!